ID.nl logo
Maak een weerstation met je Arduino
© PXimport
Zekerheid & gemak

Maak een weerstation met je Arduino

Eerder schreven we al over de Arduino: een goedkope programmeerbare microcontroller die de basis vormt voor zelf in elkaar geknutselde projecten. Het kan nog leuker: een Arduino met ingebouwde wifi-chip maakt het mogelijk om ook aan internet verbonden projectjes te maken! We gaan aan de slag met het ontwikkelbordje NodeMCU om een weerstation te maken.

Zoals gezegd besteedden we al eerder in Computer!Totaal aandacht aan Arduino, een opensource elektronicaplatform dat je zelf kunt programmeren en kunt gebruiken in combinatie met elektronische componenten. Hier kun je op onze website een aantal artikelen over Arduino lezen. Erg leuk om mee te knutselen, maar het heeft één nadeel: het blijft door gebrek aan netwerkmogelijkheden bij lokale projecten.

Een Arduino met wifi opent deuren naar nieuwe mogelijkheden. Je kunt informatie van internet ophalen en tonen, of je Arduino bijvoorbeeld inzetten als sensor die jou waarschuwingen geef, ook als je buitenshuis bent. In deze cursus gaan we een dergelijke Arduino met wifi inzetten voor twee met internet verbonden projecten die beide met weersinformatie te maken hebben. We hebben gekozen voor de NodeMCU.

Het project Weeralarm laat je aan de hand van een brandend ledje in één oogopslag zien of er in jouw regio momenteel een weeralarm van kracht is, waarbij uiteraard onderscheid gemaakt wordt tussen de verschillende kleuren die het KNMI hanteert. Uiteraard zijn ledjes niet de enige manier waarop je informatie kunt tonen. In het tweede project, Weermonitor, gebruiken we daarom een oled-schermpje waarop we weersinformatie van een zelfgekozen weerstation in Nederland tonen. Eerst wat algemene uitleg.

01 Wat is de NodeMCU?

De NodeMCU is technisch gezien geen Arduino, maar een ontwikkelbordje gebaseerd op de ESP8266 wifi-module. Je kunt deze wifi-module ook los kopen en koppelen met een Arduino. De chip is echter zo krachtig dat hij ook functioneert als een complete microcontroller. Deze chip is herkenbaar als een zilverkleurig blokje op de printplaat.

Naast de ESP8266 bevat de NodeMCU een usb-interface voor de communicatie met de ontwikkelomgeving, een voedingscircuit en twee rijen aansluitpinnen voor gebruik op een breadboard. Het NodeMCU-ontwikkelbordje is oorspronkelijk ontwikkeld voor de NodeMCU-ontwikkelomgeving waarin de programmeertaal Lua gebruikt wordt. NodeMCU en het bijbehorende bordje zijn bedoeld om op een goedkope manier IoT-projecten te maken. Het werd echter nog leuker toen ontwikkelaars ondersteuning voor de ESP8266-chip in de Arduino-ontwikkelomgeving inbouwden. Hierdoor kun je bordjes op basis van ESP8266 zoals de NodeMCU als een Arduino-bordje gebruiken.

Het grote voordeel van de NodeMCU ten opzichte van andere Arduino-bordjes voorzien van wifi is dat dit bordje erg goedkoop is. Voor drie euro heb je een compleet bordje met ingebouwde wifi-radio, dat je kunt programmeren met de Arduino-ontwikkelomgeving. Je vind de NodeMCU-bordjes op bijvoorbeeld eBay of AliExpress. Let wel op dat je de juiste versie koopt, koop er een die wordt aangeduid met 1.0 of v2. De v3 (ook aangeduid als LoLin) is breder en past hierdoor niet goed op een breadboard.

©PXimport

02 Een hoop pinnen

