class: center, middle  ## ModBus mit dem Raspberry Pi Pico ### Hauke Goos-Habermann #### https://goos-habermann.de --- ### Über mich - Entwickler des
Softwareverteilungssystems m23
- Organisator der
Kieler Open Source und Linux Tage
-
Dienstleister zu m23, Linux und Freier Software
- Softwareentwicklung (PHP, BASH, C/C++, JS, Python und was sonst so gebraucht wird...) - Administration - Schulungen - Support - Beratung - quasi **alles**, *was mit Linux zu tun hat* - Wöchentlicher Livestream *"Jean und Hauke Show"* auf https://www.youtube.com/c/LinuxGuides - *"Nicht der Weisheit letzter Schluß"* mit **beruflichen** oder **privaten Projekten** auf
tube.tchncs.de/c/ndwls
und
youtube.com/@nichtderweisheit
- Hat alte Elektronikbauteile wiedergefunden... --- ### ModBus-Platine  Über eine ModBus-Platine, wie das
DAYPOWER Schnittstellen Modul LC-TTL-MAX485CSA
werden die ModBus-Signale (-7V - 12V) in für den Pico **ungefährliche Spannungen** umgewandelt und **Sende-/Empfangsrichtung** konfigurierbar gemacht. Mehr dazu: * Betriebsspannung: 5 V * Stromaufnahme: 300 μA *
Datenblatt zum Chip
*
RS-485-Protokoll
*
fritzing-Modell
* Video zu ModBus-Grundlagen:
Solaranlagen abfragen mit Modbus/RTU und C++
* Video zum Pico:
Raspberry Pi Pico: Grundlagen, SDK, Projekte
--- ### Verkabelung  --- ### Vorbereitung  Neben der Verkabelung gibt es auch noch den Softwareanteil :-) 1. Passende
Firmware
mit MicroPython herunterladen. 2. Beim Pico den Knopf drücken und dann an den Rechner anschließen 3. Laufwerk mounten 4. Firmwaredatei hineinkopieren 5.
Thonny
installieren 6. Extras ⇒ Optionen... 7. Interpreter: MicroPython (Raspberry Pi Pico) auswählen 8. PC-Pico-Dateikopierprogramm installieren ```bash apt install micropython-mpremote ``` --- ### Bibliotheken  Für **ModBus** brauchen wir zusätzliche **MicroPython-Bibliotheken**, die sich um die Details der Kommunikation kümmern. ```bash # https://github.com/danjperron/micropython-modbus # Lizenz GPL-3.0 wget https://github.com/danjperron/micropython-modbus\ /blob/master/uModBusConst.py wget https://github.com/danjperron/micropython-modbus\ /blob/master/uModBusFunctions.py wget https://github.com/danjperron/micropython-modbus\ /blob/master/uModBusSerial.py # Alles auf den Pico kopieren mpremote cp *.py : ``` Die ***"Dokumentation"*** der Funktionen findet Ihr direkt in der
uModBusSerial.py
. --- ### Beispielprogramm Mit Thonny auf dem Pico eine neue .py-Datei anlegen und folgendes anpassen: ```python from machine import Pin, UART from uModBusSerial import uModBusSerial # Modbus MODBUS_BAUDRATE=19200 MODBUS_SLAVEID=1 # GPIO-Pins am Pico MODBUS_PIN_DI=16 MODBUS_PIN_RO=17 MODBUS_PIN_REDE=18 # Welcher UART (Universal Asynchronous Receiver Transmitter)? UART_ID=0 # Objekt erstellen modbus = uModBusSerial(UART_ID, baudrate=MODBUS_BAUDRATE,\ pins=[Pin(MODBUS_PIN_DI), Pin(MODBUS_PIN_RO,Pin.ALT, Pin.PULL_UP)],\ ctrl_pin=MODBUS_PIN_REDE) # Einzelregister 0x001C als vorzeichenbehafteten Wert lesen res = modbus.read_input_registers(MODBUS_SLAVEID, 0x001C, 1, signed=True) print("Akku2") print(res[0]) ``` --- class: center, middle ### Informationen zu mir und meinen Dienstleistungen, m23, ... ### https://goos-habermann.de