Различия

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

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

Следующая версия
Предыдущая версия
products:laboratory_iot:exp64 [2020/06/19 12:23] – создано labuser29products:laboratory_iot:exp64 [2024/12/06 22:55] (текущий) – [Эксперимент 64. Режим точки доступа] labuser30
Строка 1: Строка 1:
 ===== Эксперимент 64. Режим точки доступа ===== ===== Эксперимент 64. Режим точки доступа =====
  
-В прошлом эксперименте мы сделали полноценный цветной ночник. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для управления. В такой схеме подключения задействованы три устройства: сам ночник, Wi-Fi роутер и устройство клиента (смартфон или копьютер)+В прошлом эксперименте мы сделали полноценный цветной ночник. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для управления. В такой схеме подключения задействованы три устройства: сам ночник, Wi-Fi роутер и устройство клиента (смартфон или компьютер)
 + 
 +{{ :products:esp-iot:exp37_net.png?nolink |}} 
 + 
 +Но наша плата может работать сама в режиме точки доступа. В таком случае можно установить соединение между платой и клиентским устройством (смартфоном или ноутбуком) напрямую. Для этого нужно настроить микроконтроллер на работу в режиме точки доступа. 
 + 
 +{{ :products:esp-iot:exp37_net2.png?nolink |}} 
 + 
 + 
 +  
 + 
 +==== Программный код эксперимента ==== 
 + 
 +<file python Exp64.py[enable_line_numbers="2", start_line_numbers_at="1"]> 
 +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() 
 +</file> 
 + 
 +Создаем объект интерфейса, но на этот раз настраиваем его как точку доступа 
 +<code python[enable_line_numbers="2", start_line_numbers_at="16"]> 
 +ap = network.WLAN(network.AP_IF) 
 +</code> 
 + 
 +Настраиваем свойства точки доступа. А именно устанавливаем имя сети и пароль 
 +<code python[enable_line_numbers="2", start_line_numbers_at="18"]> 
 +ap.config(essid=ap_id, password=ap_pass) 
 +</code> 
 + 
 +Других принципиальных отличий программы от программы из предыдущего эксперимента нет. 
 + 
 +После запуска программы видим нашу сеть среди списка доступных на смартфоне или на ноутбуке 
 +{{ :products:esp-iot:bea98dc5-e6f2-4e58-a4ec-043f58e25fea.jpg?nolink |}} 
 + 
 +Необходимо подключиться к нашей точке доступа. Сообщение об отсутствии интернета — нормально. Ведь откуда ему взяться в нашей сети? Ведь сейчас микроконтроллер не подключен к сети, в которой есть интернет. Сейчас он сам точка доступа. Однако отсутствие интернета никак не помешает подключиться к нашему веб-серверу и управлять светодиодом как раньше, ведь интернет для этого не нужен. Обмен данными происходит внутри локальной сети, образованной микроконтроллером и клиентским устройством. 
 + 
 +После установки соединения в терминал будет выведен IP адрес, который принадлежит микроконтроллеру. В нашем случае это ''192.168.4.1''. Именно этот адрес и нужно теперь вводить в адресную строку браузера. Адрес из прошлого эксперимента уже не подойдет, ведь теперь у нас совсем другая сеть.