ESP8266 och Thingspeak 100% ”Mobilt”

Jag har nu kört ThingSpeak några dagar och insett många av fördelarna med att skicka data direkt till internet med enkla http kommandon. Jag bestämde mig för att ta WIFI projekten baserade på ESP8266 ett steg längre och bygga nått riktigt MOBILT!

Resultatet blev följande:

WIFI sensor (ESP8266) med temperatur & luftfuktighet (DHT11) och en mobiltelefon som WIFI hotspot. Vilket gör det möjligt att köra den överallt! (Det går att köra vanligt WIFI med)

MobiltIOT

Detta är VÄLDIGT billigt sätt att övervaka olika fastigheter utan krav på fast internetuppkoppling eller specialprogram. Just den här telefonen klarar upp till 10 samtidiga enheter, vilket gör det möjligt att koppla upp WIFI sensorer i många olika rum, och sedan rapporterar direkt till internet. Jag kommer att lägga till fler typer av sensorer allt eftersom jag bygger dom 🙂

Jag har gjort en guide på allt som behövs för att själv bygga detta själv nedan

* Detta är väll värt ett Gilla / Dela *

 

Jag skickar data lite sporadisk eftersom jag kopplat just den här sensorn till en mobiltelefon för tillfället. Det skulle gå lika bra att koppla upp den på WIFI hemma och skippa mobiltelefonen helt om man så önskar.

graferna

Data som skickats via mobilnätet

Bakgrund

Tidigare köpte jag ett kontantkort till mitt sms projektet (Vera). Jag fick en telefon på köptet utan extra kostnad (Sony XPERIA med Android), den har inte använts alls utan legat och samlat damm… Antar att det är fler än jag som har mobiltelefoner liggandes (vilket kanske är tur nu).

Eureka

Jag insåg att telefonen har ju allt som behöver för att göra en mobil övervakning med inbyggd batteribackup! Med den här lösningen går det att övervaka sommarstugor, jaktstugor osv. Allt som krävs att det finns GSM / Edge eller bättre för att transportera data till Internet. Jag kommer att bygga fler sensorer och spinna vidare på den här lösningen (Observera att det går lika bra med det vanligt WIFI hemma med)

Nedan är ALLT som behövs för att själv bygga detta 🙂

  • DHT11
  • ESP8266
  • Mobiltelefon + kontantkort med datatrafik
  • LD1117V33 Transistor.
  • TTL USB2.0 To 6Pin CH340G Converter

 

Steg för steg hur jag gjorde:

Den första delen av guiden beskriver hur jag laddade in stöd för ESP8266 direkt i Arduino verktyget.

1 – Ladda hem Arduino IDE (för tillfället ARDUINO 1.6.5)

Starta Arduino IDE och gå till Inställningar

ArduinoIde-1

 

2 – Lägg nu till sökvägen till http://arduino.esp8266.com/stable/package_esp8266com_index.json enligt bilden nedan. Efter du tryckt på ”OK” och fått detta sparat, starta om Arduino programvaran för att vara säker på att konfigurationen ska laddas in.

ArduinoIde-2-1

3 – För att hämta hem komponenterna till Arduino IDE gå till: Verktyg \ kort (det kan stå nått annat än det gör för mig, exempelvis Arduino Uno) \ Bords Manager

ArduinoIde-4

 

4 – Om allt har gått bra så bör du längre ner i listan nu se: ESP8266 by ESP8266 Community, välj där installera ( ca 200 MB kommer att laddas hem)

del2 - aktivera JSON via bortmanager

 

5 – KLART!  Nu har du möjlighet att köra i stort sett all din Arduino kod på ESP8266 (inte allt men mycket!)

 

 

Del 2 – Skapa ett konto hos ThingSpeak genom att följa guiden

 

DEL 3 – Ladda in programmet till ESP8266

Hämta koden från: http://www.arduinesp.com/arduinesp. Observera att jag inte har skrivit någon del av koden, utan jag har bara nyttjat det dom delade 🙂

Hämta även DHT11 koden om du inte har den (finns här: DHT11.zip), packa upp den i din Arduino mapp under ”libraries”, i mitt fall blev sökvägen: \arduino-1.6.5-r2\libraries\DHT-sensor-library-master

När detta är klart koppla in din ESP8266 enligt följande skiss med hjälp av en

 

Uppkoppling:

ESP8266 nyttjar inte 5V som Arduino och många andra enheter, därför är det viktigt att USB TTL programmeraren som används konverterar signalen från RXD och TXD ner till 3.3V. Det går att använda en Arduino som programmerare med (förklarar dock inte hur man gör det här). ESP8266 kan dra upp till 200mA vilket är för mycket för USB porten, enheten behöver därför matas från en separat strömmatning. Jag nyttjar en LD1117V33 spänningsregulator för att kunna köra spänningar mellan ~3.7V – 15V.

 

US232

TTL USB2.0 To 6Pin CH340G Converter

ESP8266-Koppling

Layout på ESP8266 (sett uppifrån) 

Koppla upp enheten.

  • USB TTL programmeraren => JORD
  • EPS8266 – RXD => TXD (usb TTL programmeraren)
  • ESP8266 – TXD => RXD (usb TTL Programmeraren)
  • ESP8266 – GND => JORD
  • ESP8266 – VCC => 3.3V
  • ESP8266 – RST => 3.3V
  • ESP8266 – CH_PD => 3.3V
  • GPIO0  – JORD (VID programmering, kopplas bort efter programmering)

 

Ladda upp konfiguration till din enhet:

När du öppnat Arduino IDE:n så är det bara att klistra in koden

 

Editera följande:

  • apiKey: Den du får efter att du registrerat dig och skapat en kanal på ThingSpeak
  • ssid: Ditt Wifi hemma eller det som delas från mobilen.
  • password: Lösenordet för att få åtkomst till ditt WIFI
  • field(X): (byt ut X mot den kanal du vill skicka data till på Thingspeak, 1-8 är giltigt)

Exempel på hur det ser ut i koden.

String apiKey = "DinAPIKEY-Thingspeak";
const char* ssid = "ssid";
const char* password = "password";
           postStr +="&field1=";
           postStr += String(t);
           postStr +="&field2=";
Innan du skickar koden till din ESP8266, koppla på en extern strömmatning med GPIO0 mot jord (Detta sätter ESP8266 i flash läge)

Kontrollera i menyn att du fortfarande har rätt kort valt samt att ”PORT” stämmer med com porten din enhet hamnade på.

ArduinoIde-3

 

Nu är det bara att ladda upp koden till din esp8266, fungerar allt ok så bör en blå diod blinka på ESP8266. Blinkar inte den så är det något som är felkopplat eller enheten matas med för lite ström. Jag missade att koppla in Jord en gång, vilket fick enheten att lysa svagt röd och bli riktigt varm!

LaddaUppKod

 

Nu är det bara att koppla upp enheten enligt följande:

 

ESP8266 – GND => JORD

ESP8266 – VCC => 3.3V

ESP8266 – RST => 3.3V (på bilden är den kopplad på annat sätt) Jag har dock kör den till 3.3V och det fungerar bra.

ESP8266 – CH_PD => 3.3V

GPIO2  –  Pinne två på DHT11

http://www.arduinesp.com/thingspeak

 

Det va allt! Nu har du byggt en WIFI sensor som rapporterar data till ThingSpeak! (Köper man ESP8266 från Ebay så kostar dom ca 20kr st)

 

 

Källor och bilder:

  • STORT tack tillhttp://www.arduinesp.com/thingspeak” för att ni delar med er av kod och bilder!
  • http://www.arduinesp.com/thingspeak – ALL Kod i projektet kommer från den sidan, jag tar inte cred för den alls utan uppskattar att fler delar sin kod 🙂

 

Tänk på att kontrollera alla kopplingar och bekräfta allt du läser nån gång extra! Jag har gått igenom detta några gånger och tycker att allt ser ok ut.

// Ispep

4 reaktioner på ”ESP8266 och Thingspeak 100% ”Mobilt””

  1. Intressant!
    Jag hittar dock ett par små fel.

    Under rubriken uppkoppling skriver du:
    ”ESP8266 kan dra upp till 200mAh vilket är för mycket för USB porten”

    Det skall stå 200mA
    Ampere är ett mått på strömmen.
    Ah betyder AmpereHours = amperetimmar dvs. ett mått på energi (t.ex. energiinnehållet i ett batteri).

    Under samma rubrik skriver du:
    ”Jag nyttjar en LD1117V33 Transistor för att kunna köra spänningar mellan ~3.7V – 15V.”

    LD1117V33 är en spänningsregulator, det enda den har gemensamt med transistorer är att den är byggd i en TO220 kapsel (och så innehåller den ett antal transistorer).

    Vänliga hälsningar
    Tony

  2. Stort tack Tony för att du tog dig tid att svara på felen du hittade! Det uppskattar jag enormt mycket. Ser du mer saker som du inte tycker stämmer så hör av dig direkt så korrigerar vi 🙂

    Håller för tillfället på att testa ESP8266-12E, kommer snart några roligt byggen baserat på det med.

    // Ispep

  3. Hej Automatiserar!

    När jag kopierar in texten nedan och kompletterar koden i länken ni angett får jag ett felmeddelande då koden ska verifieras, felmeddelandet lyder: ’postStr’ does not name a type. Vad göra? 🙂

    postStr +=”&field1=”;
    postStr += String(t);
    postStr +=”&field2=”;

  4. Kontrollera så du har placerat detta runt rad 59

    String postStr = apiKey;
    postStr +=”&field1=”; // fält 1 i thingspeak
    postStr += String(t);
    postStr +=”&field2=”; // fält 2 i thingspeak
    postStr += String(h);
    postStr += ”\r\n\r\n”;

    Verkar även som att det är en bugg i Arduino 1.6.5 nu… när man kompilerar så dyker följande upp :
    d:\ivan\projects\arduinoesp\toolchain\dl\esp-newlib\build\xtensa-lx106-elf\newlib\libm\math/../../../../../newlib/libm/math/w_sqrt.c:63: undefined reference to `__ieee754_sqrt’
    collect2.exe: error: ld returned 1 exit status

    står lite om hur man ska lösa det här https://github.com/esp8266/Arduino/issues/612 ( har själv inte hunnit testa detta )
    // Ispep

Lämna en kommentar

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