Stand 8. August 2020
Begonnen hatte es vor mehr
als 20 Jahren, als ich Mikrocontrollerbausteine und die sich mit ihnen
durch kleine selbst erstellte Softwareprogramme ergebenden vielfältigen
Möglichkeiten "entdeckt" hatte. Waren es zu Beginn die in Assemblersprache
zu programmierenden Bausteine der MCS-51-Serie, so erfolgte später
ein Umstieg auf die weit verbreiteten ATMEL-AVR-Chips unter Verwendung
der Programmiersprache "BASCOM". Gegenüber Assembler vereinfachte
sich die Programmerstellung dadurch deutlich und machte sich vorallem dann
bemerkbar, wenn z.B. etwas anspruchsvollere mathematische Kalkulationen
durchzuführen waren. Der nächstfolgende Schritt bestand dann in
einem Umstieg auf die Entwicklungsumgebung "ARDUINO-IDE" unter Verwendung
der Sprache C++, was auch eine Weiterverwendung der vertrauten ATMEL-Hardwarekomponenten
erlaubte.
Nachdem alle mir vorschwebenden Projekte in den letzten Jahren auch
mit den vertrauten Hard- und Softwarekomponenten realisierbar waren,
verlor ich die Neuentwicklungen auf dem Gebiete der Mikrocontrollerbauelemente
etwas aus dem Auge. So hatte ich mir zwar auch einmal ein paar Bausteine
der Serien ESP12 und ESP8266 zugelegt, aber nie die dringende Notwendigkeit
gesehen, sie auch praktisch einsetzen zu müssen. Unlängst stiess
ich nun aber auf die Serie: "ESP32" mit ihren erweiterten Möglichkeiten,
wie z.B. auch WiFi- und Bluetoothfunktionalität. Nachdem es hierzu aber
jede Menge Literatur und Beschreibungen im Internet gibt, möchte ich
auf ihre Kenndaten hier nicht näher eingehen. Was mich letztendlich aber
zu ihrer Nutzung bewegte, war die Möglichkeit, die von der Arbeit mit
ARDUINO vorhandenen Softwarebausteine grösstenteils weiterverwenden
und die Ergebnisse dann über die vertraute IDE auch wieder zum Prozessor
hochladen zu können.
Abb.1
Meine vorerst letzte "Entdeckung" waren nun die Bausteine der Serie
"M5Stack" ( Abb.1 ). Gerade mir als absolutem "Mechanikmuffel" kam dabei
zugute, dass man mit ihnen auch etwas umfangreichere ESP32-Projekte realisieren
konnte, ohne dabei irgendwelche Mechanikarbeiten ausführen zu müssen
und dennoch zu durchaus ansehbaren Ergebnissen kommen konnte.
Herzstück der Serie ist die M5Stack-Basiseinheit ( Abb.2 ).
Sie wird in einem quadratischen Platikgehäuse mit u.a. ESP32-Prozessor,
320x240 Pixel-TFT-Farbdisplay, 110mAh-Akku, Ladevorrichtung , NF-Verstärker
mit 1W-Lautsprecher, SD-Kartenslot, Grove-I2C-Port, 30pol. Anschlussleiste
und Bodenplatte geliefert. Eine USB-Buchse des Typs "C" dient dabei der
externen 5V-Versorgung und Programmierung. Ansteckbar an die Basiseinheit
ist ein reichhaltes Sortiment an verfügbaren Zusatzbausteinen. Dazu
gehören z.B. ein 650mAh-Akku ( die Kapazität des in der Bodenplatte
der Basiseinheit untergebrachten internen Akkus ist für längeren
Betrieb nicht ausreichend ), frei bestückbare Prototypenboards, GPS-Boards,
LoRa-Boards u.v.a.
Abb.2
Um erste praktische Erfahrungen mit der M5Stack-Basiseinheit sammeln
und auch etwas über eventuelle Besonderheiten der verwendeten Sourcecodes
lernen zu können, suchte ich nach einem geeigneten Projekt und stiess
dabei im Internet auf die folgende Seite aus Japan:
https://macsbug.wordpress.com/2017/12/26/gps-clock-with-m5stack/.
Abb.3a-c Ansicht der GPS-Navigationsdaten
und Uhrzeit
( Fotos Abb.3b-c: P. Scheuermann )
Mithilfe eines zusätzlich erforderlichen GPS-Moduls aus der
M5Stack-Serie erlaubte sie nicht nur die Auswertung und Anzeige der wichtigsten
Navigationsdaten, sondern gestattet per Tastendruck auch eine Anwahl zwischen
entweder analoger oder digitaler Uhrendarstellung.
Nachdem der Original-Quellcode an die Zeitzone von Japan angepasst
war, erforderte es einige kleinere Änderungen, um ihn stattdessen
auch für den Einsatz in unserern Regionen tauglich zu machen. Danach
kann jetzt zwischen "MESZ" und "MEZ" gewählt werden, wobei die entsprechende
Auswahl vorerst allerdings nur direkt im Quellcode vorgenommen werden kann.
Für später ist hier noch eine tastengesteuerte Umschaltung vorgesehen.
Zum Anzeigen der Uhrzeit benötigt das verwendete GPS-Modul ( Ublox
NEO-M8N ) kein GPS-FIX, sondern nur ein Minimum an Satellitenempfang. Interessant
ist, dass im GPS-Modul dabei offenbar auch noch eine interne Uhr gestartet
wird, sodass die Zeitanzeige auch noch nach Ausfall des Satellitenempfangs
bzw. Betrieb ohne GPS-Antenne ( mit vermutlich etwas reduzierter Genauigkeit
) weitergeführt wird.
Derzeit existiert auch noch ein kleiner Bug: Er bewirkt,
dass in den beiden ersten Stunden nach Mitternacht ( bei MESZ-Betrieb
) jeweils noch das Datum des Vortages angezeigt wird. Vorschläge
zur Beseitigung dieses ( m.E. bei genauer Hinsicht nicht ganz trivialen
) Problems nehme ich aber gern entgegen.
Auch bei der Auswahl der dargestellten GPS-Parameter habe ich mir
einige Änderungen gegenüber der Originalversion erlaubt. Dabei
sind einige m.E. aber leicht verzichtbaren Ausgaben entfallen. Hinzugekommen
sind stattdessen eine Anzeige der Anzahl jeweils ausgewerteter Satelliten,
HDOP-Werte und eine Darstellung der Batteriekapazität. Diese Anzeige
erlaubt zwar nur eine Abstufung in 25%-Schritten, erwies sich aber bei
Betrieb aus dem internen Akku als sehr nützlich.
Der modifizierte Quellcode kann hier heruntergeladen werden:
http://www.kh-gps.de//GPS_Macsbug_EU_3.zip
NEU: Eine weitere mit einem
M5Stack realisierte Anwendung findet sich auf meiner Seite:
http://www.kh-gps.de/Lora-Decoder_OE.htm