Эксперимент 66. Wi-Fi термометр в режиме точки доступа

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

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

Схему прошлого эксперимента оставляем без изменений, но немного изменим код.

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

Exp66.py
  1. import time
  2. from machine import I2C, Pin
  3. import onewire
  4. import ds18x20
  5. from micropyserver import MicroPyServer
  6. import network
  7. import gc
  8. _init()
  9. gc.collect()
  10.  
  11. ap_id = "WIFI_TEMP"
  12. ap_pass = "12345678"
  13.  
  14. # the device is on GPIO12
  15. ow = onewire.OneWire(Pin(12))
  16.  
  17. # create the onewire object
  18. ds = ds18x20.DS18X20(ow)
  19.  
  20.  
  21. ap = network.WLAN(network.AP_IF)
  22. ap.active(True)
  23. ap.config(essid=ap_id, password=ap_pass)
  24. time.sleep(2)
  25.  
  26. while ap.isconnected() == False:
  27. pass
  28.  
  29. print('Device IP:', ap.ifconfig()[0])
  30.  
  31. def show_message(request, params):
  32. ''' request handler '''
  33. roms = ds.scan()
  34. ds.convert_temp()
  35. time.sleep_ms(750)
  36.  
  37. for rom in roms:
  38. temp = str(ds.read_temp(rom))
  39. server.send(temp)
  40.  
  41. server = MicroPyServer()
  42. ''' add request handler '''
  43. server.add_route("/", show_message)
  44. ''' start server '''
  45. server.start()

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

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

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

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

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

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

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

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