Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp64 [2020/06/19 13:08] – labuser29 | products:laboratory_iot:exp64 [2024/12/06 22:55] (текущий) – [Эксперимент 64. Режим точки доступа] labuser30 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== Эксперимент 64. Режим точки доступа ===== | ===== Эксперимент 64. Режим точки доступа ===== | ||
| - | В прошлом эксперименте мы сделали полноценный цветной ночник. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для управления. В такой схеме подключения задействованы три устройства: | + | В прошлом эксперименте мы сделали полноценный цветной ночник. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для управления. В такой схеме подключения задействованы три устройства: |
| {{ : | {{ : | ||
| + | |||
| + | Но наша плата может работать сама в режиме точки доступа. В таком случае можно установить соединение между платой и клиентским устройством (смартфоном или ноутбуком) напрямую. Для этого нужно настроить микроконтроллер на работу в режиме точки доступа. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Программный код эксперимента ==== | ||
| + | |||
| + | <file python Exp64.py[enable_line_numbers=" | ||
| + | from micropyserver import MicroPyServer | ||
| + | import time | ||
| + | from machine import Pin, PWM | ||
| + | import network | ||
| + | import gc | ||
| + | _init() | ||
| + | gc.collect() | ||
| + | |||
| + | LedR = PWM(Pin(13, Pin.OUT)) | ||
| + | LedG = PWM(Pin(14, Pin.OUT)) | ||
| + | LedB = PWM(Pin(15, Pin.OUT)) | ||
| + | |||
| + | ap_id = " | ||
| + | ap_pass = " | ||
| + | |||
| + | ap = network.WLAN(network.AP_IF) | ||
| + | ap.active(True) | ||
| + | ap.config(essid=ap_id, | ||
| + | |||
| + | time.sleep(2) | ||
| + | |||
| + | while ap.isconnected() == False: | ||
| + | pass | ||
| + | |||
| + | print(' | ||
| + | |||
| + | |||
| + | def index(request, | ||
| + | html_color = ' | ||
| + | |||
| + | if (' | ||
| + | html_color = params[' | ||
| + | print(html_color) | ||
| + | |||
| + | r = html_color[0: | ||
| + | g = html_color[2: | ||
| + | b = html_color[4: | ||
| + | |||
| + | r = int(r, 16) | ||
| + | g = int(g, 16) | ||
| + | b = int(b, 16) | ||
| + | |||
| + | r = int(r * 1023 / 255) | ||
| + | g = int(g * 1023 / 255) | ||
| + | b = int(b * 1023 / 255) | ||
| + | |||
| + | LedR.duty(1023-r) | ||
| + | LedG.duty(1023-g) | ||
| + | LedB.duty(1023-b) | ||
| + | |||
| + | |||
| + | html_file = open(" | ||
| + | html = html_file.read() | ||
| + | html = html.replace('< | ||
| + | html_file.close() | ||
| + | server.send(html, | ||
| + | | ||
| + | |||
| + | LedR.duty(0) | ||
| + | LedG.duty(0) | ||
| + | LedB.duty(0) | ||
| + | |||
| + | |||
| + | server = MicroPyServer() | ||
| + | server.add_route("/", | ||
| + | server.start() | ||
| + | </ | ||
| + | |||
| + | Создаем объект интерфейса, | ||
| + | <code python[enable_line_numbers=" | ||
| + | ap = network.WLAN(network.AP_IF) | ||
| + | </ | ||
| + | |||
| + | Настраиваем свойства точки доступа. А именно устанавливаем имя сети и пароль | ||
| + | <code python[enable_line_numbers=" | ||
| + | ap.config(essid=ap_id, | ||
| + | </ | ||
| + | |||
| + | Других принципиальных отличий программы от программы из предыдущего эксперимента нет. | ||
| + | |||
| + | После запуска программы видим нашу сеть среди списка доступных на смартфоне или на ноутбуке | ||
| + | {{ : | ||
| + | |||
| + | Необходимо подключиться к нашей точке доступа. Сообщение об отсутствии интернета — нормально. Ведь откуда ему взяться в нашей сети? Ведь сейчас микроконтроллер не подключен к сети, в которой есть интернет. Сейчас он сам точка доступа. Однако отсутствие интернета никак не помешает подключиться к нашему веб-серверу и управлять светодиодом как раньше, | ||
| + | |||
| + | После установки соединения в терминал будет выведен IP адрес, который принадлежит микроконтроллеру. В нашем случае это '' | ||