Donnerstag, 14. April 2022

Mäh-Roboter mit Raspberry-Pi


Teil 2

Im vorigem Post hatte ich das Projekt vom Mäh-Roboter kurz umschrieben.
Während der Recherchen zu der Umsetzung hatte ich schon einige Dinge getestet:
Hier habe ich mal die Sensoren aufgelistet die ich derzeit für meine Tests benutze.

VL53L0x für die Abstands Messungen, das sind Time of Flight Sensoren. Alternativ könnte man auch die Ultraschall Sensoren HC-SR04 einsetzen. Ich habe meine finale Entscheidung noch nicht getroffen. Die hängt von den Testergebnissen der Probefahrten ab.
Dann für die optische Hinderniserkennung die PiCAM, das erscheint mir am einfachsten.
Für GPS, arbeite ich im Moment mit dem BN-880q. Hier geht aber eigentlich auch jedes andere Modul, ich arbeite immer gerne mit den Modulen, die ich schon mal eingesetzt habe.
Ein wenig komplexer ist die Arbeit mit dem Kompass und Gyro Modul MPU9250. Für dieses habe ich mich entschieden, da es neben dem Kompass eben auch einen Gyro- und Accelerator Sensor besitzt. Das ist von Vorteil, da man damit die Schräglage des Mäh-Roboters in die Kursberechnung einfließen lassen kann. Somit würde dann die Kurstreue steigen. Für die Strommessung und Akkuladung benutze ich ein INA Modul 3221. Die Herausforderung hier ist, dass die Maximal Spannung von 26 Volt nicht überschritten wird. Das ist bei kleinen Akkus wie z.b. 12 Volt o.ä. kein Problem, jedoch bei meinem großen Mäher mit einem 27.5V Akku, stehen bei Voll Ladung 29.4 Volt an. Dafür muss dann ein anders Modul her. Für mein erstes Modell verwende ich 12 Volt  Motoren mit 40 Umdrehungen pro Minute. Die ziehen nicht viel Strom. Da reicht ein L298 Brücken Modul.
Dann stellte sich natürlich die Frage nach der Software. Da ich Python ganz gut kann, dachte ich mir dass ich die selber schreibe. Das ist denke ich auch nicht weiter schwierig, dauert aber lange. Erste Tests habe ich einfach mit ein paar Scripten realisiert um zu sehen ob Elektronik und Mechanik miteinander harmonieren. Natürlich ist die Absicht dann auch eine Weboberfläche zu haben. Welche Kriterien hier für mich wichtig sind, schreibe ich im nächsten Teil, und was ich derzeit auch erfolgreich einsetze. Im Moment widme ich mich mehr und mehr der Elektromechanik, also wie wird das ganze dann später verbaut. Einen ersten Verkabelungsplan habe ich mit einem PiMowBot Begeisterten erstellt.




Und so nach und nach kommen auch die finalen 3d Drucke für die Komponenten hinzu. Eine Variante für die Relais ist z.B. auch das FET Modul HW548. Dazu habe ich eine Befestigungs Platte designed und gedruckt.



Mehr von dem Projekt steht dann im 3. Teil, da gehe ich dann auf den Raspberry pi und die Steuerungssoftware von TGD Consulting ein.

Also dran bleiben!

Dienstag, 29. März 2022

Mäh-Roboter mit Raspberry-Pi 

Fast ein Jahr ist es her, dass ich den letzten Post hier erstellt habe. In dieser Zeit habe ich mich aber nicht auf die faule Haut gelegt, sondern gleich im Mai 2021 eine neue Projekt Idee generiert. In den letzten 11 Monaten habe ich viele Recherchen getätigt und kleine Modelle gebaut. Es gibt da ja schon eine Menge an Bau-Vorschlägen mit den unterschiedlichen Plattformen. Folgende Punkte waren mir wichtig. 

  • Orientierung ohne Perimeter Schleife
  • Optische Hindernis Erkennung
  • GPS Unterstützung
  • Remote Zugriff auf den Mower  zur Administration und Kontrolle

