Arduino UNO R4 - MySQL

Dieses Tutorial zeigt dir, wie du den Arduino UNO R4 verwendest, um Daten von Sensoren zu erfassen und sie in einer MySQL-Datenbank zu speichern. Im Detail werden wir lernen:

Arduino UNO R4 MySQL

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)
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno R4
1×(Empfohlen) Breadboard-Shield für Arduino Uno R4
1×(Empfohlen) Gehäuse für Arduino Uno R4
1×(Empfohlen) Stromverteiler für Arduino Uno R4
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V4 IoT Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Arduino UNO R4 - MySQL

Der Arduino UNO R4 kann sich auf zwei verschiedene Arten mit der MySQL-Datenbank verbinden:

  • Arduino UNO R4 verbindet sich direkt mit dem MySQL-Server unter Verwendung des MySQL-Protokolls (dies ist die direkte Methode).
  • Arduino UNO R4 verbindet sich mit dem MySQL-Server über ein HTTP-Protokoll (dies ist die indirekte Methode).

Mal sehen, welcher besser ist.

Arduino UNO R4 interagiert direkt mit dem MySQL-Server

Arduino direkt zu MySQL

Das mag einfach erscheinen, aber es gibt mehrere Nachteile:

  • Der Fernzugriff eines MySQL-Benutzers auf die Datenbank kann sicherheitsrelevant sein, auch bei eingeschränkten Benutzerrechten.
  • Die Verarbeitung von Daten auf dem Arduino UNO R4 oder auf einem MySQL-Server macht den Arduino-Code und das MySQL-Skript komplexer und beansprucht den Speicher und die CPU des Arduino stark.
  • Der MySQL-Server könnte eine große Datenmenge an den Arduino UNO R4 senden, wodurch der Speicher des Arduino möglicherweise erschöpft wird.
  • Viele MySQL-Bibliotheken unterstützen kein SSL/TLS, was bedeutet, dass Benutzernamen und Passwörter unverschlüsselt übertragen werden, was ein weiteres Sicherheitsrisiko darstellt.

Arduino UNO R4 interagiert indirekt mit dem MySQL-Server über HTTP/HTTPS

Diese indirekte Methode löst alle Probleme, die die direkte Methode hat. Schauen wir uns zuerst an, wie diese indirekte Methode funktioniert, bevor wir untersuchen, wie sie die Probleme der direkten Methode vermeidet.

Wie es funktioniert

  • Schritt 1: Arduino UNO R4 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 die Ergebnisse und sendet sie zurück an Arduino UNO R4 über die HTTP-Antwort
Arduino UNO R4 MySQL HTTP

Dieser Leitfaden wird Ihnen auch zeigen, wie Sie einen Webserver und einen MySQL-Server auf Ihrem PC installieren. Es scheint kompliziert zu sein, aber das ist nicht der Fall.

Nun, lassen Sie uns untersuchen, wie die indirekte Methode dabei hilft, die Nachteile der direkten Methode zu vermeiden.

  • Indem Sie den MySQL-Server und den HTTP-Server auf derselben Maschine betreiben, können Sie das MySQL-Benutzerkonto so einstellen, dass es nur von dieser Maschine aus zugänglich ist. Der Benutzername und das Passwort für dieses Konto werden auf dem Server gespeichert (in Schritt 3 erwähnt), was die Sicherheit erhöht.
  • Ein PHP-Skript (Schritte 3 und 4) übernimmt die Datenverarbeitung. Das vereinfacht die Abläufe und reduziert die Komplexität sowohl für den Arduino UNO R4 als auch für die MySQL-Server. Die Verwendung von PHP zur Datenverarbeitung ist einfacher als die Verwendung von Arduino UNO R4-Code oder MySQL-Skripten.
  • Das PHP-Skript verarbeitet die Daten und sendet dann nur das Notwendige an den Arduino UNO R4 (Schritt 4). Dies trägt dazu bei, dass dem Arduino UNO R4 nicht der Speicher ausgeht.
  • Die meisten Ethernet-/WiFi-Bibliotheken unterstützen TLS/SSL und ermöglichen HTTPS-Anfragen. Mit HTTPS werden Daten verschlüsselt und sicher über das Internet übertragen.

Schritt 1: Sie können einen anderen Benutzernamen und ein anderes Passwort verwenden, um den Arduino UNO R4 mit dem Webserver zu verbinden. Es ist wichtig, dass der HTTP-Benutzername und das HTTP-Passwort nicht mit dem MySQL-Benutzernamen und dem MySQL-Passwort identisch sind, um die Sicherheit zu gewährleisten.

