V minulém návodu, který byl věnovaný vývojové desce WeMos D1 s WiFi modulem ESP8266, byly vysvětleny základy práce s tímto zajímavým modulem. Pokud tedy potřebujete nejprve nastavit a oživit svůj WiFi modul ESP8266, podívejte se nejdříve na předchozí návod.
V tomto návodu si vyzkoušíme, jak nahrát naměřené výsledky pomocí Arduina na Internet a pohodlně si je prohlížet. Existuje velké množství webových stránek, které poskytují uživatelům zdarma prostor pro jejich data, přičemž pro tento návod byla vybrána stránka Thingspeak.com. Na této stránce můžeme zdarma nahrát až 3 miliony záznamů za rok a to je pro obyčejné projekty absolutně dostačující. Asi největším omezením neplaceného účtu je omezení na aktualizaci dat, kdy je možné zapsat nové záznamy v intervalu alespoň 15 vteřin.
Prvním krokem tedy bude registrace na stránkách Thingspeak. Pro registraci stačí otevřít v prohlížeči odkaz https://thingspeak.com a zde kliknout na tlačítko „Get Started For Free“.
Po kliknutí na zmíněné tlačítko se dostaneme na přihlašovací obrazovku. Zde klikneme na tlačítko „Create Account“ pro vytvoření nového účtu. Pokud již účet máte, přihlaste se a můžete přeskočit další kroky v registraci.
Po kliknutí na tlačítko pro vytvoření nového účtu se nám otevře formulář, kde stačí pečlivě vyplnit svůj email, unikátní název účtu a heslo, které musí obsahovat alespoň 8 znaků, jedno malé a jedno velké písmeno. Následně je nutné ještě vyplnit zemi, jméno a příjmení, ale jméno a příjmení si můžeme vymyslet. Po vyplnění všech údajů stiskneme tlačítko „Continue“.
Pokud jsme vyplnili správně všechny údaje, bude nám zaslán aktivační email. Tento je nutné otevřít a potvrdit v něm registraci. Stačí tedy v doručeném emailu kliknout na odkaz „Verify your email“. Po potvrzení emailové schránky se přepneme zpět do prohlížeče a stiskneme opět tlačítko „Continue“.
Nyní jsme se dostali na hlavní stránku našeho vytvořeného profilu. Jako další krok si vytvoříme svůj vlastní kanál, do kterého budeme z Arduina posílat data. Klikneme tedy na zelené tlačítko „New Channel“.
Po kliknutí na tlačítko „New Channel“ se nám otevře formulář, ve kterém stačí vyplnit několik hlavních údajů. Jako první si nazveme libovolně svůj kanál v kolonce „Name“. Druhým krokem si jednoduše vybereme počet sledovaných veličin, kterých může být maximálně 8. V ukázkovém případě jsem zvolil dvě pole, které jsem si rovnou nazval „Cas“ a „Analog“. Po vyplnění všech polí už stačí jen na konci stránky potvrdit formulář tlačítkem „Save Channel“.
Po uložení formuláře již vidíme před sebou dva jednoduché grafy, prozatím prázdné, pro námi vytvořené veličiny. Abychom je mohli začít plnit daty, přepneme se na záložku „API Keys“ pro získání našeho zapisovacího API klíče pro Arduino.
V záložce API Keys je pro nás důležitá první kolonka, v které se nachází zapisovací API klíč, který najdeme pod nápisem „Write API Key“. Tento API klíč si zkopírujeme a vložíme do ukázkového programu.
Ukázkový program obsahuje na svém začátku připojení potřebné knihovny, po kterém následuje vytvoření proměnné se zmíněným zapisovacím API klíčem. Dále vytvoříme proměnné s přihlašovacími údaji na WiFi síť a také proměnnou s adresou serveru Thingspeak. Poté provedeme inicializaci WiFi modulu ESP8266 v módu klienta. Podprogram setup na svém začátku obsahuje zahájení komunikace po sériové lince a zahájení bezdrátové komunikace s WiFi routerem skrze zadané přihlašovací údaje. Následně se dostaneme do while smyčky, kde kontrolujeme každých 500 milisekund, jestli jsme se úspěšně připojili. Po úspěšném připojení vytiskneme po sériové lince název WiFi sítě a přidělenou IP adresu. Nekonečná smyčka loop obsahuje jako první vytvoření proměnných s měřenými veličinami a zároveň jejich načtení, kdy v této ukázce je použit čas od spuštění Arduina a hodnota analogového pinu. Jako další následuje připojení na server Thingspeak. Při úspěšném připojení si jako první vytvoříme proměnnou, do které uložíme veškeré údaje. Všimněte si například části zprávy "&field1=" a String(cas) – tyto dva řádky zařídí, že do prvního grafu Cas se zapíše údaj z proměnné cas, který je převeden na text (proměnná typu String). Pokud bychom si chtěli přidat více polí, stačí nakopírovat dva zmíněné řádky a pojmenovat je v pořadí jako třetí údaj (field3). Po vytvoření celé zprávy ji pomocí funkce client.print odešleme na server Thingspeak, kdy jako přihlašovací údaj slouží náš API klíč. Po odeslání už jen po sériové lince vytiskneme naměřené údaje, ukončíme spojení se serverem a následně vyčkáme 30 vteřin do nového odeslání dat.
// ESP8266 Thingspeak ukázka // připojení potřebné knihovny #include <ESP8266WiFi.h> // vytvoření proměnné s naším API klíčem z Thingspeak - viz návod String apiKlic = "Y0HEUCTNPUMY704G"; // vytvoření proměnných s názvem WiFi sítě a heslem const char* nazevWifi = "nazev"; const char* hesloWifi = "12345"; // vytvoření proměnné s názvem serveru Thingspeaku const char* server = "api.thingspeak.com"; // inicializace WiFi v módu klienta WiFiClient client; void setup() { // zahájení komunikace po sériové lince Serial.begin(9600); // zahájení bezdrátové WiFi komunikace s připojením // na router skrze zadané přihl. údaje WiFi.begin(nazevWifi, hesloWifi); // čekání na úspěšné připojení k routeru, // v průběhu čekání se vytiskne každých // 500 milisekund tečka po sériové lince while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Pripojeno k WiFi siti "); Serial.println(nazevWifi); Serial.print("IP adresa: "); Serial.println(WiFi.localIP()); } void loop() { // vytvoření proměnných pro načtení hodnoty analogového // pinu a času od spuštění Arduina int cas = millis()/1000; int analog = analogRead(A0); // připojení na server Thingspeak pro odeslání dat if (client.connect(server,80)) { // vytvoření zprávy, která bude odeslána na Thingspeak // každé pole je označeno jako "field" + pořadí pole, // je nutné každý údaj převést na String String zprava = apiKlic; zprava +="&field1="; zprava += String(cas); zprava +="&field2="; zprava += String(analog); zprava += "\r\n\r\n"; // po vytvoření celé zprávy ji odešleme na server Thingspeak // včetně našeho API klíče client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: "+apiKlic+"\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(zprava.length()); client.print("\n\n"); client.print(zprava); // vytištění informací po sériové lince o odeslání na Thingspeak Serial.print("Cas od spusteni Arduina: "); Serial.print(cas); Serial.print(" vterin a analogovy pin A0: "); Serial.println(analog); Serial.println("Udaje odeslany na Thingspeak."); } // ukončení spojení se serverem Thingspeak client.stop(); // nyní musíme vyčkat minimálně 15 vteřin do dalšího odeslání dat, // 15 vteřin je omezení Thingspeaku, v tomto příkladu je nastaven // interval 30 vteřin Serial.println("Pauza pred dalsim odeslanim dat."); delay(30000); }
Po nahrání ukázkového kódu do Arduino desky s modulem ESP8266 dostaneme například tento výsledek:
Pokud bychom si chtěli zobrazené grafy ještě dále upravit, je možné stisknout ikonu tužky u každého grafu. Poté se nám objeví dialogové okno s možnostmi úprav našeho kanálu. Můžeme si pojmenovat graf včetně obou os, měnit barvu kreslené čáry a pozadí a podobně. Důležitým parametrem je také počet vypsaných údajů „Results“, který je na začátku nastaven na 60.
Na serveru Thingspeak se dají také vytvořit další kanály v nabídce „Channels – My Channels“. Pokud bychom si chtěli dodatečně změnit počet měřených veličin, jejich názvy a ostatní údaje, můžeme je měnit na záložce „Channel Settings“.
Seznam použitých komponent:
Je možné také zakoupit další vývojové desky s ESP8266 nebo ESP modul samotný. Při programování stačí použít příslušný název desky nebo možnost Generic ESP8266. A pokud používáte samotný modul, je nutné ho propojit s počítačem skrze UART-USB převodník kompatibilní s napětím 3,3 V.
http://dratek.cz/arduino/1235-nodemcu-lua-esp8266-ch340-wi-fi-1458422121.html
http://dratek.cz/arduino/911-internet-veci-je-tady-tcp-ip-wifi-esp8266-1420990568.html
http://dratek.cz/arduino/1230-esp8266-wifi-vyvojova-deska-1458416459.html
http://dratek.cz/arduino/1162-internet-veci-nodemcu-lua-wi-fi-esp8266-cp2102-1449950921.html
http://dratek.cz/arduino/1455-esp8266-wifi-modul-esp-07-bezdratovy-1478175998.html
http://dratek.cz/arduino/1352-esp8266-bezdratovy-modul-esp-12f-ap-sta-1466634666.html