Advertisement
Krzyspx

ESP_base1

Oct 9th, 2016
3,393
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.26 KB | None | 0 0
  1.  
  2. /**************************************************************
  3.    ta procedura nie zatrzymuje programu przy braku sieci
  4.   V1 - vLED OK
  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.  
  12. #include <Timers.h> //
  13. Timers <4> akcja; // 4  wątki
  14.  
  15. #include <Ticker.h> //do wachdoga
  16. Ticker tickerOSWatch;
  17. #define OSWATCH_RESET_TIME 30 //wd w sek
  18.  
  19. char kod[] = "**ESP_MIS  v1.0**";
  20.  
  21. char ssid[] = "aaa";
  22. char pass[] = "ccccccccccccccccc";
  23. char auth[] = "xxxxxxxxxxxxxxxxxxxxxxx";
  24.  
  25. WidgetLED led1(V1); // vLED wskażnik połącznia z arduino - miga co 1 sek jeśli jest połączenie
  26. WidgetTerminal terminal(V13);
  27.  
  28. #define led_blue  15  //wskaznk połaczenia wifi - off jest, miga nie ma wifi i może być reset, on - brak połączenia z BLYNK
  29. #define led_bialy  0 // cos na razie miga
  30.  
  31. #define Ledblueon 1
  32. #define Ledblueoff 0
  33. #define Ledbialyon 0
  34. #define Ledbialyoff 1
  35. bool stan_ledblue = 0; //off
  36. bool stan_ledbialy = 0;//off
  37.  
  38.  
  39. bool LED12 = HIGH;
  40. void miganieLED2()
  41. {
  42.   LED12 = !LED12;
  43.   if (LED12 == 0) {
  44.     digitalWrite(2, LOW);
  45.     digitalWrite(0, LOW);
  46.   }
  47.   else {
  48.     digitalWrite(2, HIGH);
  49.     digitalWrite(0, HIGH);
  50.   }
  51. }
  52.  
  53. void transmitBLYNK() { //procedura wysyłania do serwera BLYNK
  54. }
  55.  
  56. BLYNK_WRITE(V20)
  57. {
  58.   int  poziom = param.asInt();
  59. }
  60.  
  61. void bezwifi() {
  62.  
  63. }
  64.  
  65. void timer1sek() //coś do zrobienia co 1 sek
  66. {
  67.   transmitBLYNK(); //procedura wysyłania do serwera BLYNK zamiast BLYNK_Read który działa tylko gdy aplikacja w telefonie jest otwarta
  68.   miganievLED(); //mruganie ldem w telefonie info ze moduł działa
  69.   miganieLED2(); //miganie ledem na esp
  70.   czyjestwifi(); //sprawdzenie czy jest wifi i połączenie z BLYNK
  71.   wdwifi();   // reset gdy nie ma wifi i możliwość działania gdy nie ma połączenia z BLYNK
  72.   wysledblue();// wyswietla stan ledblue
  73. }
  74.  
  75. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= koniec procedur
  76. static unsigned long last_loop; //dla WD
  77. void ICACHE_RAM_ATTR osWatch(void) { //watchdog 30 sek
  78.   unsigned long t = millis();
  79.   unsigned long last_run = abs(t - last_loop);
  80.   if (last_run >= (OSWATCH_RESET_TIME * 1000)) {
  81.     // save the hit here to eeprom or to rtc memory if needed
  82.     ESP.restart();  // normal reboot
  83.     //ESP.reset();  // hard reset
  84.   }
  85. }
  86.  
  87. void setup()
  88. {
  89.   pinMode(12, OUTPUT); // dioda sygnalizacyjna pracy pętli 1 sek w przerwaniu
  90.   digitalWrite(12, LOW);
  91.   pinMode(2, OUTPUT); // dioda sygnalizacyjna pracy pętli 1 sek w przerwaniu
  92.   digitalWrite(2, LOW);
  93.   pinMode(led_bialy, OUTPUT); //
  94.   digitalWrite(led_bialy, Ledbialyon);
  95.   pinMode(led_blue, OUTPUT); // dioda sygnalizacyjna pracy pętli 1 sek w przerwaniu
  96.   digitalWrite(led_blue, Ledblueoff);
  97.  
  98.   akcja.attach(0, 1500, timer1sek); // uruchamianie timera 1 sek
  99.   // akcja.attach(1, 50000, spij); // usypianie
  100.  
  101.   Serial.begin(115200);
  102.  
  103.   //wachdog
  104.   last_loop = millis();
  105.   tickerOSWatch.attach_ms(((OSWATCH_RESET_TIME / 3) * 1000), osWatch);
  106.  
  107.   WifiBlynk(); //logowanie do wifi i blynk
  108.   Serial.println(__FILE__);
  109.  
  110.   digitalWrite(led_blue, Ledblueon);
  111.  
  112. } //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS koniec setup
  113.  
  114. void loop()  //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> loop
  115. {
  116.   last_loop = millis(); //wd
  117.   akcja.process(); //
  118.  Blynk.run();
  119. }
  120. //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  end loop
  121.  
  122. void WifiBlynk() { //logowanie do wifi i blynk nie wstrzymujące wejścia do pętli głównej
  123.   WiFi.begin(ssid, pass);
  124.   Blynk.config(auth);
  125.   WiFi.status();
  126.   Blynk.connect();
  127. }
  128.  
  129. bool isFirstConnect = true;
  130. BLYNK_CONNECTED() {
  131.   if (isFirstConnect) {
  132.     Blynk.syncAll();  //ważna procedura - po starcie arduino synchronizuje wszystkiw wirtualne piny ze zmiennymi programu
  133.     isFirstConnect = false;
  134.   }
  135. }
  136.  
  137. bool czywifi = -1; //czy jest wifi - 0 nie ma
  138. bool czyblynk = -1;
  139. byte liczreset = 0;
  140. bool run_wd_wifi = 0; //trzeba by zresetować
  141. void wdwifi() {
  142.  
  143.   if (czywifi == 0) {
  144.     Serial.println("brak wifi ");
  145.     stan_ledblue = !stan_ledblue;
  146.     liczreset++;
  147.     if (liczreset > 10) {
  148.       spij(1);  //reset i włącz RF
  149.     }
  150.   } else {
  151.     liczreset = 0;
  152.      if (czyblynk == 0) {
  153.     Serial.println("brak blynk ");
  154.      stan_ledblue = Ledblueon;
  155.   }else{
  156.     stan_ledblue = Ledblueoff;
  157.   }
  158.   }
  159.   Serial.println("ECHO");
  160. }
  161.  
  162. void czyjestwifi()
  163. {
  164. if (WiFi.status() == WL_CONNECTED) { //sprawdzenie czy uruchomiło się wifi
  165.     czywifi = 1;
  166.     if (Blynk.connected() == true) { //sprawdzenie czy jest połączenie z blynk
  167.       czyblynk = 1;
  168.     } else {
  169.       czyblynk = 0;
  170.       // Blynk.connect(5); //kolejna próba połączenia z BLYNK
  171.     }
  172.   } else {
  173.     czywifi = 0;
  174.     czyblynk = 0;
  175.   }
  176. }
  177.  
  178. void wysledblue()
  179. {
  180.   digitalWrite(led_blue, stan_ledblue);
  181. }
  182.  
  183. void spij(int x) //procedura deepsleep x w sek, ale też załączania RF
  184. {
  185.   Serial.println("wej deepsleep i do RF on");
  186.   delay(1000);
  187.   ESP.deepSleep(x * 1 * 1000 * 1000, WAKE_RF_DEFAULT);
  188.   delay(1000);
  189.   delay(1000);
  190. }
  191. int wskrunAr = 0; //vLED miga co sek
  192. void miganievLED()
  193. {
  194.   wskrunAr = !wskrunAr ;
  195.   if (wskrunAr == 0) {
  196.     led1.off(); //miganie vLED dla kontroli połączenia z UNO
  197.   }
  198.   else {
  199.     led1.on();
  200.   }
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement