Это старая версия документа!


Эксперимент 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)

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

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