In deze workshop gaan we zelf een luchtvochtigheids- en temperatuursensor bouwen en programmeren met Tasmota. Daarna doen we dit met een afstandssensor.
Erik Roukens
LedenvoordeelDe zelfbouwset in deze workshop kun je als HCC-lid met korting bestellen. Kijk hier voor meer info |
Zelf aan de slag gaan met elektronica en programmeren, dat is een van de leukste dingen om te doen. In deze workshop gaan we een luchtvochtigheids- en temperatuursensor bouwen en programmeren met Tasmota, gevolgd door een afstandssensor. De komende nummers borduren we hier op voort en gaan we ook aan de slag met onder andere Home Assistant.
Voor deze workshop heb je een breadboard, jumperdraden, ESP8266 en DHT11-sensor (DHT11) nodig. Deze hebben we verzameld in een zelfbouwset die je eenvoudig kunt bestellen en met korting bij tinytronics.nl, tenminste als je HCC-lid bent. Kijk hiervoor in het kadertje Zelfbouwset. Daarnaast maken we in deze workshop gebruik van de gratis software Tasmota.
Eerst worden de verschillende onderdelen uitgelegd, daarna gaan we aan de slag.
Breadboard
De naam breadboard komt van het feit dat vroeger een houten broodplank werd gebruikt om componenten op te schroeven. De naam is gebleven, maar het hout is nu vervangen door een plastic boordje met vaste metalen stroomverdeling aan de binnenkant.
Hoe werken breadboards?
Punt a, b, c, d & e (en aan de andere kant f, g, h, i & j) zijn per rij intern met elkaar verbonden. Er zijn op het grote model 60 rijen en op een klein model 30 rijen aan twee kanten. Aan de rechter- en aan de linkerkant is van boven naar beneden een rode (+) en blauwe (-) lijn te zien. Deze lijn geeft aan dat de gaatjes op deze banen met elkaar in verbinding staan
Links kan als 3.3 volt worden gebruikt en rechts als 5.0 volt. De contactpuntjes staan precies 2,54 mm uit elkaar. De meeste componenten die je kunt kopen, zoals de ESP826, gebruiken deze maatvoering. Wil je in heel veel detail zien hoe de boordjes in elkaar steken, kijk dan op deze Elecrow-pagina: www.elecrow.com/blog/how-to-use-a-breadboard-for-beginners.html
Jumperdraden
Met deze draden kun je snel een verbinding maken tussen twee componenten. De pinnetjes passen perfect in de gaatjes op het breadboard. In het doosje zie je harde draden, het bundeltje er onder zijn flexibelle draden. In de workshop gaan we de flexibele draden gebruiken.
ESP8266
Dit is de unit waar we alles mee verbinden en waar ons programma op gaat draaien. De ESP8266 komt in veel verschillende maten en vormen, waarbij hier een paar voorbeelden. Voor deze workshop gaan we het grootste formaat gebruiken (links), het tweede model heeft de naam WEMOS en helemaal rechts heet ESP-01. De kleinere modellen hebben minder aansluitmogelijkheden, maar zijn vaak praktischer voor de meeste projecten.
Hieronder een overzicht van de aansluitpinnen (GPIO) van de ESP8266 in deze workshop. Je kunt de ESP8266 via de usb-poort van stroom voorzien, maar je kunt ook direct 5 volt aanbieden aan Vin PIN. Intern maakt het boordje uit 5 Volt 3.3 Volt. De Input/Output-pinnen van een ESP8266 kunnen alleen 3.3 Volt verdragen. Hogere voltage overleeft de unit niet, dus pas op als je ook 5 Volt in je project gebuikt. Via een van de GPIO-pinnen (General Purpose Input Output) gaan we straks de sensor aansluiten.
Bron https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/ |
Meer infoMeer info over |
|
|
Tasmota
Tasmota is gratis software, geschreven door de Nederlander Theo Arends. Is Tasmota eenmaal geïnstalleerd, dan draait het in principe helemaal lokaal. Het kan dan binnen je netwerk communiceren met Home Assistent en andere programma’s zoals Node Red. De communicatie met Tasmota kan lopen via de Seriële poort, MQTT, HTTP of WEB UI.
Om met Home Assistant te communiceren, hebben we in een later stadium MQTT nodig.
ESPEasy is een alternatief voor Tasmota, het kan ook met Home Assistant communiceren en biedt wat andere mogelijkheden. Voor deze workshop beperken we ons tot Tasmota.
Sensor DHT11
De DHT11-sensor is een eenvoudige, low-cost digitale temperatuur- en vochtigheidssensor. Het maakt gebruik van een capacitieve vochtsensor en een thermistor om de omringende lucht te meten. Hij zet een digitaal signaal op een van de data-pinnen (GPIO). De sensor zal eens per 2 seconden nieuwe data geven.
We sluiten straks de meest linkerpin met het (+) teken aan op 3.3 Volt. De middelste pin (OUT) gaat naar een van de GPIO-ingangen van de ESP8266. De (-) sluiten we straks aan op een GND (Ground of Aarde) pin van de ESP8266.
Wees hiermee voorzichtig: als je de plus en min omdraait, dan wordt de sensor heel heet en brandt hij door!
Als er meerdere sensoren aangesloten moeten worden voor bijvoorbeeld een binnen- en buitentemperatuursensor, dan moet elke (OUT) van een sensor aan een nieuwe pin van de ESP8266 gebonden worden. Elke sensor heeft dus zijn eigen data-pin nodig.
Opmerking: er is ook een DHT11 die zonder montageboordje geleverd wordt, deze heeft dan 4 pinnen. Om dit model goed te laten werken, hebben we een weerstand van 4.7 Kilo Ohm nodig die we tussen de DATA en VCC-pin moeten verbinden.
Bedraden
De DHT11 kan een voltage van 3.3 tot 5 Volt aan. Aan beide kanten van de ESP8266 zijn er meerdere 3.3Volt-aansluitingen. Het maakt niet uit welke je neemt. De pinnen die we nodig hebben, namelijk 3V3 (3.3Volt), GND en pin D7 zijn allemaal aan een kant van de ESP8266 te vinden. Prik nu de ESP8266 in het breadboard zoals te zien op de afbeelding hieronder.
Let op in de volgende stap: als je de plus en min omdraait, dan wordt de sensor heel heet en brandt hij door!
De kleuren van de draden zijn niet belangrijk, maar kan het wel makkelijker maken. In de foto zie je:
- Rood van de 3.3 volt (3V) van het ESP8266 naar de (+) van de sensor gaan
- Geel voor data gaat van de ESP8266 pin D7 naar de (out) van de sensor
- Zwart voor Aarde (Ground of G) naar de (-) van de sensor.
Opmerking: het blauwe draadje in de foto is alleen gebruikt om de rode, gele en zwarte draad weg te buigen voor de foto. Het heeft verder geen functie.
Tasmota
Om alles werkend te krijgen, moeten we de ESP8266 laden met de gratis software Tasmota. We doen dit door de ESP8266 met een micro-usb-kabel aan de computer te hangen. Het programmeren gaat heel makkelijk via een webpagina met een Web Installer: https://tasmota.github.io/install/ Op deze pagina kunnen we een versie van Tasmota kiezen.
De voorgeselecteerde versie (Tasmota English) is goed voor deze demo, maar je kunt ook de Tasmota NL versie kiezen als je alles in het Nederlands wilt hebben.
In deze workshop gebruiken we de Engelse versie. Tasmota kan heel veel en daarom zijn er specifieke versies van Tasmota gemaakt; andere versies van Tasmota zijn speciaal voor Displays, Infrarood, Zigbee, KNX enz.
Het is zelfs mogelijk een custom-versie van Tasmota te maken die precies alles heeft dat je nodig hebt. Als je zo’n versie maakt/hebt, kun je die op de Webpagina in de gestippelde box droppen en programmeren. Het zelf opzetten van een speciale versie is iets voor een latere workshop.
Verbinden en installeren
Als de ESP8266 via de usb-kabel is aangesloten, klik je op de Connect-button. Nu zou de serial-port afbeelding moeten komen (hiernaast).
Als je niet weet welke COM-poort het precies is, trek dan de stekker uit de ESP8266 als het Serial-Port Window open is. Je ziet de poort dan verdwijnen. Als je de stekker er weer insteekt, zie je de poort weer terugkomen. Als je in dit gedeelte foutmeldingen krijgt over een serial port error, is de driver die nodig is om de CH340-chip op de ESP8266 aan te sturen waarschijnlijk niet geïnstalleerd. Op https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers/all wordt goed uitgelegd hoe je die kunt installeren. Selecteer de juiste COM-poort en klik op Connect.
In het volgende venster klik je op Install Tasmota (English). Zet daarna een vinkje bij Erase device, want we willen dat alle oude data en wifi-data weg is voor we opnieuw de unit programmeren. Geef vervolgens een bevestiging door op Install te klikken.
Na ongeveer 1 minuut is het programmeren klaar:
Klik vervolgens op Next en selecteer het juiste WiFi Access Point en voer het WiFi Password in. Klik ten slotte op Visit Device om naar de Webpagina van de unit te gaan.
Als alles goed is gegaan, moet je nu de welkomstpagina van Tasmota zien. Klik hier op Configuration:
Klik nu op Configure Module. Tasmota staat standaard ingesteld voor een Sonoff Basic met beperkte mogelijkheden:
Klik in de bovenste balk en selecteer de laatste optie in de lange lijst van mogelijkheden (Generic (18)). Klik vervolgens op Save en wacht ongeveer 30 seconden. Je krijgt weer het standaard beginmenu van Tasmota; klik weer op Configuration en klik daarna weer op Configuration Module om in ditzelfde menu te komen met de GPIO-configuratie.
Als het goed is gegaan, zie je nu een langere lijst met GPIO-punten. Vind D7 GPIO13 in de lijst en selecteer daar DHT11 in het menu.
Je zou nu dit moeten zien:
Klik op Save en wacht 30 seconden. Als alles goed is aangesloten en Tasmota goed is geprogrammeerd, dan zal de data van de sensor op de voorpagina van Tasmota zichtbaar zijn. De DHT11 meet temperatuur en luchtvochtigheid. Het Dew point is een berekening tussen temperatuur en luchtvochtigheid.
Andere sensoren
Er zijn andere sensoren om mee te experimenteren, zoals de AM312 (infrarood bewegingsmelder), BME280 (iets betere temperatuursensor met luchtvochtigheid en barometer), BH1750 (lichtsensor) en APDS-9960 (handgebaarsensor).
Hier behandelen we de HC-SR04, een sensor die afstand meet in centimeters. We kunnen deze parallel met de DHT11 laten werken. Hiervoor is wel een andere versie van Tasmota nodig, namelijk de versie die is gespecialiseerd op sensoren. In een paar stappen kunnen dit voor elkaar krijgen.
Ga weer naar https://tasmota.github.io/install/ voor het installeren van Tasmota.
Selecteer nu de Tasmota Sensors-versie, installeer deze op de ESP8266 en stel de wifi weer in. Bezoek de webpagina van de unit en stel via Configuration en Configure Module de unit op Generic (18) in.
Vervolgens via Configuration en Configure Module
GPIO 12, 13 en 14 instellen zoals hier te zien is:
Op het breadboard moet nu de nieuwe sensor bedraad worden:
“3V” (3.3 volt) naar de
“Vcc” van de sensor
“D5” (GPIO14) naar
“Trig” van de sensor
“D6” (GPIO12) naar
“Echo” van de sensor
“GND” naar
“GND” van de sensor
Als je alles goed hebt gedaan, dan zou je nu de afstand moeten kunnen zien op de Tasmota-voorpagina samen met de DHT11-informatie die we al hadden: