Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp58 [2020/06/16 17:22] – labuser29 | products:laboratory_iot:exp58 [2024/12/05 14:03] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== Эксперимент 58. Управление светодиодом по WiFi ===== | ===== Эксперимент 58. Управление светодиодом по WiFi ===== | ||
| - | В прошлом эксперименте мы создали простейший веб- сервер. В нем была всего одна страница- главная. При обращении к ней мы видели в браузере приветствие. Можно расширять функционал сервера, | + | В прошлом эксперименте мы создали простейший веб- сервер. В нем была всего одна страница |
| - | На микроконтроллерах создают веб серверы для других целей. Их создают в качестве интерфейса для настройки или управления устройством. Например, | + | На микроконтроллерах создают веб серверы для других целей. Их создают в качестве интерфейса для настройки или управления устройством. Например, |
| + | |||
| + | Сейчас мы сделаем веб- интерфейс для управления светодиодом. Мы доработаем веб-сервер из прошлого эксперимента. Добавим ему пару страниц. При заходе на страницу '' | ||
| + | |||
| + | ==== Схема эксперимента ==== | ||
| + | Подключим светодиод к 13 пину | ||
| + | {{ : | ||
| + | // | ||
| + | |||
| + | |||
| + | ==== Программный код эксперимента ==== | ||
| + | |||
| + | <file python Exp58.py[enable_line_numbers=" | ||
| + | from micropyserver import MicroPyServer | ||
| + | import time | ||
| + | from machine import Pin | ||
| + | import network | ||
| + | import gc | ||
| + | _init() | ||
| + | gc.collect() | ||
| + | |||
| + | Led = Pin(13, Pin.OUT) | ||
| + | |||
| + | wlan_id = " | ||
| + | wlan_pass = " | ||
| + | |||
| + | wlan = network.WLAN(network.STA_IF) | ||
| + | wlan.active(True) | ||
| + | wlan.connect(wlan_id, | ||
| + | time.sleep(1) | ||
| + | |||
| + | while wlan.isconnected() == False: | ||
| + | pass | ||
| + | |||
| + | print(' | ||
| + | |||
| + | |||
| + | def show_message(request, | ||
| + | ''' | ||
| + | print(request) | ||
| + | server.send(" | ||
| + | |||
| + | def do_on(request, | ||
| + | ''' | ||
| + | Led.on() | ||
| + | server.send(" | ||
| + | |||
| + | def do_off(request, | ||
| + | ''' | ||
| + | Led.off() | ||
| + | server.send(" | ||
| + | |||
| + | |||
| + | server = MicroPyServer() | ||
| + | ''' | ||
| + | server.add_route("/", | ||
| + | server.add_route("/ | ||
| + | server.add_route("/ | ||
| + | ''' | ||
| + | server.start() | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Первым делом в коде программы нужно заменить '' | ||
| + | </ | ||
| + | |||
| + | По сравнению с кодом прошлого эксперимента мы добавили 2 страницы: | ||
| + | <code python[enable_line_numbers=" | ||
| + | server.add_route("/ | ||
| + | server.add_route("/ | ||
| + | </ | ||
| + | |||
| + | При обращении клиента к странице '' | ||
| + | <code python[enable_line_numbers=" | ||
| + | def do_on(request, | ||
| + | ''' | ||
| + | Led.on() | ||
| + | server.send(" | ||
| + | </ | ||
| + | |||
| + | В этой функции включается светодиод и в браузер отправляется слово ON. | ||
| + | |||
| + | При обращении клиента к странице '' | ||
| + | <code python[enable_line_numbers=" | ||
| + | def do_off(request, | ||
| + | ''' | ||
| + | Led.off() | ||
| + | server.send(" | ||
| + | </ | ||
| + | |||
| + | В этой функции светодиод выключается и в браузер отправляется слово OFF. | ||
| + | |||
| + | {{ : | ||
| + | {{ : | ||