MAIN_WIFI_STA.ino 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. #include "WS_WIFI.h"
  2. #include "WS_Bluetooth.h"
  3. #include "WS_GPIO.h"
  4. #include "WS_Serial.h"
  5. #include "WS_RTC.h"
  6. #define CH1 '1' // CH1 Enabled Instruction
  7. #define CH2 '2' // CH2 Enabled Instruction
  8. #define CH3 '3' // CH3 Enabled Instruction
  9. #define CH4 '4' // CH4 Enabled Instruction
  10. #define CH5 '5' // CH5 Enabled Instruction
  11. #define CH6 '6' // CH6 Enabled Instruction
  12. #define ALL_ON '7' // Start all channel instructions
  13. #define ALL_OFF '8' // Disable all channel instructions
  14. #define RS485_Mode 1 // Used to distinguish data sources
  15. #define Bluetooth_Mode 2
  16. #define WIFI_Mode 3
  17. extern char ipStr[16];
  18. extern bool WIFI_Connection;
  19. bool Relay_Flag[6] = {0}; // Relay current status flag
  20. uint32_t Simulated_time=0; // Analog time counting
  21. /******************************************************** Data Analysis ********************************************************/
  22. void Relay_Analysis(uint8_t *buf,uint8_t Mode_Flag)
  23. {
  24. if(Mode_Flag == Bluetooth_Mode)
  25. printf("Bluetooth Data :");
  26. else if(Mode_Flag == WIFI_Mode)
  27. printf("WIFI Data :");
  28. else
  29. printf("RS485 Data :");
  30. switch(buf[0])
  31. {
  32. case CH1:
  33. digitalToggle(GPIO_PIN_CH1); //Toggle the level status of the GPIO_PIN_CH1 pin
  34. Relay_Flag[0] =! Relay_Flag[0];
  35. Buzzer_PWM(100);
  36. if(Relay_Flag[0])
  37. printf("|*** Relay CH1 on ***|\r\n");
  38. else
  39. printf("|*** Relay CH1 off ***|\r\n");
  40. break;
  41. case CH2:
  42. digitalToggle(GPIO_PIN_CH2); //Toggle the level status of the GPIO_PIN_CH2 pin
  43. Relay_Flag[1] =! Relay_Flag[1];
  44. Buzzer_PWM(100);
  45. if(Relay_Flag[1])
  46. printf("|*** Relay CH2 on ***|\r\n");
  47. else
  48. printf("|*** Relay CH2 off ***|\r\n");
  49. break;
  50. case CH3:
  51. digitalToggle(GPIO_PIN_CH3); //Toggle the level status of the GPIO_PIN_CH3 pin
  52. Relay_Flag[2] =! Relay_Flag[2];
  53. Buzzer_PWM(100);
  54. if(Relay_Flag[2])
  55. printf("|*** Relay CH3 on ***|\r\n");
  56. else
  57. printf("|*** Relay CH3 off ***|\r\n");
  58. break;
  59. case CH4:
  60. digitalToggle(GPIO_PIN_CH4); //Toggle the level status of the GPIO_PIN_CH4 pin
  61. Relay_Flag[3] =! Relay_Flag[3];
  62. Buzzer_PWM(100);
  63. if(Relay_Flag[3])
  64. printf("|*** Relay CH4 on ***|\r\n");
  65. else
  66. printf("|*** Relay CH4 off ***|\r\n");
  67. break;
  68. case CH5:
  69. digitalToggle(GPIO_PIN_CH5); //Toggle the level status of the GPIO_PIN_CH5 pin
  70. Relay_Flag[4] =! Relay_Flag[4];
  71. Buzzer_PWM(100);
  72. if(Relay_Flag[4])
  73. printf("|*** Relay CH5 on ***|\r\n");
  74. else
  75. printf("|*** Relay CH5 off ***|\r\n");
  76. break;
  77. case CH6:
  78. digitalToggle(GPIO_PIN_CH6); //Toggle the level status of the GPIO_PIN_CH6 pin
  79. Relay_Flag[5] =! Relay_Flag[5];
  80. Buzzer_PWM(100);
  81. if(Relay_Flag[5])
  82. printf("|*** Relay CH6 on ***|\r\n");
  83. else
  84. printf("|*** Relay CH6 off ***|\r\n");
  85. break;
  86. case ALL_ON:
  87. digitalWrite(GPIO_PIN_CH1, HIGH); // Open CH1 relay
  88. digitalWrite(GPIO_PIN_CH2, HIGH); // Open CH2 relay
  89. digitalWrite(GPIO_PIN_CH3, HIGH); // Open CH3 relay
  90. digitalWrite(GPIO_PIN_CH4, HIGH); // Open CH4 relay
  91. digitalWrite(GPIO_PIN_CH5, HIGH); // Open CH5 relay
  92. digitalWrite(GPIO_PIN_CH6, HIGH); // Open CH6 relay
  93. memset(Relay_Flag,1, sizeof(Relay_Flag));
  94. printf("|*** Relay ALL on ***|\r\n");
  95. Buzzer_PWM(300);
  96. break;
  97. case ALL_OFF:
  98. digitalWrite(GPIO_PIN_CH1, LOW); // Turn off CH1 relay
  99. digitalWrite(GPIO_PIN_CH2, LOW); // Turn off CH2 relay
  100. digitalWrite(GPIO_PIN_CH3, LOW); // Turn off CH3 relay
  101. digitalWrite(GPIO_PIN_CH4, LOW); // Turn off CH4 relay
  102. digitalWrite(GPIO_PIN_CH5, LOW); // Turn off CH5 relay
  103. digitalWrite(GPIO_PIN_CH6, LOW); // Turn off CH6 relay
  104. memset(Relay_Flag,0, sizeof(Relay_Flag));
  105. printf("|*** Relay ALL off ***|\r\n");
  106. Buzzer_PWM(100);
  107. delay(100);
  108. Buzzer_PWM(100);
  109. break;
  110. default:
  111. printf("Note : Non-instruction data was received !\r\n");
  112. }
  113. }
  114. /******************************************************** Initializing ********************************************************/
  115. void setup() {
  116. // UART
  117. Serial_Init();
  118. // Relay . RGB . Buzzer GPIO
  119. GPIO_Init();
  120. // RTC
  121. if(RTC_Enable)
  122. {
  123. RTC_Init();
  124. }
  125. // Bluetooth
  126. Bluetooth_Init();
  127. // WIFI
  128. if(WIFI_Enable == 1) // WIFI connection successful
  129. WIFI_Init();
  130. // Obtain and synchronize network time
  131. if(WIFI_Connection == 1 && RTC_Enable == 1){
  132. Acquisition_time();
  133. }
  134. }
  135. /********************************************************** While **********************************************************/
  136. void loop() {
  137. // RS485 Receive Data
  138. Serial_Loop();
  139. // Bluetooth Receive Data
  140. // The operation after receiving the data is processed in Bluetooth.C
  141. // WIFI
  142. if(WIFI_Enable == 1)
  143. WIFI_Loop();
  144. Simulated_time++;
  145. // Send WIFI IP via Bluetooth
  146. if(WIFI_Connection == 1){
  147. if(Simulated_time == 1000){
  148. Bluetooth_SendData(ipStr); // The IP address that sends WIFI
  149. }
  150. }
  151. // RTC
  152. if(RTC_Enable)
  153. {
  154. if(Simulated_time ==1000){
  155. RTC_Loop();
  156. }
  157. }
  158. if(Simulated_time ==1000)
  159. Simulated_time = 0;
  160. }