Эксперимент 65. Wi-Fi термометр

В прошлых экспериментах мы научились создавать веб-сервер и получать данные от пользователя. Мы управляли цветом светодиода. Теперь наоборот, мы создадим веб сервер, который сообщает нам полезную информацию. Пусть это будут данные о температуре. Создадим прострой термометр, к которому мы сможем обратиться с помощью браузера.

Схема эксперимента

Рисунок 1. Электрическая принципиальная схема эксперимента

Рисунок 2. Монтажная схема эксперимента

Программный код эксперимента

Exp39.ino
  1. #include <ESP8266WiFi.h>
  2. #include <ESP8266WebServer.h>
  3. #include <OneWire.h>
  4. #include <DallasTemperature.h>
  5.  
  6. #define WIFI_NAME "Имя WiFi сети"
  7. #define WIFI_PASSWORD "Пароль"
  8. #define BUS_PIN 12 //the device is on GPIO12
  9.  
  10. OneWire oneWire(BUS_PIN);
  11. DallasTemperature sensors(&oneWire);
  12.  
  13. ESP8266WebServer server(80);
  14.  
  15. void showMessage() {
  16. sensors.requestTemperatures();
  17. float tempC = sensors.getTempCByIndex(0);
  18. server.send(200, "text/html", String(tempC));
  19. }
  20.  
  21. void setup() {
  22. Serial.begin(9600);
  23. Serial.println();
  24.  
  25. Serial.print("Connecting to WiFi");
  26. WiFi.mode(WIFI_STA);
  27. WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
  28. while (WiFi.status() != WL_CONNECTED) {
  29. Serial.print(".");
  30. delay(500);
  31. }
  32. Serial.println();
  33. Serial.println("WiFi connected");
  34. Serial.print("IP address: ");
  35. Serial.println(WiFi.localIP());
  36.  
  37. server.on("/", showMessage);
  38. server.begin();
  39. }
  40.  
  41. void loop() {
  42. server.handleClient();
  43. }

Код подключения к сети и создания веб-сервера был изучен в предыдущих экспериментах, поэтому здесь повторно останавливаться на этом не будем.

Создаем шину 1-Wire на 12 выводе микроконтроллера и создаем объект датчика температуры DS18B20 (подробно о работе с шиной 1-Wire и датчиком DS18B20)

  1. # the device is on GPIO12
  2. OneWire oneWire(BUS_PIN);
  3. DallasTemperature sensors(&oneWire);

Когда происходит обращение к веб-серверу по адресу / (корневая директория, главная страница), то вызывается функция showMessage. В ней считываются данные с датчика о текущей температуре и возвращаются клиенту. Для получения новых данных необходимо повторно обратиться к серверу обновив страницу в браузере.