Net als bij een Arduino kan het aantal aansluitpinnen op de NodeMCU wat afschrikken, maar wees gerust: we gebruiken er slechts een paar. Er zit bovendien nogal wat herhaling in, zo zijn er drie 3V3-aansluitingen (+3,3 volt) en zelfs vier GND-pinnen (ground of 0 volt). De aansluitingen met dezelfde namen zijn onderling doorverbonden. Voor de schakelingen die je in zelfgebouwde projecten gebruikt, zijn vooral de digitale aansluitingen (het rijtje D0 tot en met D8) van belang. Deze aansluitingen gebruiken we om digitale signalen te versturen en uit te lezen. Daarnaast bevat de NodeMCU ook de analoge ingang (A0). Deze ingang verwerkt analoge signalen en kun je bijvoorbeeld gebruiken om sensoren uit te lezen om omgevingsfactoren te meten, zoals temperatuur en vochtigheid. De reset-pin (RST) spreekt voor zich en VIN dient om de module te kunnen voeden zonder usb-kabel. Als de module wel via de usb-kabel is verbonden, is deze aansluiting te gebruiken voor externe componenten die meer dan 3,3 volt nodig hebben.

©PXimport

03 Werking breadboard

Om de NodeMCU te gebruiken voor projecten, sluit je componenten als leds en weerstanden met jumperdraden aan. Het breadboard is letterlijk de basis van de schakelingen. Alsof het ministeck is, steek je alle componenten in de gaatjes, zodat die componenten onderling worden verbonden. Het breadboard is opgebouwd uit drie delen: aan weerszijden twee blauw-rood gemarkeerde rijen gaatjes en een deel ertussenin met een soort gootje in het midden. De gaatjes van het breadboard zijn op een slimme manier met elkaar verbonden. De buitenste twee delen bestaan elk uit twee rijen onderling verbonden gaatjes. Je hebt dus aan weerszijden van het breadboard een rode en een blauwe rij over de volle lengte van het breadboard.

In het middelste deel zijn telkens vijf gaatjes met elkaar verbonden. Als je goed kijkt, zie je cijfers en letters die de gaatjes coördinaten geven. De letters zijn van elkaar gescheiden en de cijfers vormen twee rijtjes van vijf verbonden gaatjes. Zo zijn a15 t/m e15 met elkaar verbonden en f15 t/m j15 ook. Tussen e15 en f15 loopt dus geen verbinding. De illustratie maakt het duidelijk. De grijze lijntjes geven aan op welke manier de gaatjes onderling zijn verbonden. Dus: telkens vijf gaatjes in het middelste deel en alle gaatjes over de hele lengte aan de buitenkanten. Overigens zijn de twee buitenste rijen niet met elkaar verbonden, al hebben ze dezelfde kleurcode. In onze schakelingen gebruiken we altijd de blauw gemarkeerde rij voor GND en de rood gemarkeerde rij voor 3,3 volt. Om praktische redenen werken we in deze cursus niet met coördinaten. Nu je weet hoe de gaatjes met elkaar zijn verbonden, kun je immers zelf bepalen wat je waar in het breadboard prikt. Een vuistregel: zorg ervoor dat er nooit meer dan één pootje van een component in hetzelfde rijtje zit. Prik dus nooit een led in a15 en b15, maar in a15 en a16. In e15 en f15 kan weer wel, want daartussen zit geen verbinding.

©PXimport

04 Werken met de Arduino-ontwikkelomgeving

De ontwikkelomgeving voor Arduino is een zogeheten integrated development environment oftewel IDE. We schrijven de programma’s (binnen de IDE ‘schets’ genoemd) erin, testen ze met de ingebouwde debugger en uploaden ze ermee naar de ESP-module.

De programma’s bestaan ten minste uit de functies setup en loop (lus). Alles wat in setup staat, wordt eenmalig uitgevoerd. Hier bepalen we onder andere welke aansluitpinnen we gaan gebruiken en of dat ingangen of uitgangen worden. Binnen loop staan instructies voor bijvoorbeeld het uitlezen van sensoren en het aan- en uitzetten van een led. Alles in dit gedeelte van het programma wordt oneindig vaak herhaald. Instructies die je slechts af en toe wilt uitvoeren, zet je in een of meerdere functies die je zelf definieert. In de praktijk wordt setup() nog voorafgegaan door variabelen die door het hele programma gebruikt worden. We kunnen bijvoorbeeld een pinnummer toewijzen aan een led of een drukknop, zodat we in de code niet alle pinnummers en de daarop aangesloten componenten hoeven onthouden.

©PXimport

05 Controleren en uploaden

Nadat de benodigde code is ingevoerd of geladen, is de eerste stap het verifiëren ervan. Dat gaat met het knopje met de V links bovenin. De IDE test niet de werking van de code, maar controleert of de structuur klopt. Heb je bijvoorbeeld alles netjes gegroepeerd en worden onderdelen correct geopend en afgesloten? En is er niet twee keer een andere waarde toegekend aan een constante? Overigens wordt de code voor het uploaden automatisch nog gecontroleerd. Dat voorkomt dat je code naar de module uploadt waardoor die zou kunnen vastlopen. Fouten worden gemeld in het zwarte venster onderaan.

De laatste stap is het al genoemde uploaden van je code. Dat gebeurt met de knop met de pijl naar rechts en bestaat uit drie fases, die automatisch na elkaar worden uitgevoerd. De eerste fase is zoals gezegd het controleren van het programma. De tweede fase is het compileren, dat is het omzetten naar instructies die de processor begrijpt. Die instructies zijn voor mensen onhanteerbaar, vandaar deze vertaalslag. Dit betekent overigens dat je de code niet op een later moment van de ESP-module kunt downloaden om er verder aan te werken. Bewaar je programma’s dus altijd goed! De derde en laatste fase is het daadwerkelijk versturen van de gecompileerde versie van het programma naar de module.

©PXimport

Installeren van de ontwikkelomgeving

Voordat je aan de slag kunt met de NodeMCU, moet je eerst het stuurprogramma en de Arduino-ontwikkelomgeving installeren. Op Windows-pc’s, macOS-computers en Linux-systemen wordt de module automatisch herkend, nadat je de Arduino-ontwikkelomgeving (IDE) hebt geïnstalleerd. Doe dat dus altijd als eerste!

  1. Installeer Arduino IDE.
  2. Sluit de NodeMCU aan met de usb-kabel. Als bij deze stap de module onverhoopt toch niet wordt herkend, trek dan de usb-kabel van module los. Download vervolgens de driver voor Windows of voor macOS (let op: downloadt direct) en pak het zip-bestand uit. Installeer de driver (voer bij Windows Setup.exe uit) en sluit de module weer aan.
  3. Start de Arduino IDE en geef indien nodig de firewall toestemming.
  4. Klik op Bestand / Voorkeuren en voer op het tabblad Instellingen de url http://Arduino.esp8266.com/stable/package_esp8266com_index.json in bij Additionele Board Beheer URLs.
  5. Voeg de module toe aan de IDE via Hulpmiddelen / Board / Boardbeheer.
  6. Zoek op ‘esp’ en klik bij esp8266 by Community op Installeren.
  7. Selecteer het juiste bord: Hulpmiddelen / Board / NodeMCU 1.0 (ESP-12E Module).
  8. Selecteer tot slot de juiste poort (Hulpmiddelen / Poort, kies de COM-poort met het hoogste nummer).

Arduino en nu online verder

De twee projecten die u op de volgende pagina’s vindt, zijn afkomstig uit het pakket ‘Arduino en nu online verder’, van dezelfde makers als dit tijdschrift. Het pakket bestaat uit een instructieboek met daarin 14 projecten. Daarnaast vind je in het pakket de NodeMCU, een breadboard en alle componenten die je nodig hebt om alle projecten te bouwen. Je vindt het pakket zolang de voorraad strekt hier. Normaal gesproken kost dit pakket 64 euro, gebruik de code ARDUINOTOTAAL om 10 euro korting te krijgen!

Benodigde componenten

  • NodeMCU
  • Breadboard
  • 5 jumperdraden
  • 1 rode led
  • 1 oranje led
  • 1 gele led
  • 1 groene led
  • 4 weerstanden van 100 ohm

01 Schakeling bouwen

De schakeling voor het weeralarm is eenvoudig: we sluiten een groene, gele, oranje en rode led op de NodeMCU aan. Voor elke led gebruiken we een aparte aansluiting op het bordje: de pinnen D1, D2, D5 en D6, die we in de code instellen als digitale uitgang. Verbind voor elke led de kathode (het korte pootje) van de led via een weerstand van 100 ohm met GND om de stroom door de led te begrenzen. De anode (het lange pootje) van de rode led sluit je aan op D1, die van de oranje led op D2, die van de gele led op D5 en die van de groene led op D6. Heb je niet alle kleuren leds tot je beschikking, dan kun je uiteraard ook andere kleuren gebruiken. Maar dat is natuurlijk wel minder leuk en minder duidelijk.

02 Uploaden code

Je kunt de code voor dit project hier downloaden. Open de code in de ontwikkelomgeving. Stel als eerste de naam van je draadloze netwerk (in plaats van SSID) en het wachtwoord van je draadloze netwerk in (in plaats van WACHTWOORD). Vervolgens kun je de juiste regio instellen, zodat je het weeralarm van jouw regio ziet. Het oorspronkelijke weeralarm gold voor heel Nederland, maar sinds 2010 geeft het KNMI een weeralarm per provincie. Het KNMI heeft Nederland daarom ingedeeld in vijftien regio’s. Een regio per provincie plus de Waddeneilanden, de Waddenzee en het IJsselmeergebied. In de code die je voor dit project kunt downloaden, vind je de url “/weeralarm.php?regio=utrecht” terug. Je kunt utrecht vervangen door limburg, zeeland, noord-brabant, zuid-holland, noord-holland, gelderland, flevoland, overijssel, drenthe, groningen, friesland, ijsselmeergebied, waddenzee of waddeneilanden om de juiste regio te tonen. Upload de code vervolgens naar de NodeMCU en druk op het resetknopje. Na een korte tijd gaat het lampje branden van de weercode die momenteel in jouw regio actief is.

©PXimport

ESP8266 in een domoticasysteem

De Arduino-ontwikkelomgeving is niet de enige software die je in combinatie met de ESP8266 kunt gebruiken. In editie 12/2017 hebben we het NodeMCU-bordje gebruikt als basis om sensoren te verbinden met domoticasysteem Domoticz. Hiervoor gebruikten we de ESP Easy-firmware die een webinterface biedt waarmee je eenvoudig aangesloten sensoren als een bewegingsmelder, thermometer of luchtvochtigheidsmeter kunt uitlezen. Je kunt het artikel hier teruglezen.

©PXimport

Project Weermonitor

Benodigde componenten

  • NodeMCU
  • Breadboard
  • 4 jumperdraden
  • Oled-scherm

01 Schakeling bouwen

De schakeling voor de weermonitor is nog eenvoudiger dan die van het weeralarm. Het enige dat we doen is een eenvoudig beeldschermpje aansluiten. Dat kan met vier draadjes. VCC en GND van het schermpje verbinden we respectievelijk met 3.3V en GND op de ESP-module, SCL met D1 en SDA met D2. En daarmee is onze schakeling klaar. Er zijn verschillende schermpjes te koop die je kunt gebruiken in combinatie met ontwikkelbordjes. We gebruiken een I2C-OLED-schermpje met witte weergave met een afmeting van 0,96 inch met een resolutie van 128 x 64 pixels, voorzien van vier aansluitpinnen. Wil je een dergelijk schermpje los kopen, tik dan in bijvoorbeeld eBay of AliExpress de zoekterm “i2c oled 4 pin white Arduino”. Zo’n schermpje is voor zo’n 2,50 euro te vinden.

02 Oled-driver installeren

Om het oled-schermpje aan te sturen, hebben we een extra library nodig: esp8266-OLED. Download het zip-bestand, pak het uit en plaats de uitgepakte map in de map libraries van je map met Arduino-schetsen (Documents\Arduino onder je persoonlijke map in Windows). Maak eventueel de map libraries aan als die nog niet bestaat. Herstart daarna de Arduino IDE. We kunnen nu in onze code de nieuwe library gebruiken met de regel #include "OLED.h". Overigens voegen we ook een regel #include <Wire.h> toe, omdat de library OLED de library Wire nodig heeft voor de communicatie met het schermpje.

03 Code instellen

Je kunt de code voor dit project hier downloaden. Om de schets te laten werken vul je in de code de naam van je draadloze netwerk in plaats van SSID en je wachtwoord in plaats van WACHTWOORD. In de regel daarna kun je het nummer van het gewenste weerstation instellen. Ieder weerstation heeft een viercijferig nummer. Standaard staat hier 6260, de code voor het weerstation bij De Bilt. Je vindt alle weerstations hier. Upload de code vervolgens naar de NodeMCU. Herstart het bordje door op het resetknopje te drukken en de weergegevens verschijnen op het schermpje.

©PXimport

▼ Volgende artikel
Op zoek naar het ideale Vaderdag-cadeau? Maak kans op een Ninja-airfryer!
© Ninja
Huis

Op zoek naar het ideale Vaderdag-cadeau? Maak kans op een Ninja-airfryer!

Wie regelmatig in de keuken staat, weet hoe prettig het is als een apparaat meerdere taken aankan zonder in te leveren op kwaliteit. De Ninja Foodi MAX Dual Zone Airfryer AF400EU is daar een goed voorbeeld van. Hij frituurt zonder olie, bakt zonder oven en kookt sneller dan je gewend bent. En dankzij de twee gescheiden kookzones is hij ook nog eens razend efficiënt. Speciaal voor Vaderdag mogen we bovendien vier exemplaren weggeven!

De Ninja Foodi MAX Dual Zone Airfryer AF400EU is niet zomaar een airfryer, maar een serieus keukentalent met twee volledig gescheiden kookladen van elk 4,75 liter. Dat betekent dat je moeiteloos een complete maaltijd tegelijk kunt bereiden: bijvoorbeeld een portie kippetjes aan de ene kant en frietjes aan de andere. Dankzij de Sync-functie zijn beide gerechten tegelijk klaar, dus geen lauwe friet meer terwijl het vlees nog moet garen.

En met de Match-functie zet je eenvoudig dezelfde instellingen op beide zones als je juist voor een grotere hoeveelheid van één gerecht gaat. Dat klinkt technisch, maar het komt erop neer dat je minder hoeft na te denken en toch meer op tafel zet. Zelfs vaders die normaal gesproken hun ei nog laten aanbranden krijgen hierdoor ineens vleugels in de keuken.

Lees hier onze review van de Ninja Foodi MAX Dual Zone Airfryer AF400EU

©Ninja

Veelzijdig koken met één apparaat

De meeste keukenapparaten hebben gebruiksaanwijzingen van het formaat boekwerk, maar de bediening van deze airfryer is lekker overzichtelijk. Het digitale display is intuïtief, de knoppen spreken voor zich en de zes vooraf ingestelde functies maken het kiezen makkelijk. Airfryen, bakken, roosteren, opwarmen, drogen of de Max Crisp-stand gebruiken? Alles kan, zonder gedoe met temperatuurinstellingen of baktijden opzoeken. En ja, ook voor de vader die denkt dat een quiche een soort Pokémon is, wordt koken hiermee opeens iets wat hij kan – en misschien zelfs leuk gaat vinden.

Nog een groot voordeel: de Ninja AF400EU is niet alleen sneller dan een oven, hij zorgt ook voor gezonder voedsel. Je gebruikt tot 75 procent minder vet, zonder in te leveren op smaak of crunch. Snacks blijven krokant, kip wordt sappig en groenten behouden hun bite. En als het dan eindelijk tijd is om op te ruimen, blijken ook daar geen excuses meer nodig: de kookladen en de bijbehorende roosters mogen gewoon in de vaatwasser. Geen geschrob, geen gezucht, geen smoesjes.

Vaderdagactie: win een Ninja Foodi MAX Dual Zone Airfryer AF400EU!

Speciaal voor Vaderdag mogen we vier exemplaren van de Ninja Foodi MAX Dual Zone Airfryer AF400EU weggeven. Wil jij er één winnen? Doe dan mee aan onze prijsvraag!

De vraag luidt: Wat is de totale capaciteit van de Ninja Foodi MAX Dual Zone Airfryer AF400EU?

Meedoen is eenvoudig: Stuur je antwoord vóór 10 juni 2025 naar winnen@id.nl met als onderwerp Vaderdagactie. ‼️Vergeet niet je naam en adresgegevens te vermelden‼️ De winnaars krijgen op 16 juni persoonlijk bericht.

▼ Volgende artikel
Van powerbank tot adapter: dit zijn de handigste accessoires voor je laptop
© Daisy Daisy
Huis

Van powerbank tot adapter: dit zijn de handigste accessoires voor je laptop

Wil je het maximale halen uit je laptop? Dan kom je al snel uit bij een reeks accessoires die nét dat beetje extra bieden. Natuurlijk denk je dan aan een goede tas, een losse muis of een extern scherm. Maar er zijn ook minder voor de hand liggende hulpmiddelen die het werken, reizen of ontspannen met je laptop makkelijker en handiger maken.

