Illumination und Sound

Hartmut

Active member
gps.solution mit Neopixel visualisieren

Um mit einem Blick den aktuellen GPs-zustand des Ardumower zu erfassen fand ich eine optische Darstellung für gut. Auch eine kleine Beleuchtung des Ardumover erschien mir sehr wünschenswert. Nach mehreren Tests habe ich mich für wasserfeste Neopixelstreifen entschieden.


Ich habe nach Forum Anleitung
https://forum.ardumower.de/threads/ausgang-um-beleuchtung-beim-mähen-zu-schalten.24415/
die drei pinUserSwitch aktiviert.

Mit einem zusätzlichen ESP32 werden diese ausgewertet und dann über einen Pegelwandler 3,3 zu 5 Volt (geht manchmal auch ohne) 4 Neopixelstreifen Rücklicht, 2 Scheinwerfer und GPS Status geschaltet. Ein Http Server gestattet auch das Ein- u. Ausschalten der Beleuchtung und den Zeitstart des Mover per App.


Fix, float, invalid und Licht an/aus habe ich integriert. Bei 2 Zuständen (L,H) und 3 Datenleitungen können 8 Werte geschaltet werden.

Nimmt man den remoteswitch dazu gibt es 2^6=64 Schaltzustände.

Beim Kaltstart wird eine Funktionstest Scheinwerfer vorne, Rücklicht, Bremslicht und GPS-Status durchlaufen. Mit einem kurzen rainbow Effekt starte die Illumination was sehr gut aussieht.

Mich würden eure Ideen und Realisierungen für besseren Sound und Beleuchtung sehr interessieren. Stellt eure Lösungen und Ideen bitte hier mal vor.


illumination and sound


Visualize gps.solution with Neopixel

In order to see the current state of the Ardumower at a glance, I found a visual representation to be good. A small illumination of the Ardumover also seemed to me very desirable. After several tests, I decided to use waterproof Neopixel strips.


I have according to forum instructions
the three pinUserSwitch enabled.

With an additional ESP32, these are evaluated and then switched via a level converter 3.3 to 5 volts (sometimes works without) 4 neopixel strips. An Http server also allows input and output. Switching off and the time start of the mover via app.


I integrated fix, float, invalid and light on/off. With 2 states (L,H) and 3 data lines, 8 values can be switched.
If you add the remote switch, there are 2^6=64 switching states.

During a cold start, a function test is carried out for the front headlights, rear lights, brake lights and GPS status. The illumination starts with a short rainbow effect, which looks very good.

I would be very interested in your ideas and realizations for better sound and lighting. Present your solutions and ideas here.



---------------------------------------------
Anleitung gps.solution mit Neopixel
Zum direkten Anschluss von LED's sollte der 4 PinRemote P13 (are levelswifted) genutzt werden.
Die Pins können in der config.h getauscht werden.




1. robot.cpp line 691

void start(){
pinMan.begin();
// keep battery switched ON
pinMode(pinBatterySwitch, OUTPUT);

pinMode(pinUserSwitch1, OUTPUT); //Hartmut begin //pinUserSwitch
pinMode(pinUserSwitch2, OUTPUT);
pinMode(pinUserSwitch3, OUTPUT);

digitalWrite(pinUserSwitch1, LOW);
digitalWrite(pinUserSwitch2, LOW);
digitalWrite(pinUserSwitch3, LOW); // Hartmut end


//pinMode(pinDockingReflector, INPUT);


-----------------------------

2. robot.cpp line 1367

sonar.run();
maps.run();
rcmodel.run();

if (battery.chargerConnectedState) { //Hartmut begin //Licht an/aus piUsSw
digitalWrite(pinUserSwitch1, LOW);
digitalWrite(pinUserSwitch2, LOW);
digitalWrite(pinUserSwitch3, LOW);
} else {
digitalWrite(pinUserSwitch1, LOW);
digitalWrite(pinUserSwitch2, HIGH);
digitalWrite(pinUserSwitch3, LOW);
} // Hartmut end

// state saving
if (millis() >= nextSaveTime) {
nextSaveTime = millis() + 5000;
saveState();
}

// temp
if (millis() > nextTempTime) {

-------------------

3. robot.cpp line 1418
}
}

gps.run();

if (gps.solution == SOL_FIXED) { // Hartmut begin gps visual status
digitalWrite(pinUserSwitch1, LOW);
digitalWrite(pinUserSwitch2, LOW);
digitalWrite(pinUserSwitch3, HIGH);
}
else if (gps.solution == SOL_FLOAT) {
digitalWrite(pinUserSwitch1, HIGH);
digitalWrite(pinUserSwitch2, LOW);
digitalWrite(pinUserSwitch3, LOW);
}
else if (gps.solution == SOL_INVALID) {
digitalWrite(pinUserSwitch1, HIGH);
digitalWrite(pinUserSwitch2, HIGH);
digitalWrite(pinUserSwitch3, LOW);
} //Hartmut end

calcStats();


battery.h line 36

void resetIdle();
void switchOff();
bool chargerConnectedState; //Hartmut nach hier
protected:
unsigned long nextBatteryTime ;
bool switchOffByOperator;
unsigned long timeMinutes;
// bool chargerConnectedState; //Hartmut von hier
bool switchOffAllowedUndervoltage;
bool switchOffAllowedIdle;
unsigned long switchOffTime;
unsigned long chargingStartTime;
unsigned long nextCheckTime;
unsigned long nextEnableTime;
unsigned long nextPrintTime;
};
 

