[Часть 1] Домашний веб сервер на Ардуино [Рабочий код]
 
На странице Вы можете визуально просмотреть код веб сервера для Ардуино в 2х частях.

  1. /*
  2. * Создано для сайта 1injener.ru
  3. * Домашний веб сервер на Аrduino. Температура и Реле [Проверенно]
  4. * Про работу с WI-FI модулем можно прочитать на хорошем сайте еsp8266.ru
  5. */
  6. #include "dht11.h" // Добавляем библиотеку DHT11
  7. dht11 DHT; // Объявление переменной класса dht11
  8. #define DHT11_PIN 4
  9. HardwareSerial & monitor = Serial;
  10. HardwareSerial & esp_serial = Serial1;
  11. // Установка пинов для реле. Предусмотренно на будущее 2 реле, а использовалось только 1.
  12. const int relay1 = 22;
  13. const int relay2 = 23;
  14. //Буфер для передачи данных с сервера в ардуину
  15. #define BUFFER_SIZE 128
  16. char buffer[BUFFER_SIZE];
  17. //Временные переменные для нужд сервера.
  18. int result = 0;
  19. int OK = 1;
  20. int TIMEOUT = 2 ;
  21. int CANCEL = 3;
  22. int NOT_FOUND = 4;
  23. int i;
  24. int m=0;
  25. int lp = 0;
  26. char inputChar[500];
  27. int len = 0;
  28. //Порт для Веб сервера на Ардуино
  29. String port="80";
  30. String cmd;
  31. String myIP;
  32. int currentID;
  33. int ch_id, packet_len;
  34. char *pb;
  35. void(* resetFunc) (void) = 0;
  36. //Установки при старте Ардуины
  37. //Устанавливаются пины для реле как выходы и в выключенное состояние
  38. void setup() {
  39. pinMode(relay1, OUTPUT);
  40. pinMode(relay2, OUTPUT);
  41. digitalWrite(relay1,LOW);
  42. digitalWrite(relay2,LOW);
  43. //Активируем Serial терминал для отображения данных на компьютере (Для проверки)
  44. monitor.begin(115200);
  45. esp_serial.begin(115200); // Так же активируем Serial для Wi-FI модуля ESP8266
  46. monitor.println(F("\nESP8266 WebServer TEST"));
  47. delay(1000);
  48. /* RESET Module */
  49. esp_serial.println("AT+RST"); // Програмный рестарт WI-FI модуля
  50. monitor.print("\nAT+RST");
  51. result = CheckResponse(); // Специальной функцией ниже мы отлавливаем ответ модуля "ОК"
  52. if(result == OK){
  53. Serial.print(" OK");
  54. delay(300);
  55. }
  56. else{
  57. Serial.print(" ERROR");
  58. delay(2000);
  59. resetFunc();
  60. }
  61. //Ниже идут части программы к которым мы будем обращаться из основного цикла.
  62. SET_MODE:
  63. esp_serial.println("AT+CWMODE=1"); // Установка режима клиента, который будет подключаться к роутеру.
  64. // Так же можно подключаться к самому модулю. Но об этом в другой статье.
  65. monitor.print("\nAT+CWMODE=1");
  66. result = CheckResponse(); // ответ модуля "ОК"
  67. if(result == OK){
  68. Serial.print(" OK");
  69. delay(200);
  70. }
  71. else{
  72. Serial.print(" ERROR");
  73. delay(1000);
  74. goto SET_MODE;
  75. }
  76. DISCONNECT_AP:
  77. esp_serial.println("AT+CWQAP"); // Отключение
  78. monitor.print("\nAT+CWQAP");
  79. result = CheckResponse(); // ответ модуля "ОК"
  80. if(result == OK){
  81. Serial.print(" OK");
  82. delay(300);
  83. }
  84. else{
  85. Serial.print(" ERROR");
  86. delay(1000);
  87. goto DISCONNECT_AP;
  88. }
  89. CONNECT_WIFI:
  90. cmd = "AT+CWJAP=\"SSID\",\"ПАРОЛЬ\"";
  91. esp_serial.println(cmd); // Подключение к роутеру. Выше надо прописать ваш SSID wifi точки роутера и пароль
  92. monitor.print("\n"+cmd);
  93. result = CheckResponse(); // ответ модуля "ОК"
  94. if(result == OK){
  95. Serial.print(" OK");
  96. delay(300);
  97. }
  98. else{
  99. Serial.print(" ERROR");
  100. delay(1000);
  101. goto CONNECT_WIFI;
  102. }
  103. SET_MULTIPLE:
  104. esp_serial.println("AT+CIPMUX=1"); // Выбор режима множественных подключений
  105. monitor.print("\nAT+CIPMUX=1");
  106. result = CheckResponse(); // ответ модуля "ОК"
  107. if(result == OK){
  108. Serial.print(" OK");
  109. delay(300);
  110. }
  111. else{
  112. Serial.print(" ERROR");
  113. delay(1000);
  114. goto SET_MULTIPLE;
  115. }
  116. START_SERVER:
  117. cmd = "AT+CIPSERVER=" + String("1") + String(",") + port;
  118. esp_serial.println(cmd); // СТАРТУЕМ!!! Я СКАЗАЛ СТАРУЕЕЕМ!
  119. monitor.print("\n"+cmd);
  120. result = CheckResponse(); // ответ модуля "ОК"
  121. if(result == OK){
  122. Serial.print(" OK");
  123. delay(200);
  124. }
  125. else{
  126. Serial.print(" ERROR");
  127. delay(1000);
  128. }
  129. CHECK_IP:
  130. esp_serial.println("AT+CIFSR"); // Отображаем и проверяем получили ли мы IP адресс от роутера.
  131. monitor.print("\nAT+CIFSR");
  132. readSerial();
  133. monitor.print(inputChar);
  134. readSerial();
  135. monitor.print(inputChar);
  136. readSerial();
  137. monitor.print(inputChar);
  138. for(unsigned char i=0;i<2;i++){
  139. esp_serial.println("AT+CIPCLOSE"); // Закрываем подключение
  140. monitor.print("\nAT+CIPCLOSE");
  141. result = CheckResponse(); // ответ модуля "ОК"
  142. if(result == OK){
  143. Serial.print(" OK");
  144. delay(200);
  145. }
  146. else{
  147. Serial.print(" ERROR");
  148. delay(200);
  149. }
  150. }
  151. }

Далее:
[Часть 2] Домашний веб сервер на Ардуино [Рабочий код]

В статью:
Домашний веб сервер на Аrduino. Температура и Реле [Проверенно]
 

Новые изобретения инженеров и техников, дизайнеров и обычных людей, все то что может изменить наш мир к лучшему. Новая техника и оружие, спасателей и спецназа. Гаджеты и девайсы, устройства для отдыха и работы. Советы для экономии семейного состояния. Все гениальные изобретения в простом формате! Ведь "Все - Просто!"
Copyright © 2013–2017
Автоматизация и проектирование - 1injener.ru