===== Эксперимент 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''. В ней считываются данные с датчика о текущей температуре и возвращаются клиенту. Для получения новых данных необходимо повторно обратиться к серверу обновив страницу в браузере.