Die ersten Versuche habe ich mit einem kleinen Arduino basiertem Roboter gemacht. Natürlich hatte der m. E. viele Vorzüge. Einschalten und losfahren. Das klappte sehr gut. Aber die vielen Sensoren nahezu zeitglich abzufragen war für mich schon eine Herausforderung. Daher habe ich mich entschlossen einen Raspberry-Pi als Plattform auszuwählen. Mit GPS und Raspberry-Pi hatte ich vor einigen Jahren reichlich Erfahrung gemacht. Mit der PiCam habe ich schon im Rahmen der Katzendusche experimentiert. So entstand letztes Jahr mein erstes Modell.

Auf Youtube habe ich schon einige Testfahrten dokumentiert und mir einen eigenen Kanal dazu eingerichtet. Hier der Link dorthin. und der Projektstand ist mittlerweile so weit fortgeschritten, dass ich mich entschieden habe auf dieser Plattform weiter zu arbeiten.


Hier ist das Video, dass ich als Summary aus dem letzten Jahr erstellt habe. Wie es in dem Projekt weiter geht will ich hier jetzt regelmäßig posten. Also bleibt dran damit ihr wisst wie es weiter geht. 



Samstag, 22. Mai 2021

E-Bike wird Smart

Die Android App

Als letzten Teil dieser Reihe will ich auf die Android App eingehen.
Sie besteht aus 4 Fragments, 
Home (links), History (Mitte), Map (rechts) und Settings (hier nicht dargestellt)


Eigentlich selbsterklärend. Im Home Fragment werden alle Daten angezeigt die in der Summary.txt abgespeichert sind.  {"tick":"1","tour":"19.65 km","since":"1:05","max":"23.00", "year":"1249.19 km","total":"7319 km","lastkm":"31.37","duration":"1:37", "datelast":"20.05.2021"}

Im letzten Teil hatte ich erklärt, wie sich die Dateien mit den GPS Daten zusammensetzten
Diese sind im Verzeichnis "Tours" auf dem Handy gespeichert. Die Dateinamen setzten sich dann so zusammen, dass sie alle Informationen für den Aufbau der History Liste enthalten.
für den ersten Eintrag ist der Dateiname "2021-05-20_1112_3137_097.txt". Spontan kann ich nicht mehr erklären warum ich definiert habe, dass hier dann 097 also 97 Minuten anstatt 137 also 1Std 37Minuten stehen. Ich werde mir was bei gedacht haben. 

In der MAP Darstellung kann ich mir dann anschauen, wo ich mit dem Rad lang gefahren bin.
Je nachdem wie lange das Rad ausgeschaltet war, dauert es etwas bis die GPS Satelliten korrekt ausgewertet werden. daher ist hier eine Lücke in der Darstellung erkennbar. Vielleicht ist es auch ein Schwäche des GPS Moduls. Mir reicht die Genauigkeit aus.

In der Ansicht der Settings ist nicht viel zu sehen daher auch kein Screenshot. Hier kann man die Anzahl der Kilometer eintragen die man ab Jahresanfang gefahren ist. i.d.R. mache ich dass so, dass ich die Anzahl der Jahreskilometer am 01. Januar auf 0 stelle. Damit diese zum E-Bike übertragen wird, ist eine Bluetooth Verbindung zum E-Bike notwendig. Hinter dem Admin Button verbirgt sich die Funktion die den ESP Controller im E-Bike in den OTA Modus versetzt. Hierzu ist das E-Bike in den SSID Bereich des im OTA Script hinterlegten Netzwerkes zu positionieren. Auch diese Funktion ist nur  mit Bluetooth Verbindung zum E-Bike verfügbar

