ESP 8266 a ukládání dat na Thingspeak
ESP 8266 a ukládání dat na Thingspeak
Existuje velké množství webových stránek, které poskytují zdarma prostor pro data, jako první jsem použil 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.
Modul přímo s ESP01 a měřičem teploty a vlhkosti DHT11 mám z Aliexpresu za necelých 60Kč, samotný DHT11 stojí cca 16Kč, modul DHT11 na plošném spoji s kablíčky sotjí cca 20Kč, takže je úplně jedno co si pořídíme.



Na tomto obrázku je modul s ESP 01, DHT 11 , obsahuje také reset tlačítko. Sketch naloadovaný do ESP01 odesílá data na server Thingspeak po jedné minutě. Vpravo nahoře je nastavitelný převodník DC-DC za cca 12V na napětí 5v, 3,3V apod. které lze pomocí tlačítek nastavit, výstup zobrazuje displej, cena cca 70Kč.

Kód je zde:

// ESP8266 to Thingspeak
// Upravil GRM - funkční sketch
// připojení potřebných knihoven
#include
#include

DHT dht2(2,DHT11); //pin GPIO 02

// vytvoření proměnné s naším API klíčem z Thingspeak
String apiKlic = "74GRMGRMGRMGRME4"; // neplatna ukazka
// vytvoření proměnných s názvem WiFi sítě a heslem
const char* nazevWifi = "grm";
const char* hesloWifi = "grmgrmgrm";
// 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 z DHT11
int teplota = (dht2.readTemperature( ));
int vlhkost = (dht2.readHumidity( ));

// 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(teplota);
zprava +="&field2=";
zprava += String(vlhkost);
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("Teplota: ");
Serial.print(teplota);
Serial.print(" C a Vlhkost: ");
Serial.print(vlhkost);
Serial.println(" % ");
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 60 vteřin
Serial.println("Pauza pred dalsim odeslanim dat.");
delay(60000);
}


Měření teploty, vlhkosti a PIR čidlo

Na tomto obrázku je zapojení ESP 01 ke kterému jsou připojeny dvě čidla DHT 11 na GPIO 02 a PIR čidlo HC-SR501 cca za 18Kč. ESP 01 je umístěna na redukci pro Breadboard. Zapojení má resetovací tlačítko a přepínač, kterým připojujeme při programování GPIO 0 na GND. Připojen je též převodník USB-TTL UC-340G. Napájení zajišťuje napájecí modul por Breadboardy.

Sketch odesílá v pravidelném rytmu údaje o teplotě a vlhkosti a v okamžiku, kdy sepne čidlo pohybu, odešle informaci také.....vše vidíme v samostatných grafech.

A zde je kód:

//esp01 with pir, t, h,ACpowered
//connect all to 5V, no need V shifter
//DHT to pin 2 - digital
//pir to pin 0 - digital

#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11

#include

//change this with the pin that you use
int t=20;

int pir;
int pinpir=0;
int pirMax;

String apiKey = "GRMGRMJ46PCZFMY"; // write key thingspeak
const char* server = "api.thingspeak.com";

const char* ssid = "grmssid"; // wifi
const char* password = "grmheslo";

DHT dht(DHTPIN, DHTTYPE,20);
WiFiClient client;

void setup() {
Serial.begin(115200);
delay(10);
dht.begin();

WiFi.begin(ssid, password);

}

void loop() {

pirMax=0;
for (int i=0; i < t; i++){

pir= digitalRead(pinpir);

if(pir>pirMax)pirMax=pir;
delay(1000);
}


pir=pirMax;

float h = dht.readHumidity();
float t = dht.readTemperature();


if (client.connect(server,80)) { // "184.106.153.149" or api.thingspeak.com
String postStr = apiKey;
postStr +="&field1=";
postStr += String(t);
postStr +="&field2=";
postStr += String(h);
postStr +="&field3=";
postStr += String(pir);
postStr += "\r\n\r\n";

client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);

}
client.stop();

// thingspeak needs minimum 15 sec delay between updates
delay(8000);
}
Přilášení
Jméno

Heslo



Zapoměli jste heslo?
Pro zaslání nového
Klikněte sem.
Doporučuji
Hledáte spolehlivé místo pro Vaše webové stránky? ONEbit hosting - garantované webhostingové služby se zárukou spokojenosti
Dynamic DNS for your domain
Kdo je On-line
Hosté On-line: 3

Členové On-line: 0

Registrovaní členové: 5
Nejnovější člen: gerisa
Navigace
Domů
Články
Download
Odkazy
Kontakt
hledej
Powered by PHP-fusion. Designed by Si-Fusion.