ID.nl logo
Huis

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
Rijden met de nieuwe Renault 5: Overtreft alle verwachtingen
Mobiliteit

Rijden met de nieuwe Renault 5: Overtreft alle verwachtingen

Het is verreweg de belangrijkste auto die het merk sinds lange tijd introduceert. Met de nieuwe Renault 5 geeft het merk een flinke slinger aan zijn Renaulution. Een strategie waarmee het merk de snel veranderende automarkt met al zijn facetten omarmt. Technologie, connectiviteit en schone energie: Renault heeft een duidelijk een stip op de horizon geplaatst. De eerste kilometers achter het stuur van de nieuwe Renault 5, die vanaf 27.990 euro bestelbaar is, tonen aan dat de eerste Renaulution-vrucht een absolute gouden zet blijkt te zijn.

Download nu GRATIS het EV Duurtest-rapport 2024!

In het EV Duurtest-rapport zijn nieuwe elektrische auto's door verschillende consumenten getest. Alle resultaten vind je terug in dit digitale rapport. Door het invullen van je naam en e-mailadres meld je je aan voor ontvangst van het Kieskeurig EV Duurtest-rapport. Tevens ben je ingeschreven voor de Kieskeurig.nl EV-nieuwsbrief.

Duimpjes gegarandeerd

Begin dit jaar mocht ik er in een studio nabij Parijs al aan snuffelen. De wedergeboorte van een icoon, de nieuwe Renault 5. Goed een half jaar later staat er een knalgele (Jaune Pop) Iconic Cinq uitvoering op mij te wachten. Het merk wil met de nieuwe 5 zowel de oude generatie, zij die zich het origineel nog goed kunnen herinneren, als de jonge garde aanspreken. Een uitdaging, maar mede dankzij designtermen als 'retro futuristisch' heb ik zelden gedurende een intro zoveel enthousiaste reacties mogen ontvangen. Van jong tot oud, van surfer tot mondaine dame. De duimpjes waren haast ontelbaar!

Bekijk onderaan dit artikel een video van de nieuwe Renault 5!

©Irwin Versteegh

Standaard 18 inch

De nieuwe 5 rolt standaard op 18inch-wielen en dat geeft 'm samen met de goede proporties een sterk voorkomen. Stap ik achter het stuur, dan valt direct de lage en sportieve instap op. Ik zak weg in prima gevormd meubilair en dankzij een axiaal verstelbaar stuurwiel is een goede zitpositie snel gevonden. 

🚘Ook interessant: EV-profiel Renault Scenic E-Tech: Is de 'Auto van het Jaar 2024' écht zo goed?

©Irwin Versteegh

Andere zit dan verwacht

Toch moet ik voor de juiste ondersteuning van mijn bovenbenen net iets verder naar achteren gaan zitten. Een kantelbare zitting zou hier uitkomst bieden. Iets wat met name voor passagiers op de achterbank bovendien wat ademruimte zou verschaffen. Achter mijzelf plaatsnemen, zat er namelijk niet in. 

©Irwin Versteegh

Ontdek jouw ideale elektrische auto

Vergelijk en vind de beste deals op Kieskeurig.nl!

Ruim genoeg voor bagage

De kofferruimte blijkt ook in de praktijk prima bruikbaar. 320 liter is conform het segment en bleek ruim voldoende voor twee handbagage-reiskoffers en twee rugtassen. Staan de voorstoelen vrij ver naar achteren, dan zul je de hoofdsteunen van de achterbankleuning moeten verwijderen als je deze neer wilt klappen. 

©Irwin Versteegh

Vanaf 27.990 euro

De nieuwe Renault 5 komt er met twee accu's en voorlopig twee elektromotoren. Later volgt een derde met zo’n 90 pk. De Urban Range met 40kWh en 327 km range is leverbaar vanaf 27.990 euro. Je krijgt dan een 120 pk sterke elektromotor. De Techno-uitvoering is 2 mille duurder en de compleetste Iconic Cinq kost 31.490 euro. Voor net geen 30 mille stap je in de Comfort Range Techno. Die heeft een 52kWh batterij, een 150 pk sterke motor en een bereik van 410 kilometer volgens de WLTP-testmethode. Standaard zijn een 3-Fase 11kW boordlader, een warmtepomp en een snellaadtijd van 30 minuten. 

©Irwin Versteegh

