MSXFAQ MeetNow aktiv: Komm doch einfach dazu.

IoT Hackathon

Seit viele Jahren begleite ich jedes Jahr den PIT Hackathon im Heinz Nixdorf Forum (HNF) und vielleicht sind meine Notizen vom letzten Hackathon und den Informationen für den nächsten IoT-Track für Leser oder zukünftige Teilnehmer interessant. Ansonsten sind es auch einfach meine Notizen, auf die ich zurückgreifen kann.

Kleinstcomputer

Wir arbeiten und programmieren kleine Computer, um Daten zu erfassen, zu verarbeiten oder auch an andere Prozesse und Projekte zu übergeben. folgende Systeme und Fähigkeiten stehen dabei zur Wahl:

Familie Schnittstellen Programmieren Beschreibung

 

RaspberryPi 2
RaspberryPi 3
RaspberryPi 4
RaspberryPi 5
0x Analog In/Out
17/26x Digital In/Out
1x LAN
USB
Linux mit Setup per SDKarte
Lokal per HDMI/USB
SSH, RDP, X11

 

Raspberry Pico
Raspberry Pico W
Raspberry Pico 2
Raspberry Pico 2 W
26x Digital In/Out
3x Analog (In/Out)
1x USB
Updates per Firmware auf USB-Flash
MicroPython + Thonny

 

ESP8266

Nx GPIO (je Modell)
1x Analog
WLAN
Kein Betriebssystem, Programm wird kompiliert und per USB geflashed
C+ Arduino Studio
C+ VSCode/PlatformIO
MicroPython + Thonny
ESPHome, Tasmota

 

ESP32

Nx GPIO
Nx Analog
WLAN
Bluetooth
Kein Betriebssystem, Programm wird kompiliert und per USB geflashed
C+ Arduino Studio
C+ VSCode/PlatformIO
MicroPython + Thonny
ESPHome, Tasmota

 

Arduino

Je nach Modell

Arduino IDE
PlattformIO

 

So hat jeder Kleinstcomputer seine Vorteile aber auch Einschränkungen. Mit den Arduino-Geräte hat die IoT Bastelei schon früh angefangen. Die ESP8266 wurden damals teilweise nur als "Serial2 WLAN"-Adapter eingesetzt, bis jemand erkannte, dass der ESP8266 damals schon mehr konnte als die anfangs genutzten Atmel-Chips und eine Compiler für das Arduino-Studio entwickelt hat. Mittlerweile hat der ESP32 den ESP8266 abgehängt, da er mehr analoge Ports, mehr Rechenleistung, mehr Speicher und fast immer auch Bluetooth hat. beim ESP gibt es aber auch sehr viele unterschiedliche Modelle, die unterschiedlich ausgestattet sind.

Entwicklung

Shell-Skripte, PowerShell oder EXE-Dateien laufen natürlich nicht auf ESP8266/ESP32/Pico. Wir brauchen natürlich eine Entwicklungsumgebung und da gibt es gleich mehrere Optionen.

Umgebung Sprache Geräte  

Arduino Studio

Die klassische IDE für die Entwicklung von C-Programmen für Arduino, ESP8266, ESP32 u.a. Mikrocontroller

  • C
  • Arduino
  • ESP8266
  • ESP32

 

VSCode + PlatformIO

Anfangs als einfacher plattformunabhängiger Code-Editor ist er nun durch AddOns mein Favorit zum Entwickeln von PowerShell, HTML, CSS, wenn ich kein Eclipse oder Visual Studio nutzen möchte. Mit PlatformIO kann ich auch ESP8266, ESP32 u.a. als Ziel nutzen.

  • C
  • MicroPython
  • Python
  • Arduino
  • ESP8266
  • ESP32
  • Raspberry

 

Thonny

Sehr kleiner, einfacher aber effektiver Editor für alle mit MicroPython unterstütze Kleinstcomputer.

 

  • MicroPython
  • ESP8266
  • ESP32
  • PICO

 

Ich selbst habe alle drei auf meinem PC und noch die ein oder andere Umgebung, denn jede hat ihre Vorteile aber auch Eigenheiten. Die Entwicklungsumgebungen installieren die Teilnehmer in der Regel selbst, damit Sie dies auch später am eigenen PC nachvollziehen können.

