In diesem Beitrag möchte ich dir den neuen Mikrocontroller Maker Pi Pico von der Firma Cytron vorstellen.
Diesen Mikrocontroller habe ich von der Firma Cytron kostenfrei für dieses Review zur Verfügung gestellt bekommen, daher möchte ich diesen Beitrag als “gesponsert” markieren. Aber ich werde mich nicht davon abhalten lassen meine persönliche Meinung zu diesem Mikrocontroller dir aufzuzeigen.
Im Beitrag xyz habe ich bereits einen ähnlichen Mikrocontroller der Firma Cytron mit dem Chip RP240 von der Raspberry Foundation vorgestellt. Des Weiteren findest du auch einen Arduino Klon von Cytron welchen ich im Beitrag Maker UNO – Überblick und Test vorgestellt habe.
Jedoch bietet dieser hier vorgestellte ein paar nette Features, welche der andere nicht hat.
Bezug des Maker Pi Pico
Diesen Mikrocontroller findest du für 9,90 $ (8,36 €) zzgl. Versandkosten im offiziellen Shop von Cytron.
Lieferumfang
Der Mikrocontroller wird in einem kleinen Karton geliefert welcher gleichzeitig auch als Gehäuse genutzt werden kann. Des Weiteren ist dieser in einer antistatischen Tüte verpackt.
Zusätzlich befindet sich eine kleine Karte im Karton wo das Pinout des Mikrocontrollers abgebildet ist, auf der Rückseite sind die Features des Mikrocontrollers kompakt abgebildet.
Technische Daten des Maker Pi Pico
Auf dem Board ist wie bereits erwähnt ein Raspberry Pi Pico verbaut welchen ich bereits im Beitrag Raspberry PI Pico #1 – Vorstellung vorgestellt habe. Ich möchte hier nun speziell auf die Features des Maker Pi Pico eingehen.
- SD – Card,
- AUDIO Ausgang,
- Piezo Buzzer,
- 3 frei programmierbare Taster,
- Buchse für einen ESP01*,
- 6 Grove Adapter für Sensoren / Aktoren,
- eine RGB LED,
- an jedem GPIO Ausgang eine SMD LED**,
- Stiftleiste zum abgreifen der Debug Pins
* Ein passendes ESP01 Modul ist nicht enthalten, kann aber für wenig Geld über ebay.de bezogen werden.
** Auf der Rückseite des Boards sind zwei Lötkontakte welche getrennt werden können, um diese SMD LEDs zu deaktivieren.
Default Programm auf dem Board
Auch auf dem Maker Pi Pico ist ein Programm installiert welcher sofort abgespielt wird, wenn der Mikrocontroller mit Strom versorgt wird.
Programmieren des Maker Pi Pico mit einem ESP01
Die Grove Schnittstellen, SD-Card Adapter und Audio Jack sind wie ich finde keine besonderen Schnittstellen, daher möchte ich mich zunächst auf den ESP01 konzentrieren.
Durch dieses kleine WiFi Modul kannst du deinen Raspberry Pi Pico, um die Fähigkeit erweitern im lokalen WLAN zu arbeiten.
Flashen des ESP01
Damit der ESP01 bzw. ESP01S vom Maker Pi Pico erkannt wird, muss dieser mit einer speziellen Firmware geflasht werden. Wiederum benötigen wir zum Flashen auch ein speziellen USB Programmer. Diesen USB Programmer kannst du auf ebay.de in zwei Versionen erstehen*, zum einen mit einem kleinen Schalter und ohne.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Wenn du die Version ohne diesen Schalter besitzt, so kannst du recht einfach eine kleine Stiftleiste an der Unterseite löten und über einen passenden Jumper diesen Schalter ersetzen. Wie du den USB Programmer modifizierst habe ich unter anderem im Beitrag Arduino Lektion 58: ESP-01S Temperatur & Luftfeuchtigkeitssensor Shield gezeigt.
Die Firmware wird auf einer *.bin Datei ausgeliefert und kann vom Google Drive der Firma Cytron geladen werden.
Wenn die knapp 1MB große Datei geladen wurde, dann kann diese mithilfe der Kommandozeile und dem “esptool.py.exe” aufgespielt werden.
Den passenden Port findest du unter Microsoft Windows im Geräte-Manager unter dem Knoten “Anschlüsse (COM & LPT)”.
esptool.py.exe --port COM10 --baud 460800 write_flash --flash_size=detect 0 ESP-01_AT_Firmware_V2.2.0.bin
esptool.py v2.8
Serial port COM10
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 84:f3:eb:18:4b:20
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 1MB
Flash params set to 0x022f
Compressed 1048576 bytes to 542567...
Wrote 1048576 bytes (542567 compressed) at 0x00000000 in 59.7 seconds (effective 140.4 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Beispiele mit einem ESP01 & dem Maker PiPico
Wenn die Firmware auf den ESP01 geflasht wurde, kann dieser auf den Mikrocontroller Maker Pi Pico gesteckt werden und ein erstes Beispiel aufgespielt werden.
Ein kleines Beispiel findest du auf dem GitHub Repository CytronTechnologies / MAKER-PI-PICO von der Firma Cytron.
Zum Programmieren nutze ich den MU Editor, welchen ich bereits, in einigen Tutorials auf meinem Blog verwendet habe. Dieser ist recht schlank und funktioniert mit wenigen Klicks.
Suchen von WiFi Netzwerken in der nähe
Zunächst wollen wir nach WiFi Netzwerken in der Nähe suchen. Für dieses Programm benötigen wir ein paar Bibliotheken.
Die Bibliotheken finden wir ebenfalls auf dem bereits genannten GitHub Repo und können diese von dort als ZIP Datei herunterladen, sobald dieses geschehen ist, kopieren wir diese nach “CIRCUITPY (H:) lib”.
Nun können wir mit dem nachfolgenden Programm nach WiFi AccessPoints in der Nähe suchen.
import time import board import busio import adafruit_requests as requests import adafruit_espatcontrol.adafruit_espatcontrol_socket as socket from adafruit_espatcontrol import adafruit_espatcontrol RX = board.GP17 TX = board.GP16 uart = busio.UART(TX, RX, receiver_buffer_size=2048) esp = adafruit_espatcontrol.ESP_ATcontrol(uart, 115200, debug=False) requests.set_socket(socket, esp) # Reset des ESP01 esp.soft_reset() while True: print("\nsuche nach WiFi Accesspoints...") # ausgeben der gefundenen APs auf der Konsole for ap in esp.scan_APs(): print(ap) # eine kleine pause von 2 Minuten time.sleep(120)
Ausgabe auf der Konsole
Auf der seriellen Konsole der A
suche nach WiFi Accesspoints...
[3, 'FRITZBox7590GI24', -51, '44:4e:6d:bd:f5:9a', 5, -1, -1, 4, 4, 7, 1]
[3, '', -73, 'fe:a6:67:a7:6f:62', 5, -1, -1, 4, 4, 6, 1]
[3, 'FRITZBox7590GI24', -83, '74:42:7f:16:44:29', 5, -1, -1, 4, 4, 7, 1]
[3, '', -86, '02:71:47:55:8b:1d', 5, -1, -1, 4, 4, 6, 1]
[3, 'WLAN-GON', -86, '4c:09:d4:18:0e:e3', 7, -1, -1, 4, 4, 7, 1]
[3, '', -88, '7e:d5:66:3d:e0:bb', 5, -1, -1, 4, 4, 6, 1]
[3, 'WLAN Flur 10 Fritz', -89, '44:4e:6d:17:ef:3e', 1, -1, -1, 4, 4, 7, 1]
Aufbau einer Verbindung zu einem WiFi Netzwerk
Nachdem wir nun die WiFi Netzwerke in unserer Nähe gefunden und aufgelistet haben, möchten wir uns mit einem Verbinden und ein PING zu einer IP-Adresse absetzen.
import time import board import busio import adafruit_requests as requests import adafruit_espatcontrol.adafruit_espatcontrol_socket as socket from adafruit_espatcontrol import adafruit_espatcontrol secrets = { "ssid" : "FRITZBox7590GI24", "password" : "1234" } RX = board.GP17 TX = board.GP16 uart = busio.UART(TX, RX, receiver_buffer_size=2048) esp = adafruit_espatcontrol.ESP_ATcontrol(uart, 115200, debug=False) requests.set_socket(socket, esp) print("Resetting ESP module") esp.soft_reset() esp.connect(secrets) print("IP address:", esp.local_ip) print("ESP Firmware Version:", esp.version) target_ip_address = "217.160.86.40" while True: print("Ping ", target_ip_address, "...", end="") print(esp.ping(target_ip_address)) time.sleep(10)
Ausgabe auf der Konsole
In diesem Fall setzen wir eine einfachen Ping auf die IP-Adresse 217.160.86.40 (ionos.de) ab.
Connected to FRITZBox7590GI24
IP address: 192.168.178.79
ESP Firmware Version: AT version:2.2.0.0(b097cdf - ESP8266 - Jun 17 2021 12:57:45)
Ping 217.160.86.40 ...16
Ping 217.160.86.40 ...14
Ping 217.160.86.40 ...14
Ping 217.160.86.40 ...18
Fazit & Ausblick
Als Fazit zu diesem kleinen Mikrocontroller möchte ich ziehen, dass dieser durch die Möglichkeit einen ESP01S anzuschließen und passende Grove Schnittstellen besitzt, einen deutlichen Mehrwert bietet und den verbauten Raspberry PI Pico dadurch aufwertet.
Als Nächstes möchte ich dir dann zeigen, wie man eine kleine Webseite mit Sensordaten erstellt. Die Sensoren werden dabei über die Grove Schnittstelle angeschlossen und somit ist der Aufbau zumindest sehr schnell erledigt.
Hallo Stefan,
obigen Beitrag habe ich schon vor geraumer Zeit mit Interesse gelesen. Speziell das Tut. mit dem ESP01 hat mir sehr geholfen da hatte ich vorher immer so meine Probleme.
Als Wifi-Modul habe ich auch schon das Adafruit Airlift ESP32-Breackout eingesetzt. Und im Bereich WIFI funktioniert dies auch sehr, sehr gut. Leider habe ich es als BLE-Modul trotz neu geflashter Firmware nicht zum Laufen bekommen. Hier bekomme ich nach start_bluetooth einen “Timeout waiting for HCI response Fehler” und komme zu keiner Lösung.
Vieleicht wäre für die Zukunft mal ein Tutorial zum Pico und Bluetooth ganz interresant.
Viele Güße Kramykram
Hi,
danke für dein Kommentar. Ich werde mir das gerne einmal anschauen.
Gruß,
Stefan