Overtreft verwachtingen

Gedurende de dynamisch introductie heb ik zo'n 200 kilometer in het Vijfje afgelegd. Uiterst plezierige kilometers welteverstaan, want qua rijkwaliteit en plezier overtreft 'ie mijn verwachtingen. De 5 is zo wendbaar als een dartele poedel! De zeer directe (soms iets te directe) stuurinstallatie zorgt met het lage zwaartepunt van het gloednieuwe – toegewijd EV – AmpR Small platform voor een middenmotor-achtige ervaring. De 5 bijt zich in elke bocht vast, voelt fantastisch wendbaar en mede dankzij – uniek in deze klasse – een mooie Multilink-ophanging voor de achteras ligt de grens ver voorbij die van plezier.

©Irwin Versteegh

MINI-rijders kunnen naar Renault

En dit alles in combinatie met een verrassend verfijnde rijervaring. Binnen de bebouwde kom is-ie verre van 'te stug' en ondanks dat 'ie op een verkeersdrempel soms iets vergevingsgezinder zou mogen zijn, stoort dit niet. De nieuwe 5 blijkt op dit vlak zo goed, dat 'ie zelfs MINI-rijders zou weten te overtuigen. Zeker ook gezien het feit dat hij zich op de snelweg bovendien ontpopt als een fijne cruiser met een C-segment-waardige geluidsisolatie. 

Meer weten over de nieuwe Renault 5? Bekijk dan de video van InstaAutoVlog. 

Watch on YouTube

 

▼ Volgende artikel
Scherm delen via WhatsApp: zo werkt het
Huis

Scherm delen via WhatsApp: zo werkt het

Net zoals je op de pc je scherm kunt delen met een tool als TeamViewer, kun je ook je scherm delen via WhatsApp. Dit lukt zowel in een een-op-eengesprek als in een groepsgesprek. Handig als je iets op je smartphone wilt laten zien of uitleggen.

In drie eenvoudige stappen laten we zien hoe je in WhatsApp je scherm kunt delen, zodat je iets aan een ander kunt laten zien:

  • Videogesprek starten
  • Scherm delen
  • Delen stoppen

Lees ook: Privacy op WhatsApp beschermen: zo doe je dat

1 Videogesprek

Deze functie werkt zowel op de Android-, iOS- als Windows-app, maar alleen als je een videogesprek bent gestart. De optie werkt dus niet tijdens WhatsApp-spraakgesprekken. Heb je een Android-telefoon dan kun je overigens probleemloos je scherm delen met iemand met een iPhone en andersom. Houd er wel rekening mee dat alles wat op je scherm te zien is, zichtbaar wordt voor je gesprekspartner. Kijk dus uit als er bijvoorbeeld bankgegevens, foto’s of andere gevoelige informatie op het scherm staan. Net als de berichten en oproepen, versleutelt WhatsApp de inhoud van schermdeling voor extra beveiliging.

2 Laat de ander meekijken

Nieuw is dat je nu ook de audio van je smartphone op die manier kunt delen. Start een videogesprek op de gebruikelijke manier en je ziet onderaan bij de bedieningsknoppen een pictogram met drie horizontale stippen: tik hierop en klik op Deel scherm (iOS) of Scherm delen (Android). Vervolgens verschijnt er een korte uitleg van deze functie. Ga door en tik op Start uitzending (iOS) of Nu starten (Android). Hierdoor wordt de schermdeling gestart; vanaf nu kan de ander alles volgen wat er bij jou op je scherm gebeurt. Zo kun je bijvoorbeeld teruggaan naar het homescreen en ook andere apps openen terwijl de ander meekijkt. Wanneer je dit scherm verlaat, keer je terug naar het videogesprek in WhatsApp.

Handig om te weten! Ken je deze 8 handigheidjes in WhatsApp al?

3 Schermdeling stoppen

Ook iedereen die deelneemt aan een groepsvideogesprek kan een schermdeling-sessie starten. Er kan echter maar één persoon tegelijk zijn scherm delen. Om op een Android-telefoon te stoppen met delen, keer je terug naar het WhatsApp-videogesprek en tik je op Stoppen met delen. Op de iPhone tik je op het groene pictogram in de linkerbovenhoek van de statusbalk van de iPhone. Daarna tik je op de rode knop in het centrum van het scherm.

Watch on YouTube