===== Эксперимент 65. Wi-Fi термометр =====
В прошлых экспериментах мы научились создавать веб-сервер и получать данные от пользователя. Мы управляли цветом светодиода. Теперь наоборот, мы создадим веб сервер, который сообщает нам полезную информацию. Пусть это будут данные о температуре. Создадим прострой термометр, к которому мы сможем обратиться с помощью браузера.
==== Схема эксперимента ====
{{ :products:esp-iot:exp18_sch.png?nolink |}}
//Рисунок 1. Электрическая принципиальная схема эксперимента//
{{ :products:esp-iot:exp18_mon.png?direct&600 |}}
//Рисунок 2. Монтажная схема эксперимента//
==== Программный код эксперимента ====
#include
#include
#include
#include
#define WIFI_NAME "Имя WiFi сети"
#define WIFI_PASSWORD "Пароль"
#define BUS_PIN 12 //the device is on GPIO12
OneWire oneWire(BUS_PIN);
DallasTemperature sensors(&oneWire);
ESP8266WebServer server(80);
void showMessage() {
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
server.send(200, "text/html", String(tempC));
}
void setup() {
Serial.begin(9600);
Serial.println();
Serial.print("Connecting to WiFi");
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", showMessage);
server.begin();
}
void loop() {
server.handleClient();
}
Код подключения к сети и создания веб-сервера был изучен в предыдущих экспериментах, поэтому здесь повторно останавливаться на этом не будем.
Создаем шину 1-Wire на 12 выводе микроконтроллера и создаем объект датчика температуры DS18B20 (подробно о работе с [[theory:1wire|шиной 1-Wire]] и [[products:laboratory_iot_c:exp39|датчиком DS18B20]])
# the device is on GPIO12
OneWire oneWire(BUS_PIN);
DallasTemperature sensors(&oneWire);
Когда происходит обращение к веб-серверу по адресу / (корневая директория, главная страница), то вызывается функция ''showMessage''. В ней считываются данные с датчика о текущей температуре и возвращаются клиенту. Для получения новых данных необходимо повторно обратиться к серверу обновив страницу в браузере.