Dieser Leitfaden zeigt, wie man den Arduino UNO R4 indirekt mit MySQL verbindet.

Arduino UNO R4 - MySQL über HTTP/HTTPS

Wir müssen den folgenden Schritt gehen:

  • Installieren Sie MySQL-Server, Webserver und PHP auf Ihrem Computer.
  • Aktivieren Sie MySQL und den Webserver.
  • Erstellen Sie ein MySQL-Benutzerkonto.
  • Erstellen Sie eine MySQL-Datenbank.
  • Erstellen Sie eine MySQL-Tabelle.
  • Schreiben Sie PHP-Skripte.
  • Programmieren Sie Arduino UNO R4.

Lass uns das Schritt für Schritt angehen.

Installieren Sie den MySQL-Server, den Webserver und PHP auf Ihrem PC

Das XAMPP-Paket enthält alles, was man braucht. Wir müssen es nur einmal installieren.

Nach der Installation erscheint der Ordner namens C:\xampp\htdocs auf Ihrem PC. Dieser Ordner enthält den PHP-Code (später erläutert).

MySQL und Webserver aktivieren

  • Öffnen Sie das XAMPL-Steuerpanel
  • Klicken Sie auf die Start-Schaltfläche, um MySQL und den Webserver einzuschalten (Siehe untenstehendes Bild)
Arduino UNO R4 XAMPP

Erstellen eines MySQL-Benutzerkontos

Wir richten ein MySQL-Benutzerkonto ein, das nur vom lokalen Computer aus auf die MySQL-Datenbank zugreifen kann.

  • Selbst wenn jemand Ihren Benutzernamen und Ihr Passwort kennt, kann er nicht aus der Ferne auf Ihre MySQL-Datenbank zugreifen.
  • Da PHP und MySQL sich auf dem gleichen PC befinden, kann PHP den Benutzernamen und das Passwort verwenden, um eine Verbindung zur MySQL-Datenbank herzustellen.

Lass uns ein MySQL-Benutzerkonto mit dem Benutzernamen ArduinoUnoR4 und dem Passwort newbiely.com erstellen.

  • Öffnen Sie die Eingabeaufforderung auf Ihrem Computer. Halten Sie sie offen, bis Sie das Tutorial beendet haben.
  • Geben Sie diesen Befehl in die Eingabeaufforderung ein:
cd C:\xampp\mysql\bin
Command Prompt
C:\Users\youruser>cd C:\xampp\mysql\bin C:\xampp\mysql\bin>
  • Die Standardeinstellung von MySQL enthält ein Root-Konto, dem kein Passwort zugewiesen ist. Es wird empfohlen, für dieses Konto ein Passwort zu erstellen.

Geben Sie den folgenden Befehl in der Eingabeaufforderung ein, um das Passwort des Root-Kontos festzulegen: (z. B. YOUR-ROOT-PASSWORD)

mysqladmin -u root password YOUR-ROOT-PASSWORD
Command Prompt
C:\xampp\mysql\bin>mysqladmin -u root password YOUR-ROOT-PASSWORD C:\xampp\mysql\bin>
  • Geben Sie diesen Befehl in der Eingabeaufforderung ein:
mysql.exe -u root -p
  • Gib dein Root-Passwort ein und drücke Enter.
Command Prompt
C:\xampp\mysql\bin>mysql.exe -u root -p Enter password: ****************** Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.4.6-MariaDB mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
  • Erstellen Sie ein MySQL-Benutzerkonto mit dem Benutzernamen 'ArduinoUnoR4' und dem Passwort 'newbiely.com'. Kopieren Sie die folgenden Befehle und fügen Sie sie in die Eingabeaufforderung ein:
CREATE USER 'ArduinoUnoR4'@'localhost' IDENTIFIED BY 'newbiely.com'; GRANT ALL PRIVILEGES ON *.* TO 'ArduinoUnoR4'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Command Prompt
MariaDB [(none)]> CREATE USER 'ArduinoUnoR4'@'localhost' IDENTIFIED BY 'newbiely.com'; Query OK, 0 rows affected (0.005 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'ArduinoUnoR4'@'localhost' WITH GRANT OPTION; Query OK, 0 rows affected (0.005 sec) MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]>

Sie haben nun erfolgreich ein MySQL-Benutzerkonto erstellt. Merken Sie sich den Benutzernamen und das Passwort, da Sie sie für das PHP-Skript benötigen.

