Homeyduino multi sensor: Co2-LDR-DHT11
Dit keer wederom een nieuwe Multi sensor en wel een combinatie van een CO2-, licht- temperatuur- en luchtvochtigheidssensor.
Hieronder een korte toelichting over het belang van een goede luchtvochtigheid en weer daaronder een stukje over de gevolgen op je gezondheid van een te hoog CO2 gehalte.
Het belang van een goede luchtvochtigheid
Een goede luchtvochtigheid heeft grote invloed op hoe je voelt. Zo zal een te lage luchtvochtigheid zorgen voor:
- Droge huid en keel, branderige ogen, gebarsten lippen
- Hoofdpijn, vermoeidheid, concentratieproblemen
- Krimpen of scheuren van houten kozijnen, vloeren en meubels
Terwijl een te hoge luchtvochtigheid juist weer kan zorgen voor:
- Toename van bacteriën en schimmels in huis
- Uitzetten of rotten van houten meubels, kozijnen en vloeren
- Warmteklachten: het menselijk lichaam kan de lichaamswarmte niet goed afvoeren bij een te hoge luchtvochtigheid
- Hogere stookkosten: het opwarmen van vochtige lucht kost meer energie dan het opwarmen van droge lucht.
Nadelige gevolgen te hoge CO2 concentratie
De nadelige gevolgen van een te hoge CO2 concentratie uit zich op verschillende wijze, maar enkele voorbeelden hiervan zijn je slaperig of lamlendig voelen. Dit komt doordat wanneer de hoeveelheid CO2 in je bloed stijgt, dit ten koste gaat van de hoeveelheid zuurstof die je opneemt.
Een acceptabel Co2 niveau binnenshuis ligt ergens tussen de 600-800 ppm (parts per milion). Vanaf 1000 ppm is het wenselijk te gaan ventileren omdat dit al invloed heeft op je gezondheid.
Kant en klare oplossing Co2 meter
Uiteraard zijn hier online tal van kant en klare oplossingen voor te krijgen, bijvoorbeeld bovenstaande op Bol.com of iets goedkoper zoals deze op Aliexpress. Al met al betaal je toch al gauw ergens tussen de € 100 en € 399,- voor enkel de CO2 meter.
Zelfbouw Co2 Multi sensor
Op Aliexpress vindt je echter de MH-Z19B sensor voor rond de € 20,-, combineer dat met een LDR- en een DHT11 sensor, een Wemos D1 van enkele euro’s en voor een bedrag tegen de€ 30,- heb je een multi sensor die niet alleen van alles meet, maar ook nog eens kan communiceren met je Smart Home. Dit doen we uiteraard weer middels Homeyduino, de handige koppeling tussen Arduino en Homey.
Op deze manier kun je het verloop van de luchtvochtigheid en CO2 concentratie monitoren via Homey Inzichten en kun je je zelfbouw sensoren gebruiken als trigger voor je flows. Bijvoorbeeld door het automatisch aansturen van je mechanische ventilatie.
Benodigdheden
- Microcontroller met WiFi en 5V: D1 Mini NodeMcu
- Micro USB Oplader
- MH-Z19B CO2 sensor
- LDR sensor
- DHT11 sensor
- Homey Smart Home HUB met Homeyduino app geinstalleerd
Ook nodig maar enkel op de boel eenmalig te configureren, een computer of laptop met daarop geïnstalleerd:
Op zoek naar een goede internetprovider? Eenvoudig kijken, vergelijken en overstappen doe je hier!
Aansluitschema
Volg onderstaand schema en afbeelding om de sensor aan te sluiten op de Wemos D1 Mini.
Code CO2 sensor
Onderstaand de code, net als de bij de andere Homeyduino projecten gaat het uploaden gaat via Arduino IDE, mocht je hier niet bekend mee zijn lees dan hier voor een uitgebreide handleiding. Zorg dat je bij instellingen in Arduino IDE het juiste board hebt geselecteerd en dat je op 9600 baud de code upload. In de sketch staat ook de aansluiting om de metingen via UART uit te lezen. Hier maken we in deze situatie echter geen gebruik van, we lezen de sensor alleen uit via PWM.
// Code for Homeyduino made by Smart Home Blog https://huisvanvandaag.nl.
// Take a look at my site for more Homeyduino en other Smart Home projects.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <Homey.h>
#include <SimpleDHT.h>
#include <SoftwareSerial.h>
#include <MHZ.h>
#define PIN_DHT D4 // DHT11
SimpleDHT11 dht11; // DHT11
#define CO2_IN D2 // D2 19 // Co2
#define MH_Z19_RX D6 // Co2
#define MH_Z19_TX D5 // Co2
MHZ co2(MH_Z19_RX, MH_Z19_TX, CO2_IN, MHZ19B); // Co2
unsigned long previousMillis = 0; // DHT11
const unsigned long interval = 10000; //Interval in milliseconds // DHT11
int LDRsensor = A0; // LDR
void wifi() {
if (WiFi.status() != WL_CONNECTED) {
WiFi.begin("<SSID>", "<PASSWORD>"); // Enter WiFi netwerk and password
uint8_t timeout = 30;
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (timeout<1) break;
}
if (WiFi.status() == WL_CONNECTED) {
//Print IP address
Serial.print("Connected to WiFi! (");
Serial.print(WiFi.localIP());
Serial.println(")");
}
}
}
void setup() { // DHT11
Serial.begin(9600);
Homey.begin("LDR-DHT11-Co2 Multi-sensor");
Homey.setClass("sensor");
Homey.addCapability("measure_humidity"); // DHT11
Homey.addCapability("measure_temperature");// DHT11
Homey.addCapability("measure_co2"); // Co2
pinMode(CO2_IN, INPUT); // Co2
Homey.addCapability("measure_luminance"); // LDR
}
void co2loop() { // void voor Co2
wifi(); // Beide
Homey.loop(); // Beide
int ppm_pwm = co2.readCO2PWM();
Serial.print("PPMpwm: ");
Serial.print(ppm_pwm);
Homey.setCapabilityValue("measure_co2", (int) ppm_pwm);
Serial.println("\n------------------------------");
delay(5000);
}
void dhtloop() { // void voor DHT11
wifi(); // Beide
Homey.loop(); // Beide
unsigned long currentMillis = millis(); // DHT11
if(currentMillis - previousMillis > interval) { // DHT11
previousMillis = currentMillis; // DHT11
updateSensor(); // DHT11
}
}
void updateSensor() { // DHT11
byte temperature = 0; // DHT11
byte humidity = 0; // DHT11
int err = SimpleDHTErrSuccess; // DHT11
if ((err = dht11.read(PIN_DHT, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) { // DHT11
Serial.print("Read DHT11 failed, err="); Serial.println(err); // DHT11
return; // DHT11
}
Serial.print((int)temperature); Serial.print(" *C, "); // DHT11
Serial.print((int)humidity); Serial.println(" H"); // DHT11
Homey.setCapabilityValue("measure_temperature", (int) temperature); // DHT11
Homey.setCapabilityValue("measure_humidity", (int) humidity); // DHT11
}
void ldrloop() {
wifi();
Homey.loop();
Serial.print("LDR waarde: ");
Serial.print(analogRead( LDRsensor));
Serial.println("");
Homey.setCapabilityValue("measure_luminance", analogRead( LDRsensor));
delay(1000); // wacht 1 minuut 60000 ms
}
void loop(){ // Beide
dhtloop(); //makes two separate voids, one per original code
co2loop(); //akes two separate voids, one per original code
ldrloop(); //akes two separate voids, one per original code
}
Testen
Nu het je gelukt is om de code te uploaden gaan we deze meteen testen. Dit doen we door de Seriële Monitor in Arduino IDE te openen, klik hiervoor op Hulpmiddelen en dan Seriële Monitor of gebruik de sneltoets CTRL+SHIFT+M.
Homeyduino sensoren koppelen in Homey 2.0? Hoe je dat doet lees je hier!
Conclusie
Al met al bouw je op deze manier, met beperkte middelen, een goed werkende Multi sensor. Normaal gesproken zou je voor dergelijke sensor hoogstwaarschijnlijk enkele honderden euro’s betalen, terwijl die maar een fractie van de mogelijkheden heeft.
Koppeling met mechanische ventilatie
Helemaal mooi is wanneer je deze sensor gebruikt in combinatie met mechanische ventilatie, zoals bijvoorbeeld onderstaand systeem van Itho Daalderop. Deze is namelijk ook te koppelen aan Homey via de Spider app.
Wanneer de CO2 concentratie binnenshuis te hoog word schakelt kan deze via een ‘flow’ automatisch de mechanische ventilatie starten. Op deze manier heb je altijd een gezond binnenklimaat.
Spider thermostaat en Gateway van Itho Daalderop, hiermee koppel je eenvoudig de mechanische ventilatie met Homey
Binnenkort weer meer! Schrijf je hier alvast in om niets te hoeven missen!
Één gedachte over “Homeyduino multi sensor: Co2-LDR-DHT11”