Arduino - MQTT
In deze tutorial leren we hoe u met Arduino gegevens kunt verzenden/ontvangen naar een MQTT broker via het MQTT-protocol. In detail leert u:
- Hoe u Arduino verbindt met een MQTT broker
- Hoe u Arduino programmeert om gegevens te versturen door te publiceren naar een MQTT-topic
- Hoe u Arduino programmeert om gegevens te ontvangen door te abonneren op een MQTT-topic

We onderzoeken twee verschillende gebruikssituaties:
- Het gebruik van Arduino met een online MQTT broker.
- Het gebruik van Arduino met een MQTT broker geïnstalleerd op uw pc.
Hardware benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over Arduino en MQTT
We gaan ervan uit dat u al vertrouwd bent met het MQTT-protocol. Zo niet, doe dan alstublieft eerst wat onderzoek op internet. Deze tutorial richt zich op het programmeren van Arduino om gegevens te verzenden en te ontvangen met behulp van het MQTT-protocol.
De volgende gebruikssituaties van Arduino met MQTT zijn mogelijk:
- Arduino verbindt met een online MQTT broker, bijvoorbeeld: een online Mosquitto broker, AWS IoT...
- Arduino verbindt met een MQTT broker geïnstalleerd op uw pc, bijvoorbeeld: Mosquitto broker, HiveMQ broker
- Arduino verbindt met een MQTT broker geïnstalleerd op uw Raspberry Pi, bijvoorbeeld: Mosquitto broker
- Arduino verbindt met een MQTT broker in de cloud, bijvoorbeeld: Mosquitto of HiveMQ broker op AWS EC2
In deze tutorial beginnen we met een snelle controle of Arduino kan verbinden met een online Mosquitto broker. Arduino publiceert en abonneert zich op deze broker via het internet.
Vervolgens gaan we over op het installeren van de Mosquitto broker op onze pc. Daarna verbinden we Arduino met de MQTT broker die lokaal op de pc is geïnstalleerd, en publiceren en abonneren we gegevens via deze lokale broker.
Zodra u deze tutorial hebt afgerond, kunt u verder leren over Arduino met MQTT in de volgende tutorials:
Arduino verbinden met een online MQTT broker
In dit gedeelte leert u hoe u Arduino verbindt met test.mosquitto.org, een online MQTT broker beheerd door Mosquitto. Houd er rekening mee dat deze broker uitsluitend bedoeld is voor testdoeleinden.
Arduino-code
De onderstaande Arduino-code doet het volgende:
- Verbindt met de MQTT broker
- Abonneert zich op een topic
- Publiceert periodiek berichten op hetzelfde topic waar het op is geabonneerd
Snelle stappen
- Als dit de eerste keer is dat u Arduino Uno R4 gebruikt, bekijk dan hoe u de omgeving instelt voor Arduino Uno R4 op Arduino IDE.
- Open Arduino IDE op uw pc
- Open de Library Manager door te klikken op het Library Manager icoon in de linker navigatiebalk van Arduino IDE
- Typ MQTT in het zoekveld en zoek de MQTT-library van Joel Gaehwiler.
- Klik op de knop Install om de MQTT-library te installeren.

- Typ ArduinoJson in het zoekveld en zoek de ArduinoJson library van Benoit Blanchon.
- Klik op de knop Install om ArduinoJson te installeren.

