Advertisement
Krzyspx

pomiarwilgotnosci1

Jul 17th, 2016
2,284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.39 KB | None | 0 0
  1.  
  2.  
  3. /**************************************************************
  4.  * ta procedura nie zatrzymuje programu przy braku sieci wifi
  5.  
  6.  **************************************************************/
  7.  
  8. #define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
  9. #include <ESP8266WiFi.h>
  10. #include <BlynkSimpleEsp8266.h>
  11. #include <Timers.h> //
  12. #include <Ticker.h> //do wachdoga ESP
  13.  
  14.  
  15. char auth[] = "22222222222222222222222222222";
  16.  
  17. Timers <4> akcja; // 4  wątki
  18.  
  19. WidgetLED led1(V1); // vLED wskażnik połącznia z arduino - miga co 1 sek jeśli jest połączenie
  20. WidgetLED led5(V5); //vLED wskaznik sucho/mokro
  21.  
  22. Ticker tickerOSWatch;
  23.  
  24. #define OSWATCH_RESET_TIME 30 //wd w sek
  25.  
  26. static unsigned long last_loop;
  27.  
  28. void ICACHE_RAM_ATTR osWatch(void) { //watchdog 30 sek
  29.     unsigned long t = millis();
  30.     unsigned long last_run = abs(t - last_loop);
  31.     if(last_run >= (OSWATCH_RESET_TIME * 1000)) {
  32.       // save the hit here to eeprom or to rtc memory if needed
  33.         ESP.restart();  // normal reboot
  34.         //ESP.reset();  // hard reset
  35.         }
  36. }
  37.  
  38.  
  39. void spij() //procedura deepsleep
  40. {
  41.   Serial.println("aaa spij");
  42.       delay(100);
  43.   ESP.deepSleep(1 * 60 * 1000 * 1000);
  44.     delay(1000);
  45. }
  46.  
  47. int flaga1s = 0;
  48. void timer1sek() //coś do zrobienia co 1 sek
  49. {
  50.    transmitBLYNK(); //procedura wysyłania do serwera BLYNK zamiast BLYNK_Read który działa tylko gdy aplikacja w telefonie jest otwarta
  51.  //  sprawdzBLYNK(); //tu nieaktywna bo i tak bedzie reset po wyjciu z uspienia
  52.     miganievLED(); //mruganie ldem w telefonie info ze moduł ESP działa
  53.    miganieLED2(); //miganie ledem na esp w czasie wybudzenia
  54.    analogwe(); //czytanie adc i decyzja co robic dalej
  55.    wdwifi();   // wd gdy nie ma wifi na razie w testach
  56.    flaga1s = 1;
  57. }
  58.  
  59. int czywifi = -1; //czy jest wifi - 0 nie ma
  60. int czyblynk = -1;
  61. int run_wd_wifi = 0; //trzeba by zresetować
  62. void wdwifi(){
  63.   if (czywifi == 0){
  64.    Serial.println("brak wifi ");
  65. }
  66. if (czyblynk == 0){
  67.    Serial.println("brak blynk ");
  68. }
  69. }
  70.  
  71. const int sucho = 700;
  72. int suchoflaga = 0;
  73. int analog = 0;
  74. void analogwe()
  75. {
  76.   analog = analogRead(A0);
  77.   Serial.println(analog);
  78.   if (sucho < analog){
  79.     Serial.println("sucho");
  80.     if (suchoflaga == 0){
  81.       suchoflaga = 1; //flaga bedzie kasowana po wyjściu z uśpienia
  82.       Blynk.notify("Rusz sie podlac kwiatki");
  83.       led5.on(); //wskaznik sucho
  84.     }
  85.   }
  86. }
  87.  
  88. int LED12 = HIGH;
  89. void miganieLED2()
  90. {
  91.   LED12 = !LED12;
  92.   if (LED12 == 0){
  93.   digitalWrite(12, LOW);
  94.     }
  95.    else {
  96.   digitalWrite(12, HIGH);
  97.    }
  98. }
  99.  
  100. int wskrunAr = 0; //vLED miga co sek
  101. void miganievLED()
  102. {
  103.        wskrunAr = !wskrunAr ;
  104.     if (wskrunAr == 0){
  105.       led1.off(); //miganie vLED dla kontroli połączenia z UNO
  106.     }
  107.    else {
  108.      led1.on();
  109.    }
  110. }
  111.  
  112. void transmitBLYNK(){ //procedura wysyłania do serwera BLYNK
  113. wyslij_V12();
  114. wyslij_V11();
  115. }
  116.  
  117. void wyslij_V12(){
  118.   analog = analogRead(A0);
  119.   float i = analog;
  120.   String str = String(i, 0 ) + " V";
  121.   Blynk.virtualWrite(V12, str);
  122. }
  123.  
  124. void wyslij_V11(){
  125.   analog = analogRead(A0);
  126.   analog = analog + 10;
  127.   Blynk.virtualWrite(V11, analog);
  128. }
  129. /*
  130. BLYNK_READ(V11) //napiecie to musiałem zastąpić bo nie działa offline
  131. {
  132.   analog = analogRead(A0);
  133.   Blynk.virtualWrite(V11, analog);
  134. }
  135. */
  136. void sprawdzBLYNK() // test połączenia z BLYNK jeśli nie ma - RESET
  137. {
  138.    bool r = Blynk.connected();
  139.     if (r == 1) { //jeśli jest połączenie to zgaś LED
  140.     digitalWrite(12, HIGH);
  141.     }
  142.     else {
  143.      digitalWrite(12, LOW);
  144.      ESP.restart();  // normal reboot    
  145.         }
  146. }
  147.  
  148. bool isFirstConnect = true;
  149. // This function will run every time Blynk connection is established
  150. BLYNK_CONNECTED() {
  151.   if (isFirstConnect) {
  152.     Blynk.syncAll();  //ważna procedura - po starcie arduino synchronizuje wszystkiw wirtualne piny ze zmiennymi programu
  153.     isFirstConnect = false;
  154.   }
  155. }
  156.  
  157. void WifiBlynk(){ //logowanie do wifi i blynk nie wstrzymujące wejścia do pętli głównej
  158.   WiFi.begin("xxx","yyyyyyyyyy");
  159.    Blynk.config(auth);
  160.    WiFi.status();
  161.   Blynk.connect();
  162. }
  163.  
  164.  
  165. void bezwifi(){ // tu w przyszłości procedura obsługi modułu przy braku wifi
  166.  
  167. }
  168.  
  169. //+++++++++++++++++++++++++++++++++++++= koniec procedur
  170.  
  171. void setup()
  172. {
  173.  
  174.   pinMode(12, OUTPUT); // dioda sygnalizacyjna pracy pętli 1 sek w przerwaniu
  175.   digitalWrite(12, LOW);
  176.  
  177.  
  178.   akcja.attach(0, 1500, timer1sek); // uruchamianie timera 1 sek  
  179.   akcja.attach(1, 20000, spij); // usypianie po 20 sek pracy
  180.  
  181.   Serial.begin(115200);
  182.  
  183. //ma byc wachdog
  184.     last_loop = millis();
  185.     tickerOSWatch.attach_ms(((OSWATCH_RESET_TIME / 3) * 1000), osWatch);
  186.  
  187.   WifiBlynk(); //logowanie do wifi i blynk
  188.   Serial.println("ESP_blynk_sleep_adc_wd_v6"); //kod programu
  189.  
  190.  
  191.   wskrunAr = 0; //vLED
  192.   digitalWrite(12, HIGH);
  193.   led5.off(); //wskaznik sucho/mokro  off= mokro
  194. } //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS koniec setup
  195.  
  196.  
  197. void loop()
  198. {
  199.       last_loop = millis(); //wd
  200.   akcja.process(); //
  201.  
  202.  
  203. if (WiFi.status() == WL_CONNECTED) { //sprawdzenie czy uruchomiło się wifi
  204.     czywifi = 1;
  205.     if (Blynk.connected() == true) { //sprawdzenie czy jest połączenie z blynk
  206.        czyblynk = 1;
  207.       Blynk.run();
  208.     } else {
  209.        czyblynk = 0;
  210.      // Blynk.connect(5); //kolejna próba połączenia z BLYNK
  211.       Blynk.run();
  212.           }
  213.   } else {
  214.     czywifi = 0;
  215.     bezwifi();
  216.   }
  217.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement