Moisture sensor - ESP8266

Co s ním?

  • Úvod do IoT sveta
  • Monitorovanie vlhkosti v substráte
  • Základy nového prostredia
  • Možnosť rozšíriť o snímače vlhkosti, teploty atď…

1. Instalace programu Arduino IDE

https://docs.arduino.cc/software/ide-v1/tutorials/Windows

  • Nejjednodušší postup při instalaci je postupovat podle oficiálních návodů výrobce.

2. Doplnění programu Arduino IDE o desku Wemos D1 mini

https://blog.laskakit.cz/zaciname-s-wemos-d1-mini-s-wifi-modulem-esp8266/

  • Na to aby sme mohli v prostředí Arduino IDE pracovat s deskou  Wemos D1 mini, musíme naistalovat rozšírení pro tuto desku. 
  • Současně budeme potřebovat naistalovat driver pro samotnou desku, aby jsme mohli nahrát program do zařízení. 
  • V některých případech se může driver nainstalovat automaticky. 
  • Celý proces je napsaný v návodu výše.

3. Testovací program, funguje HW správně, program pro LED.

  • Jak jsme všechny naistalovali správně můžeme přistoupit nahrání prvního programu.
  • Jednoduché blikaní s LED diodou.
  • Níže uvedený program můžeme napsat v prostředí Arduino IDE. Nebo můžeme využít ukázkových programů.
				
					// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}
				
			

4. Testujeme snímač, je správne připojený, ukazuje mi hodnoty v terminálu.

				
					#define SensorPin A0  // used for Arduino and ESP8266
//#define SensorPin 4  // used for ESP32

void setup() { 
  Serial.begin(9600);
}

void loop() {
  float sensorValue = analogRead(SensorPin);
  Serial.println(sensorValue);
  delay(500);
} 
				
			

5. Založení účtu IoT severu thingspeak a odesílání dat.

https://navody.dratek.cz/navody-k-produktum/esp8266-a-thingspeak.html

  • IoT server, rozhraní na kterém můžeme zobrazovat naměřené data nebo jiné informace. 
  • Od společnosti Mathwrosk (matlab), která je populární na akademické půde.
  • Je odesílání zabezpečené? Odesíláme jen takové data, které nejsou pro nás citlivé a v případě napadnutí jsme s tím relativně v pohodě.
				
					// 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 = "**********";
// vytvoření proměnných s názvem WiFi sítě a heslem
const char* nazevWifi = "**********";
const char* hesloWifi = "**********";
// 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);
}
				
			

6. Co víc můžu udělat? Spánek pomáha.

https://diyi0t.com/how-to-reduce-the-esp8266-power-consumption/?utm_content=cmp-true

  • Platforma ESP8266 (Wemos D1) poskytuje režim “spánku”. 
  • Různé periferie na desce se vypnou a šetří tak baterii a tudíž zařízení vydrží déle bez nabíjení