Arduino und ESP2866 Devices in Linux Mint

Ein ESP-8266 ist ein kostengünstiger und mit geringem Leistungsbedarf ausgeführter 32-Bit-Mikrocontroller der chinesischen Firma „espressif“, der sich perfekt für kleine Heim-Automatisierungsprojekte eignet. Er ist außerdem kompatibel zu Mikrocontrollern des Arduino Projekt, mit dem uns die Tür zu vielen ihrer Ressourcen und Dokumentation offen liegt.

Lediglich die Installation auf einem Linux-System besteht aus einigen Schritten, die nicht ganz offensichtlich dokumentiert sind. Hier mein Weg für Arduino und ESP2866 Devices in Linux Mint.

Für meine eigenen Home-Projekte möchte ich kleine Sensoren in verschiedenen Zimmern unterbringen. Diese sollen unter anderem Temperatur und Luftfeuchtigkeit messen und später zur Dokumentation an meinen Home-Server senden. Dafür habe ich mehrere D1 Mini NodeMcu Module bei AZ Delivery eingekauft. Diese werden sogar angegeben als „kompatibel mit Arduino“.

Jedes Modul hat nur einen einzigen Anschluss: USB Micro, für Strom und Datenübertragung. Zusätzlich zum Produkt bietet AZ Delivery einen Quick Start Guide mit einer ordentlichen Dokumentation der Hardware an. Leider ist der Punkt zur Installation der IDE mittlerweile veraltet. Die neue Version der Software macht es uns jedoch etwas einfacher. Aber eins nach dem anderen.

1. Treiber für USB Interaktion installieren

Damit der Chip erkannt, und damit auch mit Software bespielt werden kann, muss das System den Typ CH430 bei Anschluss erkennen. Zuerst öffnen wir dazu ein Terminal und geben dmesg --follow ein. Verbindet man nun den Chip mit dem Computer, wird vermutlich nichts ausgegeben: Ergo, er wird nicht erkannt.

Auf GitHub gibt es mehrere Projekte, die einen solchen Treiber liefern. Ich habe mich dabei für juliagoda/CH341SER entschieden. In einem zweiten Terminal wird das Repository wird einfach auf den Computer geklont und dann entsprechend der „Readme.txt“ verfahren: Erst make und dann make load ausführen (siehe unten).

sengorius@TowerPC ~/Dokumente  
└─▶ git clone https://github.com/juliagoda/CH341SER.git CH430-Driver
Klone nach 'CH430-Driver'
...
Empfange Objekte: 100% (211/211), 435.95 KiB | 3.54 MiB/s, fertig.
Löse Unterschiede auf: 100% (110/110), fertig.

sengorius@TowerPC ~/Dokumente  
└─▶ cd CH430-Driver/

sengorius@TowerPC ~/Dokumente/CH430-Driver
└─▶ make
make -C /lib/modules/6.8.0-52-generic/build  M=/home/sengorius/Dokumente/CH430-Driver 
make[1]: Verzeichnis „/usr/src/linux-headers-6.8.0-52-generic“ wird betreten
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  You are using:           gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  CC [M]  /home/sengorius/Dokumente/CH430-Driver/ch34x.o
  MODPOST /home/sengorius/Dokumente/CH430-Driver/Module.symvers
  CC [M]  /home/sengorius/Dokumente/CH430-Driver/ch34x.mod.o
  LD [M]  /home/sengorius/Dokumente/CH430-Driver/ch34x.ko
  BTF [M] /home/sengorius/Dokumente/CH430-Driver/ch34x.ko
Skipping BTF generation for /home/sengorius/Dokumente/CH430-Driver/ch34x.ko due to unavailability of vmlinux
make[1]: Verzeichnis „/usr/src/linux-headers-6.8.0-52-generic“ wird verlassen

sengorius@TowerPC ~/Dokumente/CH430-Driver
└─▶ sudo make load
modprobe usbserial
insmod ch34x.ko

In dem ersten Terminal sollten wir nun Unterschiede feststellen. Stecken wir nun den Chip an, sollte dmesg auch da eine entsprechende Ausgabe liefern.

2. Die IDE installieren

Was auf jeden Fall für den Chip von AZ Delivery funktioniert, ist die offiziellen Arduino IDE (Entwicklungsumgebung). Dem offiziellen Guide zufolge, können wir hier einfach die IDE, z.B. als AppImage für Linux, herunterladen und ausführen. Ich habe mein AppImage nach /opt/arduino/Arduino-IDE.AppImage verschoben und eine Verlinkung in das Cinnamon Menü hinzugefügt. Beim ersten Öffnen der Anwendung werden automatisch einige Pakete heruntergeladen. Dies kann ein paar Minuten dauern. Die Pakete werden im Userland unter ~/Arduino, ~/.arduino15 und ~/.arduinoIDE abgelegt, sind also nur für den aktuellen Benutzer bestimmt.

Zwar kann ich über die Box am oberen Rand bereits das Arduino Mini auswählen, damit würde ich allerdings nichts erreichen. Ein Programm zu übertragen würde scheitern. Es fehlt noch die Definition für „das passende Board“, welches in einer JSON Datei spezifiziert wird. Im Quick Start Guide, auf Seite 21 finden wir den passenden Link: https://arduino.esp8266.com/stable/package_esp8266com_index.json

Im Menü unter „File > Preferences“ öffnen wir das Einstellungsfenster. Dort muss der Link für „Additional boards manager URLs“ eingefügt werden. Nach dem Bestätigen wird der richtige Treiber „esp2866“ im Board Manager verfügbar, den wir herunterladen müssen, um den Chip richtig anzusteuern (siehe unten).

Nach dem Download können wir nun in der Box am oberen Rand den „Generic ESP2866“ Chip und den passenden USB Port auswählen, um Daten auf den Chip übertragen zu können.

3. Benutzerrechte vergeben

In der IDE unter „File > Examples > 01. Basics > Blink“ können wir uns das Programm für das Blinken der LED auf dem Board schreiben lassen. Mit dem Pfeil nach rechts (siehe Werkzeugleiste oben) wird das Programm dann kompiliert und auf den angeschlossenen Chip übertragen. Versuchen wir dies nun, bekommen wir wahrscheinlich folgenden Fehler:

[Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'esptool.py v3.0

Mit anderen Worten: Unser Benutzer hat nicht das Recht, die kompilierte Datei auf den USB Datenträger zu schreiben. Dies lässt sich jedoch einfach lösen: Mit ls -l /dev/ttyUSB* in einem Terminal lassen wir uns anzeigen, welchem Benutzer und welcher Gruppe diese Datei gehört.

sengorius@TowerPC ~
└─▶ ls -l /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 Feb  9 22:23 /dev/ttyUSB0

In meinem Fall sind das root und dialout. Unser Benutzer muss also in der Gruppe dialout sein, um dort schreiben zu dürfen. Mit sudo adduser sengorius dialout ist das getan. Nach einem Logout + Login (oder Neustart) wird diese Änderung dann aktiv. Jetzt sollte der Entwicklung nichts mehr im Wege stehen.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert