Voor weinig geld kun je eenvoudig een draadloze temperatuur sensor bouwen die je met Pimatic kunt uitlezen. Tevens kun je diverse andere modules aansturen.

Dit artikel is tot stand gekomen via de informatie die ik gevonden heb in de blog van Koffie. Alle credits gaan dan ook naar hem uit voor dit fantastisch stukje software en aanwijzingen. Zie verder ook de Wiki van ESPimatic voor meer informatie.

Als eerste moet je de volgende hardware aanschaffen:

Breadboard

(Breadbord 400)

ESP8266-12E – Wifi Development Board

(NodeMcu ESP8266 (CH340/CP2102))

DS18B20 – Temperatuur Sensor

(DS18B20 Temperature Measurement Module)
of

DHT22 – Temperatuur & Vochtigheids Sensor

(DHT22 Temperature and Humidity Temperature Sensor)

2 x max7219 LED Matrix

(Max7219 Dot Matrix Module)
Op de volgende links kun je nog wat meer informatie vinden over dit ESP8266-12E Wifi Development Board:

Verder is onderstaande overzicht van de pin-indeling van de NodeMCU wel handig:
We gaan nu eerst de ESP8266-12E prepareren. Zorg dat je de benodigde software hebt om een Arduino sketchfile te kunnen compileren en uploaden. Ik probeerde dit eerst op een Windows 10 machine waarvoor ik Arduino 1.6.7 had gedownload (laatste versie van dit moment). Hiermee ging het echter mis en kreeg ik allerlei compiler errors. Dezelfde problemen had ik met Arduino 1.6.7 op mijn Debian Server.

Vervolgens heb ik maar de aangeraden Arduino 1.6.5 versie gebruikt op mijn Debian server.

Aangezien dit dus een oude Arduino versie is moet je even zoeken om deze te kunnen downloaden. Ik heb deze zelf op de volgende server gevonden. Download hier het bestand ‘arduino-1.6.5-r5-linux64.tar.xz’ en voer vervolgens de volgende acties uit:

tar -xvf arduino-1.6.5-r5-linux64.tar.xz
mv arduino-1.6.5-r5 /opt

Start nu de Arduino software

cd /opt/arduino-1.6.5-r5/
./arduino

Open preferences menu en voeg de volgende regel toe aan ‘Additional Board Manager URLs’

http://arduino.esp8266.com/stable/package_esp8266com_index.json
Open Boards Manager vanaf ‘Tools > Board’. Scroll naar beneden en selecteer ‘esp8266 by ESP8266 Community’. Kies vervolgens ‘install’.
Selecteer ‘NodeMCU 1.0 (ESP-12E Module)’ vanaf ‘Tools > Board’

Hierna moet je de sketch-file ESPimatic downloaden:

git clone --recursive https://github.com/koffienl/ESPimatic
We gaan nu de ESPimatic code compileren en uploaden:

  1. In Arduino kies je in ‘File > Open’ menu de file ‘ESPimatic.ino’ in de directory waar je de ESPimatic hebt gedownload
  2. Zet in ‘File > Preferences’ je ‘Sketchbook location’ naar de lokatie waar je ESPimatic hebt gedownload
  3. Kies nu ‘Sketch > Verify/Compile’
  4. Sluit je ESP8266-12E board via USB aan op je computer
  5. Stel je upload poort in bij ‘Tools > Port’ (vaak /dev/ttyUSB0)
  6. Kies ‘Sketch > Upload’

Initiëel zal je ESP8266-12E nu opstarten als een Access Point (wacht totdat je ESPimatic ziet verschijnen bij je draadloze netwerken). Maak verbinding met je SSID ESPimatic en vul voor wachtwoord ‘espimatic’ in. Ga vervolgens met je browser naar 192.168.4.1 en vul je gebruikelijke Wifi gegevens in en druk op [Submit]. Als het goed is gegaan verschijnt er OK op het browser-scherm. Hierna moet je de ESP8266-12E herstarten en verbinding maken je Wifi Netwerk.

Controleer nu welk IP adres je ESP8266-12E heeft gekregen van je DHCP server en ga met je browser naar dit IP-adres. Je krijgt een simpele pagina te zien waarin je nu alle HTML bestanden die je via GIT hebt gedownload moet uploaden. Je krijgt weer OK te zien in je browser scherm als dit goed is gegaan. Je moet tenslotte de ESP8266-12E nog eenmaal herstarten voordat je de uiteindelijke ESPimatic interface te zien krijgt:

Nu moeten we ESPimatic zelf nog gaan configureren:

  • Sluit de DS18B20 sensor als volgt aan op je ESP8266-12E:
    VCC op 3V3
    GND op GND
    D0 op gewenste GPIO (b.v. GPIO3)
  • Indien je DHT22 sensor gebruikt sluit je deze als volgt aan op je ESP8266-12E:
    VCC op 3V3
    GND op GND
    DAT op gewenste GPIO (b.v. GPIO3)
  • Ga naar ‘Configure > Hardware > DS18B20’ (of ‘DHT’) en stel je temperatuur-sensor gegevens in. De variabel naam die je hier invult moet je ook zelf toevoegen in Pimatic zodat de temperatuur naar Pimatic verstuurd kan worden.
  • Ga naar ‘Configure > System > Pimatic’ en stel je Pimatic gegevens in

Nu moeten we in Pimatic nog wat aanpassingen maken:

  • Voeg de variable die je bij ESPimatic hebt toegevoegd nu ook toe aan Pimatic zelf.
  • Om deze variable te kunnen afbeelden in je frontend moet je deze ook toevoegen als een device:
    {
      "id": "TemperatuurBuitenDevice",
      "name": "Temperatuur Buiten",
      "class": "VariablesDevice",
      "variables": [
        {
          "name": "TemperatuurBuiten",
          "expression": "$TemperatuurBuiten",
          "type": "number",
          "unit": "°C"
        }
      ]
    }

Je kunt nu de temperatuur uitlezen in de User-Interface van Pimatic. Als je ook visueel je temperatuur wilt zien op de LED matrixes moet je de 2 max7119 LED Matrixes als volgt aansluiten:

Daisy Chain (onder en boven aansluitingen) van 2 LEDs
VCC naar 3.3V
GND naar GND
CLK naar GPIO14
DIN naar GPIO13
CS naar GPIO die je instelt in configuratie van ESPimatic (ik heb GPIO5) gekozen

Selecteer ook wat je wil zien op je matrixes (ik heb temperatuur DHT22 gekozen)
Uiteindelijk ziet het er dan als volgt uit.

Je kunt voor de LEDs nog precies instellen hoe fel je deze wilt laten branden. Op de foto zie je het niet goed, maar deze LEDs zijn erg duidelijk leesbaar.

Ik heb nu dus een draadloze temperatuur-sensor met LED aanduiding die je met Pimatic kunt uitlezen. Nu moet ik nog gaan nadenken om dit netjes in een doosje te stoppen zodat ik deze mooi kan wegzetten/weghangen. Wellicht dat ik hier in een volgende blog op terug kom.