Эксперимент 64. Режим точки доступа

В прошлом эксперименте мы сделали полноценный цветной ночник. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для управления. В такой схеме подключения задействованы три устройства: сам ночник, Wi-Fi роутер и устройство клиента (смартфон или компьютер).

Но наша плата может работать сама в режиме точки доступа. В таком случае можно установить соединение между платой и клиентским устройством (смартфоном или ноутбуком) напрямую. Для этого нужно настроить микроконтроллер на работу в режиме точки доступа.

 

Программный код эксперимента

Exp64.py
  1. from micropyserver import MicroPyServer
  2. import time
  3. from machine import Pin, PWM
  4. import network
  5. import gc
  6. _init()
  7. gc.collect()
  8.  
  9. LedR = PWM(Pin(13, Pin.OUT))
  10. LedG = PWM(Pin(14, Pin.OUT))
  11. LedB = PWM(Pin(15, Pin.OUT))
  12.  
  13. ap_id = "RGB_light"
  14. ap_pass = "12345678"
  15.  
  16. ap = network.WLAN(network.AP_IF)
  17. ap.active(True)
  18. ap.config(essid=ap_id, password=ap_pass)
  19.  
  20. time.sleep(2)
  21.  
  22. while ap.isconnected() == False:
  23. pass
  24.  
  25. print('Device IP:', ap.ifconfig()[0])
  26.  
  27.  
  28. def index(request, params):
  29. html_color = '4AD686'
  30.  
  31. if ('color' in params):
  32. html_color = params['color'][3:9]
  33. print(html_color)
  34.  
  35. r = html_color[0:2]
  36. g = html_color[2:4]
  37. b = html_color[4:6]
  38.  
  39. r = int(r, 16)
  40. g = int(g, 16)
  41. b = int(b, 16)
  42.  
  43. r = int(r * 1023 / 255)
  44. g = int(g * 1023 / 255)
  45. b = int(b * 1023 / 255)
  46.  
  47. LedR.duty(1023-r)
  48. LedG.duty(1023-g)
  49. LedB.duty(1023-b)
  50.  
  51.  
  52. html_file = open("color.html")
  53. html = html_file.read()
  54. html = html.replace('<=VALUE=>', '#' + html_color)
  55. html_file.close()
  56. server.send(html, content_type="Content-Type: text/html")
  57.  
  58.  
  59. LedR.duty(0)
  60. LedG.duty(0)
  61. LedB.duty(0)
  62.  
  63.  
  64. server = MicroPyServer()
  65. server.add_route("/", index)
  66. server.start()

Создаем объект интерфейса, но на этот раз настраиваем его как точку доступа

  1. ap = network.WLAN(network.AP_IF)

Настраиваем свойства точки доступа. А именно устанавливаем имя сети и пароль

  1. ap.config(essid=ap_id, password=ap_pass)

Других принципиальных отличий программы от программы из предыдущего эксперимента нет.

После запуска программы видим нашу сеть среди списка доступных на смартфоне или на ноутбуке

Необходимо подключиться к нашей точке доступа. Сообщение об отсутствии интернета — нормально. Ведь откуда ему взяться в нашей сети? Ведь сейчас микроконтроллер не подключен к сети, в которой есть интернет. Сейчас он сам точка доступа. Однако отсутствие интернета никак не помешает подключиться к нашему веб-серверу и управлять светодиодом как раньше, ведь интернет для этого не нужен. Обмен данными происходит внутри локальной сети, образованной микроконтроллером и клиентским устройством.

После установки соединения в терминал будет выведен IP адрес, который принадлежит микроконтроллеру. В нашем случае это 192.168.4.1. Именно этот адрес и нужно теперь вводить в адресную строку браузера. Адрес из прошлого эксперимента уже не подойдет, ведь теперь у нас совсем другая сеть.