Sorry, Bild fehlt

IT Wissenssplitter

Sherlock und Desiderat

Sorry, Bild fehlt

Projekte mit dem Raspberry Pi Pico

Der Mikrocontroller RP2040 wurde von der Raspberry Pi Foundation entwickelt und wird unter anderem auf dem Raspberry Pi Pico eingesetzt. Auf diesem Teil unserer Webseite möchte ich ein paar Anregungen zum Arbeiten mit dem Raspberry Pi Pico geben.


Raspberry Pi Pico Schnelleinsteig - von Thomas Brühlmann
2. Auflage 2023
MITP Verlags GmbH
ISBN 9783747506400


In Thonny konnte unter Linux der Dialog zum lokalen Speichern und Öffnen von Dateien nicht geöffnet werden.

Unter https://github.com/thonny/thonny/issues/3173/ wird ein Lösungsansatz zur Behebung dieses Problems beschrieben.

Hier der Lösungsansatz:

In der Datei ui_utils.py musste die Zeile 2100 auskommentiert und darunter die Zeile

args = ["zenity"] + args

eingefügt werden.

Hinweis: Die Datei ui_utils.py ist unter

/usr/lib/python3/dist-packages/thonny

zu finden und muss mit root-Rechten bearbeitet werden.

Also:

        # args = ["zenity", "--name=Thonny", "--class=Thonny"] + args
        args = ["zenity"] + args



Als ersten Schritt wollen wir die ID des Chips auslesen. Folgende Schritte sind dazu notwendig:

  1. Den I2C-Buss initialisieren
  2. Das entsprechende Register auslesen
  3. Den Inhalt des Registers ausgeben

# Manuelles Auslesen des Sensors BMP280
# Auslesen der DCHIP-ID

# Programmiert von Sherlock19@posteo.de
# Dez. 2025 / Jan. 2026

# Verwendete Quellen im Internet
# https://forum-raspberrypi.de/forum/thread/51200-bme280-und-bmp280-mit-python3-auslesen/
# https://docs.micropython.org/en/latest/library/machine.I2C.html

# Verwendete Literatur:
# Raspberry Pi Pico Schnelleinstieg

# Die notwendige Bibliothek importieren
from machine import I2C

# Den I2C-Bus initialisieren

# Dazu anlegen eines PIN-Objektes, welcher physikalisch den PIN 8 anspricht.
# Dieses Objekt wird dann über die Variable sdaPinObj angesprochen.
sdaPinObj = machine.Pin(8)

# Zudem anlegen eines PIN-Objektes, welcher physikalisch den PIN 9 anspricht.
# Dieses Objekt wird dann über die Variable sclPinObj angesprochen.
sclPinObj = machine.Pin(9)

# Nun anlegen des I2C-Objektes über welches die Steuerung des
# I2C-Busses durchgefuehrt wird
i2cObj = machine.I2C(0, scl=sclPinObj, sda=sdaPinObj, freq=100000)


# Geraeteadresse des BMP280
deviceID = 0x77


# Auslesen der CHIP-ID
#
datenbyte = i2cObj.readfrom_mem(deviceID, 0xD0,1)

print(datenbyte)

Wenn kein Fehler aufgetreten ist, dann wird folgendes im Kommandozeilenbereich von Thonny angezeigt:

b'X'

Wenn der Sensor nicht gefunden oder er nicht angesprochen werden kann, dann kann es hingegen zur nachfolgenden Fehlermeldung kommen.

Traceback (most recent call last):
  File "", line 38, in 
OSError: [Errno 5] EIO

Solche möglichen Fehler müssen abgefangen werden! Dazu gibt es den Befehl try. Im nachfolgenden Programmbeispiel habe ich diesen verwendet um einen Fehler abzufangen.

# Manuelles Auslesen des Sensors BMP280
# Auslesen der CHIP-ID

# Programmiert von Sherlock19@posteo.de
# 13. Januar 2026 mit Abfangen eines Kommunikationsfehlers

