===== Эксперимент 65. Wi-Fi термометр ===== В прошлых экспериментах мы научились создавать веб-сервер на Python и получать данные от пользователя. Мы управляли цветом светодиода. Теперь наоборот, мы создадим веб сервер, который сообщает нам полезную информацию. Пусть это будут данные о температуре. Создадим прострой термометр, к которому мы сможем обратиться с помощью браузера. ==== Схема эксперимента ==== {{ :products:esp-iot:exp18_sch.png?nolink |}} //Рисунок 1. Электрическая принципиальная схема эксперимента// {{ :products:esp-iot:exp18_mon.png?direct&600 |}} //Рисунок 2. Монтажная схема эксперимента// ==== Программный код эксперимента ==== import time from machine import I2C, Pin import onewire import ds18x20 from micropyserver import MicroPyServer import network import gc _init() gc.collect() # the device is on GPIO12 ow = onewire.OneWire(Pin(12)) # create the onewire object ds = ds18x20.DS18X20(ow) wlan_id = "Имя WiFi сети" wlan_pass = "Пароль" wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(wlan_id, wlan_pass) time.sleep(1) while wlan.isconnected() == False: pass print('Device IP:', wlan.ifconfig()[0]) def show_message(request, params): ''' request handler ''' roms = ds.scan() ds.convert_temp() time.sleep_ms(750) for rom in roms: temp = str(ds.read_temp(rom)) server.send(temp) server = MicroPyServer() ''' add request handler ''' server.add_route("/", show_message) ''' start server ''' server.start() Перед запуском программы необходимо убедиться, что библиотека micropyserver загружена во внутреннюю память микроконтроллера. {{ :products:esp-iot:micropyserver.zip |}} Код подключения к сети и создания веб- сервера был изучен в предыдущих экспериментах, поэтому здесь повторно останавливаться на этом не будем. Создаем шину 1-Wire на 12 выводе микроконтроллера и создаем объект датчика температуры DS18B20 (подробно о работе с [[theory:1wire|шиной 1-Wire]] и [[products:laboratory_iot:exp39|датчиком DS18B20]]) # the device is on GPIO12 ow = onewire.OneWire(Pin(12)) # create the onewire object ds = ds18x20.DS18X20(ow) Когда происходит обращение к веб-серверу по адресу / (корневая директория, главная страница), то вызывается функция ''show_message''. В ней считываются данные с датчика о текущей температуре и возвращаются клиенту. Для получения новых данных необходимо повторно обратиться к серверу обновив страницу в браузере.