Arduino - MySQL
Arduino kann Sensordaten sammeln und in die MySQL-Datenbank speichern. Arduino kann auch Daten (Befehle) aus der MySQL-Datenbank abrufen und LEDs, Motoren, Aktuatoren und Geräte steuern.
In diesem Tutorial werden wir lernen:
- Der beste Weg, wie Arduino mit einer MySQL-Datenbank interagieren kann
- Wie Arduino Daten in eine MySQL-Datenbank einfügt
- Wie Arduino Daten in eine MySQL-Datenbank aktualisiert
- Wie Arduino Daten aus einer MySQL-Datenbank abruft

Das Tutorial stellt den Arduino-Code für zwei Fälle bereit:
- Arduino Uno R4 WiFi
- Arduino Uno/Mega mit Ethernet-Shield
Erforderliche Hardware
1 | × | Arduino UNO R4 WiFi | |
1 | × | Alternativ: DIYables STEM V4 IoT | |
1 | × | USB-Kabel Typ-A zu Typ-C (für USB-A PC) | |
1 | × | USB-Kabel Typ-C zu Typ-C (für USB-C PC) |
Alternatively if using Ethernet:
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables STEM V3 Starter-Kit (Arduino enthalten) | |
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Arduino - MySQL
Wenn Sie nicht viel über die Systemarchitektur wissen, können zwei Begriffe: MySQL Database und MySQL Server als dasselbe verstanden werden. Sie werden die Unterschiede später erkennen, sobald Sie viel über die Systemarchitektur wissen.
Es gibt zwei Möglichkeiten, wie Arduino mit der MySQL-Datenbank interagieren kann:
- Arduino interagiert direkt mit dem MySQL-Server über eine MySQL-Verbindung (genannt direkter Weg)
- Arduino interagiert indirekt mit dem MySQL-Server über eine HTTP-Verbindung (genannt indirekter Weg)
Lass uns das Beste finden.
Arduino interagiert direkt mit dem MySQL-Server

Das klingt einfacher, aber es gibt viele Nachteile:
- Dies ermöglicht einem MySQL-Benutzerkonto den Fernzugriff auf die MySQL-Datenbank ⇒ Dies ist aus Sicherheitsgründen gefährlich, auch wenn dem Benutzerkonto eingeschränkte Privilegien gewährt wurden.
- Die Daten MÜSSEN in Arduino und/oder dem MySQL-Server verarbeitet werden. Dies erhöht die Komplexität des Arduino-Codes und des MySQL-Skripts. Insbesondere verbraucht es viele Arduino-Ressourcen (Speicher und CPU-Auslastung).
- Der MySQL-Server kann in einigen Fällen eine sehr große Datenmenge an Arduino zurücksenden. Das kann dazu führen, dass dem Arduino der Speicher ausgeht.
- Die meisten verfügbaren MySQL-Bibliotheken unterstützen kein SSL/TLS. Die Daten, einschließlich Benutzername und Passwort, werden im Klartext gesendet ⇒ ein weiteres Sicherheitsproblem.
Arduino interagiert indirekt mit dem MySQL-Server über HTTP/HTTPS
Dieser indirekte Weg löst alle Probleme, die der direkte Weg hat. Bevor wir sehen, wie der indirekte Weg die Nachteile des direkten Weges überwindet, schauen wir zunächst, wie er funktioniert.
Wie es funktioniert
- Schritt 1: Arduino macht eine HTTP-Anfrage an den Webserver
- Schritt 2: Der Webserver führt ein PHP-Skript aus
- Schritt 3: Das PHP-Skript holt Daten aus der HTTP-Anfrage, verarbeitet die Daten und interagiert dann mit der MySQL-Datenbank.
- Schritt 4: Das PHP-Skript verarbeitet das Ergebnis und gibt das Ergebnis via HTTP-Antwort an Arduino zurück

