ESP32 - MySQL
Deze tutorial legt uit hoe u met ESP32 data naar een MySQL database kunt invoegen of bijwerken, of data uit een MySQL database kunt uitlezen.

Benodigde Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
ESP32 - MySQL
Er zijn twee termen in MySQL die beginners vaak verwarren: MySQL Database en MySQL server. Dit zijn verschillende begrippen. Als beginner kunt u er echter vanuit gaan dat ze hetzelfde zijn. Later ontdekt u de verschillen tijdens het leerproces.
De ESP32 kan op twee manieren interactie hebben met de MySQL database:
- Direct: de ESP32 maakt rechtstreeks verbinding met de MySQL server en communiceert via het MySQL protocol
- Indirect: de ESP32 maakt indirect verbinding met de MySQL server via een webserver met behulp van HTTP/HTTPS protocol
Welke methode is het beste voor ESP32? Laten we het ontdekken!
ESP32 maakt directe verbinding met MySQL Server

Directe interactie met MySQL lijkt eenvoudig, maar kent veel nadelen:
- We moeten remote toegang verlenen aan een MySQL-gebruikersaccount ⇒ Dit is een beveiligingsrisico, ook als we beperkte rechten geven aan dat gebruikersaccount.
- ESP32 MOET MySQL queries opslaan en verzenden naar de MySQL server ⇒ Dit vereist veel ESP32-code en belast de ESP32 resources (geheugen en CPU).
- ESP32 MOET complexe MySQL reacties verwerken (soms grote hoeveelheden data) ⇒ dit kan ervoor zorgen dat ESP32 geheugen tekort komt
- De MySQL server moet ruwe data verwerken ⇒ verhoogt de complexiteit van MySQL scripts
- De meeste MySQL libraries voor ESP32 ondersteunen geen SSL/TLS ⇒ data en gebruikersnaam/wachtwoord worden zonder encryptie verzonden ⇒ nog een beveiligingsprobleem
ESP32 maakt indirecte verbinding met MySQL Server via HTTP/HTTPS
Interacties via HTTP/HTTPS via een webserver verhelpen alle problemen van directe toegang.
Hoe werkt het
- Stap 1: ESP32 voegt data toe aan een HTTP/HTTPS verzoek en stuurt dit verzoek naar de webserver
- Stap 2: De webserver voert een PHP-script uit dat het verzoek van ESP32 verwerkt
- Stap 3: Het PHP-script haalt data uit het HTTP-verzoek, verwerkt deze en communiceert met de MySQL database
- Stap 4: Het PHP-script verwerkt het resultaat en stuurt alleen de benodigde gegevens terug naar de ESP32 via het HTTP-antwoord

We gaan MySQL server, webserver en PHP installeren op de PC. In de praktijk kunt u dit ook op een dedicated server of cloudservice zoals AWS EC2 installeren.
Dit is hoe de indirecte methode de problemen van directe toegang oplost:
- We kunnen HTTP-server en MySQL server op dezelfde fysieke server installeren en toegang voor de MySQL-gebruiker beperken (bijv. alleen localhost-toegang) ⇒ veilig
- De gebruikersnaam/wachtwoord voor MySQL wordt alleen op de server opgeslagen ⇒ veilig
- Data wordt verwerkt door een PHP-script ⇒ dit vermindert de belasting en complexiteit voor zowel ESP32 als MySQL-server
- PHP-script is eenvoudiger dan ESP32-code en MySQL-scripts ⇒ vereenvoudigt code
- PHP-script kan data filteren en alleen benodigde data terugsturen naar ESP32 (Stap 4), zodat ESP32 niet zonder geheugen komt
- ESP32 kan eenvoudig HTTPS verzoeken versturen ⇒ data is versleuteld
Let op: authenticatie tussen ESP32 en webserver moet los staan van MySQL-authenticatie. Bijvoorbeeld, de HTTP gebruikersnaam/wachtwoord moet anders zijn dan die voor MySQL.
Vanwege deze voordelen gebruiken we in deze tutorial de indirecte methode.
ESP32 naar MySQL via HTTP/HTTPS
Dit zijn de stappen die u moet uitvoeren:
- Installeren van XAMPP-pakket dat MySQL server, webserver en PHP bevat op uw PC
- Aanmaken van MySQL gebruikersaccount
- Aanmaken van een MySQL database
- Aanmaken van een MySQL tabel
- Schrijven van een of meer PHP-scriptbestanden
- Schrijven van ESP32-code
1. Installeren van MySQL server, webserver en PHP op uw PC
- Download en installeer XAMPP via deze link. Controleer na installatie de map C:\xampp\htdocs op uw PC. Dit is de locatie waar u PHP-code plaatst (later meer).
- Open het XAMPP Control Panel
- Klik op de Start knoppen om MySQL en de webserver te starten (zie onderstaande afbeelding)

