#include <HCSR04.h> #include <Wire.h> //#include <ACROBOTIC_SSD1306.h> #include "SSD1306.h" #include <ESP8266WiFi.h> #define SDA D2 #define SCL D1 //SSID of your network char ssid[] = "Brno4"; //password of your WPA Network char pass[] = "*****"; const char* host = "api.thingspeak.com"; // Informace pro připojení k thingspeak.com const char* APIkey = "******"; const int httpPort = 80; int mezikrok = 0; SSD1306 display(0x3c, SDA, SCL); HCSR04 hc(D6, D5); // Initialize Pin D6, D5 int distance; void setup() { Serial.begin(115200); Serial.println("Meric-vzdalenosti"); display.init(); display.flipScreenVertically(); display.setFont(ArialMT_Plain_10); display.drawString(0, 0, "init"); display.display(); delay(200); // wait 200 ms WiFi.mode(WIFI_STA); WiFi.begin(ssid, pass); } void loop() { Serial.print("Connecting"); for (int i=0; i <= 10; i++){ if (WiFi.status() != WL_CONNECTED){ delay(500); Serial.print("."); }else { Serial.println(); Serial.print("Connected, IP address: "); Serial.println(WiFi.localIP()); Serial.print("Signal: "); Serial.println(WiFi.RSSI()); break; // exit connecting } } distance = hc.dist(); /*je to int takže bez desetin*/ Serial.print("CIDLO HCSR04: "); if (distance>27&&distance<650) { // když je čislo odpojene ukazuje 689, 688cm... ,.. asi se na nem tvoří rosa často ukazuje 23,25,až 27... nejvyse je ladina když ukazuje 29. Serial.print(distance); Serial.println(" cm"); display.clear(); display.drawCircle(5,5,5); display.setFont(ArialMT_Plain_24); display.drawString(0, 25, String(distance)); display.drawString(50, 25, "cm"); display.display(); delay(100); display.fillCircle(5,5,5); display.display(); display.drawString(0, 25, String(distance)); display.setFont(ArialMT_Plain_10); display.drawString(40, 0, "wifi:"); display.setFont(ArialMT_Plain_24); display.drawString(70, 0, " "); display.display(); display.drawString(70, 0, String(WiFi.RSSI())); display.display(); delay(1000); if (mezikrok==0){ mezikrok=150; /*Thinkspeak*/ Serial.println("--THINGSPEAK--"); WiFiClient client; char charVal[12]; dtostrf(distance, 8, 0, charVal); // Konverze vyčtené teploty do stringu // (hodnota, počet míst, počet desetinných míst, if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } String url = "/update?key="; // Vytvoření URL pro odeslání informace o teplotě url += APIkey; url += "&field1="; url += charVal; Serial.print("Requesting URL: "); Serial.println(url); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(10); Serial.println(); Serial.println(); while (client.available()) { String line = client.readStringUntil('\r'); Serial.print(line); // tisk informací přijatých ze serveru } } Serial.print("Mezikrok:"); Serial.println(mezikrok); mezikrok-- ; display.setFont(ArialMT_Plain_10); display.drawString(90, 25, "i="); display.drawString(100, 25, " "); display.display(); display.drawString(100, 25, String(mezikrok)); display.display(); }else { Serial.println("ERROR CIDLA "); /* display.setFont(ArialMT_Plain_10); display.clear(); display.drawString(0, 0, "ERROR CIDLA"); display.display(); */ display.setFont(ArialMT_Plain_10); display.drawString(40, 0, "wifi:"); display.display(); display.setFont(ArialMT_Plain_24); display.drawString(70, 0, " "); display.display(); display.drawString(70, 0, String(WiFi.RSSI())); display.display(); delay(200); } delay(1000); }
tato verze opravuje zákmity při měření – asi způsobeno kondenzaci vody na čidle. Čislo je 29cm nad hladinou, senzor měřil střídavě 23,70,24,70,23,70 … (obecně 22,23cm ukazuje jako nejnižší hodnotu – když jsem dal na čidlo třeba ruku).
iNSTALACE v nádrži – zde vidět maximální hladina
Instalace provedena 10/2021 – tak uvidíme jak dlouho to vydrží v té vlhkosti 😉
10/2023 – Hlásím, že je pořád funkční.