Internet of things voor beginners
In dit zomerproject beschrijven we hoe een bestaande Ikea Vindriktning fijnstofsensor met een extra onderdeel gekoppeld kan worden aan het internet en hoe er op een website handige grafieken van kunnen worden getoond. Om mee te kunnen doen aan het project is enige handigheid een randvoorwaarde, maar een aantal buurtbewoners hebben al aangeboden te willen helpen als iemand ergens vast komt te zitten!
U kunt uw vragen en opmerkingen onder aan dit artikel in de reacties kwijt. U kunt daar ook een reactie van ons verwachten, en van buurtgenoten die ook actief met dit project bezig zijn. Ook kunt u contact met ons opnemen via ons emailadres fijnstof@deoosterpoorter.nl.
Fijnstof is een verzamelnaam van stofdeeltjes in de lucht, variërend in grootte van zandkorreltjes tot de vaste deeltjes in rook. Vooral de kleinste hiervan baren wetenschappers zorgen en kunnen leiden tot allergische reacties waardoor je last kunt krijgen van geïrriteerde luchtwegen, tranende ogen of huidproblemen. Ikea heeft een fijnstofmelder in het assortiment, de Vindriktning, die met een kleurenled aangeeft of er in huis een gezonde of juist een ongezond klimaat heerst. Dat is op zich al een aanrader voor een ieder die geïnteresseerd is in gezond leven, maar in het juninummer van de Oosterpoorter presenteren we een artikel waarmee technisch georiënteerde lezers deze Ikea fijnstofmeter aan het internet kunnen koppelen en zo kunnen helpen om in een groter gebied inzicht te krijgen in de gedraging van fijnstof.
Computers worden steeds kleiner en voor een klein bedrag koop je tegenwoordig een volledige internet-gekoppelde computer die kleiner is dan een flesopener. Zo’n kleine computer wordt ‘microcontroller’ genoemd en de Wemos D1 mini bevat zo’n microcontroller. Je programmeert de D1 mini eerst met een USB kabel aan je Windows of Macintosh computer, maar zodra deze met het internet is verbonden gaat iedere volgende update draadloos. De D1 mini is speciaal geschikt om gebruikt te worden als besturingscomputer in allerhande toepassingen. Je zou er eenvoudig je centrale verwarming mee kunnen besturen, je elektrische fiets, of er de bodemvochtigheid van je kamerplanten mee meten. In ons project gaan we echter de hoeveelheid gemeten fijnstof van een fijnstofsensor inlezen en ‘doorgeven’ aan het internet, een fluitje van een cent voor een microcontroller.
In dit artikel noemen we de Wemos D1 mini een microcontroller, hoewel dat niet helemaal correct is. De D1 mini is niet zelf een microcontroller, maar een printplaat met de microcontrollerchip erop. De microcontroller op deze printplaat is een ESP8266 van het Chinese Espressif Systems. Naast deze eigenlijke microcontroller zit er verder nog een USB omzetter op de printplaat, en chip met 4 MB flashgeheugen. De ESP8266 wordt erg veel gebruikt, zowel voor hobby als commerciële toepassingen. De D1 mini is één van de handigste manieren om te werken met een ESP8266 microcontroller.
Benodigdheden om mee te kunnen doen
Indien u mee wilt doen aan dit project is het handig om de onderdelen die hiervoor nodig zijn alvast in huis te halen:
- Ikea Vindriktning fijnstofmelder (ca. €14,95 bij Ikea)
- Een USB-C kabel en USB netadapter als voeding voor de fijnstofmelder (ook verkrijgbaar bij Ikea)
- Wemos D1 mini microcontroller (ca. €4,95 bij Okaphone in de Ebbingestraat in Groningen)
- Ca. 30 centimeter dun montagesnoer bij voorkeur in drie kleuren
Verder heeft u het volgende gereedschap nodig (we kunnen bemiddelen indien u dit gereedschap uit wilt lenen of zelf niet bezit en graag van een ander wilt lenen):
- Een soldeerbout met een niet al te dikke punt
- Kort stukje soldeertin met harskern
- Een kruiskopschroevendraaier
- Wifi met een bekend wachtwoord
- Een PC, laptop, tablet of smartphone
D1 mini voorbereiden met ESPhome
Een computer heeft software nodig en bij de D1 mini is dat niet anders. Om te voorkomen dat u eerst beroepsprogrammeur moet worden voordat u met dit project aan de slag kunt, hebben we ervoor gekozen om gebruik te maken van een bestaand product dat ‘ESPhome’ heet. ESPhome, ontwikkeld door de Weense student Otto Winter, is een gratis manier om ESP-microcontrollers van software te voorzien. ESPhome maakt gebruik van configuratiebestanden waarin je kunt aangegeven waar je de microcontroller voor wilt gebruiken. ESPhome zorgt dan voor de juiste programmering. Een deel van het gebruik van ESPhome gaat via een webbrowser en voor een ander deel moeten we ESPhome op onze computer installeren. Open op je computer een commandovenster (Windows) of de Terminal (macOS) en typ py –version (Windows) of python3 –version (macOS). Als er Python 3 of een hogere versie wordt getoond heb je al Python op je computer. Volg anders de instructies op www.python.org om Python op je computer te installeren.
Volg onderstaande instructies om ESPhome met Python te installeren:
Windows
py -3 -m venv .venv
.venv\scripts\activate
macOS
python3 -m venv .venv
source .venv/bin/activate
pip install wheel
pip install esphome
De ESPhome programmeeromgeving wordt pas gebruikt als u met een configuratiebestand uw D1 mini gaat programmeren. Eerst moet de D1 mini geschikt worden gemaakt om met ESPhome te werken. Dit doet u in de volgende stap.
D1 mini voorzien van minimale software met ESPhome
Verbind de D1 mini met een USB kabeltje met de computer en open Google Chrome. Surf naar web.esphome.ui en klik op PREPARE FOR ADOPTION. Kies in het scherm dat wordt geopend de seriële poort waarmee de D1 mini met uw computer is verbonden en maak verbinding. De D1 mini wordt nu van een minimale hoeveelheid software voorzien om later met wifi te kunnen verbinden en software te kunnen ontvangen. Noteer de naam die ESPhome aan de D1 mini heeft gegeven: deze naam is nodig om de D1 mini later op uw draadloos netwerk te kunnen vinden. Volg de instructies die na het installeren worden getoond om de D1 mini met uw wifi netwerk te verbinden.
Vindriktning voorbereiden
De Ikea Vindriktning is een fijnstofsensor met een ingebouwde ventilator die iedere paar seconden een ‘hap’ lucht inzuigt om de hoeveelheid kleine deeltjes te meten. Als de hoeveelheid deeltjes niet te groot is dan licht de indicator groen op; als u meer zou moeten luchten dan wordt de indicator oranje en als er echt een ongezond klimaat in de ruimte heerst is de indicator rood. Ikea heeft de Vinriktning misschien wel ontwikkeld met de hobbyist in gedachten, want het is vrij eenvoudig om de elektrische signalen van de Vindriktning af te tappen en met een microcontroller op te vangen. Hiernaast kan de Vindriktning de D1 mini voeden. Het volstaat om de Vindriktning en de D1 mini met drie korte stukjes draadeind met elkaar te verbinden, om zo zowel de D1 mini van stroom te voorzien, als de signalen van de fijnstofsensor op de D1 mini aangesloten te krijgen.
Schroef de vier kruiskopschroeven in de achterkant van de behuizing los en neem de twee helften van de behuizing van elkaar. Om gemakkelijk te kunnen solderen is het aan te raden de twee connectoren op de printplaat te ‘lossen’ (deze kunnen straks eenvoudig teruggeplaatst worden).
Neem drie stukjes montagedraad van elk ongeveer 12 centimeter en vertin de uiteinden. Soldeer draden aan de punten GND, 5V en REST van de Vindrktning printplaat. Verbind deze met de punten GND, 5V en D2 van de D1 mini. De aansluitingen zijn in het afgebeelde bedradingsschema weergegeven. Controleer of iedere van de 6 solderingen goed zijn uitgevoerd en dat er geen kortsluiting tussen de draden kan ontstaan.
Vouw de D1 mini in een stukje plastic of papier en plaats de D1 mini tussen de ventilator en de onderkant van de behuizing. Druk de twee witte connectoren terug op de printplaat van de Vindriktning en sluit de behuizing. Let daarbij op uitpuilende bedrading en druk deze waar nodig terug de behuizing in. Schroef de behuizing met de vier schroeven dicht.
Nu de Vindriktning is voorzien van een eigen, ingebouwde D1 mini wordt het tijd om de microcontroller te vertellen wat deze met de sensorwaarden van de Vindriktning moet doen. We gaan de fijnstofmetingen opslaan op een internetdienst die ‘dingdata.nl’ heet. Deze gratis dienst is speciaal bedoeld om sensorwaarden op te slaan, hiervan grafieken te tonen en grafieken van anderen te bekijken. Om te voorkomen dat anderen te veel zicht krijgen op wat er bij ons thuis gemeten wordt zorgt dingdata.nl ervoor dat gegevens zo anoniem mogelijk vergeleken kunnen worden.
Het internet gereed maken voor uw komst
Ga naar www.dingdata.nl en maak een account aan in het menu Account. Zodra het account is aangemaakt komt u op uw accountpagina. Hier ziet u een lijst ‘knipselbakken’ die nog helemaal leeg is.
Maak een knipselbak aan. De lijst bevat nu een knipselbak. In de kolom Schrijfsleutel wordt een cryptisch nummer getoond in een grijs vlak. Als u hierop klikt wordt een url getoond met hierin de delen sleutel= en knipselbak=. Noteer de gegevens die hierachter staan (in het afgebeelde voorbeeld ‘534b97f’ en ‘119’).
Neem de volgende configuratie over en wijzig hierin vijf dingen:
– vervang de naam esphome-web-9fc48c door de naam van uw eigen D1 mini
– vul voor ssid: en password: uw eigen wifi gegevens in
– vervang in de url van dingdata.nl de sleutel en knipselbak voor de gegevens van je eigen knipselbak
Bewaar het bestand als vindr.yaml.
esphome:
name: esphome-web-9fc48c
platform: ESP8266
board: d1_mini
# Enable logging
logger:
level: debug
# Enable Home Assistant API
api:
ota:
wifi:
ssid: "Mijn Wifi"
password: "Mijn Wifi wachtwoord"
ap:
ssid: "Vindriktning"
password: "Fijn-stof1"
captive_portal:
# Ikea Vindriktning PM2.5 sensor
uart:
rx_pin: D2
baud_rate: 9600
http_request:
useragent: esphome/device
timeout: 10s
sensor:
- platform: pm1006
pm_2_5:
name: "Ikea Vindriktning PM2.5"
id: "vindriktning"
accuracy_decimals: 1
filters:
- sliding_window_moving_average:
window_size: 10
send_every: 10
- platform: template
name: "Vindriktning Dingdata Request"
lambda: |-
return id(vindriktning).state;
update_interval: 60s
on_value:
- http_request.post:
url: !lambda |-
char buf[256];
sprintf(buf, "http://dingdata.nl/knipsel?sleutel=534b97f&knipselbak=119&bericht=%0.1f",id(vindriktning).state);
return ((std::string) buf).c_str();
D1 mini programmeren met de benodigde software
Laat ESPhome de software aanmaken die u in het hierboven aangemaakte configuratiebestand hebt opgegeven. Voer hiervoor de volgende instructie uit:
esphome run vindr.yaml
ESPhome haalt nu alle drivers en modules van het internet die nodig zijn om de software voor de D1 mini aan te maken en voorziet de D1 mini van software. Deze stap kan alleen werken als de naam van uw D1 mini (die ESPhome in het begin heeft ingesteld) overeen komt met de naam in vindr.yaml én uw D1 mini is verbonden met hetzelfde wifi netwerk als uw computer.
We hebben nu alle stappen doorlopen en onze fijnstofmetingen worden op het internet getoond. U bent de enige die weet, hoe u uw knipselbak hebt genoemd. Het vergelijken van gegevens gaat dus zonder dat u weet, van wie de knipselbakken zijn. De plaats is echter wel bekend, dus u kunt kijken of anderen in Groningen soortgelijke metingen als u hebben. Omdat de metingen (meestal) binnen worden uitgevoerd heeft de plek van de sensor in uw huis (keuken, woonkamer, slaapkamer) meestal meer effect dan de hoeveelheid fijnstof buiten. U merkt dit bijvoorbeeld als uw fijnstofmeter in de keuken staat terwijl u aan het koken bent: de meetwaarden gaan dan snel omhoog ten teken dat er geventileerd moet worden.
Veelgestelde vragen
Ondanks de zorgvuldigheid waarmee we het artikel hebben geschreven verwachten we dat we nog onduidelijkheden of onjuistheden in de tekst zijn geslopen. Correcties en veelgestelde vragen schrijven we in deze paragraaf bij.