ev3-iot-architektur

Eine praktische Implementierung eines Lego EV3 Roboters in eine IoT Umgebung mit der Verknüpfung zu einem Content Delivery Network

https://github.com/fermatlt/ev3-iot-architektur

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (4.1%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Eine praktische Implementierung eines Lego EV3 Roboters in eine IoT Umgebung mit der Verknüpfung zu einem Content Delivery Network

Basic Info
  • Host: GitHub
  • Owner: fermatLT
  • Language: Python
  • Default Branch: main
  • Size: 465 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created almost 4 years ago · Last pushed over 3 years ago
Metadata Files
Readme Citation

README.md

EV3-IoT-Architektur

Eine praktische Implementierung eines Lego EV3 Roboters in eine IoT Umgebung mit der Verknüpfung zu einem Content Delivery Network. In diesem Projekt kommuniziert ein LEGO EV3 Mindtsorms Roboter über MQTT mit einem Raspberry Pi und gibt Status Meldungen über Störungen. Die Webanwendung empfängt die Meldungen des EV3 und bezieht aus dem Content Delivery Network Lösungevorschläge und die nötigen Anleitungen, um die Störung zu beseitigen. Im folgenden wird beschrieben wie das Setup der IoT Umgebung aufgebaut ist und gibt zudem Anleitungen, um diese nachzubauen.

Anforderungen

Zur Umsetzung der IoT Architektur sind folgende Elemente erforderlich.

Bestandteile für den LEGO EV3

  • LEGO EV3
  • Eine microSD oder microSDHC Karte. MicroSDXC wird vom EV3 nicht unterstützt. Die maximale Speicherkapazität darf 32 GB nicht überschreiten. In diesem Tutorial wurde eine 16GB microSDHC Karte benutzt.
  • Image File von ev3dev https://www.ev3dev.org/downloads/
  • WIFI USB Adapter. Eine Liste mit unterstützen Adpatern finden Sie hier https://github.com/ev3dev/ev3dev/wiki/USB-Wi-Fi-Dongles In diesem Tutorial wurde ein TP-Link WIFI Adapter verwendet. https://www.tp-link.com/de/home-networking/adapter/tl-wn722n/
  • LEGO Mindstorms RFID Reader https://www.generationrobots.com/de/403699-rfid-chip-leser-mit-einem-satz-chips-fur-lego-mindstorms-nxt-ev3.html
  • Eine Möglichkeit mit dem EV3 zu kommunizieren.
    • USB Kabel
    • WIFI
    • Ethernet Adapter
    • Bluetooth

Eine Anleitung zur Erstellung einer bootfähigen SD Karte für den EV3 finden Sie hier. https://www.ev3dev.org/docs/getting-started/

Hier eine Anleitung, um den Colorsorter zu bauen. https://www.roberta-home.de/fileadmin/userupload/Materialien/Bauanleitungen/ColorsorterBauanleitung.pdf.

Bestandteile für den Raspberry Pi

  • Raspberry Pi (In diesem Fall wurde ein Model 4b verwendet)
  • Eine microSD Karte mit mindestens 8GB Speicherkapazität
  • Image File des aktuellen Raspbian OS (In diesem Fall wurde Bullseye Version 11 verwendet)
  • Ein Netzteil mit USB-C Kabel
  • Eine Anleitung, um den Raspberry Pi startklar zu machen, finden Sie hier. https://projects.raspberrypi.org/de-DE/projects/raspberry-pi-setting-up/0

Kommunikation zwischen dem Raspberry Pi, dem EV3 und dem Computer über SSH

PuTTY ermöglicht es einem, schnell und reibungslos eine Verbindung zu sowohl dem EV3 und dem Raspberry Pi herzustellen https://www.putty.org/

IDE für den EV3

Nach der Installation des ev3dev Images auf dem EV3, lassen sich nun Programme in diversen Progammiersprachen schreiben, z.B. Python, Java, C++ und C. Eine vollständige Liste aller möglichen Sprachen finden Sie unter https://www.ev3dev.org/docs/programming-languages/. Als IDE eignet sich Visual Studio Code mit der Extension LEGO MINDSTORMS EV3 MicroPython, falls man in Python bzw. MicroPython schreiben möchte. Alle verfügbaren Programme in diesem Repository sind in Python geschrieben.

Veranschaulichung der IoT Architektur

Vorbereitung des Rasperry Pi

Nachdem der Raspberry Pi startklar ist, müssen voher ein Paar Pakete installiert werden und der Raspberry muss auf den aktuellen Stand gebracht werden. Mit diesen Befehlen brint man den Raspberry auf den aktuellen Stand und installiert die neuen Pakete.

 sudo apt-get update 
sudo apt-get upgrade

Installation von Mosquitto MQTT

Message Queuing Telemetry Transport, kurz MQTT, ist ein Protokoll für die Machine-to-Machine Kommuniktaion und dient in diesen Fall, dass der EV3 über das Internet mit dem Raspberry bzw. der Nodered App kommunizieren kann. Vor allem für IoT Devices findet MQTT eine wichtige Verwendung. Um MQTT nutzen zu können, muss ein Broker installiert werden. In diesem Fall nutzen wir Mosquitto. Der Broker dient als zentrale Stelle, wodurch sich andere Devices und User verbinden lassen und entweder die Rolle als Subscriber bzw. Publisher einnehmen können. In diesem Fall ist der Raspberry der Broker, der EV3 der Publisher und die Nodered App der Subscriber.

sudo apt-get install mosquitto 
sudo apt-get install mosquitto-clients

Mit diesem Befehl lässt sich Mosquitto starten

sudo service mosquitto start

Mit diesem Befehl lässt sich der Status von Mosquitto wiedergeben

sudo systemctl status mosquitto

Mit dem Release von MicroPython für den LEGO Mindstorms kommen schon zwei integrierte Pakete für MQTT mit. 'umqtt.simple' and 'umqtt.robust'. Dadurch lässt sich ein EV3 schnell in eine IoT Umgebung einbinden.

from umqtt.robust import MQTTClient
client = MQTTClient(MQTT_ClientID, MQTT_Broker)
client.connect()

Installation von Node-RED

Auf dem Raspberry Pi muss nun Node-Red installiert werden. Node-RED dient in diesem Fall als Webapplikation für die IoT Umgebung. Die App fungiert als "Subscriber". Sie hört auf das Topic des EV3 und empfängt dessen Nachrichten und spiegelt diese in dem UI für den Nutzer wieder. Node-RED ist ein von IBM entwickeltetes Flow-basiertes Programming Tool. Es findet vor allem Anwendung in DIY Smart Home Umgebungen. Mit ein paar Klicks lassen sich schnell User Dashboards für die vernetzten IoT Geräte erstellen. Um Node-RED auf dem Raspberry Pi zu installieren, sollte man den offiziellen Link der Webseite nutzen. Node-RED ist zwar mittlerweile in den empfohlenen Paketen vom Raspberry OS enthalten, dennoch empfiehlt es sich der Anleitung von Node-RED zu folgen. https://nodered.org/docs/getting-started/raspberrypi

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Dort findet sich auch eine Anleitung zur Installation. Nach erfolgreicher Installation, sollte folgender Befehl noch ausgeführt werden. Dieser fügt Node-RED zum Autoboot des Raspberry hinzu und startet das Programm direkt beim Start des Raspberry

sudo systemctl enable nodered.service

Die folgenden Befehle dienen zum manuellen Steuern von Node-RED

node-red-start
node-red-stop
node-red-restart
node-red-log

Nach der Installation sollte der Raspberry neugestartet werden.

sudo reboot

Einstieg in Node-RED

Der Node-RED Editor befindet sich unter der lokalen Adresse http://localhost:1880. Standardmäßig ist der Zugangsport auf 1880 gesetzt. Innerhalb der settings.js Datei von Node-RED kann auch ein anderer Port gewählt werden. Innerhalb der settings.js Datei lassen sich auch andere Parameter und Einstellungen vornehmen.
Node-RED ist ein flow-basiertes Browser Programmier Tool, um Hardware Devices, Online Services und API miteinander zu verknüpfen zu können. Die einzelnen Nodes dienen in den Flows als Aktionen und führen eine einzige Aufgabe innerhalb des gesamten Flows aus. Mit der Installation von Node-RED kommen zahlreiche Nodes schon direkt einher, über den Paket-Manager lassen sich noch zusätzliche Nodes installieren.

Node-RED Dashboard UI

Die Installation für UI Elemente muss zunächst über den Paketmanager oder per npm installiert werden.

npm install node-red-dashboard
Im Suchfeld findet man das UI unter node-red-dashboard. In der Nodepalette finden sich nun diverse UI Elemente, welche man nun mit den Flows verknüpfen kann.

Owner

  • Login: fermatLT
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Koch"
  given-names: "Lucas"
  orcid: "https://orcid.org/0000-0000-0000-0000"
title: "EV3-IoT-Architektur"
version: 1.0.0
doi: 10.5281/zenodo.1234
date-released: 2022-07-04
url: "https://github.com/fermatLT/EV3-IoT-Architektur"

GitHub Events

Total
Last Year

Dependencies

Node-RED/package.json npm