MAIN_ALL.ino 6.0 KB

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