Serielle Schnittstelle

Während der Raspberry PI sich wie ein echter Computer im Netzwerk verhält und auch ein Betriebssystem hat, werden Kleinstcomputer wie ESP8266, ESP23, Raspberry Pico, Arduino etc. immer mit der passenden Software direkt beladen. Das erfolgt klassisch über eine serielle Schnittstelle und da heutige Computer keine solche RS232/V.24-Schnittstelle mehr haben, benötigen wir entweder einen USB2Serial-Adapter oder auf dem entsprechenden Kleinstcomputer ist so ein Konverter schon installiert. Leider gibt es nicht genau einen Chip, sondern verschiedene Hersteller vertreiben entsprechende Chips und so könnte es sein, dass wir mehrere Treiber dazu brauchen. Es wird noch schlimmer, das in der Anfangszeit der USB2Serial-Adapter der Hersteller FTI quasi marktbeherrschend war und viele Nachbauten sich dann auch als FTI-Chip ausgegeben haben aber die Qualität nicht immer gepasst hat. FTI hat dann seine Treiber und Chips so angepasst, dass Sie nur noch "original-FTI-Chips" erkennen und alle anderen zwar erkennen aber nicht funktionieren. Ich habe bisher folgende  Chips gefunden, zu denen Sie die passenden Treiber im Internet finden, wenn Windows nicht von sich aus die Treiber hat.

Wer nach dem Einstecken eines ESP8266/32 keinen seriellen Port findet, sollte im Gerätemanager ein USB-Gerät mit gelbem Ausrufezeichen und Chip-Bezeichnung finden:

Damit wissen Sie, welcher Treiber auf ihrem Computer fehlt. Auch das ist ein Teil der Lernkurve eines IoT-Hackathon.

Kommunikation

IoT bedeutet immer auch, dass Geräte miteinander sprechen und da gibt es eine Menge von Optionen:

  • USB-Seriell
    Nachdem Sie eine passende Firmware auf den Kleinstcomputer geflashed haben, können Sie in ihrer Software Ausgaben auf die danach freie serielle Schnittstelle gehen und Eingaben erwarten. Meist wird dieser Weg für Diagnose-Ausgaben genutzt aber es hindert sie niemand daran, diesen Weg auch für eine Datenkommunikation zu nutzen. Wenn Sie z.B. eine Windows PC oder Raspberry mit einer Schnittstelle versehen wollen, die der große Computer nicht hat, dann bauen Sie sich einfach einen ESP/Pico mit passender Schnittstelle und Vorverarbeitung und verbinden Sie diesen mit ihrem Computer weiterhin per USB.
  • Peer2Peer per WLAN
    Fast alle Kleinstcomputer sprechen WLAN und können eine direkte Verbindung zueinander oder über einen entsprechend konfigurierten WLAN-Accesspoint aufbauen und Daten austauschen.
  • Peer2Peer per Bluetooth
    Der ESP8266 hat kein Bluetooth im Prozesse selbst aber ESP32 und viele andere Geräte sprechen auch BTLE und damit ist eine direkte Verbindung möglich.
  • MQTT-Server
    In der IoT-Welt hat sich das Protokoll MQTT durchgesetzt. Sie brauchen dazu aber einen per TCP/IP erreichbaren MQTT-Broker, zu dem sich ihre Clients verbinden, Daten senden und auch abrufen. Der MQTT-Broker kann im eigenen LAN stehen oder über das Internet erreichbar und damit auch mit mobilen Apps ansprechbar sein. Allerdings hat MQTT keinen "Buffer". Wenn niemand für den Empfang von Daten aktiv ist, werden gesendete Daten einfach verworfen.
  • Datenbank (Firebase o.ä.)
    Daher kann es eine Option sein, eine Datenbank zu betreiben, in welche die Endgeräte ihre Werte addieren und so die Nutzer der Daten nicht nur letzten Messwerte sondern auch die vorherigen Werte erhalten können.

