В прошлом эксперименте мы сделали полноценный цветной ночник. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для управления. В такой схеме подключения задействованы три устройства: сам ночник, Wi-Fi роутер и устройство клиента (смартфон или компьютер).
Но наша плата может работать сама в режиме точки доступа. В таком случае можно установить соединение между платой и клиентским устройством (смартфоном или ноутбуком) напрямую. Для этого нужно настроить микроконтроллер на работу в режиме точки доступа.
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 = "RGB_light" ap_pass = "12345678" ap = network.WLAN(network.AP_IF) ap.active(True) ap.config(essid=ap_id, password=ap_pass) time.sleep(2) while ap.isconnected() == False: pass print('Device IP:', ap.ifconfig()[0]) def index(request, params): html_color = '4AD686' if ('color' in params): html_color = params['color'][3:9] print(html_color) r = html_color[0:2] g = html_color[2:4] b = html_color[4:6] 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("color.html") html = html_file.read() html = html.replace('<=VALUE=>', '#' + html_color) html_file.close() server.send(html, content_type="Content-Type: text/html") LedR.duty(0) LedG.duty(0) LedB.duty(0) server = MicroPyServer() server.add_route("/", index) server.start()
Создаем объект интерфейса, но на этот раз настраиваем его как точку доступа
ap = network.WLAN(network.AP_IF)
Настраиваем свойства точки доступа. А именно устанавливаем имя сети и пароль
ap.config(essid=ap_id, password=ap_pass)
Других принципиальных отличий программы от программы из предыдущего эксперимента нет.
После запуска программы видим нашу сеть среди списка доступных на смартфоне или на ноутбуке
Необходимо подключиться к нашей точке доступа. Сообщение об отсутствии интернета — нормально. Ведь откуда ему взяться в нашей сети? Ведь сейчас микроконтроллер не подключен к сети, в которой есть интернет. Сейчас он сам точка доступа. Однако отсутствие интернета никак не помешает подключиться к нашему веб-серверу и управлять светодиодом как раньше, ведь интернет для этого не нужен. Обмен данными происходит внутри локальной сети, образованной микроконтроллером и клиентским устройством.
После установки соединения в терминал будет выведен IP адрес, который принадлежит микроконтроллеру. В нашем случае это 192.168.4.1
. Именно этот адрес и нужно теперь вводить в адресную строку браузера. Адрес из прошлого эксперимента уже не подойдет, ведь теперь у нас совсем другая сеть.