Micropython mit ESP32 - 12: WLAN - Verbindung

Diskussionen, Fragen und Antworten im Forum: Die Lektionen zu 'Micropython mit ESP32'

Das Video findest du hier.

Das Begleitmaterial kannst du hier herunterladen:

https://www.hobbyelektroniker.ch/resources/PytEsp12.zip


Der ESP32 lässt sich einfach mit dem Internet verbinden. Wir verwenden das, um die genaue Zeit abzufragen.


Falls du mich unterstützen möchtest:

Paypal: https://www.paypal.me/hobbyelektroniker

Patreon: https://www.patreon.com/hobbyelektroniker


Für Unterstützer auf Patreon steht das Video werbefrei zur Verfügung.

Kommentare 6

  • Hallo Zusammen,


    ich benötige mal wieder etwas Hilfe. Ich wollte, mit dem aus der Lektion gezeigten Material, die Uhrzeit auf dem ESP32 Board ausgeben. Das funktioniert leider nur bedingt, da ich nicht weiß wie ich in MicroPhython die Formatierung richtig setze. Ich "extrahiere" aus time.localtime() die Teile die ich gern verwenden möchte mit folgendem Code.


    Code
    1. Zeit = time.localtime()
    2. Stunde = Zeit[3] + 1
    3. Minute = Zeit[4]
    4. Sekunde = Zeit[5]


    In der Shell bekomme ich die Ausgabe auch, wie ich sie mir vorstelle, ausgegeben über:


    Code
    1. print(Stunde,":",Minute,":", Sekunde)


    Ich würde nur gern in dem Skript aus der Lektion 11 eine weitere Zeile (genauer genommen zwei weitere Zeilen) auf dem OLED ausgeben. Meine aktuelle Kompromisslösung sieht wie folgt aus:


    Code
    1. def anzeigen(temp, feuchte, druck, ZEIT,IP):
    2. oled.fill(0) # Bildschirm löschen
    3. text_line("Temp.: {:5.1f} C".format(temp),1);
    4. text_line("Feuchte: {:3.0f} %".format(feuchte),2);
    5. text_line("Druck: {:5.0f} hPa".format(druck),3);
    6. text_line("Zeit: {}".format(ZEIT),4);
    7. text_line("IP:{}".format(IP),5);
    8. oled.show();


    Wobei ich die 5. Zeile nutze um zu prüfen, ob eine Internetverbindung besteht. Ich habe bei mir festgestellt, dass die 5 Sekunden für den Verbindungsaufbau zu gering sind und daher Zeit auf 10 Sekunden erweitert.


    Kann mir einer helfen wie ich die Zeile für die korrekte Ausgaben auf dem OLED formatieren muss?


    Hat einer der Nutzer unter MAC OS Catalina vielleicht auch gerade das Problem das in Thonny die Files auf dem Computer nicht mehr angezeigt werden? Falls ja, gibt es eine Lösung damit die auf dem PC gespeicherten Files wieder angezeigt werden?


    Danke im Voraus für die Rückmeldungen!


    Viele Grüße


    Christian

    • Hallo Christian,

      du musst bei der Ausgabe auf das Display wie bei der Ausgabe mit print() von die Werte in Stunde, Minute und Sekunde verwenden. Das muss dann korrekt in einen Format-Befehl gepackt werden. Das sieht ungefähr so aus:

      "{}:{}:{}".format(Stunde,Minute,Sekunde)

      Was zwischen die geschweiften Klammern kommt, möchte ich noch nicht verraten. Das war ja Bestandteil der 'Übungsaufgabe' und wird in Lektion 13 aufgelöst. Informationen zu format() findest du auch in Lektion 3 von Micropython Grundlagen.


      Mit Catalina kann ich leider nicht helfen. Ich habe noch diverse 32bit - Programme und so werde ich vorläufig auf Catalina verzichten. Es gibt aber eine neue Beta-Version (3.2.5) von Thonny. Vielleicht ist dort etwas korrigiert. Du findest sie hier.


      Gruss

      René

    • Hallo Rene,


      danke für Deine Rückmeldung! Da hätte ich auch selber drauf kommen können (hätte ich das Video gesehen :-) ), irgendwie gehen derartige Ausgaben in Phython doch einfacher als in anderen Sprachen.


      Meine Lösung für die Ausgabe sieht jetzt wie folgt aus:


      Code
      1. text_line("Zeit: {}:{}:{:2.0f}".format(Stunde,Minute,Sekunde),4);


      Ich habe noch eine Frage und zwar möchte ich meine fertige Wetterstation draußen platzieren, um so die Wetterdaten im heimischen Netzwerk verfügbar zu haben. Hierzu möchte ich den auf dem Heltec verbauten Li-Ion Battery Manager nutzen. Um jedoch zu wissen wie der aktuelle Ladestatus des Akkus ist, würde ich gern die Spannung auf dem Display ausgeben.


      Weißt Du ob es eine Möglichkeit gibt die Spannung der angeschlossenen Batterie auszugeben?


      Danke und viele Grüße


      Christian

    • Hallo Christian,


      das was ich bisher gelesen habe, überzeugt mich nicht. Insbesondere bei der Methode über GPIO32 bin ich sehr skeptisch. Ich habe mich aber noch nicht richtig damit auseinandergesetzt.


      Für den Moment sehe ich nur eine Lösung mit Hilfe von zwei Widerständen und etwas Lötarbeit:


      Die Spannung direkt am Stecker des LIPOs abnehmen und über einen Spannungsteiler an einen unbenutzten Analogeingang führen. Die dort gemessene Spannung kann dann als Indikator für den Ladezustand verwendet werden.


      Gruss

      René

    • Hallo René,


      danke für Deine Antwort! Dann denke ich, werde ich die Lösung mit dem Spannungsteiler umsetzen.


      Jetzt habe ich dazu direkt eine Frage und zwar:

      Wie hoch darf die Maximalspannung am GPIO PIN sein? Wie lese ich mit MicroPython die Spannung an einem analog PIN ein?


      Danke im Voraus für Deine Bemühungen!


      Viele Grüße


      Christian

    • Hallo Christian,


      die maximal messbare Spannung beträgt 3.3V. Da ein vollgeladener Akku mehr als 4V haben kann, brauchst du einen Spannungsteiler.

      Als Messpin kannst du z. Beispiel GPIO 34 verwenden.

      Dazu musst du Pin und ADC importieren: from machine import Pin, ADC

      Dann legst du den ADC auf Pin 34: adc = ADC(Pin(34))

      Jetzt stellst du die Empfindlichkeit so ein, dass du auch wirklich bis 3.3V messen kannst: adc.atten(ADC.ATTN_11DB)

      adc.read() gibt jetzt eine Wert zwischen 0 und 4095 zurück.


      Diese Messungen brauchen etwas Zeit. Daher sollte zwischen zwei Messungen immer eine kleine Pause sein.

      Beispiel:


      Code
      1. from machine import Pin, ADC
      2. import time
      3. adc = ADC(Pin(34))
      4. adc.atten(ADC.ATTN_11DB)
      5. while True:
      6. print(adc.read())
      7. time.sleep(0.5)

      Gruss

      René