Wifi temperatursensor till Vera och thingspeak

Temperatursensor till Vera och thingspeak drivs med två AA batterier!

Esp8266

Detta är en Wifi kort med CPU för 20kr! Måtten 24mm X 16mm gör den optimal till mindre projekt.

Projektet senast uppdaterad: 2016-02-17

Vad är detta?

Bygget nedan är Wifi sensorn ESP8266 12E med en DHT11 temperatursensor, just den här enheten rapporterar till min gratis http loggserver. Enheten har skickat temperaturen varje minut i några dagar med två AA 1.5v batterier. När enheten lyckats skicka data till loggservern läggs enheten i viloläge och drar då ca 10uA. Jag kommer att köra den här sensorn till den slutar rapportera för att se hur pass många skickningar batterierna klarar (risken är att det tar ett tag!). Jag valde att bygga den första med en DHT11 för att få möjlighet att övervaka luftfuktighet, exempelvis på vinden eller i källaren.

Dht11Versionen POC01

I viloläge drar ESP8266 12E runt 20 uA vilket gör det möjligt att köra enheten på två AA 1.5 batterier under mycket lång tid.

 

Projektet ovan är en esp8266 12E med namnet ”ESP8266-NR1″, koden är inte optimerad och DHT11 ger lite varierande världen. Detta kan beror nog på DTH11 och att spänningen understiger 3.3v, väntar nu på DHT22 för att se om det gör någon skillnad. Luvan hade även en idé om att köra en stepup modul för att ge korrekt spänning till DHT11, kommer att testa det med så fort den kommer.

 

Resultat

Loggen nedan kommer från loggningsprogrammet, det syns att ESP8266-NR1 (dvs den med DHT11) skiljer sig en hel del från den nya sensorn (ESP8266-NR2) som har en DS18B20 temperatursensor. Jag har även valt att i den nya sensorn skickar hur pass bra WIFI styrka den har, detta kan ge mig bra indikationer på om enheten kommer att dra onödigt mycket batteri eller har svårt att kommunicera.

POC-ESP2

ESP8266-NR1 | T: | (temperatur) 18 | H: | (luftfuktighet) 48

ESP8266-NR2 | (signalstyrka WIFI) -78 | (temperatur) 21.3

 

Vera

Efter att ha skapat en virtuell temperatursensor i vera och aktiverat funktionen i koden för ESP8266-NR2 dyker sensorn upp i Vera. Det är nu möjligt att skapa scenes som reagerar om temperaturen på sensorn överstiger eller understiger vissa värden.

VeraPoc

Sensorn ESP8266-NR2 i Vera gränssnittet

 

Genom att aktivera loggning i Datamine inne i Vera:n får jag en snygg graf från sensorn.

DataMineGraf

 

Lödning

För att minska storleken på projektet lödde jag kablar och monterade allt runt sensorn (ESP8266-NR2), kommer att montera nästa sensor på ett kretskort och köra en DS18B20 utan hölje för att minska storleken på bygget. Sensorn skickar temperatur och wifi styrka var 300:e sekund, det borde ge en snittförbrukning på ca 3mA (beroende på hur pass bra koden är).

ESP8266-NR2

Bygget ovan är en ESP8266 12E med en DS18B20 temperatursensor och en 4.7K ohms resistor, det är allt som behövs för temperatursensorn.

Esp8266-Nr2-Conf1

Efter lödning och lite eltejp på två AA batterier, väntar nu på batterihållare och låda.

 

Förbrukning

Enligt ett förbrukningsdiagrammet jag hittade på internet ska ESP8266 12E dra ca 10uA i viloläget! Vilket gör att två AA batterier på 2800mA räcker länge om sensorn aldrig väcks. På samma sida gjordes en uträkning där ESP8266 drar ca 3mA i snitt om sensorn väcks var 300 sekund. Detta innebär att ju mer optimerad kod som körs desto kortare stund behöver sensorn vara vaken och desto längre kommer batteriet att hålla.

PowerConsumption
Bilden hämtad från bbs.espressif.com

2016-01-13 – 20.00 – Uppdaterad mjukvaran till V1.1 med stöd för Thingspeak!

Har just uppdaterat mjukvaran på ESP8266-NR2 och bytt namn på den till ESP8266-NR3 vilket nu gör att enheten rapporterar data till tre olika destinationer varje gång den vaknar.

