Bouw eenvoudige IoT-projecten met Arduino UNO, ESP-01, ThingSpeak & MIT App Inventor
Onderdelen en benodigdheden
| Arduino UNO | 1 |
| Espressif ESP8266 ESP-01 | 1 |
| DHT22 Temperatuur/vochtigheidssensor | 1 |
| DS18B20 1-Wire digitale temperatuursensor (voor grond) | 1 |
| LDR (lichtgevoelige weerstand) | 1 |
| 2-kanaals 5V Relaismodule | 1 |
Apps en online diensten
- Arduino IDE
- ThingSpeak API
- MIT App Inventor
Over dit project
Doel: data van een lokaal systeem (sensoren/actuatoren) verzamelen en naar internet sturen. Een gebruiker kan wereldwijd de data bekijken en opdrachten sturen naar actuatoren. We gebruiken de klassieke combinatie Arduino UNO + ESP-01, ThingSpeak als cloudplatform en een Android-app via MIT App Inventor.

Het project meet:
- Luchttemperatuur en relatieve vochtigheid (DHT22)
- Grondtemperatuur (DS18B20)
- Grondvochtigheid (YL-69 + LM393)
- Lichtintensiteit (LDR)
Actuatoren:
- Elektrische pomp
- Elektrische lamp
De status van actuatoren (AAN/UIT) wordt ook naar de cloud gestuurd. Beslissingen: pomp AAN als grondvochtigheid te laag, lamp AAN als grondtemperatuur te laag. Bediening via Android-app.

ThingSpeak fungeert als centraal hub: de lokale unit schrijft sensordata naar een Status Channel en leest actuatorcommando's uit Actuator Channels. De app leest de Status Channel en schrijft naar Actuator Channels.
Stap 1: Introductie

We gebruiken ThingSpeak.com, een open IoT-platform voor data verzamelen, analyseren en actie ondernemen.
Stap 2: Stuklijst (BoM)
- Arduino UNO – $10,00
- ESP8266-01 – $3,50
- DHT22 – $9,00
- DS18B20 – $6,00
- YL-69 + LM393 (grondvochtigheid) – $2,00
- LDR – $0,20
- 2x LEDs (rood/groen)
- 2-kanaals 5V Relaismodule met optocoupler (laag-actief) – $7,00
- 5V DC Pomp – $3,00
- 220V Lamp
- Weerstanden: 2x 330Ω (LEDs), 2x 10kΩ (DHT22, LDR), 1x 4k7Ω (DS18B20)
- Breadboard, jumperdraden, externe 5V voeding voor relais
Stap 3: Hardwareopbouw

Bouw en test stap voor stap:
- Installeer en test alle sensoren lokaal.
- Configureer ESP-01 (BareMinimum test).
- Pas ESP-01 aan voor definitieve configuratie en test.
- Configureer ThingSpeak Status Channel.
- Upload ThingSpeak-code naar Arduino en controleer sensordata in de cloud.
- Ontwikkel eerste app-versie voor statusweergave.
- Installeer actuatoren (LEDs, relais).
- Configureer ThingSpeak Actuator Channels.
- Test Arduino-code met actuatoren.
- Ontwikkel finale app-versie.
Stap 4: Sensoren aansluiten

Benodigde bibliotheken: OneWire, DallasTemperature, DHT. Voorbeeld initialisatie:
// DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
int soilTemp = 0;
// DHT22
#include "DHT.h"
#include <stdlib.h>
int pinoDHT = 11;
int tipoDHT = DHT22;
DHT dht(pinoDHT, tipoDHT);
int airTemp = 0, airHum = 0;
// LDR
#define ldrPIN A1
int light = 0;
// Grondvochtigheid
#define soilHumPIN A0
int soilHum = 0;
In setup() en loop():
void setup() {
Serial.begin(9600);
DS18B20.begin();
dht.begin();
}
void loop() {
readSensors();
displaySensors();
delay(10000);
}
Functies readSensors() en displaySensors() lezen de sensoren uit en printen naar de seriële monitor. Zie de originele code voor details.

Stap 5: ESP8266-01 initiële configuratie

De ESP-01 fungeert als seriële bridge met AT-commando's. Stel de baudrate in op 9600 (fabrieksstandaard is vaak 115200). Gebruik AT+UART_DEF=9600,8,1,0,0 voor permanente instelling. Zet de module in Station Mode (AT+CWMODE=1) en verbind met WiFi (AT+CWJAP="SSID","wachtwoord"). Controleer IP met AT+CIFSR.
Stap 6: ESP-01 testen

Na configuratie, sluit ESP-01 aan op Arduino: RX→D7, TX→D6, CH_PD→3.3V, RST→D8, VCC→3.3V, GND→GND. Test met een eenvoudige SoftwareSerial-bridge sketch en AT-commando's (AT, AT+RST, AT+GMR, AT+CWMODE?, AT+CWLAP, AT+CIFSR). Voeg een connectWiFi() functie toe aan setup() voor automatische herverbinding na reset.
Stap 7: Sensoren en ESP-01 combineren

Alle sensoren en ESP-01 zijn nu klaar voor dataverzending naar internet.
Stap 8: ThingSpeak instellen

Maak een ThingSpeak-account en een nieuw kanaal met velden:
- Veld 1: Actuator 1 (pomp)
- Veld 2: Actuator 2 (lamp)
- Veld 3: Luchttemperatuur (°C)
- Veld 4: Luchtvochtigheid (%)
- Veld 5: Grondtemperatuur (°C)
- Veld 6: Grondvochtigheid (%)
- Veld 7: Lichtintensiteit (%)
- Veld 8: Reserve (bijv. foutenteller)
Noteer de Write API Key van dit Status Channel.

Stap 9: Status naar de cloud sturen

Data versturen gebeurt in drie stappen via AT-commando's:
AT+CIPSTART="TCP","184.106.153.149",80(TCP verbinding met ThingSpeak)AT+CIPSEND=116(lengte van GET-string)- GET-string:
GET /update?api_key=YOUR_WRITE_KEY&field1=pomp&field2=lamp&field3=airTemp&field4=airHum&field5=soilTemp&field6=soilHum&field7=light&field8=spare
De volledige Arduino-code voor dit deel is beschikbaar op GitHub: SendingStatusTS_EXT.ino.
Stap 10: Android App – Deel 1: Status monitoring

Maak in MIT App Inventor een interface met labels voor sensorwaarden en actuatorstatus. Elke 2 seconden (Clock1) haalt de app de laatste data op van de ThingSpeak Status Channel via een HTTP GET. De JSON-respons wordt geparsed en weergegeven. Een alarmprocedure (Clock2, 1 sec) laat waarschuwingen knipperen bij te lage grondtemperatuur (<10°C) of vochtigheid (<60%).




App-broncode: ArduFarmBot_Status_App_EXT.aia op GitHub.
Stap 11: Actuatoren installeren (LEDs en relais)

Relaismodule met optocoupler (laag-actief) wordt aangesloten op Arduino pinnen 10 (pomp) en 12 (lamp). Relais-GND niet verbinden met Arduino-GND om ruis te voorkomen.
Stap 12: ThingSpeak Actuator Channels configureren

Maak twee aparte kanalen: één voor pomp (kanaal ID 375598), één voor lamp (kanaal ID 375599). Alleen Veld 1 wordt gebruikt: 0 = UIT, 1 = AAN. Noteer Read/Write API Keys.
Stap 13: Arduino-code met actuatoren testen

Nu leest de Arduino van de Actuator Channels (GET /channels/ID/fields/1/last) om commando's op te halen. Elke 10 seconden wordt gecontroleerd. Code: ReadingCommandTS_EXT.ino op GitHub.
Stap 14: Handmatig actuatoren testen via browser
Je kunt actuatoren ook handmatig schakelen via URL's in een browser:
Pomp AAN: https://api.thingspeak.com/update?api_key=ACT1_WRITE_KEY&field1=1
Pomp UIT: https://api.thingspeak.com/update?api_key=ACT1_WRITE_KEY&field1=0
Lamp AAN: https://api.thingspeak.com/update?api_key=ACT2_WRITE_KEY&field1=1
Lamp UIT: https://api.thingspeak.com/update?api_key=ACT2_WRITE_KEY&field1=0
Stap 15: Android App afmaken (besturing toevoegen)

Voeg knoppenparen (AAN/UIT) toe voor pomp en lamp. Bij indrukken verandert knopkleur (blauw/rood) en wordt een WRITE naar het bijbehorende Actuator Channel gedaan. Test de volledige app.



Complete app: ArduFarmBot_V1_EXT.aia op GitHub.
Stap 16: Alles combineren

De finale code combineert periodiek sensoren uitlezen & naar Status Channel schrijven, en actuatorcommando's lezen van Actuator Channels. Er is een watchdog voor ESP-01 (AT-commando check, anders hardware reset). Volledige code: ArduFarmBot_Light_EXT.ino op GitHub.
Stap 17: Conclusie

De combinatie Arduino UNO + ESP-01 biedt een uitstekende, lage-kosten instap in IoT. Meer projecten op MJRoBot.org en GitHub: ArduFarmBot_Light.
Code
Alle codefragmenten (sensoren testen, ESP-01 configureren, ThingSpeak schrijven/lezen, gecombineerde finale sketch) zijn beschikbaar in de originele projectpagina en op GitHub.
Schema
Elektrisch schema (Fritzing): GitHub link
Productieproces
- Parallelle C++17 SYCL-code Bouwen op Raspberry Pi 4B+ IoT-boards
- Real-time IoT hartslagmonitor met Arduino en MAX30100
- Arduino Uno WiFi Webserver: LED aan/uit schakelen via browser
- Bouw een eenvoudige rekenmachine met Arduino UNO – Makkelijk project
- Een draagbaar Persistence-of-Vision-display bouwen met Arduino UNO en ATtiny85
- Contactloze temperatuurgate voor snelle, accurate screening
- Arduino UNO & WiFi Shield: Realtime Temperatuurweergave op het Web via Serieel
- Realtime Weerstation met Arduino & ThingSpeak IoT
- Slim Temperatuurmonitoring Systeem voor Scholen: Nauwkeurig, Real-time en Beveiligd
- Thermistor Gebruik Gemaakt Eenvoudig: Stap-voor-Stap Arduino Handleiding
- Azure IoT Zwembadbeheersysteem: Slimme Sensoren & Remote Monitoring