Eine MySQL-Datenbank erstellen

Erstellen Sie eine Datenbank mit dem Namen db_arduino, indem Sie diesen Befehl in der Eingabeaufforderung eingeben:

CREATE DATABASE db_arduino CHARACTER SET = 'utf8' COLLATE = 'utf8_general_ci';
Command Prompt
MariaDB [(none)]> CREATE DATABASE db_arduino CHARACTER SET = 'utf8' COLLATE = 'utf8_general_ci'; Query OK, 1 row affected (0.003 sec) MariaDB [(none)]>

Eine MySQL-Tabelle erstellen

Erstellen wir eine Tabelle namens tbl_temperature. Kopieren Sie die folgenden Befehle und fügen Sie sie in die Eingabeaufforderung ein:

USE db_arduino; CREATE TABLE tbl_temperature ( temp_id INT UNSIGNED NOT NULL AUTO_INCREMENT, temp_value FLOAT DEFAULT 0.00, PRIMARY KEY (temp_id) );
Command Prompt
MariaDB [(none)]> USE db_arduino; Database changed MariaDB [db_arduino]> MariaDB [db_arduino]> CREATE TABLE tbl_temperature ( -> temp_id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> temp_value FLOAT DEFAULT 0.00, -> PRIMARY KEY (temp_id) -> ); Query OK, 0 rows affected (0.044 sec) MariaDB [db_arduino]>

Schreibe eine oder mehrere PHP-Dateien

Erstelle eine PHP-Datei mit dem Namen insert_temp.php unter C:\xampp\htdocs

