ESP32 mit dem Temperatur- und Luftfeuchtigkeitssensor DHT11 - serielle Datenübertragung

  1. Übertragen der Daten auf die serielle Schnittstelle
    	  
    In der Zeile 5 werden alle Messwerte durch Kommata getrennt in der Veriablen 'msg' im CSV-Format gespeichert.
    Mittels der 'print()'-Anweisung wird 'msg' auf die serielle Schnittstelle geschrieben und die Daten werden über das USB-Kabel in den Computer zu Thonny in die Kommandozeile übertragen.
  2. Daten vom ESP seriell auf dem PC mit einem Python-Programm empfangen
    Dazu muss in einer neuen Instanz von Thonny als Interpreter "Lokales Python 3" eingestellt werden.
    Über Menü: 'Werkzeuge - Optionen ... - Allgemein - nur eine Instanz von Thonny zulassen' ist diese Option zu deaktivieren.
    Thonny muss neu getartet und der Interpeter auf 'Lokales Python 3' gestellt werden. Nun wird Thonny ein zweites Mal gestartet und der Interpeter auf 'ESP32' gestellt.
    Diese beiden Thonny-Fenster sind nun diese beiden Instanzen von Thonny, in denen wir abwechselnd arbeiten müssen.
    Geschafft?!!!
    Lade das folgende Programm-Modul in diese Instanz von Thonny mit dem lokalen Interpreter.
    Speichere das Programm exakt als "mrge_communication_pc.py" in einem Verzeichnis DHT11 auf deinem Computer.
    Starte das Programm "mrge_communication_pc.py".
    	  

    Sollte die Fehlermeldung ImportError: no module named 'serial' angezeigt werden,
    ist mittels pip install pyserial die fehlende Bibliothek 'pyserial' für Python zu installieren.
    Wechsle dazu mittels WINDOWS+R in "Ausführen" und starte dort 'cmd'.
    - Bestimme den Installationsort von Python
    dir "C:\Program Files\Python*"
    Wechsle in das gefundene Installationsverzeichnis.
    cd "C:\Program Files\Python312\"
    und gib die folgenden zwei Anweisungen ein.
    python.exe -m pip install --upgrade pip
    python.exe -m pip install pyserial
    Starte das Programm "mrge_communication_pc.py" erneut.
    Es zeigt dir die vorhandenen COM-Ports in der Befehlszeile an.
    In der Schule sieht es typisch so aus.
    >>> %Run mrge_communication_pc.py
    
    Liste der verfügbaren COM-Ports
    
     -  ['COM17', 'Silicon Labs CP210x USB to UART Bridge (COM17)']
    
    Verbinde mit COM16 mit 115200 Baud
    
     - OSError:  could not open port 'COM16': FileNotFoundError(2, 'Das System kann die angegebene Datei nicht finden.', None, 2)
    
    Es gibt hier keinen Port 'COM16'.
    Passe in der Zeile 4 von "mrge_communication_pc.py" den COM-Port an und starte das Programm erneut.
    >>> %Run mrge_communication_pc.py
    
    Liste der verfügbaren COM-Ports
    
     -  ['COM17', 'Silicon Labs CP210x USB to UART Bridge (COM17)']
    
    Verbinde mit COM17 mit 115200 Baud
    
      - OSError:  could not open port 'COM17': PermissionError(13, 'Zugriff verweigert', None, 5)
    
    Jetzt gibt es den Port, aber er wird schon vom zweiten Thonny genutzt.
    Was nun?
    Die Instanz von Thonny, die mit dem ESP verbunden ist, muss jetzt den verwendeten Port freigeben, um dem Pythonprogramm den Zugriff auf diesen zu ermöglichen.
    Stelle über Menü 'Ausführen - Konfiguriere den Interpreter ...' als "Port oder WebREPL" für den ESP32 einfach "WebRepl" oder einen anderen freien Port ein.
    Jetzt sollten die Daten nicht mehr im 'ESP32-Thonny', dafür aber im 'Phyton 3 - Thonny' angezeigt werden.
    Wir beobachten jedoch, das unser ESP-Modul durch die neue Verbindung zurückgesetzt wird und unser 'DHT11-seriell-senden.py' nicht gestartet wird.
    Das erkennen wir am ausbleibenden Blinken der Onboard-LED auf dem ESP32 und an der Ausgabe der Kommandozeile in der 'Phyton3-Instanz'.
    >>>
    ...
    b'load:0x40080404,len:3372\r\n'
    b'entry 0x400805b0\r\n'
    b'\r\n'
    b'MicroPython v1.24.0 on 2024-10-25; Generic ESP32 module with ESP32\r\n'
    b'Type "help()" for more information.\r\n'
    b'>>> '
    b'>>> '
    b''
    b''
    ...
    
    Autsch!
    Die Verbindung wurde jedoch hergestellt.
    Aber der ESP wurde durch den Abbruch der Verbindung zu Thonny und dem Herstellen der Verbindung zu Pythonprogramm auf dem PC neu gestartet.
    Abhilfe schafft hier nur, das unser Programmcode auf dem ESP automatisch gestartet wird. ChatGPT mein dazu
    Kopiere diesen Code in die 'main.py", die auf deinem ESP schon vorhanden sein sollte. Wenn nicht, dann erstelle diese Datei selbst.
    Jetzt sollte bei jedem 'STOP/Restart..", "...,Neustart" oder "Hard-Reset" unser Programmcode laufen.
    Wir erkennen dies am Blinken der Onboard-LED auf dem ESP32 und nun auch in der Kommandozeile.
    >>>
     ...
    b'load:0x40080404,len:3372\r\n'
    b'entry 0x400805b0\r\n'
    b'\r\n'
    b'DHT11-Daten vom ESP32\r\n'
    b''
    b''
    b'2,22,44\r\n'
    b''
    b''
    b'4,22,45\r\n'
    b''
    ...
    
    Geschafft!!! Das war ein richtiger Kraftakt.
  3. Die Daten des DHT11-Sensors vom ESP im Python-Programm seriell empfangen und aufbereiten
    Lade das folgende Programm in die Thonny-Instanz, welche mit Python 3 arbeitet.
    Es nutzt das Programm-Modul "mrge_communication_pc.py".
    Die Anpassung des COM-Port in der Zeile 4 ermöglicht dir den Zugriff auf den COM-Port, mit dem das ESP-Modul verbunden ist.

    	  

    Jetzt kommen die Daten vom ESP in der Form an, wie diese zur Weiterverarbeitung braucht werden. Glückwunsch!!!
  4. Wir wollen diese Daten nun graphisch darstellen. Eine Anfrage an ChatGPT hat diese Antwort geliefert.
    Das darin vorgeschlagene Programm ist nachfolgenden zu sehen.
    Welche Anpassung müssen wir in diesem Programm vornehmen?
    
    	


    In den Zeilen 6 und 29 sicher. In der Zeile 26 ist Platz, um die gesendeten CSV-Daten vom ESP aufzusplitten.
    Und die Beschriftung der Achsen in der den Zeilen 36 bis 38.
    Testen wir nun das geänderte Programm und machen uns auf die Beseitigung von Fehlern.

    
    	

    Durch das mögliche Verhalten (Reset) des ESP-Moduls, wenn das Pythonprogramm die serielle Verbindung herstellt, müssen verschiedene Fehlerquelle mittels 'try' abgefangen werden.
    . ....