ESP8266-NR3 loggar nu till:

  • Min hemautomations kontroller Vera, vilket gör att jag kan koppla scenes och övervakning på temperaturen.

Esp8266-NR3-Vera

  • Thingspeak online webbtjänst (grafen nedan är live) Kan dock saknas poster ibland eftersom jag uppdaterar mjukvaran ofta just nu!

Utöver det så loggar den även till min loggserver.

ESP8266-NR3-Thingspeak

Orsaken till att ESP8266-NR1 rapporterar ERROR är att DHT11 inte klarar att drivas stabilt på spänningar lägre än 3.3V. Luvan kom med en idé om att testa en stepup modul på den, väntar på leverans av den nu. Jag låter ESP8266-NR1 fortsätta skicka ändå för att få ett vettigt estimat på batteritiden. 

 

Batteritiden verkar vara riktigt bra! har kört ESP8266-NR1 sedan den 10:e januari fram tills nu, den rapporterar varje minut och vilar en minut. Eftersom jag har lagt med en check på att värdet från DHT11 måste vara OK annars försöker den igen om 4 sekunder. Dvs just nu går den aldrig riktigt ner i viloläge och skickar var 4:e sekund eftersom DHT11 får felande temperaturer.  Fram tills nu när den stannade 2016-01-13 23:16:43.067 har den skickat data 16793 ggr!  Vid 2.28V slutade esp8266-NR1 att skicka data.

  • 2016-01-10 13:08:36.450 | XXX.XXX.XXX.XXX | ESP8266-NR1 | T: | 22 | H: | 36
  • 2016-01-13 23:16:43.067 | XXX.XXX.XXX.XXX | ESP8266-NR1 | ERROR

Rapportera Batteristatus (2016-01-27)

Har nu lyckats få en funktion som gör det möjligt att beräkna batteriets kapacitet, detta görs genom att bygga en spänningsdelare med hjälp av två resistorer. Detta gör det möjligt att omvandla spänningen som enheten matas med ner till 1V (eftersom enheten enbart har en analog port som stödjer 0-1V)

I mitt fall valde jag att nytta 6V för att mata enheten, jag nyttjar en ”ms1117” som tar ner spänningen till 3.3V vilket gör det möjligt nyttja ett batteripack med 4 AA batterier. Vid tester kunde jag köra ms1117 ända ner till 3.9V innan ESP8266 började bete sig konstigt. Enligt databladet för ms1117 bör spänningen man driver enheten med vara 1.5 – 2V högre än 3.3v.

Jag hittade en bra artikel på esp8266-projects.com hur man bygger en spänningsdelare och hur den sedan implementeras i ESP8266, exemplet på sidan visade tyvärr LUA kod.

I exemplet på sidan räknade han fram en spänningsdelare på 4.3V, jag behövde tyvärr en på 6V.

Detta blev mina värden   470K ohm (R1) 100k Ohm (R2)  vilket gav mig ca 1V mellan  R2 och jord.

Funktionen nedan läser av A0 (dvs ADC porten) och beräknar värdet utifrån det.

Jag uppdaterade sedan funktionen som skickar till mitt loggningsprogram och får nu följande information där (utöver det som skickas till Thingspeak och Vera)

LoggGraf

  • Enhetsnamn = Namnet på enheten som skickar datat
  • Firmware       = Version av mjukvaran på ESP, detta för att se vilken nivå enheten kör med i framtiden.
  • Temperatur   = Temperatur som avlästes med hjälp av temperatursensorn.
  • Totaltid          = Anger hur många ms sensorn har varit vaken, kan vara bra för att se om koden blir bättre eller sämre med nyare firmware.
  • Batterispänning = Skriver nu ut aktuell batteritid beräknat med: Avläst värde (mellan 0 – 1024) * 6V / 1024

Kommer att försöka lägga så batteristatus även rapporteras till Vera och eventuellt Thingspeak.

Batteripackskoll  BatteripackInkopplat

Vid obelastat test hade 4 gamla batterier 5.49V. När batteripaket kopplade in rapporterade ESP8266 5.30V till loggservern, vilket jag tycker verkar rätt så ok.

