ESP32 - AWS IoT
Deze tutorial legt uit hoe u de ESP32 gebruikt in combinatie met AWS IoT Core. In detail leert u:
- Hoe u de ESP32 verbindt met AWS IoT Core.
- Hoe u de ESP32 programmeert om data te versturen naar AWS IoT Core.
- Hoe u de ESP32 programmeert om data te ontvangen van AWS IoT Core.

Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over ESP32 en AWS IoT
De ESP32 maakt verbinding met AWS IoT Core via het MQTT-protocol. Hoewel er bibliotheken beschikbaar zijn die deze verbinding vergemakkelijken, is het niet zo eenvoudig als verbinden met een lokale MQTT broker zoals Mosquitto op uw pc. Dit komt doordat AWS IoT Core strenge beveiligingsmaatregelen hanteert die configuratiestappen vereisen om authenticatiegegevens te verkrijgen en autorisatie te regelen voordat deze in de ESP32-code kunnen worden geïntegreerd. Samengevat bestaat het proces uit twee hoofdonderdelen:
- Stap 1: AWS IoT Core configureren – Hierbij stelt u AWS IoT Core in om de benodigde authenticatiegegevens te genereren die later in de ESP32-code worden gebruikt.
- Stap 2: De ESP32-code schrijven – Nadat u de authenticatiegegevens van AWS IoT Core hebt ontvangen, schrijft u de ESP32-code waarin de vereiste authenticatie en communicatiesystemen worden geïntegreerd.
Laten we elke stap nader bekijken om deze beter te begrijpen.
AWS IoT Core configureren voor gebruik met ESP32
De doelen van deze stap zijn:
- Een representation (representatie) van het ESP32-apparaat aanmaken op AWS IoT Core, genaamd een "Thing".
- De benodigde autorisatie configureren om het ESP32-apparaat toe te staan verbinding te maken, te publiceren en te abonneren op AWS IoT Core, ook wel een "Policy" genoemd.
- De AWS-credentials genereren die voor authenticatie nodig zijn, genaamd "Certificates". Deze worden gedownload en in de Arduino ESP32-code geïntegreerd.
Hieronder vindt u instructies voor het configureren van AWS IoT Core voor gebruik met ESP32 via de AWS IoT Console. Merk op dat de gebruikersinterface in de loop der tijd kan veranderen, maar het proces zal vergelijkbaar blijven met onderstaande stappen:
- Meld u aan bij de AWS IoT Console
- Maak een Thing aan door te navigeren naar Manage All devices Things

- Klik op de knop Create things.
- Selecteer Create single things en klik op de Next knop.

- Geef de Thing name op, bijvoorbeeld ESP32-thing en klik onderaan de pagina op de Next knop.

- Genereer de credentials door de optie Auto-generate a new certificate te selecteren en klik op de Next knop.

- Er wordt nu een Certificate aangemaakt en gekoppeld aan de Thing.
- Maak een policy aan door te klikken op de knop Create policy.

- Er opent een nieuw tabblad.

- Geef de Policy name op, bijvoorbeeld ESP32-policy en klik op de JSON knop.
- Kopieer de onderstaande JSON-policy en plak deze in het veld Policy document:
- Klik onderaan de pagina op de knop Create om de policy aan te maken.
- Er is nu een Policy aangemaakt en gekoppeld aan het Certificate. Sluit de pagina en keer terug naar de Thing-pagina.
- Vink de ESP32-policy aan en klik op de knop Create thing om het Thing aan te maken.

- Er verschijnt een popup waarmee u de credential-bestanden kunt downloaden. Download alle bestanden en bewaar ze op een veilige plek op uw pc en houd ze vertrouwelijk.

- Klik vervolgens op de knop Done.
Van de gedownloade bestanden worden er drie gebruikt in de ESP32-code in de volgende stappen:
- AmazonRootCA1.pem
- xxxxxxxxxx-certificate.pem.crt
- xxxxxxxxxx-private.pem.key
Deze bestanden kunt u openen met een eenvoudige teksteditor zoals Kladblok of Notepad++.
ESP32-code schrijven om te verbinden met AWS IoT Core
Snelle Stappen
- Als u de ESP32 voor het eerst gebruikt, zie dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
- Open de Library Manager door te klikken op het icoon Library Manager in de linker navigatiebalk van Arduino IDE.
- Typ MQTT in de zoekbalk en zoek de MQTT-bibliotheek van Joel Gaehwiler.
- Klik op de knop Install om de MQTT-bibliotheek te installeren.

- Typ ArduinoJson in de zoekbalk en zoek de ArduinoJson-bibliotheek van Benoit Blanchon.
- Klik op de knop Install om de ArduinoJson-bibliotheek te installeren.

- Kopieer de bovenstaande code en plak deze in Arduino IDE.
- Maak het bestand secrets.h aan in Arduino IDE door:
- Ofwel te klikken op de knop direct onder het serial monitor-icoon en kies New Tab, of gebruik de toetsencombinatie Ctrl+Shift+N.
- Geef het bestand de naam secrets.h en klik op OK.
- Kopieer onderstaande code en plak deze in het gemaakte secrets.h bestand.
- Werk de volgende gegevens in secrets.h bij:
- De WIFI_SSID en WIFI_PASSWORD van uw WiFi-netwerk
- De AWS_CERT_CA, AWS_CERT_CRT, en AWS_CERT_PRIVATE. Deze informatie staat in de bestanden die u in de vorige stap gedownload heeft.
- De AWS_IOT_ENDPOINT. Deze informatie vindt u in de AWS IoT Console via Setting, zoals in de onderstaande afbeelding:
- Compileer en upload de code naar het ESP32-board door op de knop Upload te klikken in Arduino IDE.



Data verzenden van ESP32 naar AWS IoT
De bovenstaande ESP32-code leest periodiek data van een analoge pin en stuurt deze elke 4 seconden naar AWS IoT. Als u de Serial Monitor in Arduino IDE opent, ziet u de volgende log:
Om te controleren of de data door AWS IoT ontvangen zijn, doet u het volgende:
- Ga in AWS IoT Console naar Test MQTT Test Client

- Klik op de knop Subscribe to a topic.
- Typ esp32/esp32-to-aws in het veld Topic filter. U kunt het topic wijzigen, maar het MOET overeenkomen met het topic in de ESP32-code.
- Klik op de knop Subscribe.
- U zult de data zien die vanaf de ESP32 naar de AWS IoT Console worden gestuurd.
Data verzenden van AWS IoT naar ESP32
U kunt ook data vanuit de AWS IoT Console naar de ESP32 sturen door de volgende stappen te volgen:
- Open de Serial Monitor in Arduino IDE
- Ga in AWS IoT Console naar Test MQTT Test Client

- Klik op de knop Publish to a topic.
- Typ esp32/aws-to-esp32 in het veld Topic name. U kunt het topic wijzigen, maar het MOET overeenkomen met het topic in de ESP32-code.
- Optioneel kunt u de message payload aanpassen, of gewoon de standaardwaarde aanhouden.
- Klik op de knop Publish.
- Kijk naar de Serial Monitor in Arduino IDE, u ziet het bericht dat vanuit de AWS IoT Console is verzonden.
Meer doen met AWS
Nu kunt u bidirectionele communicatie tot stand brengen tussen de ESP32 en AWS IoT Core. Dit betekent dat u data kunt sturen van de ESP32 naar AWS IoT Core en ook data kunt ontvangen van AWS IoT Core op de ESP32. Daarnaast hebt u de mogelijkheid om IoTRules te configureren, waarmee de ESP32 naadloos kan samenwerken met andere AWS-diensten zoals Lambda, DynamoDB, Amplify en RDS. Met IoTRules kunt u acties automatiseren gebaseerd op data die van de ESP32 binnenkomen, wat een breed scala aan IoT-toepassingen en integraties mogelijk maakt.