DWEET.IO + DASDUINO CONNECT

Dasduino CONNECT s muškim headerima (ESP8266)-Dasduino & Arduino

UVOD

U ovom tutorijalu opisat ćemo kako jednostavno možemo sve vrijednosti što mjerimo senzorima (vlaga,temperatura) spremiti u oblak na internetu te im pristupati s drugih uređaja putem interneta. Za mjerenje i slanje podataka koristit ćemo Dasduino Connect, a servis koji nam omogućuje spremanje podataka je dweet.io.

 

ŠTO JE DWEET.IO?

Dweet.io je servis na internetu koji nam omogućuje jednostavno spremanje podataka s našeg mikrokontrolera koji je povezan na Internet. Ovaj servis je jednostavan zato što ne zahtijeva nikakvu registraciju i prijavu samo jednostavno pošaljemo podatke i oni su spremni za pregled, jedini problem je što svatko može doći do naših podataka. Kada je Dasduino Connect povezan na Internet jednostavno ga samo trebamo usmjeriti na dweet.io stanicu i u URL dodati naziv varijable koju želimo spremiti na servis. Podaci se na stranici čuvaju jedan dan i to samo zadnjih 5 poslanih dweetova( skup podataka koji se pošalje u jednom slanju). Ako trebamo da podaci ostanu duže sačuvani možemo koristiti opcije koje se plaćaju.

GRAFIČKI PRIKAZ PODATAKA

Dweet.io nam omogućuje i grafički prikaz podataka koje šaljemo s naših senzora. Kako bi dobili grafičku prikaz podataka koje smo poslali na dweet.io potrebno je samo u internet pretraživač unijeti sljedeću adresu https://dweet.io/follow/NašeIme (kako u primjeru za ime koristimo DasduinoConnect onda će naš URL biti https://dweet.io/follow/DasduinoConnect te će nam se grafički prikazati podaci koje smo poslali na dweet.io pod imenom DasduinoConnect
Primjer grafičkog prikaza temperature koju šaljemo na dweet.io s Dasduino Connectom je dan na slici.

KAKO POVEZATI?

Za primjer ćemo koristiti DHt11 senzor temperature i vlage, te ćemo izmjerene vrijednosti slati na dweet.io . Povezivanje DHT11 senzora na Dasduino Connect je vrlo jednostavno jer na senzor trebamo povezati +3.3V na Vcc pin, GND na GND pin te DATA pin na pin 5 Dasduina. Pinout za DHT11 i DHT22 senzore je prikazan na slici, a kao što vidimo imaju isti raspored što nam omogućuje jednostavnu zamjenu ako je potrebno(samo u kodu treba promijeniti koji senzor koristimo).

ARDUINO KOD

Za ovaj primjer koda trebamo DHT biblioteku, te trebamo dodati Dasduino Connect u Arduino IDE prema tutorijalu. Ako ne znate instalirati biblioteku pogledajte tutorijal koji opisuje instalaciju biblioteke.
Na slici vidimo kako izgleda kada podatke pošaljemo na dweet.io. Crvenim je označeno gdje nam piše ime uređaja(koje smo odabrali u kodu) s kojega šaljemo podatke.
Žuti pravokutnik prikazuje dio u kojemu je zapisano kada su podaci poslani, te zeleni prikazuje podatke koje smo poslali. možemo vidjeti i kako je spremljeno samo posljednjih 5 poslanih podataka. U kodu smo za ime odabrali DasduinoConnect, ali to možemo promijeniti te onda prilikom pretraživanja u internet pregledniku trebamo unijeti odgovarajuće ime koje smo odabrali.

//uključujemo ESP8266WiFi biblioteku koja nam omogućuje rad s WiFijem na ESP8266 modulu
#include "ESP8266WiFi.h"
//uključujemo DHT biblioteku koja nam omogućuje rad s DHT senzorom temperature
#include "DHT.h"
//postavljamo SSID i lozinku mreže na koju se spajamo
const char* ssid = "SSID_mreže";
const char* password = "Lozinka";
//definiramo pin na koji spajamo DHT senzor
#define DHTPIN 5
//definiramo vrstu senzora koju koristimo(DHT11 ili DHT22)
#define DHTTYPE DHT11
//Konstruktor za DHT biblioteku
DHT dht(DHTPIN, DHTTYPE, 15);
//postavljamo host na koji šaljemo podatke
const char* host = "dweet.io";
void setup() { 
  //započinjemo serijsku komunikaciju(115200 bauda)
  Serial.begin(115200);
  delay(10);
  
  //započinjemo komunikaciju s DHT senzorom
  dht.begin(); 
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  //povezujemo se na mrežu čije smo podatke unijeli na početku
  WiFi.begin(ssid, password);
  //sve dok se ne povežemo izvodi se while petlja kako ne bi nastavili daljnje izvođenje koda dok nismo povezani na mrežu
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  //Na serial monitor ispisujemo da smo povezani, te ispisujemo IP adresu
  Serial.println("");
  Serial.println("WiFi connected"); 
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
void loop() {
  Serial.print("Connecting to ");
  Serial.println(host); 
  //koristimo WiFiClient klasu da kreiramo TCP vezu
  WiFiClient client;
  const int httpPort = 80;//postavljamo port na 80
  //povezujemo se na host(stranicu koju smo unijeli na početku)
  //ako se nismo uspjeli povezati vraćamo se na početak void loop-a
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }
  
  //spremamo vlagu sa senzora u varijablu h
  int h = dht.readHumidity();
  // spremamo temperaturu sa senzora u varijablu t
  int t = dht.readTemperature();
  
  //šaljemo zahtjev na host te u tom zahtjevu mu šaljemo temperaturu i vlagu sa senzora
  //ako želimo poslati još neki parametar na host trebamo dodati u zahtjev sljedeću liniju
  //iza String(h) + dodajemo( "&naziv_parametra=" + String(varijabla)+) 
  //na kraju poslije svih varijabli mora biti " HTTP/1.1\r\n" ...
  //u internet preglednik upisujemo https://dweet.io/get/dweets/for/CroduinoNova2 (umjesto CroduinoNova2 možemo staviti ime koje želimo
  //ali onda pretražujemo sa time imenom)
  client.print(String("GET /dweet/for/CroduinoNova2?temperature=") + String(t) + "&humidity=" + String(h) + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");
  delay(10);
  
  //pročitamo sve linije odgovora hosta te ih ispisujemo na Serial monitor
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  //ispisujemo na Serial monitor da je veza zatvorena
  Serial.println();
  Serial.println("closing connection");
  
  //pauza od 10 sekundi
  delay(10000);
}