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
// 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í