In 18 stappen een Raspberry Pi 2 als weerstation

© PXimport

In 18 stappen een Raspberry Pi 2 als weerstation

Computer accessoires

Geplaatst: 12 augustus 2015 - 07:17

Aangepast: 24 november 2022 - 11:32

Koen Vervloesem

Door een Raspberry Pi 2 uit te rusten met sensoren en hem in een weerbestendige behuizing te plaatsen, kun je al voor enkele tientjes een weerstation bouwen. In dit artikel laten we je zien hoe je je eigen weerstation maakt, programmeert en de gegevens verwerkt.

01 Benodigdheden

Voor ons weerstation hebben we een AM2302-temperatuur- en vochtsensor nodig, evenals een BMP180-luchtdruksensor. Daarnaast enkele m/f jumperwires en een breadboard. De sensoren sluiten we via het breadboard aan op de GPIO-pinnen van de Raspberry Pi 2, die de waardes uitleest en ze naar de weerdienst Weather Underground uploadt. Voor die internetverbinding gebruiken we een TP-LINK TL-WN823N WiFi-adapter. Het geheel steken we in een weerbestendige behuizing, zodat ons persoonlijke weerstation buiten kan staan. Alle benodigdheden zijn bij Kiwi Electronics te koop.

© CIDimport

02 Raspbian installeren

We gaan ervan uit dat je in de basiscursus over de Raspberry Pi 2 het besturingssysteem Raspbian met de hulp van NOOBS hebt geïnstalleerd. Heb je een ander besturingssysteem met NOOBS geïnstalleerd, zoals OpenELEC, dan is dat eenvoudig terug te draaien. Steek de voeding van je Raspberry Pi in een stopcontact en houd onmiddellijk de Shift-toets ingedrukt om het installatieprogramma opnieuw te openen. Staat er nog helemaal geen besturingssysteem op de microSD-kaart van je Pi, installeer dan NOOBS en start je Pi ervan op.

© CIDimport

03 I2C kernelondersteuning

De BMP180-sensor maakt gebruik van het I2C-protocol (Inter-Integrated Circuit) voor communicatie met de Pi. Ondersteuning daarvoor moeten we eerst in de kernel inschakelen. Log in Raspbian in met gebruikersnaam pi en wachtwoord raspberry en voer dan de opdracht sudo raspi-config uit. Navigeer naar Advanced options en druk op Enter, en doe daarna hetzelfde met I2C. Op de vraag of je de I2C-interface wilt inschakelen, ga je met de pijltjestoets naar Ja en druk je op Enter. Bevestig dat je de kernelmodule automatisch wilt laden. Druk daarna in het hoofdmenu van raspi-config op Finish en zeg dat je de Pi nog niet wilt rebooten.

© CIDimport

04 I2C testen

We moeten nog één kernelmodule automatisch laten inladen. Voer sudo nano /etc/modules uit en voer een regel met i2c-dev toe. Sluit het bestand en sla het op via Ctrl+X, toets J en druk op Enter. Herstart je Pi met sudo reboot. Daarna testen we of de I2C-ondersteuning werkt. Installeer daarvoor eerst enkele tools met sudo apt-get install i2c-tools. Voer daarna de opdracht sudo i2cdetect -y 1 uit om te controleren welke aangesloten apparaten je Raspberry Pi op de I2C-bus herkent. Voorlopig zijn er dat nog geen, maar het is een handige manier om te testen of de I2C-ondersteuning werkt. De opdracht mag geen foutmelding tonen.

© CIDimport

05 Breadboard aansluiten

Omdat we in deze workshop meerdere sensoren gaan aansluiten op dezelfde GPIO-pinnen, gebruiken we een breadboard. We gaan nu met m/f jumperwires de drie eerste GPIO-pinnen van links van de Pi op de onderste rij, met gaatjes in het breadboard verbinden, en hetzelfde voor de derde pin van links op de bovenste rij. Noem de pinnen achtereenvolgens 3V3, SDA, SCL en GND. Bekijk de Raspberry Pinout online. Steek 3V3 in het bovenste gaatje in de linkerkolom +, GND in het bovenste gaatje in de linkerkolom -, SDA in 1a en SCL in 3a.

© CIDimport

06 BMP180 aansluiten

De BMP180-sensor komt met een pinheader met zes pinnetjes. Snijd één pinnetje eraf en plaats de pinheader met vijf pinnetjes in de gaatjes van het sensorbordje (je moet ze vastsolderen, maar je kunt de pinnetjes voorlopig op de juiste plaats houden met isolatietape), met de grootste kant van de pinnetjes bovenaan. Sluit nu vier van de pinnetjes met m/f jumperwires op de juiste gaatjes in het breadboard aan. VIN op het sensorbordje steek je in de linkerkolom +, GND in de linkerkolom -, SDA in 1c en SCL in 3c. De gaatjes a tot en met e in dezelfde rij zijn immers verbonden, evenals alle gaatjes in de kolommen + en -.

© CIDimport

07 Python-library installeren

Als je alles correct hebt aangesloten en je nu weer sudo i2cdetect -y 1 uitvoert, krijg je in de uitvoer van het programma het getal 77 te zien. Nu moeten we nog de software installeren om de sensor uit te lezen. Installeer eerst enkele benodigdheden met sudo apt-get install git build-essential python-dev python-smbus. Daarna downloaden we de Python-library van Adafruit, de maker van het sensorbordje, met git clone https://github.com/adafruit/Adafruit_Python_BMP.git. Installeren doen we met cd Adafruit_Python_BMP en sudo python setup.py install.

© CIDimport

08 BMP180 testen

De Python-library komt met twee voorbeeldprogramma's in de directory examples. We proberen er eentje van uit om te testen of de sensor werkt. Ga naar de juiste directory met cd examples en voer het testprogramma uit met sudo python simpletest.py. Je krijgt nu de temperatuur, luchtdruk, hoogte en luchtdruk op zeeniveau te zien. Het andere voorbeeldprogramma logt de waardes van je sensor periodiek in Google Docs. Wil je dit proberen, bekijk de code dan met nano google_spreadsheet.py en vul je accountgegevens in. Dit laten we als oefening voor de lezer.

© CIDimport

09 AM2302 aansluiten

De volgende sensor die we aansluiten is de AM2302 die de temperatuur en luchtvochtigheid meet. Eerst sluiten we het vierde pinnetje op de onderste rij GPIO-pinnen van links (op de Raspberry Pinout website GPCLK0 genoemd) op 5a op het breadboard aan met een m/f jumperwire. Steek de gele draad van de AM2302 nu in 5c, de rode draad in de linkerkolom + en de zwarte draad in de linkerkolom -.

© CIDimport

10 Python-library installeren

Nu moeten we nog de juiste software installeren om de AM2302 uit te lezen. Ga terug naar je home-directory met cd en download daarna de Python-library met git clone https://github.com/adafruit/Adafruit_Python_DHT.git. Installeer de library met cd Adafruit_Python_DHT en sudo python setup.py install. De sensor testen gaat eenvoudig met cd examples en dan sudo ./AdafruitDHT.py 2302 4. Als alles goed gaat, krijg je nu de temperatuur en luchtvochtigheid te zien. Soms krijg je overigens geen waardes te zien. Probeer het dan opnieuw, want Raspbian kan de sensor niet altijd betrouwbaar uitlezen.

© CIDimport

11 Wifi

Verzeker je ervan dat je een usb-wifi-adapter hebt die compatibel is met Raspbian. Koop je de adapter in een gespecialiseerde Pi-shop, dan zit je meestal goed. Wij hebben de TP-LINK TL-WN823N 300 Mbps draadloze mini-adapter gekozen omdat hij zo klein is. Sluit de adapter via usb aan en geef dan de opdracht iwconfig in. Zie je in de uitvoer informatie over je adapter staan, bijvoorbeeld achter de naam wlan0, dan wordt je adapter door Raspbian herkend.

© CIDimport

12 Netwerkconfiguratie

Open met sudo nano /etc/network/interfaces het configuratiebestand voor je netwerkinterfaces. Vervang de regel iface wlan0 inet manual door iface wlan0 inet dhcp en wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf door wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf. Sla het bestand op en sluit het af door weer de toetscombinatie Ctrl+X te gebruiken, kies J en een druk op Enter. Start daarna sudo wpa_cli op om opdrachten te geven aan het programma wpa_supplicant voor de configuratie van je wifi-netwerk.

© CIDimport

13 Wifi instellen

