Beiträge von Der Hobbyelektroniker

    Hallo Andreas


    Das Display verwendet für die Datenkommunikation nur die zwei angegebenen Pins. Da in deinem Board das OLED bereits eingebaut ist, sind diese fest vorgegeben. Manchmal benötigen Displays noch einen ENABLE - Pin, der das ganze Display ein- oder ausschaltet. Das müsste aber in der Dokumentation des Boards ersichtlich sein. Ein Schema und eine Pinmap des Board wäre da hilfreich.

    Wie äussern sich die Störungen?


    Im Micropython Kurs hatte ich auch solche Probleme. Eine neue Board-Revision des dort eingesetzten Heltec-Boards benutzte einige Pins, die in der ursprünglichen Version noch frei waren.


    Gruss

    René

    Hallo Tom,


    das hängt vom Webservice ab. Dieser definiert, in welcher Form er die Daten erwartet. Kleine Datenmengen können in einfachen Fällen mit einem GET-Request übermittelt werden, für sensible Daten oder grössere Datenmengen wird normalerweise POST oder vielleicht auch PUT verwendet. Das genaue Format sollte in der Dokumentation des Webservices stehen.


    Gruss

    René

    Hallo Tom,


    die Mitgliederzahlen hier im Forum entwickeln sich recht gut. Doch leider handelt es sich dabei hauptsächlich um 'read-only' - Mitglieder. Die Anzahl Beiträge ist eher wieder etwas zurückgegangen. Deshalb danke ich dir herzlich für deine Beiträge hier im Forum.


    Die 'Plauderei' ist recht beliebt und hat immer gute Zuschauerzahlen. Leider fällt es mir in letzter Zeit oft etwas schwer, geeignete Themen zu finden. Es ist aber von Vorteil, dass die Themen nicht detailliert behandelt werden müssen. Vielmehr soll das Interesse geweckt werden, in der Hoffnung, dass sich dann der Zuschauer selbst mit dem Thema auseinandersetzt.


    Die Idee mit dem Download- und Linkbereich im Forum ist recht gut. Ich werde schaue, was ich da tun kann.


    Gruss

    René

    Hallo Tom,


    vielen Dank!

    Die Experten - Serie zum Arduino entstand eigentlich mehr aus Zufall.


    Früher beschränkte ich mich auf Themen, die ich schon lange kannte. Das wird mit der Zeit langweilig und so entschloss ich mich, selbst auch wieder einmal etwas Neues zu lernen und machte bei dieser Gelegenheit gleich ein Video dazu (Der Highspeed - Arduino). Dieser direkte Registerzugriff löste viel Echo aus, deshalb startete ich die neue Videoreihe.

    Die Informationen dazu finde ich in anderen Videos und auf verschiedenen Webseiten. Nicht alle so gefundenen Informationen sind korrekt, man muss daher alles mit einer zweiten Quelle verifizieren und auch selbst ausprobieren. Eine grosse Hilfe ist mir auch das Buch 'C Programming with Arduino' von Warwick A. Smith (Elektor Verlag). Es verwendet zwar nicht die Arduino-IDE, die Prinzipien der Registerprogrammierung können aber übertragen werden.


    Die direkte Programmierung des ESP32 wäre ein sehr spannendes Thema. Ich denke aber, da wäre C die bessere Programmiersprache. Auf der anderen Seite kann ich natürlich auch in einem Micropython - Programm eigene C-Routinen einbinden. Leider bin ich da selbst noch nicht so weit. Wie bei den Experten-Videos bin ich auf diesem Gebiet relativ neu. Ok, einen kleinen Wissensvorsprung habe ich schon, der ist aber kleiner, als es manchmal den Anschein macht. Aber wer weiss, wo das noch hinführt.


    Gruss

    René

    Hallo Jürgen,


    der Thonny - Interpreter ist ein vollwertige Python, auf dem ESP32 läuft aber Micropython. Leider ist die Unterstützung von time in Micropython etwas eingeschränkt und die Funktionalität ist nicht ganz identisch.


    Wenn du im Micropython - Interpreter time. verwendest, wird utime. ausgeführt. Deshalb sind beide Ergebnisse identisch.


    In Micropython kannst du Unix - Time 1580400921 mit time.localtime(1580400921 - 946684800 + 3600) in unsere Lokalzeit umrechnen.

    Dabei ist

    1580400921 die Unixzeit

    946684800 die Korrektur von Unix- zu Pythonzeit

    3600 die Korrektur für unsere Zeitzone (+ 1h, muss für die Sommerzeit angepasst werden)


    Wenn du Wetterdaten abrufst, kannst du die Zeitkorrektur für die Zeitzone auch über wetterdaten["timezone"] auslesen.

    Code
    1. response = http_get(request_string)
    2. lines = response.split("\r\n")
    3. wetterdaten = json.loads(lines[-1])
    4. timezone = wetterdaten["timezone"]
    5.     time.localtime(1580400921 - 946684800 + timezone)

    Hier sollte dann auch die Sommerzeit berücksichtigt sein.


    Gruss

    René

    Halo Eugen


    Ohne die Details zu kennen ist es schwierig etwas fundiertes zu sagen. Es sieht aber so aus, dass doch ein Problem mit der Stromversorgung besteht. Theoretisch sollte es kein Problem sein, da du eigentlich genügend Reserve hast.. Trotzdem könnte es sein, dass kurzzeitige Stromspitzen auftreten, die die Spannung am Mikrokontroller kurzzeitig zusammenbrechen lassen. Das nachzuweisen dürfte aber schwierig sein, möglicherweise könnte man mit dem Oszilloskop etwas feststellen.

    Vielleicht würde ein grösserer Kondensator an der 5V - Leitung helfen (unbedingt Polarität beachten).

    Leider fällt mit im Moment nichts Besseres ein.


    Gruss

    René

    Hallo Gerhard,


    das ist wirklich sehr beeindruckend. Du konntest wirklich alle Komponenten kombinieren und hast das mit dem JSON - Format richtig im Griff. Ich hoffe, dass die weiteren Kursteile für dich nicht langweilig werden.


    Gruss

    René

    Hallo Andreas


    Der Schritt zwischen dem was ich gezeigt habe und einer professionellen Entwicklung ist noch sehr gross. Es sollte nur ein Anfang sein und die Leute nicht abschrecken. Du hast aber Recht, bezüglich Dokumentation wären einige Hinweise durchaus angebracht gewesen.


    Manchmal trifft man auf Programme, die mehrere hundert Zeilen in loop() aufweisen. Dafür ist nur eine einzige weitere Funktion (setup()) vorhanden. Mehr ist ja auch nicht notwendig, schliesslich hat man ja noch einige Bildschirmseiten globale Variablen.

    Das sind die Leute, die ich abholen möchte. Vielleicht treten dann zukünftig solche Horror-Szenarien etwas weniger auf.


    Übrigens werde ich in der kommenden 'Plauderei am Donnerstag' etwas über Klassen bringen. Nur ganz einfach und hoffentlich für jedermann verständlich. Das Thema wird natürlich nur gestreift und soll einfach die Leute neugierig machen. Ich bin gespannt, wie die Zuschauer darauf reagieren.


    Gruss

    René

    Hallo Bruno


    Ich weiss nicht, ob die Spezifikation von USB genau 5 verlangt. In der Praxis ist es auf jeden Fall oft weniger.


    Zum seriellen Monitor:

    Grundsätzlich könntest du mit print(char(13)) den Cursor auf den Anfang der Zeile zurücksetzen. Es ist möglich, dass das mit gewissen externen seriellen Monitor-Programmen funktioniert (z. Bsp. PUTTY). Es kann auch sein, dass der Arduino-Monitor irgendwann mal diese Fähigkeit bekommt. Ich habe das zwar schon lange nicht mehr ausprobiert, aber ich denke, er kann das immer noch nicht.


    Gruss

    René

    Hallo Tom,


    ich habe soeben alle Tools aktualisiert und Micropython neu auf das Board geladen. Dabei ist kein Problem aufgetreten.

    Meine Versionen:


    Thonny 3.2.6

    Das PlugIn esptool: 2.8

    Bei Micropython habe ich zwei Varianten der Version1.12 ausprobiert:


    GENERIC IDF 3 vom 21.01.2020 und GENERIC IDF4 vom 21.01.2020


    beide laufen einwandfrei.

    Bitte versuche ebenfalls diese Versionen zu installieren. Beim Flashen des Board unbedingt mit der Option erase flash before installing arbeiten.


    Fehlermeldungen beim Stopp mit der roten STOP - Taste können vorkommen und manchmal sind einige Versuche notwendig, bis eine korrekte Initialisierung erfolgt. Allerdings habe ich dabei den Heap - Fehler noch nie bemerkt. Eine etwas sanftere Methode zum Stopp ist CTRL D auf der Tastatur. Manchmal geht es aber nicht ohne den STOP Knopf.


    Gruss

    René

    Hallo Bruno


    Zitat

    Ich bin 54 Jahre alt und wohne ca. 20 Automin. von Zürich.

    Dann bist du ja ganz in der Nähe. Da möchte ich dir den Arduino & Elektronik Abend im FabLab Zürich empfehlen ( https://zurich.fablab.ch/event…ktronik-abend-2020-02-03/ ). Er findet jeden ersten Montag im Monat um 19:00 statt. Parkplätze sind manchmal etwas knapp, aber das Parkhaus Hardau II ist weniger als 5 Fussminuten entfernt. Das Meetup ist für jedermann kostenlos zugänglich, es ist weder eine Anmeldung noch eine Mitgliedschaft notwendig. Ich nehme eigentlich immer Teil, da es eine gute Gelegenheit ist, sich mit anderen Elektronik - Interessierten auszutauschen.


    Zitat

    ich brauchte also nicht die 500 in 476 zu ändern, sonst wären meine Messwerte natürlich nicht mehr stimmig.

    Aber weshalb ist das so? regelt mein Arduino die Spannung von USB auf die fast präzisen 5V?

    Oder hat mein USB genau 5V (älterer iMac)? Habe mich nicht getraut am USB direkt zu messen, nicht dass ich noch einen Kurzschluss mache…

    Wenn die Speisung über USB erfolgt, wird diese Spannung direkt übernommen. Dein Computer scheint also wirklich genau 5V zu liefern. Falls die Speisung über ein externes Netzteil über den runden Anschluss am Arduino erfolgt, wird sie vom Arduino auf 5V herunter geregelt.


    Noch etwas was ich gerne wissen möchte. Wie kann ich dem Arduino sagen, dass er die Werte immer in der gleichen Position im seriellen Monitor schreibt, also den alten Wert überschreibt. Hoffe wir haben das in früheren Lektionen noch nicht behandelt...

    Da muss ich dich leider enttäuschen. Ich glaube nicht, dass es geht. Auf jeden Fall habe ich bisher noch keine Lösung gefunden.


    Gruss

    René

    Hallo Matthias,


    du kannst auch versuchen, den Timout zu erhöhen. Die von mir vorgeschlagenen 5 Sekunden waren bei einigen Zuschauern zu wenig.


    Wenn du mehrere Versuche machst, solltest du nach jedem misslungenen Versuch das Board vom USB trennen. Der WiFi - Teil des ESP32 hat manchmal ein gewisses Eigenleben, das nicht softwareseitig bereinigt werden kann.


    Gruss

    René

    Gemäss Schema ist der 5V Ausgang auf dem Heltec direkt mit 5V vom USB - Port verbunden. 2020-01-15_21-22-29.png

    Damit hängt der maximale Strom auf dem 5V - Leitung alleine von der Leistungsfähigkeit der USB - Speisung ab. Somit ist auch klar, dass die Spannung bei höherer Strombelastung auf deutlich unter 5V fallen kann. Falls diese Spannung zu tief fällt, stellt der 3.3V Spannungsregler seinen Dienst ein und der Prozessor wird nicht mehr laufen.


    Gruss

    René