Meer uit je laptop halen met slimme aanvullingen

Slimme accessoires zorgen voor gemak, comfort en betere prestaties. Ze maken het verschil tussen 'gewoon' werken en écht prettig werken. Van extra aansluitmogelijkheden tot handige tools voor onderweg – er is veel mogelijk. Denk aan: 💻 Accessoires die mobiel werken makkelijker maken 💻 extra aansluitmogelijkheden voor kabels, schermen en netwerken 💻 uitbreidingen voor meer opslag of ergonomisch gemak

Lees ook: Op zoek naar een nieuwe laptop? Dit is waar je op moet letten!

Laptopstandaard: comfortabeler en koeler werken

Een laptopstandaard tilt je scherm op tot een prettig kijkniveau. Dat werkt een stuk prettiger voor je nek en schouders. Ideaal voor aan een bureau, maar ook op de bank geeft het meer stabiliteit. Sommige modellen hebben zelfs een ingebouwde ventilator om de temperatuur van je laptop omlaag te brengen. Minder warmte betekent minder slijtage en een langere levensduur van je laptop.

Powerbank: altijd stroom bij de hand

Onderweg of op reis heb je niet altijd een stopcontact in de buurt. Een krachtige powerbank is dan onmisbaar. Kies er een met voldoende capaciteit – minimaal 20.000 mAh – én voldoende vermogen. Veel laptops hebben minstens 60 watt nodig, sommige lichtere modellen kunnen met 30 watt toe. Varianten met een klein zonnepaneel laden ook op via zonlicht, al gaat dat vrij traag. Handig als extra, maar niet als hoofdbron.

©doucefleur

☀️ + 🔋= 🧑‍💻

Solar powerbanks

Wereldstekker: handig voor op reis

In het buitenland zijn stopcontacten lang niet altijd zoals in Nederland. Met een universele reisstekker (ook wel reisadapter of wereldstekker genoemd) kun je overal terecht. Ook hier is het, net als bij je keuze voor een powerbank, weer belangrijk om erop te letten dat het wattage toereikend is voor je laptop.

Usb-naar-internetadapter: stabiel bekabeld internet

Een wifi-verbinding is de standaard voor laptops, maar zo'n draadloze verbinding is helaas niet altijd stabiel. Vooral op drukke netwerken of in gebouwen met dikke muren kan een kabel betrouwbaarder zijn. Veel moderne laptops hebben geen netwerkaansluiting meer. Met een losse adapter los je dat probleem eenvoudig op. Ga op zoek naar een usb-naar-RJ45-adapter (ook wel ethernetadapter genoemd). Die zijn al te vinden voor minder dan 10 euro. Op veel adapters zitten bovendien extra usb-poorten – altijd handig!

Kaartlezer: bestanden overzetten in één keer

Draadloos bestanden overzetten of gewoon al je foto's in de cloud opslaan werkt over het algemeen prima. Maar een losse kaartlezer kan ook handig zijn. Zeker als je liever werkt met fysieke opslag dan met de cloud. Universele kaartlezers zijn goedkoop, compact en plug-and-play.. Voor een paar euro koop je al een universele kaartlezer, met aansluitingen voor bijvoorbeeld microSD, SDHC en UHS-I.

©Karter13

Een vleugje nostalgie: dvd's en blu-rays afspelen

Dvd-spelers zijn verdwenen uit bijna alle laptops. Heb je nog schijfjes met films, software of back-ups? Dan is een externe speler de oplossing. Voor weinig geld sluit je hem aan via usb en speel je alles alsnog probleemloos af.

Externe harde schijf: ruimte maken en back-ups bewaren

Als de opslagruimte op je laptop volloopt, is een externe harde schijf een logische stap. Je bewaart je bestanden fysiek én hebt een back-up bij de hand. Liever niet afhankelijk van de cloud? Dan is dit een betrouwbare manier om je data veilig te stellen.

Docking station: alles aangesloten in één keer

Met een docking station sluit je met één handeling je laptop aan op meerdere schermen, een toetsenbord, netwerk en andere randapparatuur. Alles via één centrale hub. Ideaal voor vaste werkplekken of als je regelmatig wisselt tussen kantoor en thuis. Sommige modellen hebben ook een ingebouwde laptopstandaard of oplader.