# Verwendete Quellen im Internet
# https://forum-raspberrypi.de/forum/thread/51200-bme280-und-bmp280-mit-python3-auslesen/
# https://docs.micropython.org/en/latest/library/machine.I2C.html
# https://www.elektronik-kompendium.de/sites/raspberry-pi/2803101.htm

# Verwendete Literatur:
# Raspberry Pi Pico Schnelleinstieg

# Die notwendige Bibliothek importieren
from machine import I2C

# Den I2C-Bus initialisieren

# Dazu anlegen eines PIN-Objektes, welcher physikalisch den PIN 8 anspricht.
# Dieses Objekt wird dann über die Variable sdaPinObj angesprochen.
sdaPinObj = machine.Pin(8)

# Zudem anlegen eines PIN-Objektes, welcher physikalisch den PIN 9 anspricht.
# Dieses Objekt wird dann über die Variable sclPinObj angesprochen.
sclPinObj = machine.Pin(9)

# Nun anlegen des I2C-Objektes über welches die Steuerung des
# I2C-Busses durchgefuehrt wird.
i2cObj = machine.I2C(0, scl=sclPinObj, sda=sdaPinObj, freq=100000)

# Geraeteadresse des BMP280
deviceID = 0x77

# Auslesen der CHIP-ID

allesInOrdnung = 1
try:
    # Auslesen der CHIP-ID
    #
    datenbyte = i2cObj.readfrom_mem(deviceID, 0xD0,1)
except (OSError):
    print("FEHLER: Das Auslesen des Sensors ist gescheitert.")
    allesInOrdnung = 0

if allesInOrdnung == 1:
    print(datenbyte)

Wird fortgesetzt...



Wir hoffen, dass diese Seite gefallen hat und hilfreich war.

Achtung: Es handelt sich lediglich um Bastelvorschläge! Es wird keinerlei Haftung für den Einsatz der Schaltungen übernommen. Diese Seite ist zudem nicht kommerziell.

Trotz großer Sorgfallt können sich Fehler eingeschlichen haben. Wir bitten dann um Nachsicht und freuen uns auf einen entsprechenden Hinweis. Es wird keine Gewähr für die Vollständigkeit übernommen. Für Schäden, die durch die Anwendung z.B. einer Installationsanleitung entstehen, übernehmen wir keinerlei Haftung.
Die verwendeten externen Links auf dieser Seite werden immer wieder geprüft. Wir übernehmen jedoch keinerlei Haftung für die Verwendung der Links. Für den Inhalt der verlinkten Seiten sind die Betreiber dieser Seiten verantwortlich. Rechtsverstöße auf den verlinkten Seiten waren bei der aktuellen Überpüfung nicht erkennbar. Es gelten auf den verlinkten Seiten die Datenschutzbestimmungen des jeweiligen Betreibers.
Bevor Sie der Speicherung von Cookies zustimmen, empfehlen wir generell zuvor die Einstellungen so weit wir möglich zu beschränken und dann diese individuellen Einstellungen zu speichern. Leider werden diese Einstellungen meist versteckt und auch der richtige Button zum Bestätigen ist meist kleiner und versteckt.

Bei der Erstellung des Grundgerüstes dieser Internetseite wurde auf W3Schools.com zugegriffen W3Schools.com. Zudem waren viele Quellen im Internet bei Details hilfreich.

Grafiken

HTML, JavaScript, ...

  • https://www.mediaevent.de/css/css-einbinden.html
  • https://www.mediaevent.de/css/css-listen.html
  • https://www.w3schools.com/howto/howto_js_accordion.asp
  • https://wiki.selfhtml.org/wiki/Referenz:HTML/Attribute/target
  • http://www.ohne-css.gehts-gar.net/0004.php
  • https://developer.mozilla.org/de/docs/Web/CSS/margin
  • http://www.ich-lerne-css.de/Style/Examples/007/center.html
  • http://www.office-loesung.de/ftopic77170_0_0_asc.php
  • https://www.mediaevent.de/css/img.html
  • ...

Details



Letzte Überarbeitung am 24.03.2026