Beiträge von Der Hobbyelektroniker

    Ja, solche Links sind sehr erwünscht. Schliesslich dienen sie dazu, das Wissen der Leser zu vergrössern.


    Ich habe seit vor einiger Zeit zwei PCF8575 Module hier. Bisher fand ich aber noch keine Zeit um etwas damit zu machen. Ich werde dabei auch etwas auf die Hintergründe eingehen und nicht nur eine einfache Anleitung geben.

    Hallo Torsten,

    es freut mich, dass du hier bist. Du hast ja schon recht viel Erfahrung mit den ESPs. Hier auf dem Kanal ist es für viele Zuschauer Neuland.


    Die I2C Erweiterungskarten sind sehr interessant, da man oft zu wenig Pins zur Verfügung hat. Ich werde schauen, was ich tun kann. Es wird aber sicher eine Weile dauern, da ich im Moment mit der Vorbereitung des Kurses 'Micropython mit ESP32' beschäftigt bin. Innerhalb dieses Kurses wird es auch einen Webserver geben, der nicht nur Werte anzeigt, sondern auch einfache Steuerungsaufgaben übernehmen kann.


    Gruss

    René

    Jetzt geht es weiter mit Funktionen. Bei der Parameterübergabe gibt es verschiedene Möglichkeiten, die man kennen sollte. Deine Kenntnisse über Pointer werden dir hier weiterhelfen.

    Das Video findest du hier.


    Das Begleitmaterial findest du unter

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


    Für Fragen und Anmerkungen schreibe einfach eine Antwort auf diese Nachricht.


    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.

    Hallo Udo


    Tut mir leid für die Verzögerung. Ich habe schon vor einigen Tagen etwas vorbereitet aber dann vergessen, es hier in das Forum zu stellen.

    Die Probleme liegen bei den verschiedenen Versionen des Motor - Moduls.

    Du kannst beide ausprobieren.


    4_Hindernis7 ist die alte Version (mit motor_) und 4_Hindernis7a ist die neue Version (mit motor.)

    Ich hoffe, dass diesmal alles klappt.


    Gruss

    René

    Dateien

    Hallo Matthias,

    mit der Ladeschlussspannung liegst du richtig. Teilweise wird auch 4.2V angegeben. Mit 4.1V bist du aber auf der sicheren Seite.

    Der maximale Ladestrom hängt sehr vom Akku ab. Bei einem modernen Akku sollte es nicht notwendig sein auf einen Zehntel der Kapazität zurück zu gehen. Vermutlich wäre 1 A kein Problem, ich werde mich aber hüten, eine solche Empfehlung abzugeben. Mit 350 mA kann sicher nichts passieren.

    Ein guter Test ist auch immer die Temperatur. Eine leichte Erwärmung des Akkus beim Ladevorgang ist normal, heiss werden darf er aber nicht.


    Gruss

    René

    Der Sensor kann mit beiden Adressen arbeiten. Welche davon verwendet wird, ist auf dem Board festgelegt. Es gibt auch Boards, auf denen man das mit einer Lötbrücke ändern kann.


    Dass die Feuchte 0% anzeigt ist logisch, da der BMP280 keine Feuchtigkeit messen kann. Zu den anderen Werten kann ich nicht viel sagen, möglicherweise muss auf andere Art von den Raw - Werten umgerechnet werden.


    Woher hast du die bmp280.py - Datei? Möglicherweise gibt es hier eine neuere Version.


    Gruss

    René

    Hallo hardy,

    ich habe zwar keinen BMP280 hier, ich glaube aber, dass das kein Problem sein sollte. Der BME280 kann einfach noch zusätzlich die Luftfeuchtigkeit messen. Ich werde auch den BME680 zeigen, der zusätzlich noch die Luftqualität bewerten kann.


    Die Idee von diesem Kurs ist, dass die Teilnehmer verstehen, was sie machen. Deshalb heisst er auch nicht 'Wir bauen eine Wetterstation'. Jeder kann auf dem Level mitmachen, an dem er Spass hat.


    Das einfachste Level ist der einfache Nachbau der Wetterstation. Solche Zuschauer interessieren sich nicht besonders wie das funktioniert und laden einfach den dazugehörigen Code herunter. Das funktioniert dann natürlich nur, wenn man die exakt identische Hardware hat. Hier lohnt es sich mit dem Einstieg zu warten, bis der Kurs beinahe zu Ende ist. Vorher werden die einzelnen Elemente nach und nach eingebaut und laufend verbessert. Sie sind erst gegen Schluss stabil.


    Etwas fortgeschrittener ist der Level der Zuschauer, die jeden Schritt mitmachen. Man lernt hier wirklich Micropython zu programmieren und die einzelnen Sensoren anzusteuern. Diese Zuschauer sollten in der Lage sein, ähnliche Hardware zu verwenden und die Software entsprechend anzupassen. Hauptsächlich am Anfang werden viele Grundlagenexperimente gemacht, die in der Wetterstation nicht mehr direkt gebraucht werden.


    Das höchste Level wird mich selbst an Grenzen bringen. Dabei wird Micropython etwas systematischer angeschaut. Da ich weiss, dass Viele nicht so weit eintauchen möchten, wird es dazu Ergänzungsvideos geben, die dann doch sehr softwarelastig sind. Wer hier mitmacht, sollte danach in der Lage sein komplexe eigene Ideen zu verwirklichen. Für zeitkritische Teilen wird auch die Einbindung von C - Code in ein Python Projekt besprochen.


    Eine Aufteilung in einzelne Dateien ist sinnvoll um die Übersicht zu waren. Man darf dabei nur nicht übertreiben.


    Die einzelnen .py - Dateien wissen erst voneinander, wenn man einen Import durchführt. Man kann recht komplexe Modulstrukturen bauen. Wir werden einfach bleiben (mindestens am Anfang) und alle Dateien in einem Verzeichnis halten.


    Gruss

    René

    Jetzt bin ich etwas ratlos. Unter Windows 10 konnte ich den Fehler reproduzieren. Allerdings nicht immer, manchmal geht es.

    Was herausgeschrieben wird, siehst du im angehängten Screenshot.

    Das habe ich gemacht:

    - Tonny starten und Datei ssd1306.py laden

    - 'upload current script with current name' --> gibt Fehlermeldungen

    - Datei auf dem Board löschen

    - Mit %lsdevice kontrollieren

    - Datei nochmals übertragen --> funktioniert

    - Nochmals übertragen --> funktioniert immer noch

    - Mit %lsdevice kontrollieren, ob die Datei wirklich vorhanden ist


    Ich kann das aber nicht sauber reproduzieren. Momentan schaffe ich es nicht mehr, den Fehler zu bekommen.

    Bekommst du unter Linux genau den selben Fehler?


    Gruss

    René


    ThonnyFehler.png

    Hallo Matthias,


    ich verwende ein externes Ladegerät von Varta ( https://www.amazon.de/Varta-Ladegerät-geeignet-RCR123A-Einzelschachtladung-schwarz/dp/B0751NGPFV ). Ein Labornetzteil eignet sich auch, man sollte dabei den maximalen Ladestrom und die Ladeschlussspannung nicht überschreiten.

    Ich habe keinen Hinweis auf eine Ladeelektronik über USB gelesen. Deshalb kann ich nicht sagen, ob es funktioniert. Hat das schon jemand genauer untersucht? Ich denke nicht, dass der Versuch Schaden anrichtet. Das wäre ein schwerwiegender Designfehler. Aber es könnte sein, dass die Ladung über USB verhindert wird.


    Gruss

    René

    Hallo hardy,


    ich weiss, im Kurs muss ich dann schon noch etwas genauer werden.

    Hier nur mal einige Kurzhinweise:


    Wenn Thonny mit angeschlossenem Heltec gestartet wird, müsste repl in der Konsole etwas wie

    MicroPython v1.11-146-g154062d9c on 2019-07-12; ESP32 module with ESP32

    Type "help()" for more information. [backend=ESP32]

    herausschreiben. Das zeigt, dass Micropython richtig installiert und aktiv ist.


    Damit das Display angesprochen werden kann, wird ssd1306.py benötigt. Ich empfehle solche Bibliotheken immer auf das Board zu kopieren. Das kann auf zwei Arten geschehen:

    - Laden von ssd1306.py in Thonny und dann mit 'upload current script with current name' auf das board kopieren.

    oder

    - %upload '../../../Lektion 4/ssd1306.py' /ssd1306.py in der repl - Konsole eingeben

    Bei Windows muss anstelle von '../../../Lektion 4/ssd1306.py' vermutlich irgend ein Windows - Pfad stehen.


    Welche Dateien auf dem Board vorhanden sind, kann mit dem repl - Befehl %lsdevice kontrolliert werden.


    Dein Hauptprogramm, ich nenne es hier oledTest.py, ist eigentlich richtig. Damit das Oled auch sicher eingeschaltet ist, muss beim Heltec - Board aber unbedingt Pin 16 auf HIGH gesetzt werden.


    Das Hauptprogramm kann direkt aus Thonny ausgeführt werden, ohne dass es auf das Board kopiert wird. Ich möchte aber auch hier empfehlen, 'upload current script with current name' auszuführen. Das muss jeweils nur einmal gemacht werden, danach genügt jeweils ein einfacher Save.

    Jetzt kann das Programm über Thonny ausgeführt werden.


    Die Datei muss nicht main.py heissen. Ich möchte sogar davon abraten ein main.py zu in der Testphase zu verwenden, da dieses Programm immer beim Start des Board automatisch ausgeführt wird. Erst wenn das Projekt funktioniert, sollte man das Hauptprogramm zu main.py umbenennen.


    Wenn du schon ein main.py auf dem Board hast und dieses loswerden möchtest, hilft die repl - Konsole weiter.

    import os

    os.remove('main.py')

    Das funktioniert selbstverständlich mit allen Dateien.


    Die Fehlermeldung 'object has no attribute 'SSD1306_I2C' ist etwas unerwartet. Könnte es sein, dass du eine falsche Version von ssd1306 geladen hast? Im Anhang findest du eine Version, die funktionieren sollte.


    Gruss

    René

    Dateien

    • ssd1306.py

      (4,54 kB, 2 Mal heruntergeladen, zuletzt: )

    Hallo Udo


    Hier ist das ganze Paket mit allen angepassten Modulen. Es ist auch eine Version von motor.h / motor.cpp darin, doe kompatibel mit den alten .ino - Dateien ist. Ich hoffe, dass ich überall die richtigen Änderungen vorgenommen habe.


    Gruss

    René

    Dateien

    Hallo Rene

    ich habe in der Datei >4_Hindernis7.ino<

    die Dateien >Motor.cpp< und >Motor.h< durch die neuen ersetzt.

    Leider bekomme ich eine Fehlermeldung (siehe Anhang)

    Hallo Udo

    Ja, das ist klar. Bisher habe ich nur das Modul Motor angepasst. Die anderen Module fehlen noch.

    Ich hoffe, dass ich das heute Abend anschauen kann.

    Es besteht noch ein zweites Problem. Das Motor - Modul wurde inzwischen stark geändert und als eine Klasse Motor implementiert. Daher funktioniert 4_Hindernis7.ino nicht mehr ohne Anpassung.


    Gruss

    René

    Hallo Udo

    Zum Glück sind nicht alle Beispiele so schlecht wie Lesson 10 (L298 Motor Driver). Die anderen Beispiele sind viel sorgfältiger programmiert, verwenden aber andere Pin - Nummern. Diese sind ab Lektion 11 bei allen Beispielen gleich, darum betrachte ich diese als korrekt.

    Hier angehängt ist ein Testprojekt, mit dem du ausprobieren kannst, ob meine Version der Motoransteuerung funktioniert. Einfach alle Dateien im ZIP-File in ein Verzeichnis mit dem Namen MotorTest1 entpacken.

    Das Testprogramm sollte automatisch einen Testlauf ausführen, der in setup() definiert wird.


    Dieser Programmteil legt den Ablauf fest:

    Code
    1. autoCommand.addCommand(cmd_vor,2000); // vorwärts 2 Sekunden
    2. autoCommand.addCommand(cmd_zurueck,2000); // rückwärts 2 Sekunden
    3. autoCommand.addCommand(cmd_drehen_rechts,2000); // Drehung rechts 2 Sekunden
    4. autoCommand.addCommand(cmd_drehen_links,2000); // Drehung links 2 Sekunden
    5. autoCommand.addCommand(cmd_vor,1000); // vorwärts 1 Sekunde
    6. autoCommand.addCommand(cmd_kurve,2000,2); // Rechtskurve 2 Sekunden
    7. autoCommand.addCommand(cmd_kurve,2000,-2); // Linkskurve 2 Sekunden

    Es ist möglich, dass die Richtung vertauscht ist. Auf jeden Fall interessiert es mich, was dein Roboter mit diesem Programm macht.


    Gruss

    Rene

    Dateien

    • MotorTest1.zip

      (8,22 kB, 1 Mal heruntergeladen, zuletzt: )

    hier die Daten damit du sie dir mal ansehen kannst.

    Hallo Udo


    Danke für die Dateien. Ich muss leider heute Nachmittag arbeiten, werde sie aber heute Abend anschauen. Ein erster Blick zeigt, dass der Code ein gutes Beispiel für schlechte und unübersichtliche Programmierung darstellt. Aber immerhin kann man daraus die notwendigen Informationen ziehen.


    Ich denke, es sollte kein Problem sein, meine Module so anzupassen, dass sie auf deinem Roboter laufen. Ich werde zuerst dasMotor - Modul anpassen (ohne dass du einen Inverter brauchst). Das werde ich dir dann zusammen mit einem kleinen Testprogramm schicken. Ich bin selber gespannt, ob das so funktioniert.


    Gruss

    René

    Hallo Udo


    Die beiden Eingänge legen ja die Richtung fest. Sie sind in Fahrt immer verschieden gepolt. Nur wenn angehalten wird, können sie auf das gleiche Potential gesetzt werden. Das ist aber nicht notwendig, da zusätzlich ein enable - Eingang zur Verfügung steht. Diesen steuern wir mit PWM an und können so die Geschwindigkeit regeln. Deshalb können wir die Richtung mit einem Signal festlegen und das andere über einen Inverter bedienen.


    Die Verwendung von zwei Richtungssignalen ist aber auch kein Problem, Es braucht im Code pro Motor nur eine Zeile mehr zur Ansteuerung.


    Gruss

    René

    Hallo Udo


    Ich habe die Webseite von Lafvin gefunden. Der Bausatz sieht sehr interessant aus, hat aber einen grossen Mangel. Der Hersteller veröffentlicht mit Ausnahme der Komponentenliste absolut keine Informationen zu dem Bausatz. Alles ist auf der mitgelieferten CD.


    Ich vermute, dass je zwei Motoren miteinander gekoppelt sind und die Steuerung genau so funktioniert, wie beim Turtle-Robot. Vermutlich lässt sich die Software vom Turtle-Robot verwenden, wenn man die Pin - Nummern anpasst. Die dazu notwendige Dokumentation müsste sich auf der CD befinden.


    Konntest du den Roboter schon zusammenbauen? Die Anleitung dazu sollte ja auf der CD sein.

    Sind noch weiter Informationen auf der CD? Schaltpläne oder Pin-Maps wären hilfreich. Es sollten auch Beispielprogramme auf der CD sein. Daraus lassen sich ebenfalls viele Informationen ziehen. Auf jeden Fall sollte man darin sehen können, welche Pins die Richtung und die Geschwindigkeit der Motoren festlegen.

    Kannst du diese Beispielprogramme in ein Zip - File zusammenkopieren und mir hier als Anhang schicken? Dann können wir versuchen, die Pogramme des Turtle-Robots auch auf deinem Roboter zum laufen zu bringen.


    Manchmal kann es etwas dauern, bis ich Antwort gebe. Ich erreiche erst im September das Rentenalter, ab dann werde ich nur noch reduziert arbeiten. So bleibt dann mehr Zeit für das Hobby. Allerdings, wenn ich daran denke, was alles geplant ist, weiss ich noch nicht was dabei herauskommt.


    Gruss

    René

    Hallo Udo

    Da benötige ich schon noch etwas mehr Informationen.

    Was für Hardware steht dir zur Verfügung? Ich nehme an, du möchtest deinen Roboter selber bauen, anstelle der Verwendung des Bausatzes.


    Beim Turtle - Robot Bausatz von Keyestudio ist ja alles dabei. Das Kontrollerboard beinhaltet einen Arduino, eine H-Brücke und weitere notwendige Komponenten. Falls du anstelle des Bausatzes die Elektronik selbst baust, kannst du mit einem Arduino und einem L298N 2 Motoren ansteuern. Die H-Brücke sorgt dafür, dass deine Motoren vorwärts und rückwärts fahren können.


    In einer ersten Roboterserie versuchte ich einen Roboter von Grund auf zu bauen. Ich musste die Serie dann einstellen, da sehr wenig Interesse vorhanden war. Die Zuschauer waren vermutlich überfordert. Deshalb habe ich beim zweiten Versuch den Turtle - Roboter gewählt, der eine vollständig aufgebaute Elektronik mitbringt.


    Hier ein Beitrag auf meiner Webseite zum ersten Versuch: https://www.hobbyelektroniker.ch/roboter/roboter1/


    Einen Grundlagenartikel und ein Video zur H-Brücke findest du ebenfalls auf meiner Webseite (allerdings mit einem L293D):

    https://www.hobbyelektroniker.ch/grundlagen/transistoren3/


    Hier ein englischsprachiges Tutorial zur Verwendung des L298N:

    https://howtomechatronics.com/…orial-l298n-pwm-h-bridge/


    Wenn du mir genauere Angaben zu deinem Projekt machst, bin ich gerne bereit zu helfen. Ausserdem sollte ich wissen, wie dein Wissensstand beim Arduino ist. Wenn du da schon halb Profi bist, würden dich zu ausführliche Erklärungen nur langweilen. Auf der anderen Seite, falls du Einsteiger bist nicht weisst, wie analoge Ausgänge und PWM funktionieren, würdest du meine Ausführungen nicht verstehen.


    Gruss

    René

    Hallo Manfred,


    nein leider habe ich keine Idee. Ich habe das mit einem iMac und einem MacBook Pro gemacht und es hat problemlos funktioniert. Obwohl ich annehme. dass du alles richtig gemacht hast, hier nochmals die wichtigsten Punkte:

    - Aktuellste Thonny Version installieren

    - Nach Installation der Plugins 'esptool' und 'Thonny-esp' Thonny neu starten.

    - Als Interpreter 'MicroPython on ESP32' auswählen

    - Flash - Speicher löschen

    - 'Install Micropython ... ' ausführen

    Der Mac sollte jetzt nach der heruntergeladenen Binärdatei fragen. Kommt diese Frage noch oder reagiert der Menupunkt gar nicht?

    Falls die Binärdatei angewählt werden kann und es trotzdem nicht geht, kannst du diese löschen und neu herunterladen. Möglicherweise ist etwas beim Download schiefgegangen.

    Eine andere Idee habe ich leider auch nicht.


    Gruss René