Das sind bei weitem nicht alle Optionen aber ein kurzer Abriss der Kommunikationsmöglichkeiten. Wer z.B. nur Echtzeitdaten ohne Speicherung verarbeitet, ist mit einem MQTT-Server gut bedient. Eine Datenbank ist aufwändiger und sie müssen sich natürlich auch um Zugriffsrechte, Speicherbedarf und Abrufmöglichkeiten Gedanken machen. Denkbar ist aber auch eine Kombination, bei der per MQTT die Daten an einen eigenen Service gesendet werden, welcher diese dann in eine Datenbank ablegt. So sind Anpassungen am Backend einfacher ohne den Code der Kleinstcomputer anpassen zu müssen. Sie können natürlich auch einen ganz eigenen Relay-Service entwickeln.

Power 5V <> 3,3V

Wir arbeiten durchweg mit Niederspannung. Natürlich gibt es Relay-Module, die durch einen Kleinstcomputer angesteuert werden und dann auch 230V schalten könnten. Für den Selbstbau verbieten sich solche Experimente. Es gibt zudem genug schaltbare und messende Steckdosen, die in bestehende Projekte integriert werden können. Dennoch sind auch 5V für einen ESP zu viel, der nur mit 3,3Volt arbeitet. Daher sollten Sie ein paar Grundregeln beachten

  • Spanungsfrei stecken
    Wer auf Steckbrettern neue Sensoren anschließen will und Kabel steckt, sollte dies immer "offline" vornehmen, d.h. USB-Kabel raus.
  • Farben sinnvoll nutzen
    Farbige Kabel sehen nicht nur schön aus, sondern helfen Fehler zu vermeiden. Ein schwarzes Kabel sollte nicht an +5Volt liegen sondern immer GND sein. Spannungsversorgungen kann man gerne mit rot = 5 Volt und Orange = 3,3Volt codieren, so dass immer noch genug Farben (grün, gelb, blau, violett, grau) für die verschiedenen Signalleitungen übrig bleiben. Es erleichter die Fehlersuche insgemein, wenn quasi alle schwarze Kabel verbunden sein können aber fremde Farben zumindest suspekt sind.
  • Energieversorgung
    Ein USB-Anschluss liefert 5 Volt. Daher ist auf den meisten Boards ein Spannungswandler installiert, der die 5V auf 3,3V reduziert. Auch hier gibt es Grenzen für die Belastbarkeit. Einen Motor würde ich nicht aktiv daran betreiben, sondern über ein Relay und eine andere Energieversorgung schalten.  Das gilt auch für die mehrfarbigen LED-Streifen. Wenn viele Verbraucher mehr Strom ziehen, als der Spannungswandler liefern kann, kann die Spannung absinken und ein "Brown-Out" ihr Programm stören. Solche Fehler finden Sie sehr schwer.
  • Spannungswandler
    Wenn Sensoren nur 5V liefert, dann benötigen Sie mindestens einen Spannungsteiler, um daraus für einen EXP unkritische 3,3V zu machen. Wenn Ausgänge nur 3,3V liefern, dann können wir vielleicht hoffen, dass auch ein daran angeschlossener 5V Eingang eines anderen Geräts auch bei 3,3V ein "High" erkennt und wir daher keine Anpassung brauchen. Bei bidirektionalen Verbindungen braucht es aber immer einen aktiven "Level Shifter"
  • Offene Eingänge, Pull-Up und Störsignale
    Lassen Sie Eingänge nie "offen" liegen, sondern definieren Sie einen Zustand per interner Programmierung eines Pull-Up-Widerstands oder externer Beschaltung. Das gilt umso mehr, je länger ein angeschlossenes Kabel ist und Funkwellen (Smartphone, WLAN etc.) Signale einstreuen.
  • USB Hub als PC-Schutz
    Kleiner Tipp aus der Praxis. Ein USB-Hub mit eigenem Netzteil kann in vielen Fällen den kostbaren Notebook für schädlichen Spannungen und Strömen schützen.

Das sind

Ideen

