ob Debian oder Win10 - nur Fehlermeldungen mit Thonny.

  • Die ssd1306.py von Rene läuft (download) bei mir. VG Hardy

  • Hallo,


    der Workshop scheint ja recht anspruchsvoll und Problembehaftet zu werden.

    Da bin ich gespannt. Hatte mit der Displaydatei auch keinen erfolg.

    Ich bin gespannt was das wird:)

    Gruss

    Brocki

  • 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é

  • danke rene


    ich werde beides tun, deinen kurs verfolgen und gleichzeitig viel probieren.


    hinweis: der bmp280 zeigt die korrekten werte an, wenn nur 5v am SD0 anliegen, VCC muss frei bleiben.


    vg hardy

  • 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é

  • so musste die adresse von 0x76 auf 0x77 ändern. nur wenn ich aber zusätzlich auch 5v an SD0 anschliesse kommen werte, dia aber falsch sind: temp: 76C , feuchte 0%, druck 911,000 pa


    habe versucht eine bmp280.py draufzuspielen - klappt aber nicht.

    fehlermeldung:

    /home/hardy/Downloads/bmp280.py has syntax errors:

    Missing parentheses in call to 'print'. Did you mean print("Temperature in Celsius : %.2f C" %cTemp)? (bmp280.py, line 98)


    File will not be uploaded.


    vlt kann ich ja die bme280.py etwas ändern damit korrekte werte angezigt werden... falls du da n tipp hast.


    wlan, browser, display usw klappt aber nun allles


    vg hardy

  • so rene - kuh ist vom eis! :-)


    auf meinem laptop mit ubuntu ging es nun einwandfrei und ohne probleme.


    win10 ging nicht (und auch als win10-vm nicht) !!!


    nun hab ich aber noch weitere fragen:


    1. um deinem wetterstation-python-projekt folgen zu können, geht ein bmp280 auch? (habe keinen bme280)


    2. ich habe auch vor ein stoppuhrenprojekt zu entwickeln - nach welcher strucktur sollte ich da vorgehen bzw die einzelnen ...py dateien aufteilen bzw benennen? iach dachte an z.b. boot.py, ssd1306.py stoppuhr.py wlan.py


    3. "wissen" die einzelnen .py-datein eigentlich voneinander?


    vg und danke dir, hardy

  • in ubuntu kommen beim hochladen der datei erstmal keine fehlermeldungen :-)

    allerdings weiß ich nun nicht wann die übertragung fertig ist....

    unten in der shell steht:

    >>> %Run ssd1306qqq.py%upload ssd1306.py /ssd1306.py


    wie lange dauert das ca im normalfall?

    kann man irgendwie erkennen, wann der upload fertig ist?

  • 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

  • also löschen klappt und flashen auch.

    nachdem ich dann aber deine ssd1306.py rauf machen möchte kommt:


    Traceback (most recent call last):

    File "C:\Thonny\lib\site-packages\thonny\plugins\micropython\__init__.py", line 867, in _check_and_upload

    self._upload(source, target)

    File "C:\Thonny\lib\site-packages\thonny\plugins\micropython\__init__.py", line 874, in _upload

    self._upload_via_serial(source, target)

    File "C:\Thonny\lib\site-packages\thonny\plugins\micropython\__init__.py", line 890, in _upload_via_serial

    "__upf.write(%r)" % content[i : i + BLOCK_SIZE]

    File "C:\Thonny\lib\site-packages\thonny\plugins\micropython\__init__.py", line 503, in _execute_and_expect_empty_response

    out, err = self._execute_and_get_response(script)

    File "C:\Thonny\lib\site-packages\thonny\plugins\micropython\__init__.py", line 485, in _execute_and_get_response

    self._execute_async(script)

    File "C:\Thonny\lib\site-packages\thonny\plugins\micropython\__init__.py", line 471, in _execute_async

    assert self._serial.buffers_are_empty()

    AssertionError


    ein %lsdevice bringt aber dennoch:


    boot.py

    ssd1306.py


    was mache ich falsch?

  • erstmal vielen dank Rene!!! auch für deine vielen guten videos !


    ich fange nochmal von vorn an: und melde mich dann nochmal.


    1. esp32 erase

    2. neuste firmware drauf gemacht

    3. deine ssd1306.py per "upload current script with current name" rauf gemacht.

    4. mach dann das oledTest.py rauf...


    müsste ja so passen, wenn ich dich richtig verstanden habe....


    vg hardy

  • habe nun mehrere male das video zur installation von thonny nachvollzogen. egal, ob debian buster oder win10 64bit. es kommen unter anderem folgende fehlermeldungen:


    - NameError: name 'BME280' isn't defined

    - eine ssd1306.py kann ich zwar ohne fehler ausführen aber nicht per "upload current script with current name" aufs board laden.


    nur ein miniscript die die boardled zum blinken bringt habe ich hinbekommen:


    Code

    1. import time
    2. from machine import Pin
    3. led = Pin(25, Pin.OUT)
    4. while True:
    5. led.value(0)
    6. time.sleep(0.5)
    7. led.value(1)
    8. time.sleep(0.5)

    habe nun folgende fragen:

    - verständnisfragen:

    1. die main.py - kommt da nur das programm rein ?

    2. benutzt dann die main.py andere xxx.py? z.b. ssd1306.py und bme280.py usw. (und müssen diese auch aufs board oder werden die nur ausgeführt?


    3. wie müsste eine main.py aussehen, wenn ich nur das display des heltec esp32 (gleiches wie im video) ansteuern möchte?

    meine sieht so aus und klappt nicht:


    Code

    1. from machine import Pin,I2C
    2. import ssd1306
    3. i2c = I2C(scl=Pin(15), sda=Pin(4), freq=100000)
    4. lcd = ssd1306.SSD1306_I2C(128,64,i2c)
    5. lcd.text("Hello Hardy",0,0)
    6. lcd.text("testtext",1,20)
    7. lcd.show()

    Fehlermeldung:

    Traceback (most recent call last):

    File "C:\Users\...\python\helteesp32cdisplay.py", line 5, in <module>

    AttributeError: 'module' object has no attribute 'SSD1306_I2C'


    würde mich über ein paar tipps/hinweise sehr freuen.


    vg hardy

  • 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é

  • habe nun mehrere male das video zur installation von thonny nachvollzogen. egal, ob debian buster oder win10 64bit. es kommen unter anderem folgende fehlermeldungen:


    - NameError: name 'BME280' isn't defined

    - eine ssd1306.py kann ich zwar ohne fehler ausführen aber nicht per "upload current script with current name" aufs board laden.


    nur ein miniscript die die boardled zum blinken bringt habe ich hinbekommen:

    Code
    1. import time
    2. from machine import Pin
    3. led = Pin(25, Pin.OUT)
    4. while True:
    5. led.value(0)
    6. time.sleep(0.5)
    7. led.value(1)
    8. time.sleep(0.5)

    habe nun folgende fragen:

    - verständnisfragen:

    1. die main.py - kommt da nur das programm rein ?

    2. benutzt dann die main.py andere xxx.py? z.b. ssd1306.py und bme280.py usw. (und müssen diese auch aufs board oder werden die nur ausgeführt?


    3. wie müsste eine main.py aussehen, wenn ich nur das display des heltec esp32 (gleiches wie im video) ansteuern möchte?

    meine sieht so aus und klappt nicht:

    Code
    1. from machine import Pin,I2C
    2. import ssd1306
    3. i2c = I2C(scl=Pin(15), sda=Pin(4), freq=100000)
    4. lcd = ssd1306.SSD1306_I2C(128,64,i2c)
    5. lcd.text("Hello Hardy",0,0)
    6. lcd.text("testtext",1,20)
    7. lcd.show()

    Fehlermeldung:

    Traceback (most recent call last):

    File "C:\Users\...\python\helteesp32cdisplay.py", line 5, in <module>

    AttributeError: 'module' object has no attribute 'SSD1306_I2C'


    würde mich über ein paar tipps/hinweise sehr freuen.


    vg hardy