2. Aanmaken van een MySQL gebruikersaccount
We maken een MySQL gebruiker aan met alleen localhost toegangsrechten.
- Zelfs als hackers de gebruikersnaam/wachtwoord achterhalen, kunnen ze niet in uw MySQL database tenzij ze ook controle hebben over uw PC
- Deze gebruikersnaam/wachtwoord gebruiken we in PHP-scripts om verbinding te maken met de MySQL database
Deze tutorial maakt een MySQL-gebruiker aan met gebruikersnaam ESP32 en wachtwoord newbiely.com:
- Open de Opdrachtprompt op uw PC. Sluit deze niet voordat u klaar bent met de tutorial.
- Typ het volgende commando in de Opdrachtprompt:
- Standaard heeft MySQL het root-account zonder wachtwoord. Het wordt sterk aangeraden om een wachtwoord in te stellen voor root (bijv. YOUR_ROOT_PASSWORD) vanwege beveiligingsredenen. Typ het onderstaande commando in de opdrachtprompt:
- Typ het onderstaande commando in de opdrachtprompt om in te loggen op de MySQL-server:
- Typ YOUR_ROOT_PASSWORD en druk op Enter
- Maak nu een MySQL-gebruiker aan met gebruikersnaam ESP32 en wachtwoord newbiely.com door de onderstaande commando's te kopiëren en te plakken in de opdrachtprompt:
U heeft nu succesvol een MySQL-gebruikersaccount aangemaakt. Noteer de gebruikersnaam en het wachtwoord, die hebt u nodig in het PHP-script.
3. Aanmaken van een MySQL database
Maak een database aan met de naam db_esp32 door het volgende commando in te voeren in de opdrachtprompt:
4. Aanmaken van een MySQL tabel
Maak een tabel tbl_temp aan door de volgende commando's te kopiëren en in de opdrachtprompt te plakken:
6. PHP script schrijven
Maak een bestand genaamd insert_temp.php aan met een teksteditor (bijv. Kladblok/Notepad++). In dit script lezen we de temperatuurwaarde uit het HTTP-verzoek en voegen die toe aan de database.
- Plaats dit bestand in de map C:\xampp\htdocs
- Zoek het IP-adres van uw PC op. Als u niet weet hoe dat moet, zoek het op via Google.
- Test de PHP-code via een webbrowser (bijv. Chrome) door naar de volgende URL te gaan: http://192.168.0.19/insert_temp.php?temperature=26.2. Vervang dit IP-adres door het IP-adres van uw PC.
- De webbrowser toont het volgende:

- Controleer of de gegevens in de database zijn opgeslagen door in de opdrachtprompt de volgende query uit te voeren:
Zoals u ziet, is de temperatuurwaarde 26.2 opgeslagen in de database. De volgende stap is het schrijven van ESP32-code die een HTTP-verzoek naar de webserver op uw PC stuurt.
7. ESP32 code schrijven
De onderstaande ESP32 code maakt een HTTP-verzoek naar uw PC om een temperatuur van 30.5°C in de database in te voegen.
Snelle stappen
- Als u ESP32 voor het eerst gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in de Arduino IDE.
- Maak de verbindingen volgens bovenstaande afbeelding.
- Verbind de ESP32 met uw PC via een micro USB-kabel
- Pas het IP-adres in de code aan naar het IP-adres van uw PC
- Compileer en upload de code naar de ESP32
- Open de Seriële Monitor in de Arduino IDE

- Resultaat in de Seriële Monitor:
- Controleer of de data in de database is opgeslagen met het volgende commando in de opdrachtprompt:
Zoals u ziet, is temperatuur 30.5 succesvol toegevoegd aan de database.
Hoe ESP32 data in MySQL invoegt, bijwerkt of uitleest
Het bovenstaande voorbeeld toont hoe u data invoegt in MySQL. Voor het bijwerken of uitlezen van data wijzigt u alleen de MySQL query in de PHP-code. Meer leren? Zie W3Schools.com
Video Tutorial
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.