Wat gaan we doen in deze workshop
- Zelf een luchtvochtigheids- Temperatuur- sensor bouwen en programmeren met Tasmota. In een later stadium kunnen we de sensor aan Home Assistant koppelen.
Wat hebben we nodig
- Breadboard
- Jumperdraden
- ESP8266
- Tasmota (Gratis Software)
- Sensor (DHT11)
Breadboard
- Link naar de foto Waar komt de naam breadboard vandaan. Zoals je op de foto ziet werd er vroeger een houten broodplank 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
- Zo zien moderne breadboards eruit
Hoe werken breadboards
- Punt a, b, c, d & e (en aan de andere kant f, g, h, i & j) (Zie het groene lijntje in de foto) 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.
- Idee - Links kan als 3.3 volt gebruikt worden en rechts als 5.0 volt.
- De contactpuntjes staan precies 2.54 mm uit elkaar. Dit is 1/10de van een INCH. De meeste componenten die je kan kopen zoals de ESP826 gebruiken deze maatvoering.
- Wil je in heel veel detail zien hoe de boordjes in elkaar steken kijk dan op de webpagina van Elecrow. https://www.elecrow.com/blog/how-to-use-a-breadboard-for-beginners.html
Jumperdraden
Met deze draden kan 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 flexibelle 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. Hieronder een paar voorbeelden. Voor deze workshop gaan we het grootste formaat gebruiken (links). Het tweede model heeft de naam WEMOS. Het model 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 kan de ESP8266 via de USB-poort van stroom voorzien maar je kan ook direct 5volt aanbieden aan Vin PIN. Intern maakt het boordje uit 5 Volt 3.3Volt. De Input/Output pinnen van een ESP8266 kunnen alleen 3.3Volt verdragen. Hogere voltage overleeft de unit niet dus pas op als je ook 5Volt in je project gebuikt. Via een van de GPIO-pinnen gaan we straks de sensor aansluiten.
- GPIO staat in het Engels voor “General Purpose Input Output”
Bron van de foto: https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/
Tasmota
- Tasmota is gratis software geschreven door de Nederlander Theo Arends. Als Tasmota eenmaal geïnstalleerd is 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 port, MQTT, HTTP of WEB UI. https://tasmota.github.io/docs/About/
- Om met Home Assistant te communiceren hebben in een later stadium MQTT nodig.
Alternatief - ESPEasy
- 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.
De 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 sluit straks de meest linker pin met het (+) teken aan op 3.3Volt. 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 brand 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.
- Er is ook een DHT11 die zonder montage boordje 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. Zie het schema in Appendix 1.
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 welk je neemt.
- De pinnen die we nodig hebben; 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 foto hieronder.
- Let op in de volgende stap: als je de plus en min omdraait dan wordt de sensor heel heet en brand hij door!
- De kleuren van de draden zijn niet belangrijk maar kan het wel makkelijker maken. In de foto zie je:
- Rood va
- n de 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 Tasmota. We doen dit door de ESP8266 met een micro USB-kabel aan de PC of laptop te hangen. Het programmeren gaat heel makkelijk via een Webpagina met een Web Installer. Bezoek naar de volgende Webpagina. 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 kan ook de Tasmota NL versie kiezen als je alles in het Nederlands wilt hebben. Voor de Workshop gaan we verder met de Engelse versie.
- Daar alles dat Tasmota kan te veel is om in een keer op een ESP8266 of zelfs de grotere ESP32 te laden 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 kan je die op de Webpagina in de gestippelde box droppen en programmeren. (Het zelf opzetten van een speciale versie iets voor een latere workshop)
- Als de ESP8266 via de USB-kabel aangesloten is klik je op de “Connect” button. Nu zou het volgende Serial-Port Window moeten komen (zie foto rechts). 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 de volgende webpagina van Funspark wordt goed uitgelegd hoe je die kan installeren. https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers/all Voor meer details kijk ook nog even in Appendix 2 aan het einde van dit document.
- Selecteer de juiste COM poort en klik op “Connect”.
- In het volgende Window klik je op “Install Tasmota (English)”
- Markeer “Erase device”. We willen dat alle oude data en WiFi data weg is voor we opnieuw de unit programmeren.
- Geef een bevestiging door op “Install” te klikken
- Na ongeveer 1 minuut is het programmeren klaar
- Klik op “Next”
- Selecteer het juiste WiFi Access Point en voer het WiFi Password in.
- Klik op “Visit Device” om naar de Webpagina van de unit te gaan.
- Als alles goed gegaan is moet je nu de welkom pagina van Tasmota zien.
- Klik 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 op Save.
- Wacht ongeveer 30 seconden. Je krijgt weer het standaard begin menu van Tasmota
- Klik weer of “Configuration”
- En klik weer op “Configuration Module” om in ditzelfde menu te komen met de GPIO-configuratie.
- Als het goed gegaan is zie je nu een langere lijst met GPIO-punten.
- Vindt “D7 GPIO13” in de lijst en selecteer daar “DHT11” in het menu.
- Je zou nu dit moeten zien
- Klik “Save”
- Wacht 30 seconden
- Als alles goed aangesloten is en Tasmota goed geprogrammeerd is 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.
Als je de Naam Tasmota boven in het scherm wilt aanpassen naar iets dat overeenkomt met de naam van de sensor of the locatie dan kan je dit veranderen via; “Configure” – “Configure Other”.
Na het ingeven van een nieuwe “Device Name” en een nieuwe “Friendly Name” kan je dit opslaan door op “Save” te klikken.
Andere sensoren om mee te experimenteren
- AM312 een Infrarood bewegingsmelder.
- Onder 1 Euro op AliExpress
- BME280 een iets betere Temperatuur Sensor met luchtvochtigheid en Barometer
- Onder 1 Euro bij AliExpress
- BH1750 Lichtsensor
- Rond de 1,60 Euro op AliExpress
- APDS-9960 handgebaar sensor. Zie de right van de handbeweging (naar links, naar rechts, naar boven en benden)
- Rond de 2,10 Euro op AliExpress
Extra sensor als er tijd over is in de Workshop
- De HC-SR04 is 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. Deze versie is gespecialiseerd op sensoren. In een paar stappen kunnen dit voor elkaar krijgen.
Ga weer naar de webpagina terug voor het installeren van Tasmota
- Selecteer nu de “Tasmota Sensors” versie. Installeer deze op de ESP8266.
- Stel de WiFi weer in.
- Bezoek de webpagina van de unit.
- Via “Configuration” en “Configure Module” de unit op “Generic (18)” instellen.
- Via “Configuration” en “Configure Module” GPIO 12, 13 en 14 instellen zoals hiernaast te zien is.
- Op het breadboard moet nu de nieuwe sensor bedraad worden (zie foto):
- “3V” (3.3volt) 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 gedaan hebt, dan zou je nu de afstand moeten kunnen zien op de Tasmota voorpagina samen met de DHT11 informatie die we al hadden.
Voor een latere Workshop
MQTT
- Om alles aan Home Assistant aangesloten te krijgen hebben we een MQTT-server in het netwerk nodig. In Home Assistant kan deze MQTT-server als een Integratie geïnstalleerd worden net als de Tasmota Integratie die nodig is om de data van de sensor binnen te halen.
- Wil je een aparte MQTT-server binnen je netwerk dan is Mosquitto een van de meeste gebruikte servers. Hij kan hier gedownload Het werkt op heel veel verschillende platformen en er zijn diverse video’s te vinden hoe het geïnstalleerd moet worden.
- Installeer je MQTT binnen Home Assistant dan hier een goede start https://www.home-assistant.io/integrations/mqtt/
Appendix 1
De weerstand moet ergens tussen de 4.7KOhm en 10KOhm zijn
Bron van de foto: https://newbiely.com/tutorials/esp8266/esp8266-dht11
Appendix 2
Zoek op de webpagina naar rode knop met “CH341SER (EVE)” en download de file.
Run de file CH341SER.EXE van uit de download folder.
Het venster hieronder moet dan verschijnen. Klik op “INSTALL” en de driver voor de chip wordt geïnstalleerd.