Tyvärr har ms1117 kretsen jag nyttjar en lysdiod som alltid lyser, detta kommer att dra onödigt med batteri och förkorta batteritiden enormt, kommer att demontera den så fort jag hinner.

 

(Skriver den just nu 2016-01-15) GUIDE: Koppla och ladda upp kod till ESP8266

Jag kommer att fylla på den här guiden med mer information så fort jag hinner! All kod finns uppe på Github så det är bara att spinna vidare på den 🙂

Pris för bygget är ca 40 – 50kr

  • Wifi Sensor: ~20kr
  • Tempsensor: ~10kr
  • Resistor 4.7k ohm ~10.00 kr (för 100st)
  • Två batterier ~15kr

 

[poll id=”16″]

 

I koden har jag valt att köra DS18B20 på port 4, i övrig finns alla variabler som ska ändras samlat i toppen av koden, dvs man behöver inte ändra mer än variablerna beskrivna nedan för att få igång en ESP8266-12E själv.

För att sensorn sedan ska vakna efter en deep sleep så behöver sensorn ha GPIO 16 kopplas ihop till RST pinnen. I övrigt är sensorn hanterad som vanligt med Arduino ISE

Koden för Version 1.2 finns nu på Github!  – Hämta koden här

 

Guide: Aktivera loggning till veran

Börja med att gå igenom guiden: virtuell temperatur sensor i vera, skapa temperatursensorn.

 

Kvar att göra:

  • Ladda upp koden på GithubCheck – 2016-01-13
  • Fixa stödet till Thingspeak – Check – 2016-01-13
  • Optimera kodenCheck 2016-02-18 (v1.5 av koden)
  • Mät strömförbrukning vid send och vid sleep.Check – 2016-02-18
  • Paktera enheten snyggt.
  • Beräkna batteritiden.Check – 2016-01-17
  • Ordna en Guide för att bygga detta. Check – 2016-01-16
  • Ordna en komponentlista. – Check 2016-02-18
Ser du nått som saknas eller har idéer skriv gärna en kommentar i så fall!

// Ispep

13 reaktioner på ”Wifi temperatursensor till Vera och thingspeak”

  1. Pingback: WIFI temperatursensor till Vera och Thingspeak |

    1. Intressant länk, vore inte så tokigt att kunna förebygga att blommorna dör av där hemma 🙂

    1. Det finns nog stora möjligheter att optimera batteritiden mer än jag gjort nu genom att minska tiden som wifi behöver vara aktiverat i min kod. samt köra en dc-dc booster för att få ur mer energi ur batterierna.

      // Ispep

  2. Pingback: Projekt – ESP8266 Wifi Tempertursensor |

  3. Jag köpte följande paket ifrån eud.dx.com

    http://eud.dx.com/product/esp-12-esp8266-serial-wifi-wireless-module-w-pcb-antenna-adapter-board-for-arduino-raspberry-pi-844379296#.VszGYMfkze8

    I den ingår en 3.3V regulator, XC6206P332PR, som jag har fått relativt god batteritid på med 6V, 4xAA batterier. Den mäter temp och Rh med en DHT22 och rapporterar var 10:de minut till min Vera och thingspeak. Mäter och rapporterar även batterispänning och på 4 dygn har spänningen sjunkit från 6V till 5.7V. Får se hur länge den lever…

  4. Pingback: Z-UNO är ett kort med Z-wave stöd! |

  5. Pingback: A6 – Chip med gsm stöd! |

  6. Väldigt intressant, detta är precis vad jag vill göra. Tänkte mäta fuktigheten i grunden. Fungerar koden med en DHT22?

    1. Hej
      Jag har testat med DHT11, så det är fullt möjligt att använda den med till en ESP, det kräver lite ändring i koden .
      Men DHT:n hade problem med felande temperaturer när batteriet börjar närma sig ~3.1V, och jag har för mig att den bara gick ner till 0 grader :/

      Den sista färdiga sensorn jag byggde med ESP8266 finns under den här sidan:
      https://www.automatiserar.se/solcell-och-lifepo4-med-esp8266-12e/
      Kommer att uppdatera den snart för att fungera med MQTT, väntar även på i2c sensorerer som ska dra ytterst lite energi, den ska även ha stöd för luftfuktighet om jag inte mins fel 🙂

      // Markus

  7. Pingback: Allt om Vera och VeraSecure |

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *