Arduino weerstation: via internet inzicht in het weer

Arduino weerstation: via internet inzicht in het weer

Gepubliceerd op: 19-05-2014 13:05

Weerstations zijn ongekend populair en worden steeds uitgebreider en intelligenter, kijk bijvoorbeeld naar de Netatmo. Gelukkig geldt ook hier dat een handige Arduino doe-het-zelver redelijk eenvoudig zelf een intelligent connected weerstation kan bouwen.

Als je zelf een weerstation gaat bouwen kun je het natuurlijk zo gek maken als je zelf wilt. De basis is in ieder geval een Arduino met een Ethernetshield en een handvol sensoren.

Beschrijving van de verschillende sensoren van het Arduino weerstation

Sensoren voor het basis weerstation

In het meest simpele weerstation zitten in ieder geval de volgende sensoren:

Temperatuursensor

Temperatuur meten met een Arduino kan heel simpel met een NTC (Negatieve Temperatuur Coëfficiënt). Dit is een weerstand die afhankelijk is van de temperatuur: hoe hoger de temperatuur, hoe lager de weerstand. Met behulp van een spanningsdeler sluit je de NTC op een analoge ingang van je Arduino aan.

Voor het spanningsdeler-circuit verbind je een poot van de NTC met 5 Volt, de andere poot verbind je met een gewone weerstand van dezelfde waarde als de NTC (bijvoorbeeld 10K). De andere poot van de gewone weerstand sluit je aan op Ground. Trek vervolgens een verbinding van het knooppunt van de NTC en de weerstand naar een van de analoge ingangen van je Arduino, en klaar is je spanningsdeler.

Luchtvochtigheidsensor

Om de luchtvochtigheid te meten heb je een iets ingewikkelder sensor nodig. Sensoren uit de DHT-serie zijn in staat om zowel luchtvochtigheid als temperatuur te meten waarbij de DHT11 niet zo heel nauwkeurig is, en de DHT22 wel. Voor mijn toepassing voldoet de DHT11 echter prima aangezien ik de temperatuur al via een NTC uitlees. Het aansluiten van de DHT11 is erg eenvoudig, er zijn maar 3 aansluitingen: 5 Volt, Ground, en data. De data-uitgang sluit je aan op een van de digitale of analoge poorten van je Arduino. Vervolgens heb je de DHT11-library nodig om de sensor eenvoudig te kunnen uitlezen.

Sensoren voor het luxe weerstation

Voor een iets luxer weerstation kun je ook deze sensoren toevoegen:

(Zon)lichtsensor

Eenvoudige (zon)lichtsensor gemaakt van een LDR in fotorolletjesdoosje

Een lichtsensor is eenvoudig te maken met een LDR (Light Dependent Resistor), een lichtgevoelige weerstand. Het aansluiten van de LDR gaat op dezelfde manier als het NTC, via een spanningsdeler op een analoge ingang.

Luchtdruksensor

Een meer complexe sensor is de BMP085 luchtdruksensor. Deze sensor communiceert via I2C wat inhoud dat hij een clock en een data lijn heeft voor seriële communicatie. De Arduino Uno ondersteund I2C op de analoge poorten 4 (data) en 5 (clock), de Arduino Mega op poorten 20 (data) en 21 (clock). Verder heeft deze sensor natuurlijk ook Ground en voeding nodig, de 2 overige aansluitingen kun je open laten, deze worden niet gebruikt. Om de sensor uit te lezen gebruik ik de BMP085-library van Adafruit.

LET OP: er zijn verschillende BMP085 sensor-bordjes te koop, sommigen accepteren 5 Volt, maar een aantal enkel 3.3 Volt, lees dus goed de datasheet voordat je je BMP085 opblaast!

MQ-135 luchtkwaliteitsensor

Vervolgens heb ik ook nog een sensor voor de luchtkwaliteit toegevoegd uit de MQ-serie: de MQ-135. Deze sensor meet allerhande vluchtige stoffen in de lucht waaronder Aceton (nagellakremover), Ammoniak, diverse componenten uit sigarettenrook, maar ook Formaldehyde (spaanplaatgas). Formaldehyde verdampt constant uit diverse meubelstukken in je huis, en wanneer je niet ventileert kan dit tot een ongezond binnenklimaat leiden. Deze sensor kan dus prima aangeven wanneer je moet ventileren.

De sensoren uit de MQ-serie werken allemaal met een interne heater om de sensor op temperatuur te houden. Deze heater verbruikt aardig wat stroom en kan je dus niet zomaar met een Arduino poort schakelen. Meer info over de MQ-sensoren en Arduino.

Programmeren van het weerstation

Grafieken door het Arduino weerstation gegenereerd

Ik heb mijn Arduino weerstation zo geprogrammeerd dat hij 2 keer per minuut de sensoren uitleest. Ieder uur worden de waardes gelogd naar een externe server, hoe dat werkt lees je in dit artikel. Op de Arduino draait ook de web interface waar ik eerder over schreef. De grafieken worden in de browser getekend met behulp van Morris.js, een JavaScript library voor het tekenen van allerlei grafieken.

Met behulp van de grafieken kun je historische data aflezen, zoals de minimale nachttemperatuur of het verloop van de luchtdruk. Met de luchtdrukmetingen kun je zelfs het weer voorspellen: een stijgende luchtdruk duidt mooi weer aan, een (snel) dalende luchtdruk voorspelt storm.

2 reacties op dit artikel »

Aanbevolen artikelen