<?php if(isset($_GET["temperature"])) { $temperature = $_GET["temperature"]; // get temperature value from HTTP GET $servername = "localhost"; $username = "ArduinoUnoR4"; $password = "newbiely.com"; $dbname = "db_arduino"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "INSERT INTO tbl_temperature (temp_value) VALUES ($temperature)"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . " => " . $conn->error; } $conn->close(); } else { echo "temperature is not set"; } ?>

Dieser PHP-Code nimmt die Temperatur aus der HTTP-Anfrage und fügt sie in die Datenbank ein.

  • Finden Sie die IP-Adresse Ihres Computers heraus. Wenn Sie sich nicht sicher sind, wie Sie sie finden, suchen Sie bei Google danach.
  • Um zu überprüfen, ob der PHP-Code funktioniert, öffnen Sie einen Webbrowser (wie Chrome) und rufen Sie diesen Link auf: http://192.168.0.4/insert_temp.php?temperature=25.3. Denken Sie daran, Ihre eigene IP-Adresse statt "192.168.0.4" zu verwenden.
  • Sie werden die Ergebnisse in Ihrem Webbrowser angezeigt bekommen.
MySQL-Test
  • Um zu sehen, ob die Daten in der Datenbank gespeichert sind, geben Sie diesen Befehl in der Eingabeaufforderung ein:
SELECT * from tbl_temperature;
Command Prompt
MariaDB [db_arduino]> SELECT * from tbl_temperature; +---------+------------+ | temp_id | temp_value | +---------+------------+ | 1 | 25.3 | +---------+------------+ 1 row in set (0.001 sec) MariaDB [db_arduino]>

Die Temperatur 25,3 ist in der Datenbank gespeichert. Als Nächstes müssen wir den Arduino UNO R4 so programmieren, dass er eine ähnliche HTTP-Anfrage an Ihren Computer sendet.

Schreibe Arduino UNO R4-Code

Dieser Arduino UNO R4-Code sendet eine HTTP-Anfrage an Ihren Computer, um eine Temperatur von 30,5 °C in die Datenbank einzufügen.

Arduino UNO R4 Programmcode für Arduino UNO R4 R4 WiFi

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-r4/arduino-uno-r4-mysql */ #include <WiFiS3.h> const char ssid[] = "YOUR_WIFI_SSID"; // change your network SSID (name) const char pass[] = "YOUR_WIFI_PASSWORD"; // change your network password (use for WPA, or use as key for WEP) WiFiClient client; int status = WL_IDLE_STATUS; int HTTP_PORT = 80; String HTTP_METHOD = "GET"; char HOST_NAME[] = "192.168.0.4"; // change to your PC's IP address String PATH_NAME = "/insert_temp.php"; String queryString = "?temperature=30.5"; void setup() { Serial.begin(9600); // check for the WiFi module: if (WiFi.status() == WL_NO_MODULE) { Serial.println("Communication with WiFi module failed!"); // don't continue while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("Please upgrade the firmware"); } // attempt to connect to WiFi network: while (status != WL_CONNECTED) { Serial.print("Attempting to connect to SSID: "); Serial.println(ssid); // Connect to WPA/WPA2 network. Change this line if using open or WEP network: status = WiFi.begin(ssid, pass); // wait 10 seconds for connection: delay(10000); } // print your board's IP address: Serial.print("IP Address: "); Serial.println(WiFi.localIP()); // connect to web server on port 80: if (client.connect(HOST_NAME, HTTP_PORT)) { // if connected: Serial.println("Connected to server"); // make a HTTP request: // send HTTP header client.println(HTTP_METHOD + " " + PATH_NAME + queryString + " HTTP/1.1"); client.println("Host: " + String(HOST_NAME)); client.println("Connection: close"); client.println(); // end HTTP header while (client.connected()) { if (client.available()) { // read an incoming byte from the server and print it to serial monitor: char c = client.read(); Serial.print(c); } } // the server's disconnected, stop the client: client.stop(); Serial.println(); Serial.println("disconnected"); } else { // if not connected: Serial.println("connection failed"); } } void loop() { }

Schnelle Schritte

Folgen Sie diesen Anweisungen Schritt für Schritt:

  • Wenn Sie den Arduino Uno R4 WiFi/Minima zum ersten Mal verwenden, lesen Sie das Tutorial zur Einrichtung der Umgebung für Arduino Uno R4 WiFi/Minima in der Arduino IDE.
  • Schließen Sie das Arduino UNO R4-Board über ein USB-Kabel an Ihren Computer an.
  • Starten Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das geeignete Arduino UNO R4-Board (z. B. Arduino Uno R4 WiFi) und den COM-Port aus.
  • Ersetzen Sie die IP-Adresse im Code durch die IP-Adresse Ihres Computers.
  • Kompilieren Sie den Code und laden Sie ihn auf den Arduino UNO R4 hoch.
  • Öffnen Sie den Serial Monitor.
  • Zeigen Sie die Ausgabe im Serial Monitor an.
COM6
Send
Connected to server HTTP/1.1 200 OK Date: Tue, 12 Jan 2021 07:52:22 GMT Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1c PHP/7.3.8 X-Powered-By: PHP/7.3.8 Content-Length: 31 Connection: close Content-Type: text/html; charset=UTF-8 New record created successfully disconnected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Um zu sehen, ob die Informationen in der Datenbank gespeichert sind, geben Sie diesen Befehl in der Eingabeaufforderung ein:
SELECT * from tbl_temperature;
Command Prompt
MariaDB [db_arduino]> SELECT * from tbl_temperature; +---------+------------+ | temp_id | temp_value | +---------+------------+ | 1 | 25.3 | | 2 | 30.5 | +---------+------------+ 2 rows in set (0.000 sec) MariaDB [db_arduino]>

Die Temperatur 30,5 ist in der Datenbank gespeichert.

Wie Arduino UNO R4 Daten in eine MySQL-Datenbank einfügt, aktualisiert oder daraus abruft

Im Beispiel haben wir gelernt, wie man Daten in die MySQL-Datenbank hinzufügt. Um Daten zu aktualisieren oder abzurufen, ist der Prozess ähnlich. Ändern Sie einfach die MySQL-Abfragen im PHP-Skript. Für weitere Informationen besuchen Sie W3Schools.

Fortgeschrittene Nutzung

Um die Sicherheit zu verbessern,

  • Sie können den Code des Arduino UNO R4 so anpassen, dass HTTPS statt HTTP verwendet wird. Wie das geht, finden Sie unter Arduino UNO R4 - HTTPS.
  • Sie können sich beim Verbinden des Arduino UNO R4 mit einem Webserver mit einem Benutzernamen und Passwort authentifizieren. Erfahren Sie mehr unter HTTP-Basis-Authentifizierung.

※ Notiz:

Um ein vollständiges System mit höchster Sicherheit zu erstellen, müssen wir weitere Funktionen hinzufügen (wie die Verhinderung von MySQL-Injektionen, die Umwandlung von HTTPS in eine REST-API und die Verwendung des JSON-Formats für Daten). Diese Anleitung richtet sich jedoch an Anfänger, die Arduino UNO R4 lernen. Wir haben es sehr einfach gehalten. Nachdem Sie diese Anleitung beendet haben, können Sie sich fortgeschrittenen Themen zuwenden.

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.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!