===== Эксперимент 58. Управление светодиодом по WiFi =====
В прошлом эксперименте мы создали простейший веб- сервер. В нем была всего одна страница — главная. При обращении к ней мы видели в браузере приветствие. Можно расширять функционал сервера, добавив дополнительные страницы и другие функции. Но на микроконтроллере никогда не получится сделать полноценный веб-сервер, на котором можно было бы запустить какой-то сайт, ведь объем памяти и вычислительная мощность микроконтроллера очень ограничены.
На микроконтроллерах создают веб серверы для других целей. Их создают в качестве интерфейса для настройки или управления устройством. Например, твой Wi-Fi роутер имеет веб- интерфейс для настройки. А можно сделать электрический чайник с веб-интерфейсом. Представь, что ты заходишь на "сайт" своего чайника и смотришь какая температура воды в нем сейчас. Видишь, что вода холодная и нажимаешь прямо на этом сайте кнопку, которая включает чайник. Это и есть интернет вещей, когда вещи подключаются к сети. В скором будущем такие чайники, и другие самые разные устройства, будут иметь выход в сеть.
Сейчас мы сделаем веб- интерфейс для управления светодиодом. Мы доработаем веб-сервер из прошлого эксперимента. Добавим ему пару страниц. При заходе на страницу ''on'' светодиод будет включаться, а если зайти на страницу ''off'' — выключаться.
==== Схема эксперимента ====
Подключим светодиод к 13 пину
{{ :products:esp-iot:exp31_mon.png?direct&600 |}}
//Рисунок 1. Монтажная схема эксперимента//
==== Программный код эксперимента ====
from micropyserver import MicroPyServer
import time
from machine import Pin
import network
import gc
_init()
gc.collect()
Led = Pin(13, Pin.OUT)
wlan_id = "Wi-Fi_Name"
wlan_pass = "Wi-Fi_Password"
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 '''
print(request)
server.send("HELLO WORLD!")
def do_on(request, params):
''' on request handler '''
Led.on()
server.send("ON")
def do_off(request, params):
''' off request handler '''
Led.off()
server.send("OFF")
server = MicroPyServer()
''' add request handler '''
server.add_route("/", show_message)
server.add_route("/on", do_on)
server.add_route("/off", do_off)
''' start server '''
server.start()
Первым делом в коде программы нужно заменить ''Wi-Fi_Name'' на имя нужной сети, а ''Wi-Fi_Password'' на пароль от нее.
По сравнению с кодом прошлого эксперимента мы добавили 2 страницы:
server.add_route("/on", do_on)
server.add_route("/off", do_off)
При обращении клиента к странице ''on'' вызывается функция ''do_on''
def do_on(request, params):
''' on request handler '''
Led.on()
server.send("ON")
В этой функции включается светодиод и в браузер отправляется слово ON.
При обращении клиента к странице ''off'' вызывается функция ''do_off''
def do_off(request, params):
''' off request handler '''
Led.off()
server.send("OFF")
В этой функции светодиод выключается и в браузер отправляется слово OFF.
{{ :products:esp-iot:on.jpg?direct&400 |}}
{{ :products:esp-iot:off.jpg?direct&400 |}}