Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

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

Arduino UNO Mini Weerstation – DIY Sensor Hub met ESP8266 IoT
Eerste generatie Arduino mini-weerstation met WiFi

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

Arduino UNO Mini Weerstation – DIY Sensor Hub met ESP8266 IoT
Alle sensoren en modules

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.

Arduino UNO Mini Weerstation – DIY Sensor Hub met ESP8266 IoT
Breadboard-opstelling volgens schema

Code

Installeer bibliotheken: DHT22, Adafruit BMP085. Download weatherBox.ino. Vervang XXXXX (SSID), YYYYY (wachtwoord), ZZZZZ (ThingSpeak Write API Key). Upload via USB.

ThingSpeak configuratie

  1. Maak ThingSpeak-account en nieuw kanaal.
  2. Veldtoewijzing: veld1=licht, veld2=vochtigheid, veld3=temp(DHT22), veld4=UV-index, veld5=stof, veld6=druk, veld7=temp(BMP085).
  3. Kopieer Write API Key naar code.
Arduino UNO Mini Weerstation – DIY Sensor Hub met ESP8266 IoT
Kanaalinstellingen met 7 velden

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

  1. Een Raspberry Pi-weerstation bouwen dat dagelijkse weergegevens e-mailt
  2. Arduino Uno Gebaseerde Mensendetectie Robot: Stap-voor-stap Sensorintegratie
  3. K30 CO2-sensor: Real-time binnenluchtkwaliteitmonitoring met Arduino
  4. Bouw een Digitale Lichaamslengtemeter: Je Lengte Meten met Arduino en Lasersensor
  5. Arduino Uno WiFi Webserver: LED aan/uit schakelen via browser
  6. Bouw een eenvoudige rekenmachine met Arduino UNO – Makkelijk project
  7. Bouw een Sensor Toren met Arduino Cloud: Temperatuur, Beweging & Gas Monitoring
  8. Een draagbaar Persistence-of-Vision-display bouwen met Arduino UNO en ATtiny85
  9. Arduino Nano Weerstation: Sensor Kit & OLED Display
  10. Slimme Gezondheidsmonitoring Station: Arduino, Bluetooth en Sensoren
  11. Slimme temperatuurbewaking met Arduino en Bluetooth op smartphone