Scan de beschikbare wifi-netwerken met scan en toon de resultaten met scan_results. Creëer een netwerk met add_network. Je krijgt als uitvoer 0, het volgnummer van het nieuwe netwerk. Stel dan het SSID in van het netwerk waarmee je wil verbinden: set_network 0 ssid "mijnssid". Geef ook je wachtwoord in met set_network 0 psk "mijnwachtwoord". Schakel het netwerk in met enable_network 0 en sla de configuratie op met save_config. Verlaat het programma met exit en herstart je Pi met reboot. Hierna heeft je Pi draadloos toegang tot internet en kun je de ethernetkabel verwijderen.

© CIDimport

14 Registreren op Weather Underground

Als je sensoren werken, gaan we ons eigen weerstation als Personal Weather Station opnemen in het netwerk van Weather Underground, zodat anderen onze metingen via internet kunnen opvragen. Creëer een account door je e-mailadres in te geven en een gebruikersnaam en wachtwoord te kiezen. Klik op de link in de bevestigingsmail. Registreer daarna een nieuw Personal Weather Station. Geef je locatie in, vul in hoeveel meter je Pi zich boven de grond bevindt (in feet) en klik op Verify Location. Vul in het volgende venster nog enkele gegevens in en klik op Submit, waarna je je Station ID krijgt.

© CIDimport

15 Waardes uitlezen

Nu moeten we een scriptje schrijven om de juiste waardes uit te lezen. Voor de temperatuur gebruiken we de waardes van de BMP180 omdat die accurater zijn. Open een nieuw bestand met cd en nano lees_waardes.py en geef de code in die je op http://ct.link.ctw.nl/piweer2 vindt. Gebruik bij regels die inspringen een tab en geen spaties en voer je eigen id en wachtwoord in. Sla het bestand op met Ctrl+O en sluit het met Ctrl+X. Daarna zorgen we dat deze code elke vijf minuten uitgevoerd wordt. Typ daarvoor sudo crontab -e in en voeg onderaan de regel */5 * * * * python /home/pi/lees_waardes.py toe. Sla weer op en sluit af.

© CIDimport

16 Python-scriptje

In ons script importeren we eerst enkele library's die we nodig hebben, waaronder de twee van Adafruit voor onze sensoren. Daarna lezen we de temperatuur en luchtdruk van de BMP180 in. De temperatuur rekenen we om naar Fahrenheit en de luchtdruk naar inches kwik omdat Weather Underground die eenheden verwacht. Tot slot lezen we ook de luchtvochtigheid van de AM2302 in. Daarna creëren we de url om de gegevens te uploaden. Vul hier je ID en wachtwoord in. Daarna bezoeken we die url met het programma curl en kijken of het uploaden gelukt is.

© CIDimport

17 Kaartje

Als je nu op de kaart van Weather Underground naar je persoonlijke weerstation zoekt, krijg je de temperatuur, luchtvochtigheid en luchtdruk te zien. Je draagt nu bij aan het netwerk van Weather Underground door de weerparameters te uploaden zodat iedereen het weer bij je in de buurt kan opzoeken. Weather Underground houdt grafiekjes, minima, maxima en gemiddeldes bij, dus die kan iedereen ook opvragen.

© CIDimport

18 Afwerken

Tot slot is het tijd om je weerstation af te werken. Soldeer de pinheader aan de BMP180 als je dat nog niet gedaan had, want anders kan de sensor weleens ophouden met werken. Plaats je Pi en het breadboard met de sensoren in een weerbestendige behuizing en zet die op een plaats in de schaduw, zodat de gemeten waardes correct zijn. Laat een stroomkabel door een van de gaatjes van de behuizing gaan om de Pi van stroom te voorzien.

© CIDimport

Deel dit artikel
Reageer op dit artikel
Voeg toe aan favorieten
Wat vond je van dit artikel?

Aanbevolen voor jou

ID.nl logo

ID.nl, onderdeel van Reshift BV, is in 2022 gestart en uitgegroeid tot de meest toonaangevende en complete consumentensite van Nederland. Het doel van ID.nl is om de consument te helpen met alle technologie die hoort bij het dagelijks leven: van smart-health-meters tot e-bikes, van warmtepompen tot zonnepanelen - en alles daar tussenin!

Duidelijk, betrouwbaar en onafhankelijk: ID.nl maakt moeilijke dingen makkelijk.

Contact

ID.nl

Nijverheidsweg 18

2031 CP Haarlem

info@id.nl

Telefoon: 023-5430000