Arduino UNO Mini Weerstation – DIY Sensor Hub met ESP8266 IoT
Onderdelen en benodigdheden
- Arduino UNO (1×)
- ESP8266 ESP-01 (1×)
- Arduino Proto Shield (of breadboard) (1×)
- DHT22 Temperatuursensor (1×)
- Seeed Grove Lichtsensor (1×)
- Seeed Grove UV-sensor (1×)
- Seeed Grove Barometersensor (1×)
- Seeed Grove Stofsensor (1×)
- Weerstanden: 1kΩ (2×), 10kΩ (1×), 4,75kΩ (1×)
- Draadjes (1 set)
Apps en online diensten
- Arduino IDE
- ThingSpeak API
Over dit project
Dit weerstation meet zeven omgevingsparameters en publiceert ze online via ThingSpeak:
- Temperatuur (DHT22 & BMP085)
- Luchtvochtigheid
- Luchtdruk
- Lichtintensiteit
- UV-index
- Stofconcentratie
Doel: compact, simpel, open hardware.
Componentenoverzicht
Voeding via USB (PC of telefoonlader). Externe DC-voeding of accu op power jack mogelijk. Behuizing valt buiten scope.
Onderdelen verbinden
Volg het schema. Gebruik jumper wires naar breadboard of proto shield. Sluit USB aan en ga verder met code.
Code
Installeer bibliotheken: DHT22, Adafruit BMP085. Download weatherBox.ino. Vervang XXXXX (SSID), YYYYY (wachtwoord), ZZZZZ (ThingSpeak Write API Key). Upload via USB.
ThingSpeak configuratie
- Maak ThingSpeak-account en nieuw kanaal.
- Veldtoewijzing: veld1=licht, veld2=vochtigheid, veld3=temp(DHT22), veld4=UV-index, veld5=stof, veld6=druk, veld7=temp(BMP085).
- Kopieer Write API Key naar code.
Voorbeeld publiek kanaal: thingspeak.com/channels/35540
Android-app
- Installeer ThingsView uit Google Play.
- Voer kanaal-ID in (vind in ThingSpeak configuratie).
- Grafieken van alle variabelen op uw smartphone.
Code (weatherBox.ino)
De sketch gebruikt SoftwareSerial voor ESP8266 communicatie (pinnen 10=RX, 11=TX), DHT bibliotheek, Wire + Adafruit_BMP085 voor I2C barometer. Stofsensor op pin 8 (pulsbreedtemeting 30s cyclus). Data wordt elke 60s naar ThingSpeak gestuurd via AT-commando's.
#include
#include
#include
#include
#include
#include
#define SSID "XXXXX"
#define PASS "YYYYY"
#define IP "184.106.153.149" // thingspeak.com
#define DHT22_PIN 2
String GET = "GET /update?key=ZZZZZ&field1=";
SoftwareSerial monitor(10, 11);
dht DHT;
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
// Pinnen & variabelen
int luminancePin = A0, uvPin = A1, dustPin = 8;
unsigned long duration, starttime, sampletime_ms = 30000, delay_time = 60000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0, concentration = 0;
float temperature=0, humidity=0; uint16_t lux=0;
void setup() {
Serial.begin(9600); monitor.begin(9600);
Wire.begin(); dht.begin(); lightMeter.begin();
pinMode(dustPin, INPUT);
if(!bmp.begin()) { Serial.println("BMP085 niet gevonden!"); while(1); }
// ESP8266 init & WiFi connect
monitor.println("AT"); delay(2000);
if(monitor.find("OK")) connectWiFi();
starttime = millis();
}
void loop() {
duration = pulseIn(dustPin, LOW);
lowpulseoccupancy += duration;
if (millis() - starttime >= sampletime_ms) {
ratio = lowpulseoccupancy / (sampletime_ms * 10.0);
concentration = 1.1*pow(ratio,3) - 3.8*pow(ratio,2) + 520*ratio + 0.62;
lowpulseoccupancy = 0;
// Sensoren uitlezen
float luminance = analogRead(luminancePin);
float uv = analogRead(uvPin) * 0.0049 * 307 / 200; // UV index
DHT.read22(DHT22_PIN);
humidity = DHT.humidity; temperature = DHT.temperature;
sensors_event_t event; bmp.getEvent(&event);
float pressure = event.pressure; float temp1 = 0;
if(event.pressure) bmp.getTemperature(&temp1);
// Naar strings & ThingSpeak sturen
updateSensors(luminance, humidity, temperature, uv, concentration, pressure, temp1);
delay(delay_time);
starttime = millis();
}
}
// updateSensors(), connectWiFi(), sendDebug() – zie volledige code in project
Nuttige links
Productieproces
- Een Raspberry Pi-weerstation bouwen dat dagelijkse weergegevens e-mailt
- Arduino Uno Gebaseerde Mensendetectie Robot: Stap-voor-stap Sensorintegratie
- K30 CO2-sensor: Real-time binnenluchtkwaliteitmonitoring met Arduino
- Bouw een Digitale Lichaamslengtemeter: Je Lengte Meten met Arduino en Lasersensor
- Arduino Uno WiFi Webserver: LED aan/uit schakelen via browser
- Bouw een eenvoudige rekenmachine met Arduino UNO – Makkelijk project
- Bouw een Sensor Toren met Arduino Cloud: Temperatuur, Beweging & Gas Monitoring
- Een draagbaar Persistence-of-Vision-display bouwen met Arduino UNO en ATtiny85
- Arduino Nano Weerstation: Sensor Kit & OLED Display
- Slimme Gezondheidsmonitoring Station: Arduino, Bluetooth en Sensoren
- Slimme temperatuurbewaking met Arduino en Bluetooth op smartphone