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;
};
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
Ausgang um Beleuchtung beim mähen zu schalten
Hallo, ich habe meinem Mower heute zwei LED Scheinwerfer verpasst. Habe die Spannung jetzt erstmal direkt hinter der Eingangssicherung abgenommen. (Dann mit einem Step Down Regler auf 12V geregelt) Gibt es irgendwie eine Möglichkeit die 12V nur zu schalten, wenn der Mäher arbeitet (oder von mir...
forum.ardumower.de
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;
};