Wemos D1 naar MQTT

Uit RobotMC.be
Ga naar: navigatie, zoeken

Wemos D1 naar MQTT

Wemos als weerstation

ds18b20-normal-power

DS18B20

Het is erg eenvoudig om digitale sensoren uit te lezen met de Wemos, en daarna de gemeten waarden naar een MQTT server te verzenden. Erg handig zijn de DS18B20 "One wire" sensoren. Je vindt deze voor enkele Euro's op ebay, volledig waterdicht en met enkele meters kabel eraan. Je kan verschillende sensoren op één pin aansluiten, deze worden wel achter elkaar uit gelezen. De resolutie is instelbaar van 9 bits tot 12 bits (12 bits = 0.125°C resolutie). Een pull-up sensor (4.7k) is noodzakelijk

DHT22

Deze sensor kan temperatuur en vochtigheid meten. Condensatie (100 % relatieve vochtigheid) is echter te vermijden, dus ik zou deze sensor niet buiten gebruiken. Er bestaat ook een type DHT11, maar deze is duidelijk minder nauwkeurig. Ook hier is een pull-up nodig.

20171230_160350

BMP280

Een bekende luchtdruksensor van Bosch, die via I2C uit te lezen is. De berekening van de luchtdruk is erg gecompliceerd, waarbij eerst een aantal kalibratie waardes uit de sensor moeten gelezen worden, daarna volgt een ingewikkelde berekening. Gelukkig bestaat hier een goede library voor, je moet je niet bekommeren om deze details. Een modernere versie is de BME280, deze kan ook met dezelfde lib uitgelezen worden.

Regenmeter

Digitale regenmeters bestaan uit een opvangtrechter, waaronder een "wip" die het regenwater opvangt en omkantelt als één kant van de wip gevuld is met regenwater. Daarna wordt de andere kant gevuld, en klapt de wip weer om. Op de wip is een magneetje gemonteerd dat een "reed" switch laat schakelen. Meestal heb je dan nog wat electronica om dit signaal draadloos naar een basisstation door te geven (433 MHz). Omdat ik geen geschikte ontvanger had, heb ik mijn regenmeter gehackt en de "reed" switch rechtstreeks met een lange draad aan de Wemos verbonden. Ik vond zo een regenmeter voor ca 25€ online :https://www.weerstation-expert.be/accessoires/regenmeter

De Arduino sketch

In deze sketch wordt eerst een Wifi verbinding opgebouwd, daarna worden elke minuut de sensoren uitgelezen en de meetwaarden naar de MQTT server gestuurd (loopt op een Raspberry). De sensoren zijn aangesloten op volgende pins :

BMP280 (I2C) op D0 en D1
Regenmeter (pulsen) op D3
DS18B20 op D4
DHT22 op D5

De seriele pins Rx/Tx zijn nog steeds vrij en kunnen dus gebruikt worden om meldingen uit te geven (Serial Monitor in de Arduino inschakelen) Opgelet, als er geen geldige BMP280 sensor wordt gevonden, of er kan geen verbinding gelegd worden met het netwerk stopt de afloop. Met het uitlezen van de DHT22 sensor waren er ook soms problemen, hier wordt ook gecontroleerd of er een geldige waarde wordt ontvangen. Volgende parameters moet je op voorhand ingeven :

Wifi SSID en paswoord
MQTT server IP-adres, ook user en password indien ingesteld op MQTT
MySQL server IP-adres, user en passwoord

Media:Wemos_MQTT.zip