Arduino Nano - MySQL
Der Arduino Nano kann Sensordaten sammeln und in einer MySQL-Datenbank speichern. Er kann auch Daten (wie Befehle) aus der MySQL-Datenbank abrufen, um Geräte wie LEDs, Motoren und Aktuatoren zu steuern.
Dieses Tutorial wird Ihnen zeigen, wie man das Arduino Nano und das Ethernet-Modul verwendet, um mit einer MySQL-Datenbank zu interagieren. Genauer gesagt, werden wir Folgendes behandeln:
- Der beste Weg für den Arduino Nano, mit einer MySQL-Datenbank zu kommunizieren
- Wie man den Arduino Nano programmiert, um Daten in eine MySQL-Datenbank einzufügen
- Wie man den Arduino Nano programmiert, um Daten in einer MySQL-Datenbank zu aktualisieren
- Wie man den Arduino Nano programmiert, um Daten aus einer MySQL-Datenbank abzurufen

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Arduino Nano - MySQL
Wenn Sie neu in der Systemarchitektur sind, ist es in Ordnung, vorerst die MySQL-Datenbank und den MySQL-Server als dasselbe zu betrachten. Mit zunehmendem Wissen werden Sie die Unterschiede zwischen ihnen verstehen.
Es gibt zwei Methoden, wie der Arduino Nano mit einer MySQL-Datenbank kommunizieren kann:
- Direkt eine Verbindung zum MySQL-Server über eine MySQL-Verbindung herstellen (der direkte Ansatz)
- Indirekt mit dem MySQL-Server über eine HTTP-Verbindung kommunizieren (der indirekte Ansatz)
Lass uns die beste Option erkunden.
Arduino Nano interagiert direkt mit dem MySQL-Server

Das könnte einfacher erscheinen, aber es hat mehrere Nachteile:
- Das Erlauben eines MySQL-Benutzerkontos, remote auf die MySQL-Datenbank zuzugreifen, birgt Sicherheitsrisiken, auch wenn das Konto nur eingeschränkte Privilegien hat.
- Die Verarbeitung von Daten auf dem Arduino Nano und/oder dem MySQL-Server erhöht die Komplexität des Arduino-Nano-Codes und der MySQL-Skripte und beansprucht einen Großteil der Ressourcen des Arduino Nano (Speicher und CPU).
- In einigen Fällen kann der MySQL-Server dem Arduino Nano eine große Menge an Daten zurückgeben, was dazu führen könnte, dass dem Nano der Speicher ausgeht.
- Die meisten verfügbaren MySQL-Bibliotheken unterstützen kein SSL/TLS, was bedeutet, dass sensible Daten wie Benutzernamen und Passwörter im Klartext übertragen werden und ein zusätzliches Sicherheitsrisiko darstellen.
Arduino Nano interagiert indirekt mit dem MySQL-Server über HTTP/HTTPS
Der indirekte Ansatz behebt alle Probleme, die die direkte Methode hat. Bevor wir darauf eingehen, wie er die Nachteile des direkten Ansatzes überwindet, betrachten wir zunächst, wie er funktioniert.
Wie es funktioniert
- Schritt 1: Der Arduino Nano sendet eine HTTP-Anfrage an den Webserver.
- Schritt 2: Der Webserver führt ein PHP-Skript aus.
- Schritt 3: Das PHP-Skript erhält Daten aus der HTTP-Anfrage, verarbeitet sie und interagiert mit der MySQL-Datenbank.
- Schritt 4: Das PHP-Skript verarbeitet das Ergebnis und sendet es in einer HTTP-Antwort zurück an den Arduino Nano.

