#include #include #include #include #include // ##################### WIFI připojení #################### const char* ssid = ""; const char* password = ""; // ######################################################### #define pinTrigger 5 #define pinEcho 4 #define maxVzdalenost 450 // inicializace měřícího modulu z knihovny NewPing sonar(pinTrigger, pinEcho, maxVzdalenost); // ################# ZAKLADNI NASTAVENI #################### WiFiClient client; HTTPClient http; unsigned long timeNow; String wifiData = ""; String readString = ""; // ######################################################### void setup() { Serial.begin(9600); delay(1000); Serial.println(); Serial.print("Připojuji se k wifi ... "); Serial.println(ssid); WiFi.begin(ssid, password); // samotný proces pripojeni k siti WiFi.mode(WIFI_STA); while (WiFi.status() != WL_CONNECTED) { // dokud není pripojeno delay(70); Serial.print("."); } Serial.println(""); Serial.println("WiFi připojeno"); Serial.print("IP addresa: "); Serial.println(WiFi.localIP()); Serial.print("Wifi signál: "); Serial.println(WiFi.RSSI()); Serial.print("Data se odesílají na URL adresu:"); Serial.println("http://meteo-roven.cz/?data=?????"); Serial.println("=============================================="); } void loop() { if (millis() - timeNow >= 60000 || millis() < timeNow) { timeNow = millis(); // načtení vzdálenosti v centimetrech do vytvořené proměnné vzdalenost int vzdalenost = sonar.ping_cm(); // pauza před dalším měřením delay(50); // pokud byla detekována vzdálenost větší než 0, // provedeme další měření if (vzdalenost > 0) { vzdalenost = 0; // pro získání stabilnějších výsledků provedeme 5 měření // a výsledky budeme přičítat do proměnné vzdalenost for(int i=0; i<10; i++) { vzdalenost += sonar.ping_cm(); delay(50); } // v proměnné vzdálenost máme součet posledních 5 měření // a musíme tedy provést dělení 5 pro získání průměru vzdalenost = vzdalenost/10; // Odecteme kominek + odtok vzdalenost = 275 - vzdalenost; // vytištění informací po sériové lince Serial.print("Vzdalenost mezi senzorem a predmetem je "); Serial.print(vzdalenost); Serial.println(" cm."); } // pokud byla detekována vzdálenost 0, je předmět mimo měřící rozsah, // tedy příliš blízko nebo naopak daleko else { Serial.println("Vzdalenost mezi senzorem a predmetem je mimo merici rozsah."); delay(500) ; } readString = vzdalenost + String("|"); // vzdalenost wifiData = WiFi.RSSI(); client.setTimeout(1000); http.begin("http://meteo-roven.cz/"); int httpCode = http.POST(wifiData + "|" + readString); if (httpCode > 0) { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] POST... code: %d\n", httpCode); // file found at server if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) { Serial.println("Data odeslána na: http://meteo-roven.cz/?data=?????"); String payload = http.getString(); Serial.println(payload); } } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); Serial.println(F("Nepodařilo se odeslat data na webovou stránku Meteo-Roven.cz")); } http.end(); } }