Nun bin ich nicht der Android Programmier Spezialist und habe mir viel Techniken erst selber aneignen müssen. Das Arbeiten mit Fragments, die Darstellung der Listen funktioniert komplett anders als z.B. mit jQuery Mobile. Das Herstellen einer Bluetooth Verbindung zum Android mit entsprechender Datenübertragung war eine größerern Herausforderungen. Aber dennoch, ich habe das Projekt mit viel Geduld umsetzen können und habe noch vor einiges zu verändern.

Ich habe die App mit Android Studio 4.12 auf einem Linux System erstellt. Sollte sich jemand den Code herunterladen und die App installieren wollen, so muss man die Pfade auf dem Handy manuell anlegen, und die Summary.txt in den Pfad kopieren. Darüber hinaus braucht die App die Berechtigung für Bluetooth und SD Schreibberechtigung. Ich habe bewusst nicht eine kompilierte Version hochgeladen.
Es gibt sicherlich genügende Spezis die es besser / anders machen würden, aber diese APP funktioniert auf meinem Handy sehr zuverlässig. Für jeden Ratschlag bin ich dankbar, Kritik gerne, aber dann sollte auch gleich ein konstruktiver Teil dabei sein.

Was ist als nächstes geplant? Da ich nicht immer mein Handy dabei habe, will ich umsetzen, dass sich die Mein Home Webserver die Dateien vom E-Bike holt. Also wenn es zu Hause angekommen ist, wird über ein Raspberry eine BT Verbindung zum E-Bike hergestellt, der dann alle neu GPS Dateien und die Summary.txt dann auf den Server kopiert. Rufe ich zu Hause dann die E-Bike App auf, holt sich die APP die Dateien vom Server.

Wenn Du Fragen zum Quellcode der App hast, dann kannst Du mir gerne eine Mail schreiben.

Viel Spaß beim Nachbauen / Programmieren.

Dienstag, 4. Mai 2021

E-Bike wird Smart

Das ESP Programm

Dieser Abschnitt beschäftigt sich mit dem Programm, welches auf dem ESP läuft.
Grundsätzlich bin ich bei der Architektur so vorgegangen, dass alle Informationen zu der gerade gefahrenen Strecke in mehreren Dateien abgelegt werden. Warum in mehreren Dateien? Nun ich wollte keine Datenbank einsetzen, das wäre mit Kanonen auf Spatzen, aber ich wollte es für den Sketch so einfach wie möglich halten.
Und so werden alle Daten vom GPS Empfänger in eine Datei geschrieben, und alle Daten die beim Start notwendig sind, also aktuelle Zeit, aktueller Kilometerstand aus einer Datei gelesen.
Die Daten, die für die Übertragung auf das Handy notwendig sind, werden in der dritten Datei gespeichert und mittels Bluetooth als Datenstream ans Handy gesendet, wenn eine Verbindung zum Handy besteht.
Darüber hinaus erzeuge ich noch an jedem Tag an dem gefahren wird eine Log Datei, die ist aber nur für die Fehleranalyse notwendig. Nach jetzt gut 4 Wochen Betrieb kam es bisher noch zu keinem Fehler.
Einige Informationen sind im Laufe der Entwicklung auch obsolete geworden, da ich im letzten Jahr noch mit den Radumdrehungen gearbeitet habe, da war ich noch nicht in der Lage den CAN Bus auszulesen.  
Fangen wir mit der init.txt  Datei an.
der Inhalt:
{"tick":"1","tour":"0.00 km","since":"0:00","max":"0.00","year":"666.01 km","total":"6736.05 km","lastkm":"4.28","duration":"0:16","datelast":"03.04.2021"}

tick; wird nicht mehr zur Berechnung benötigt, wird nur noch im Android Programm zur Identifizierung des Datenstreams genutzt, wird irgendwann mal weg fallen
tour: enthält die Anzahl der Kilometer seit dem Start der aktuellen Tour.
since: seit wann wird die Tour gefahren, und später dann als Info über die TourZeit
max: die Maximale Geschwindigkeit während dieser Tour
year: die Anzahl der Kilometer die in diesem Jahr zurückgelegt wurde
total: die Anzahl der Kilometer die das Rad zurückgelegt hat CANBus ID 0x202
lastkm: die Anzahl der Kilometer der letzten Tour
duration: die Dauer der letzten Tour
datelast: das Datum an dem die Tour gefahren wurde.

Diese Daten werden mit der Funktion Send_BT_Summary ans Handy gesendet wenn das Rad steht und eine Verbindung besteht. Aber auch alle 100m in die Datei auf der SD Karte im Rad geschrieben.

der Inhalt der setup.txt:
{"raumf":"2250","l_date":"20210405","l_start":"1630","l_startkm":"6736.05"}

raumf: ist obsolete, da nicht mehr mit dem Radumfang und der Radumdrehung gearbeitet wird. kann genauso wie tick irgendwann mal rausfliegen.
l_date: ist das Datum an dem die aktuelle tour gestartet wurde. ist das aktuelle Datum größer als dieses, dann beginnt er eine neue Tour und schließt diese ab.
l_start: ist die Uhrzeit an dem die aktuelle tour gestartet wurde
l_startkm: ist der Kilometerstand an dem die aktuelle Tour gestartet wurde.

Bleibt als letztes von das Abspeichern der GPS Daten. Dazu wird bei beginn einer neuen Tour aus dem l_date eine neue Datei erstellt, in diesem Beispiel 20210405.txt. Hier werden die GPS Daten im JSON Format gespeichert.{"GPS":[{"lat":"51.273742640","lng":"6.793988365"},{"lat":"51.273086760","lng":"6.812092105"},
Wird eine Tour abgeschlossen, also wenn das aktuelle Datum ungleich der dem
 l-date ist, dann wird an diese Datei noch ein die folgenden Informationen der aktuellen Tour angehängt, beginnend mit der geschlossenen eckigen Klammer. ],"durt":"0:59","dist":"15.00","avsp":"15.00","maxsp":"28.05"}

Diese Datei wird dann wie folgt benannt 2021-04-05_1630_1500_059.txt und im Data Verzeichnis der SD Karte im ESP abgespeichert. Ist das Handy dann in Reichweite und besteht eine BT Verbindung wird es ans Handy übertragen und steht dann der APP unter History zur Verfügung.

Das Programm habe ich las Zip Datei zum Download bereitgestellt. Es sind natürlich noch die diversen Bibliotheken notwendig, die von die diversen ESP Development Quellen heruntergeladen werden können. Ein wenig tricky ist es mit der CAN Bus Library, hier gibt es unterschiedliche mit gleichem Namen. Ich habe diese von sandeepmistry genutzt. Der Vorteile bei dem verwendeten Modul ist, dass
a:) der ESP32 einen eingebauten CAN Controller hat,
b:) damit kann das CAN Interface sehr viel kleiner ausfallen.

Im nächsten Teil gehe ich dann noch auf die Android App ein.
Viel Spaß beim lesen, wenn jemand Fragen hat, einfach melden.

Gruß
Ulli





Freitag, 16. April 2021

 E-Bike wird Smart
 Die Schaltung

In den letzten Tagen habe ich mich mit der Dokumentation der Schaltung befasst. Alles aus meiner Kladde zu einem fritzing Plan zusammengefasst.




Eine Platine habe ich dafür nicht geätzt, letztendlich habe ich alle Boards in Sandwich Architektur zusammen gelötet: Alles zusammen ist dann in ein Gehäuse gewandert und im E-Bike eingebaut worden. 

Die Schaltung wird mit der Akku Spannung des Rades betrieben. Das Rad schaltet die Spannung nach einigen Minuten Stillstand ab. Somit wird auch der ESP Controller ausgeschaltet. Da die Schaltung verdeckt angebracht ist habe ich einen kleinen Beeper eingebaut. Er gibt je nach Betriebszustand Signale ab. Somit ist ein kurzer Check über die Funktionsbereitschaft sichergestellt. Wird das Rad eingeschaltet und ist alles okay, dann gibt er 2 kurze Signale aus. Liegt ein Fehler mit der SD Karte vor, so piept es 3 mal lang. Wird das Rad geladen dann dann piept er 2 mal kurz und einmal lang. Würde die Schaltung den CAN Bus nicht auslesen können, piept es 2mal lang und 2 mal kurz. 


















In dem nächsten Post werde ich den Arduino Sketch veröffentlichen.

Viel Spaß beim lesen.







Mittwoch, 14. April 2021

E-Bike wird Smart
Die Idee


Seit 2 Jahren bin ich E-Biker. Lange war ein E-Bike bei mir mit dem Spitznamen "Kukident Rad" behaftet, denn ich fühlte mich jung und sportlich und kam gut ohne Unterstützung aus. Das ist heute sicherlich auch noch so, aber als das E-Bike dann da war, kam schon der Gedanke auf, dass eine Anschaffung vorher auch Sinn gemacht hätte. Es erhöht den Fahrspaß immens. Es ist wie es ist, Es wird nun viel mit dem Rad gefahren und das Auto dient eigentlich nur noch als Transportmittel um an die Ausgangspunkte weiter weg gelegenen Startpunkte für schöne Touren zu kommen.
Mein Rad ist mit einem Bosch System ausgelegt. Eines der Kaufentscheidungen, neben einem Riemenantrieb und einer stufenlosen Nabenschaltung.
Schnell kam mir der Gedanke das Rad mit dem Handy zu koppeln und Informationen über Kilometerstand, Akkustand, Reichweite auch auf das Handy zu übertragen. Ein neues Projekt war geboren.
Auf der Suche nach Informationen über den CAN BUS im Rad, bin ich dann auf das Pedelec Forum gestoßen. Hier gab es schon jede Menge Reengineering Know How. Aber es gelang mir selber nicht die Daten mittels Raspberry oder ESP auszulesen. Der Fehler saß da sicher vor dem Gerät. So habe ich erst einmal eine Lösung verfolgt mit einem Zusätzlichem Impulsgeber am Rad, der zu Mindestens die gefahrenen Kilometer registriert.
Anforderungen an meine Lösung waren:

  • GPS Aufzeichnung der zurückgelegten Strecken mit dem Rad
  • Erfassung der zurückgelegten Kilometer unabhängig von den GPS Daten
  • Erfassung der Fahrtzeiten
  • Erfassung der Daten ohne Mitführung eines Handys
  • Überspielung der Daten auf das Handy wenn es verfügbar ist.

Eine ähnliche Lösung hatte ich vor Jahren schon mal mit einem Pi-Zero für mein Firmenfahrzeug erstellt, damit konnte ich im nach hinein dokumentieren an welchem Tag ich wan wo für wie lange war. Das alles wurde in einer sql Datenbank gespeichert und ich konnte das über html abfragen. Nun hier sollte es eine Android App sein und Platz im E-Bike für die Elektronik war auch weniger als in einem Mittelklasse Wagen. 

Elektronik und Programmierung alles kein Hexenwerk, aber mit Android Programmierung hatte ich noch keine Erfahrung. Aber auch das erwies sich nicht als Buch mit sieben Siegeln.
Die größte Herausforderung war hier die Programmierung der App mit Fragments und der Realisierung einer Datei Übertragung vom ESP 32 über Bluetooth zum Handy

Den Quellcode für das Android Handy werde ich hier in den nächsten Tagen einstellen.
Die Daten dazu speichert die App derzeit auf der SD Karte.

 

In der Datei Summary.txt stehen die Daten die über den Home Screen der App angezeigt werden, die aufgezeichneten GPS Daten sind in dem Unterordner Tours abgelegt und werden per Filetransfer über Bluetooth von ESP zum Handy übertragen. Mehr dann in den nächsten Tagen.