In diesem Tutorial werden sowohl der Webserver als auch der MySQL-Server auf einem PC installiert.
Es mag kompliziert erscheinen, aber es ist nicht so. So löst die indirekte Methode die Probleme des direkten Ansatzes:
- Durch die Installation von MySQL- und HTTP-Servern auf derselben Maschine können wir das MySQL-Benutzerkonto darauf beschränken, nur auf localhost zuzugreifen.
- Außerdem werden der MySQL-Benutzername und das Passwort sicher auf dem Server gespeichert (Schritt 3), was die Sicherheit verbessert.
- Daten werden von einem PHP-Skript verarbeitet (Schritte 3 und 4), wodurch die Arbeitslast und die Komplexität sowohl für Arduino Nano als auch für den MySQL-Server reduziert werden.
- Das Verarbeiten von Daten mit PHP-Code ist viel einfacher als die Verwendung von Arduino Nano-Code oder MySQL-Skripten.
- Das PHP-Skript kann die Daten filtern und nur das senden, was für den Arduino Nano benötigt wird (Schritt 4), um einen Speicherüberlauf zu verhindern.
- Die meisten Ethernet-/WiFi-Bibliotheken unterstützen TLS/SSL, sodass wir HTTPS-Anfragen stellen können. Die Verwendung von HTTPS sorgt dafür, dass Daten verschlüsselt übertragen und online sicher ausgetauscht werden.
Im ersten Schritt können wir einen anderen Benutzernamen und ein Passwort für die Authentifizierung zwischen dem Arduino Nano und dem Webserver verwenden. Aus Sicherheitsgründen sollten der HTTP-Benutzername und das HTTP-Passwort nicht identisch mit den MySQL-Anmeldeinformationen sein.
Das folgende Tutorial zeigt, wie man die indirekte Methode mit Arduino Nano und MySQL verwendet und dabei ihre vielen Vorteile erläutert.
Verdrahtungsdiagramm zwischen Arduino Nano und W5500 Ethernet-Modul

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Siehe Der beste Weg, den Arduino Nano und andere Komponenten mit Strom zu versorgen.
Arduino Nano - MySQL über HTTP/HTTPS
Hier sind die Schritte, die wir befolgen müssen:
- Installieren Sie MySQL-Server, Webserver und PHP auf Ihrem PC.
- Aktivieren Sie MySQL-Server und Webserver.
- Erstellen Sie ein MySQL-Benutzerkonto.
- Richten Sie eine MySQL-Datenbank ein.
- Erstellen Sie eine MySQL-Tabelle.
- Schreiben Sie ein oder mehrere PHP-Skriptdateien.
- Schreiben Sie den Code für Arduino Nano.
Wir gehen es Schritt für Schritt an. Gehen wir den Prozess schrittweise durch.
1. Installieren Sie MySQL-Server, Webserver und PHP auf Ihrem PC
Glücklicherweise enthält das XAMPP-Paket all dies.
Wir müssen es nur einmal installieren:
- Laden Sie XAMPP von diesem Link herunter.
- Führen Sie die Installation durch.
Nachdem Sie installiert haben, werden Sie den Ordner C:\xampp\htdocs auf Ihrem Computer sehen. Hier sollten Sie Ihren PHP-Code platzieren (wie später erläutert wird).
2. MySQL und Webserver aktivieren
- Öffnen Sie das XAMPP-Kontrollfeld.
- Drücken Sie die Start-Schaltfläche, um MySQL und den Webserver zu aktivieren. (Siehe das untenstehende Bild.)

3. Ein MySQL-Benutzerkonto erstellen
Wir werden ein MySQL-Konto erstellen, das sich nur von localhost aus mit der MySQL-Datenbank verbinden kann:
- Selbst wenn der Benutzername und das Passwort offengelegt werden, können Angreifer nicht auf die MySQL-Datenbank zugreifen, es sei denn, sie haben die Kontrolle über den Computer.
- 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 mit dem Benutzernamen Arduino und dem Passwort ArduinoGetStarted.com erstellen:
- Starten Sie die Eingabeaufforderung auf Ihrem Computer. Halten Sie dieses Fenster offen, bis das Tutorial abgeschlossen ist.
- Geben Sie den folgenden Befehl in die Eingabeaufforderung ein:
- Standardmäßig besitzt MySQL ein Root-Konto, das kein Passwort besitzt.
- Es wird empfohlen, diesem Konto ein Passwort zu vergeben.
Geben Sie your-root-password für das Root-Konto ein, indem Sie diesen Befehl in der Eingabeaufforderung eingeben:
- Geben Sie diesen Befehl in der Eingabeaufforderung ein:
- Geben Sie Ihr Root-Passwort ein und drücken Sie die Eingabetaste.
- 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 ein MySQL-Benutzerkonto erstellt. Merken Sie sich den Benutzernamen und das Passwort, da sie für das PHP-Skript benötigt werden.
4. Eine MySQL-Datenbank erstellen
Lassen Sie uns eine Datenbank mit dem Titel db_arduino erstellen, indem Sie den folgenden Befehl in der Eingabeaufforderung eingeben:
5. Eine MySQL-Tabelle erstellen
Erstellen wir eine Tabelle namens tbl_temp, indem wir die untenstehenden Befehle kopieren und in die Eingabeaufforderung einfügen:
6. Schreibe eine oder mehrere PHP-Dateien
Erstelle eine PHP-Datei. Benenne die Datei in insert_temp.php. Rufe die Temperatur aus der HTTP-Anfrage ab. Füge die Temperatur in die Datenbank ein.
- Sollte "Temperatur 27,5 wurde gespeichert" lauten.
- Legen Sie diese Datei in das Verzeichnis C:\xampp\htdocs.
- Ermitteln Sie die IP-Adresse Ihres PCs. Wenn Sie nicht wissen, wie das geht, suchen Sie sie bei Google.
- Um den PHP-Code zu testen, öffnen Sie einen Webbrowser (z. B. Chrome) und rufen Sie diesen Link auf: http://192.168.0.26/insert_temp.php?temperature=27.5. Denken Sie daran, die IP-Adresse durch Ihre eigene zu ersetzen.
- Der Webbrowser sollte "Temperatur 27,5 wurde gespeichert" anzeigen.