Anhänge

  • 20220414_193443.jpg
    20220414_193443.jpg
    1,9 MB · Aufrufe: 25
  • 20220414_193509.jpg
    20220414_193509.jpg
    2,5 MB · Aufrufe: 24
  • 20220419_094716.mp4
    100,9 MB
Funktioniert super, vielen Dank Hartmut.

Den GPS Status aus der Ferne zu erkennen ist eine wirklich große Hilfe.
Die Rückleuchten könnte man gut für die ladezusatndserkennung nutzen wenn er in der LS ist. Blau oder blau pulsierend für Ladevorgang, grün wenn der ladevorgang beendet ist.
 
Hier ein Schaltbild, falls es wer nachbauen möchte.
Die 5V für den ESP32 können auch direkt vom Userswitch genommen werden, bei mir funktioniert es (PCB1.3).

Wenn man nicht zu viele NeoPixel anschliesst könnte man sich die Versorgungsspannung auch ohne StepDown Wandler direkt vom PCB (P45/P38) holen.

Da Alexander diverse Sachen im Code ausgelagert hat kommt der erste Abschnitt in der aktuellen Version von Sunray (139) :

pinMode(pinUserSwitch1, OUTPUT); //Hartmut begin //pinUserSwitch
pinMode(pinUserSwitch2, OUTPUT);
pinMode(pinUserSwitch3, OUTPUT);

digitalWrite(pinUserSwitch1, LOW);
digitalWrite(pinUserSwitch2, LOW);
digitalWrite(pinUserSwitch3, LOW); // Hartmut end


nicht mehr in die robot.ccp sondern in \Sunray-master\sunray\src\driver\AmRobotDriver.cpp:

void AmBatteryDriver::begin(){
// keep battery switched ON
pinMode(pinBatterySwitch, OUTPUT);
digitalWrite(pinBatterySwitch, HIGH);


pinMode(pinUserSwitch1, OUTPUT); //Hartmut begin //pinUserSwitch
pinMode(pinUserSwitch2, OUTPUT);
pinMode(pinUserSwitch3, OUTPUT);

digitalWrite(pinUserSwitch1, LOW);
digitalWrite(pinUserSwitch2, LOW);
digitalWrite(pinUserSwitch3, LOW); // Hartmut end

batteryFactor = (100+10) / 10; // ADC voltage to battery voltage


Leider sind die Änderungen nach jedem Update von Sunray wieder weg. Vielleicht, wenn @AlexanderG ganz viel Zeit hat, könnte der Code von @Hartmut in eine Art Neo.cpp und Neo.h ausgelagert werden.
Der Sketch von Hartmut für den ESP32 ist OTA fähig, es können also Einstellungen an den Neopixeln (Farben, Helligkeit, Steuerung) ohne großen Aufwand geändert werden.

Generell finde ich die Visualisierung von Zuständen des Movers genial und auch für die bessere Hälfte steigt der Komfort, man hat ja nicht ständig beim Mähen ein Telefon vor den Augen bzw. will auch nicht ständig zum Notebook rennen um zu schauen warum der Mover wieder steht und Pause macht. Jetzt kann man mit einem Blick den Zustand des GPS sehen und weiss dann auch warum der Kleine irgendwo rumsteht und wartet. Viele andere Zustände des Movers sind ja schon einprogrammiert, da kann man eigentlich jeden Zustand per NeoPixel visualisieren.
Wenn ich Zeit habe und mit basteln fertig bin drehe ich auch noch mal ein kleines Video wie ich es am Ardumover gelöst habe.
 

Anhänge

  • NeoPixel_Ardumover_Verkabelung.jpg
    NeoPixel_Ardumover_Verkabelung.jpg
    1,2 MB · Aufrufe: 29
Zuletzt bearbeitet:
Ich habe es jetzt erst einmal so gelöst:
Für die Anzeige vom GPS habe ich einen Leuchtring 8xLED genommen, das ist eigentlich auch aus der Ferne gut zu sehen.
Die Neopixel Ringe gibt es ja in den verschiedensten Größen.
Hinten habe ich solche LED Platten mit jeweils 7LEDs genommen. 7 LEDs war mir dann doch zu hell so das ich erst einmal nur eine angesteuert habe.
Theoretisch kann man ja auch noch wesentlich weiter runter dimmen, da muss ich noch mal schauen wie das dann aussieht wenn alle 7 LEDs brennen.

Die besser Hälfte ist begeistert. Endlich kann sie mal nachvollziehen wenn der Kleine faul irgendwo rumsteht.

Schön wäre noch eine Akkustandanzeige, die dann gerne auch noch animiert beim Laden sein kann.
 

Anhänge

  • IMG_20220422_180908671_HDR.jpg
    IMG_20220422_180908671_HDR.jpg
    3,6 MB · Aufrufe: 28
  • IMG_20220422_180932134_HDR.jpg
    IMG_20220422_180932134_HDR.jpg
    4,2 MB · Aufrufe: 28
  • IMG_20220422_181016992.jpg
    IMG_20220422_181016992.jpg
    5,7 MB · Aufrufe: 29
Oben