- Kopieer bovenstaande code en open deze met Arduino IDE
- Vervang de WiFi-gegevens (SSID en wachtwoord) in de code door uw eigen gegevens.
- In de code ziet u het woord 'YOUR-NAME' drie keer staan. Vervang dit door uw naam of willekeurige letters (alleen alfabettekens, geen spaties). Dit is nodig omdat anders meerdere gebruikers dezelfde client-ID’s en topics gebruiken, wat conflicten kan veroorzaken.
- Klik op de knop Upload in Arduino IDE om de code naar Arduino te uploaden
- Open de Serial Monitor
- Bekijk het resultaat op de Serial Monitor.
Zoals u ziet publiceert Arduino berichten naar de MQTT broker en ontvangt dezelfde berichten terug. Dit komt doordat de code is geprogrammeerd om zich te abonneren op hetzelfde topic als waarop wordt gepubliceerd. Als u niet wilt dat Arduino de berichten ontvangt die het zelf publiceert, kunt u het SUBSCRIBE-topic anders maken dan het PUBLISH-topic.
Arduino verbinden met de MQTT broker geïnstalleerd op uw pc
Mosquitto MQTT Broker installeren
- Download de Mosquitto MQTT Broker
- Installeer deze op de D:-schijf in plaats van de C:-schijf. Vermijd installatie op C: om potentiële problemen te voorkomen.
Mosquitto MQTT broker starten
Laten we nu controleren of de MQTT broker correct werkt met de volgende stappen:
- Ga naar de map waar Mosquitto is geïnstalleerd, bijvoorbeeld: D:\Draft\mosquitto>
- Maak een nieuw bestand genaamd test.conf, kopieer onderstaande inhoud erin en sla het bestand op in die map:
- Start de Opdrachtprompt als Administrator op uw pc. We noemen dit venster Broker Window. Sluit dit venster niet vóór het einde van de tutorial.

- Voer de onderstaande opdrachten één voor één uit:
- U ziet:
- Open een tweede opdrachtprompt als Administrator op uw pc.
- Zoek het IP-adres van uw pc op door de volgende opdracht uit te voeren:
- Schrijf het IP-adres op voor later gebruik. In bovenstaand voorbeeld is dat: 192.168.0.26
Test of de Mosquitto Broker werkt
- Open een derde opdrachtprompt als Administrator op uw pc. We noemen dit venster Subscriber Window
- Abonneer u op een topic door onderstaande commando’s één voor één uit te voeren (vervang het IP-adres door dat van uw pc):
- Open een vierde opdrachtprompt als Administrator op uw pc. We noemen dit venster Publisher Window
- Publiceer een bericht op hetzelfde topic door onderstaande opdrachten één voor één uit te voeren (vervang het IP-adres door dat van uw pc):
- U ziet het volgende:
Het bericht wordt doorgestuurd naar het Subscriber Window zoals hieronder:
U heeft nu succesvol de Mosquitto MQTT broker op uw pc geïnstalleerd. Sluit alstublieft de drie vensters niet: Broker Window, Subscriber Window en Publisher Window. We zullen deze verder gebruiken.
Arduino-code
De onderstaande Arduino-code doet het volgende:
- Verbindt met de MQTT broker
- Abonneert zich op een topic
- Publiceert periodiek berichten op een ander topic
Snelle stappen
- Kopieer bovenstaande code en open deze met Arduino IDE
- Vervang de WiFi-gegevens (SSID en wachtwoord) in de code door uw eigen gegevens.
- Vervang het adres van de MQTT broker in de code (domeinnaam of IP-adres).
- Klik op de knop Upload in Arduino IDE om de code naar Arduino te uploaden
Bericht verzenden van Arduino naar pc via MQTT
De Arduino code publiceert data naar het MQTT-topic arduino-001/send. Het Subscriber Window op de pc is geabonneerd op dit topic om de data te ontvangen.
- Open de Serial Monitor, u ziet dat Arduino periodiek een bericht publiceert op een topic.
- Controleer het Subscriber Window. U ziet dat het de door Arduino gepubliceerde berichten ontvangt zoals hieronder:
Bericht verzenden van pc naar Arduino via MQTT
Arduino is geabonneerd op het topic arduino-001/receive. Het Publisher Window op de pc publiceert een bericht op dat topic om het naar de Arduino te sturen.
- Publiceer een bericht naar het topic waarop Arduino is geabonneerd door de volgende opdracht uit te voeren in het Publisher Window:
- U ziet dat dit bericht wordt ontvangen door de Arduino in de Serial Monitor, zoals hieronder:
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.
Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en demonstreert alle stappen overzichtelijk.