- Überprüfen Sie, ob Daten in der Datenbank gespeichert sind, indem Sie den folgenden Befehl in der Eingabeaufforderung eingeben:
Es ist offensichtlich, dass die Temperatur von 27,5 in der Datenbank gespeichert ist. Die folgende Aufgabe besteht darin, einen Code für Arduino Nano zu erstellen, der eine ähnliche HTTP-Anfrage an Ihren PC erzeugt.
7. Schreibe Arduino-Nano-Code
Wir werden den Arduino Nano und das Ethernet Shield für den Test verwenden.
Der untenstehende Arduino-Nano-Code sendet eine HTTP-Anfrage an Ihren PC, mit einer Temperatur von 29,1 °C, die in die Datenbank eingefügt werden soll.
Schnelle Schritte
- Schließen Sie das Arduino Nano gemäß dem oben gezeigten Verdrahtungsdiagramm an das Ethernet-Modul an.
- Verbinden Sie ein Ethernetkabel mit dem Ethernet-Modul.
- Verbinden Sie das Arduino Nano mit einem PC über ein USB-Kabel.
- Starten Sie die Arduino-IDE auf Ihrem PC.
- Wählen Sie das Arduino Nano-Board und den entsprechenden COM-Port.
- Klicken Sie auf das Libraries-Symbol in der linken Leiste der Arduino-IDE.
- Suchen Sie “Ethernet”, und finden Sie anschließend die Ethernet-Bibliothek von Various.
- Klicken Sie auf die Install-Schaltfläche, um die Ethernet-Bibliothek zu installieren.

- Passen Sie den Code so an, dass die IP-Adresse des PCs angezeigt wird.
- Kompilieren Sie den Code und laden Sie ihn auf das Arduino Nano hoch.
- Öffnen Sie den seriellen Monitor.
- Die Ausgabe im seriellen Monitor wird die IP-Adresse des Ethernet-Shields anzeigen.
- Überprüfen Sie, ob die Daten in der Datenbank gespeichert sind, indem Sie den folgenden Befehl in der Eingabeaufforderung eingeben:
Es ist offensichtlich, dass die Datenbank eine Temperatur von 29,1 speichert.
Wie der Arduino Nano Daten in eine MySQL-Datenbank einfügt, aktualisiert oder daraus abruft
Im obigen Beispiel haben wir gelernt, wie man Daten in eine MySQL-Datenbank einfügt. Das Aktualisieren und Abrufen von Daten aus der Datenbank funktioniert ähnlich. Sie müssen lediglich die MySQL-Abfragen im PHP-Skript anpassen. Weitere Informationen finden Sie unter W3Schools.
※ Notiz:
Um ein hochsicheres System zu bauen, müssten wir zusätzliche Schritte unternehmen (z. B. Verhinderung von MySQL-Injektionen, Umwandlung von HTTPS in eine REST-API, Verwendung des JSON-Formats für Daten usw.). Dieses Tutorial richtet sich jedoch an Anfänger, die mit dem Arduino Nano lernen möchten, daher haben wir es so einfach wie möglich gehalten. Sobald Sie dieses Tutorial abgeschlossen haben, können Sie es erweitern, um fortgeschrittene Funktionen hinzuzufügen.
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.