Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp58 [2020/06/16 17:41] labuser29products:laboratory_iot:exp58 [2024/12/05 14:03] (текущий) – [Программный код эксперимента] labuser30
Строка 1: Строка 1:
 ===== Эксперимент 58. Управление светодиодом по WiFi ===== ===== Эксперимент 58. Управление светодиодом по WiFi =====
  
-В прошлом эксперименте мы создали простейший веб- сервер. В нем была всего одна страницаглавная. При обращении к ней мы видели в браузере приветствие. Можно расширять функционал сервера, добавив дополнительные страницы и другие функции. Но на микроконтроллере никогда не получится сделать полноценный веб- сервер, на котором можно было бы запустить какой-то сайт, ведь объем памяти и вычислительная мощность микроконтроллера очень ограничены.+В прошлом эксперименте мы создали простейший веб- сервер. В нем была всего одна страница — главная. При обращении к ней мы видели в браузере приветствие. Можно расширять функционал сервера, добавив дополнительные страницы и другие функции. Но на микроконтроллере никогда не получится сделать полноценный веб-сервер, на котором можно было бы запустить какой-то сайт, ведь объем памяти и вычислительная мощность микроконтроллера очень ограничены.
  
-На микроконтроллерах создают веб серверы для других целей. Их создают в качестве интерфейса для настройки или управления устройством. Например, твой Wi-Fi роутер имеет веб- интерфейс для настройки. А можно сделать электрический чайник с веб- интерфейсом. Представь, что ты заходишь на "сайт" своего чайника и смотришь какая температура воды в нем сейчас. Видишь, что вода холодная и нажимаешь прямо на этом сайте кнопку, которая включает чайник. Это и есть интернет вещей, когда вещи подключаются к сети. В скором будущем такие чайники, и другие самые разные усройства, будут иметь выход в сеть.+На микроконтроллерах создают веб серверы для других целей. Их создают в качестве интерфейса для настройки или управления устройством. Например, твой Wi-Fi роутер имеет веб- интерфейс для настройки. А можно сделать электрический чайник с веб-интерфейсом. Представь, что ты заходишь на "сайт" своего чайника и смотришь какая температура воды в нем сейчас. Видишь, что вода холодная и нажимаешь прямо на этом сайте кнопку, которая включает чайник. Это и есть интернет вещей, когда вещи подключаются к сети. В скором будущем такие чайники, и другие самые разные устройства, будут иметь выход в сеть.
  
-Сейчас мы сделаем веб- интерфейс для управления светодиодом. Мы доработаем веб- сервер из прошлого эксперимента. Добавим ему пару страниц. При заходе на старницу ''on'' светодиод будет включаться, а если зайти на страницу ''off'' — выключаться.+Сейчас мы сделаем веб- интерфейс для управления светодиодом. Мы доработаем веб-сервер из прошлого эксперимента. Добавим ему пару страниц. При заходе на страницу ''on'' светодиод будет включаться, а если зайти на страницу ''off'' — выключаться.
  
 ==== Схема эксперимента ==== ==== Схема эксперимента ====
Строка 12: Строка 12:
 //Рисунок 1. Монтажная схема эксперимента// //Рисунок 1. Монтажная схема эксперимента//
  
 +
 +==== Программный код эксперимента ====
 +
 +<file python Exp58.py[enable_line_numbers="2", start_line_numbers_at="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()
 +</file>
 +
 +<WRAP center round important 60%>
 +Первым делом в коде программы нужно заменить ''Wi-Fi_Name'' на имя нужной сети, а ''Wi-Fi_Password'' на пароль от нее.
 +</WRAP>
 +
 +По сравнению с кодом прошлого эксперимента мы добавили 2 страницы:
 +<code python[enable_line_numbers="2", start_line_numbers_at="44"]>
 +server.add_route("/on", do_on)
 +server.add_route("/off", do_off)
 +</code>
 +
 +При обращении клиента к странице ''on'' вызывается функция  ''do_on''
 +<code python[enable_line_numbers="2", start_line_numbers_at="30"]>
 +def do_on(request, params):
 +    ''' on request handler '''
 +    Led.on()
 +    server.send("ON")
 +</code>
 +
 +В этой функции включается светодиод и в браузер отправляется слово ON.
 +
 +При обращении клиента к странице ''off'' вызывается функция  ''do_off''
 +<code python[enable_line_numbers="2", start_line_numbers_at="35"]>
 +def do_off(request, params):
 +    ''' off request handler '''
 +    Led.off()
 +    server.send("OFF")
 +</code>
 +
 +В этой функции светодиод выключается и в браузер отправляется слово OFF.
 +
 +{{ :products:esp-iot:on.jpg?direct&400 |}}
 +{{ :products:esp-iot:off.jpg?direct&400 |}}