Sie kennen nun die Mikroprozessoren, Programmiersprachen, Entwicklungsumgebungen, Kommunikationswege, technische Kniffe und es fehlt nur noch eine Idee. Ausgangspunkt ist immer eine Problemstellung. Ich habe da schon einige "Probleme", die ich lösen könnte. Vielleicht regen Sie ja zum Nachdenken an.

  • Fahrradblinker
    Wenn ich meinen Arm zum Abbiegen rausstrecke, soll ein gelber Blinker am Arm mit aktiv werden. Ein Prozessor könnte einen Lagesensor/Gyrosensor auswerten, um die typische Bewegung zu erkennen und die LED anzusteuern. Vielleicht gibt es noch weitere Verwendungen wie schütteln, anheben etc. um Licht zu schalten und kann ich auch einen Sturz erkennen?
  • Netzwerkwatcher
    "Funktioniert das Internet". Die Frage wird immer wieder mal gestellt und jeder macht immer wieder die gleichen Prüfungen: Bekomme ich eine IP-Adressen, ist der Router und der nächste Hop erreichbar, funktioniert DNS, kann ich Google, Facebook, eBay, Amazon und andere Seiten erreichen. ESP mit LAN und z.B. 8x RGB-LEDs könnte die Antwort auf diese und andere Fragen sofort liefern.
  • Fahrradrucksack
    Neue Autos haben mittlerweile ganze Lichtbänder am Heck. Wie wäre ein ca. 1m breites Rohr mit LEDs, welche am Rucksack/Gürteltasche befestigt den Radfahrer sichtbarer macht? An den Enden könnten gelbe Blinker platziert sein, das rote Rücklicht könnte bei Verzögerungen heller leuchten und bei Annäherungen von Fahrzeugen auf sich aufmerksam machen?
  • Drahtlose Meeting Anzeige
    Ich bin im Homeoffice und die Familie merkt nicht, ob man in einem Meeting ist oder ein Meeting bald startet. Eine kleine Software auf dem PC kann Teams, WebEx, Outlook, Mikrofon/Webcam-Nutzung  o.ä. auswerten und auf vor der Tür angebrachten "Auf Sendung"-Anzeigen signalisieren.
  • Türöffnung per Code
    Wie wäre es, wenn ich ein Schloss per zugesendetem Code öffnen könnte? Kein verlorenen Schlüssel aber auch keine unidentifizierte Besucher. Ich gebe per Tastatur meine Rufnummer oder Mailadresse an und bekomme einen zeitlich beschränkten Einmalcode. Ein ESP steuert Tastatur und per Internet einen SMS/WhatsApp/SMTP-Service an und wartet auf die Bestätigung des Codes. Oder wie wäre eine Sofortüberweisung der Gebühr zur Türöffnung oder ein QR-Code der auf einer Webseite zur Eingabe der Mailadresse auffordert.
  • Parkplatzbelegung mit Ladesäulenanzeige
    Viele Firmen haben Parkplätze, deren Belegung von außen nicht einsehbar ist. Ein Sensor könnte die Belegung erfassen (Durchfahrt per Lichtschranke, Ultraschall, TimeofFlight o.ä.) oder Belegung durch Ultraschall/ToF) und eine Ampel oder mobile App steuern. Als Plus könnte sie auch ermitteln, welche Parkplätze mit Ladesäulen noch frei sind.
  • Eisfachstatus/Eisampel
    In einem gemeinsamen Kühlschrank kann das Eisfach immer nur eine gewisse Menge aufnehmen. Wer ein Ei entnimmt, drückt eine "-1 Taste". Auf dem Smartphone oder eine sonstigen Anzeige, könnte jeder sehen, wie viel Eis noch da sind. Wer nachkaufen will, kann per Smartphone dies "reservieren", damit nicht zwei Personen zeitgleich  vor dem Kühlschrank stehen. Das gleichen Prinzip könnte man mit Kaffee o.ä. anwenden.
  • Präsentationsampel
    Damit eine Präsentation "in time" läuft, könnte man eine Countdown-Ampel bauen, die alle 5 Min eine LED mehr verschwinden lässt und so den Spreche auf seine Zeit hinweist.
  • Noch nicht genug Ideen?
    Dann überlegt einfach mal, was euch stört, was ihr in eurem Umfeld besser machen wollt, was euch Spaß machen kann...

Diese Liste dient nur zur Ideenfindung und soll niemandem einschränken, eigene Dinge zu finden und umzusetzen.

Weitere Links