Daten vom BME280 via ESP32 via RS232 auf PC mit Python 3.8.X visualisieren

  • Hallo zusammen,


    kleine Vorstellung:

    begonnen habe ich mit RaspberryPi 2-3-Zero Anbindung an ein LCD-16x2, DH22 und Kamera, zur Überwachung eines 3D Druckers.

    Bis ich andere Chips ( Entwicklungsboards) kennen gelernt hatte.

    Hier begann ich mit Arduino-IDE und c++/c Projekte zu bauen. Uhren mit MAX7219 ESP8266 an DS3231 auch dimmbar oder ESP-01 an TM1637, Uno-Wifi ein RADAR Modul-IPM-165 mit einem LCD 16x2 Anzeige, 14.Band Spektrum Analyzer an LED-WS2812B Stripp, Grafische Pool Temp. Anzeige. usw.

    Da ich kein Programmierer bin, war es für mich immer eine große Herausforderung etwas zum laufen bringen. Nun habe ich geschaut wie haben es Andere gemacht und versucht zu lernen.


    Nun wollte ich was neues Lernen und das von Anfang an. Als Anfänger in Micro-Python habe ich angefangen eine Uhr mit Datum als Laufschrift mit anschließender aktuellen Uhrzeit auszugeben. Verwendet hatte ich ESP-01 und als Anzeige das TM1637, diese kannte ich schon von Arduino-IDE.

    Das sollte ich hinbekommen, so dachte ich. Leider nein ?( ich begab mich auf die Suche nach Hilfe und fand "Der Hobbyelektroniker". Ich verschlang die Videos zur Micro-Python Grundlagen und dann die ESP32 Micro-Python. Schließlich brachte ich das Uhr Projekt zum Erfolg. 8o

    Aus diesem Grund habe ich mich nun hier Angemeldet, mit Dank an den "Hobbyelektroniker" für seine Hilfe und der Arbeit mit den vielen Videos, deren ich mich erkenntlich zeigte.


    Jetzt fing ich an zu Planen und habe ein neues Projekt "Terrasse Wetter BME280" begonnen das ich hier vorstellen möchte.


    Das Ziel:

    Ein Stromsparender Chip (ESP32-wroom), soll eine Webseite mit dem lokale Wetterdaten anzeigen (Temp, Druck, Luftfeuchte), das ganze mit dem BME280 und mit Micro-Python schreiben. Die Anzeige am SH1106 soll nur dann angehen wenn die es neu gestartet oder eingeschaltet wird, da DHCP eingestellt ist benötige ich die IP. Weill ich aber neugierig bin habe ich die anderen Daten auch mit ausgegeben. Für 5s. bleiben diese sichtbar.

    Da es außen montiert wird, verwende ich das Akku-18650 das mit einem 6V Solarpanel immer wider aufgeladen wird.


    Änderungen habe ich auch schon geplant zB.: Feste IP / Host-Name


    Auch hier Halfen die Videos von "Der Hobbyelektroniker" und Webseiten Design von LastMinute Engineers (soll der Frau gefallen LOL).

    Das Gehäuse habe ich von "DEBASISH DUTTA" unter thingiverse.com gefunden und verwendet.

    Der Dauertest ist noch am laufen, aber dann wird der Chip eingebaut und es wird dann aufgehängt.


    Sicher ist der Code noch ausbaufähig aber immerhin es funktioniert. 8o


    Danke für Lesen

    Gruß Thomas


    PS. Bilder und Code im Zip File

  • Ich habe mal ein Projekt hier vorgestellt, bei dem MQTT zum Einsatz kommt. Allerdings habe ich einen eigenen Server auf einem Raspberry Pi installiert.

    Auf dem Pi werden die Sensordaten von Garten und Wohnung per Funk empfangen. Ein ESP8266 holt sich die Daten ab und zeigt sie auf einem ePaperdisplay an.


    Gruß Kai

    Das Reh springt hoch. Das Reh springt weit. Warum auch nicht? Es hat ja Zeit. 8o

  • Moin Kai,

    oha viele fremde Worte.

    Da muss ich wohl erst mal ein wenig lesen.

    Erst mal Danke jetzt hab ich zumindestens mal ein paar Schlagwörter für Frau GOOGLE.

    Habe die Homepage selbst geschrieben mit HTML und CSS. Das bedeutet also kein CMS.


    Gruss Frank.

  • Eine Frage die sich gar nicht so einfach beantworten lässt. Ich weiß nicht in wie weit Micropython MQTT unterstützt. Wenn es eine Unterstützung für dieses Protokoll gibt, ist es vielleicht erst mal ein einfachsten eine public MQTT Broker zu verwenden und bestimmte Teile auf die eigene HP verlinken. Beispiel HiveMQ. Oder wenn Du auf dem Server beim Hoster selber Software installieren darfst ... nen eigenen Broker wie z.B. Mosquitto installieren, dann ist aber noch nichts visualisiert. Evtl. gibt es Plugins für das CMS das du nutzt, falls Du eine nutzt (Wordpress, Joomla oder sowas?).


    Ich weiß es nicht ... sind nur so Ideen.


    Gruß Kai

    Das Reh springt hoch. Das Reh springt weit. Warum auch nicht? Es hat ja Zeit. 8o

  • Hallo zusammen,

    nun möchte ich meinen nächsten Projektschritt gehen.

    Die Daten die auf dem ESP eingehen also z.B. die Temperatur möchte ich gerne auf meiner Homepage visualisieren.

    Kann mir jemand einen Tip geben wonach ich da suchen muss ?

    Die Homepage liegt auf einem Server bei einem Hoster und der ESP befindet sich in meinem WLAN.

    Wie schliesse ich nun die Lücke.


    Gruss Frank.

  • Respekt. Dafür, dass du vor ein paar Wochen noch "keinen Plan" von Python hattest, hast Du ja ganz schön aufgedreht :thumbup:.

    Gerade das Threading ist ja nicht ganz so einfach.


    Klasse.


    Gruß Kai

    Das Reh springt hoch. Das Reh springt weit. Warum auch nicht? Es hat ja Zeit. 8o

  • Hallo zusammen,

    in den letzten Tagen habe ich einen Ausflug zu Python gemacht.


    Hallo Rene, wenn das nicht ins Forum zu Micropython passt einfach löschen !!!


    Ziel meines kleinen Projektes war, Daten die ich vom BME280 bekomme auf dem PC zu visualisieren.

    Für die meisten von euch bestimmt trivial für mich als blutigen Anfänger war es das nicht.

    Einige der Lektionen von Rene konnte ich anwenden und so stärker verinnerlichen ( Strings, Listen, Funktionen ... ).


    Also eine kleine Projektpräsentation :


    Wie die Daten vom BME280 auf den ESP32 kommen ist ja Dank Renes Lektionen ohne großen Aufwand nachzuvollziehen.

    Diese Daten sende ich nun via RS232 zum PC. Das wird mit einem FTDI Adapter ( Danke an Kai für deine Hilfe ich wusste nicht was ein FTDI Adapter ist und von einem Decode von Byte nach String hatte ich auch noch nichts gehört ) gemacht.

    In Python wollte ich die Daten einfach nur als Graphen darstellen. Das war gar nicht so einfach.

    Im aktuellen Programm werden die Daten im Sekundentakt gelesen und ausgegeben. Das habe ich nur gemacht um besser experimentieren zu können. Sinnvoll ist das ganze sicherlich nicht denn wer will schon die Raumtemperatur oder gar den Luftdruck im Sekundentakt auf seinem Schreibtisch wissen.

    Um eine Struktur zu bekommen und das mehrere Prozesse unabhängig voneinander laufen habe ich mich in das Thema Treading eingearbeitet.

    Eigene Experimente können mit dem im Programm gelassenen Tread Blinker ( Prozess 2 ) gemacht werden.

    Die Graphen habe ich dann mit der Matplotlib gebaut.

    Um das Ganze ein wenig ansehnlich zu gestalten habe ich mich in Tkinter eingearbeitet.

    Matplotlib und Tkinter habe ich über die Backend Funktionalität verheiratet.

    Ein Beispiel für FStrings habe ich im Programm gelassen ( ich finde das ist eine super Sache im Vergleich zum Format Befehl bei Micropython ).

    Dann habe ich mich noch ein bisschen mit den Time Funktionen beschäftigt und mit der Möglichkeit die Ausgaben von Time über Locale ins Deutsche zu bringen.


    Der aktuelle Programmstand wird von mir noch weiter bearbeitet.


    Einige offene Punkte sind : Fehler abfangen ( z.B. wenn der Serielle Port zicken macht ), Daten als CSV Datei ablegen, Daten via WLAN übertragen u.s.w.

    Da gibt es noch so einiges zu lernen und zu experimentieren.


    Wer es sich anschauen mag und konstruktive Kritik abgeben möchte ist herzlich eingeladen.


    Gruß, Frank.


    Screenshot.PNG