In diesem Tutorial werden der Webserver und der MySQL-Server auf dem PC installiert.
Es sieht kompliziert aus, ist es aber nicht. Nun sehen wir uns an, wie der indirekte Weg die Nachteile des direkten Weges überwindet.
- Indem wir den MySQL-Server und den HTTP-Server auf demselben physischen Server installieren, können wir den Zugriff eines MySQL-Benutzerkontos ausschließlich auf localhost beschränken. Darüber hinaus werden der Benutzername und das Passwort des MySQL-Kontos auf dem Server (Schritt 3) gespeichert; dies erhöht die Sicherheit des Systems.
- Daten werden von einem PHP-Skript (Schritt 3 und Schritt 4) verarbeitet. Dies reduziert den Aufwand und die Komplexität für Arduino- und MySQL-Server. Die Verarbeitung von Daten mit PHP-Code ist viel einfacher als der Arduino-Code und das MySQL-Skript.
- Ein PHP-Skript kann die Daten verarbeiten und nur notwendige Daten an Arduino (Schritt 4) senden, um zu verhindern, dass dem Arduino der Speicher ausgeht.
- Die meisten Ethernet-/WLAN-Bibliotheken unterstützen TLS/SSL, wodurch wir HTTPS-Anfragen stellen können. Durch die Verwendung von HTTPS werden die Daten verschlüsselt und sicher über das Internet ausgetauscht.
Schritt 1: Wir können einen weiteren Benutzernamen und ein weiteres Passwort verwenden, um die Authentifizierung zwischen Arduino und Webserver durchzuführen. Bitte beachten Sie, dass der HTTP-Benutzername bzw. das HTTP-Passwort aus Sicherheitsgründen von dem MySQL-Benutzernamen bzw. dem MySQL-Passwort verschieden sein sollte.
Mit diesen Vorteilen wird der Rest dieses Tutorials erläutern, wie man Arduino indirekt mit MySQL verwendet.
Arduino - MySQL über HTTP/HTTPS
Wir müssen den folgenden Schritt durchführen:
- Installieren Sie MySQL-Server, Webserver und PHP auf Ihrem PC.
- Aktivieren Sie MySQL-Server und Webserver.
- Erstellen Sie ein MySQL-Benutzerkonto.
- Erstellen Sie eine MySQL-Datenbank.
- Erstellen Sie eine MySQL-Tabelle.
- Schreiben Sie ein oder mehrere PHP-Skripte.
- Schreiben Sie Arduino-Code.
Jetzt machen wir es Schritt für Schritt.
1. Installieren Sie MySQL-Server, Webserver und PHP auf Ihrem PC
Glücklicherweise enthält das XAMPP-Paket all diese Dinge. Wir müssen sie nur einmal installieren.
- Lade XAMPP von diesem Link herunter.
- Installiere es.
Nach der Installation sehen Sie auf Ihrem PC den Ordner C:\xampp\htdocs. Hier legen Sie den PHP-Code ab (siehe später).
2. MySQL und Webserver aktivieren
- Öffne das XAMPP-Kontrollzentrum
- Klicke auf die Start-Schaltfläche, um MySQL und den Webserver zu aktivieren (Siehe unten stehendes Bild)

3. MySQL-Benutzerkonto erstellen
Wir erstellen ein MySQL-Konto, das sich nur vom localhost aus mit der MySQL-Datenbank verbinden kann.
- Selbst wenn Benutzername und Passwort offengelegt werden, können die Angreifer nicht auf Ihre MySQL-Datenbank zugreifen, es sei denn, sie übernehmen die Kontrolle über Ihren PC.
- Da PHP und MySQL auf demselben PC installiert sind, kann PHP diesen Benutzernamen und dieses Passwort verwenden, um eine Verbindung zur MySQL-Datenbank herzustellen.
Lassen Sie uns ein MySQL-Benutzerkonto erstellen, dessen Benutzername Arduino ist und dessen Passwort ArduinoGetStarted.com lautet:
- Öffnen Sie die Eingabeaufforderung auf Ihrem PC. Schließen Sie sie nicht bis zum Ende des Tutorials.
- Geben Sie den folgenden Befehl in die Eingabeaufforderung ein:
- Standardmäßig hat MySQL ein Root-Konto ohne Passwort. Sie sollten ein Passwort festlegen.
(z. B. your-root-password) für das Root-Konto, indem Sie den folgenden Befehl in der Eingabeaufforderung eingeben:
- Geben Sie den folgenden Befehl in die Eingabeaufforderung ein:
- Geben Sie Ihr Root-Passwort ein und drücken Sie Enter
- Erstellen Sie ein MySQL-Benutzerkonto mit dem Benutzernamen Arduino und dem Passwort ArduinoGetStarted.com, indem Sie die untenstehenden Befehle kopieren und in die Eingabeaufforderung einfügen:
Sie haben nun erfolgreich ein MySQL-Benutzerkonto erstellt. Merken Sie sich den Benutzernamen und das Passwort; diese werden im PHP-Skript verwendet.
4. Eine MySQL-Datenbank erstellen
Erstellen Sie eine Datenbank mit dem Namen db_arduino, indem Sie den folgenden Befehl in der Eingabeaufforderung eingeben:
5. Eine MySQL-Tabelle erstellen
Erstellen wir eine Tabelle mit dem Namen tbl_temp, indem wir die untenstehenden Befehle kopieren und in die Eingabeaufforderung einfügen:
6. Schreibe eine oder mehrere PHP-Dateien
Erstellen Sie eine PHP-Datei mit dem Namen insert_temp.php, die die Temperatur aus der HTTP-Anfrage erhält und in die Datenbank einfügt.
- Legen Sie diese Datei in den Ordner C:\xampp\htdocs ab.
- Ermitteln Sie die IP-Adresse Ihres PCs. Falls Sie nicht wissen, wie das geht, googeln Sie es.
- Testen Sie den PHP-Code, indem Sie einen Webbrowser (z. B. Chrome) öffnen und auf diesen Link zugreifen: http://192.168.0.26/insert_temp.php?temperature=27.5. Hinweis: Sie müssen die oben genannte IP-Adresse durch Ihre PC-Adresse ersetzen.
- Die Ausgabe im Webbrowser.

- Überprüfen Sie, ob Daten in der Datenbank gespeichert sind, indem Sie den folgenden Befehl in der Eingabeaufforderung eingeben:
Wie Sie sehen, ist die Temperatur von 27,5 °C in der Datenbank gespeichert. Der nächste Schritt besteht darin, Arduino so zu programmieren, dass es eine ähnliche HTTP-Anfrage an Ihren PC sendet.
7. Arduino-Code schreiben
Wir verwenden Arduino Uno und Ethernet Shield oder Arduino Uno R4 WiFi für den Test.
Der untenstehende Arduino-Code sendet eine HTTP-Anfrage an Ihren PC, um eine Temperatur von 29,1 °C in die Datenbank einzufügen.
Arduino-Code für Arduino Uno R4 WiFi
Arduino-Code für Arduino Uno/Mega und Ethernet-Shield
Schnelle Schritte
- Wenn Sie das Ethernet Shield verwenden, legen Sie das Ethernet Shield auf den Arduino Uno
- Verbinden Sie das Ethernet-Kabel mit dem Ethernet Shield
- Schließen Sie den Arduino Uno über ein USB-Kabel an den PC an
- Ändern Sie die IP-Adresse im Code auf die IP-Adresse Ihres PCs
- Kompilieren Sie den Code und laden Sie ihn auf den Arduino hoch
- Öffnen Sie den seriellen Monitor
- Das Ergebnis im seriellen Monitor
- Überprüfen Sie, ob Daten in der Datenbank gespeichert sind, indem Sie den folgenden Befehl in der Eingabeaufforderung eingeben:
Wie Sie sehen können, ist die Temperatur 29,1 in der Datenbank gespeichert.
Wie Arduino Daten in eine MySQL-Datenbank einfügt, aktualisiert oder abruft
Im obigen Beispiel haben wir gelernt, wie man Daten in die MySQL-Datenbank einfügt. Für das Aktualisieren und Abrufen von Daten aus der Datenbank ist es ähnlich. Sie müssen nur die MySQL-Abfragen im PHP-Skript ändern. Weitere Informationen finden Sie bei W3Schools
Fortgeschrittene Nutzung
Um die Sicherheit zu erhöhen.
- Sie können den Arduino-Code ändern, um HTTPS statt HTTP zu verwenden. Siehe Arduino - HTTPS
- Sie können einen Benutzernamen und ein Passwort verwenden, um eine Authentifizierung zwischen dem Arduino und dem Webserver durchzuführen. Siehe HTTP-Basis-Authentifizierung
※ Notiz:
Um ein vollständiges System mit dem höchsten Sicherheitsniveau zu erreichen, müssen wir mehr tun (zum Beispiel MySQL-Injektion verhindern, HTTPS zu einer REST-API machen, das JSON-Format für Daten verwenden usw.). Allerdings ist dieses Tutorial für Anfänger gedacht, um Arduino zu lernen. Wir haben es so einfach wie möglich gestaltet. Nachdem man dieses Tutorial durchgearbeitet hat, kann man es erweitern.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.