Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp66 [2021/04/25 18:25] labuser29products:laboratory_iot:exp66 [2024/12/05 16:52] (текущий) – [Программный код эксперимента] labuser30
Строка 1: Строка 1:
 ===== Эксперимент 66. Wi-Fi термометр в режиме точки доступа ===== ===== Эксперимент 66. Wi-Fi термометр в режиме точки доступа =====
  
-В прошлом эксперименте мы сделали полноценный термометр с доступом по IP адресу. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для соединения с термометром. В такой схеме подключения задействованы три устройства: сам ночник, Wi-Fi роутер и устройство клиента (смартфон или копьютер).+В прошлом эксперименте мы сделали полноценный термометр с доступом по IP адресу. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для соединения с термометром. В такой схеме подключения задействованы три устройства: сам ночник, Wi-Fi роутер и устройство клиента (смартфон или компьютер).
  
 {{ :products:esp-iot:exp37_net.png?nolink |}} {{ :products:esp-iot:exp37_net.png?nolink |}}
 +
 +Но наша плата может работать сама в режиме точки доступа. В таком случае можно установить соединение между платой и клиентским устройством (смартфоном или ноутбуком) напрямую. Для этого нужно настроить микроконтроллер на работу в режиме точки доступа.
 +
 +{{ :products:esp-iot:exp37_net2.png?nolink |}}
 +
 +Схему прошлого эксперимента оставляем без изменений, но немного изменим код.
 +
 +==== Программный код эксперимента ====
 +<file python Exp66.py[enable_line_numbers="2", start_line_numbers_at="1"]>
 +import time
 +from machine import I2C, Pin
 +import onewire
 +import ds18x20
 +from micropyserver import MicroPyServer 
 +import network
 +import gc
 +_init()
 +gc.collect()
 +
 +ap_id = "WIFI_TEMP"
 +ap_pass = "12345678"
 +
 +# the device is on GPIO12
 +ow = onewire.OneWire(Pin(12))
 + 
 +# create the onewire object
 +ds = ds18x20.DS18X20(ow)
 +
 +
 +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 show_message(request, params):
 +    ''' request handler '''
 +    roms = ds.scan()
 +    ds.convert_temp()
 +    time.sleep_ms(750)
 + 
 +    for rom in roms:
 +        temp = str(ds.read_temp(rom))
 +        server.send(temp)
 + 
 +server = MicroPyServer()
 +''' add request handler '''
 +server.add_route("/", show_message)
 +''' start server '''
 +server.start()
 +</file>
 +
 +Создаем объект интерфейса, но на этот раз настраиваем его как точку доступа
 +<code python[enable_line_numbers="2", start_line_numbers_at="21"]>
 +ap = network.WLAN(network.AP_IF)
 +</code>
 +
 +Настраиваем свойства точки доступа. А именно устанавливаем имя сети и пароль
 +<code python[enable_line_numbers="2", start_line_numbers_at="23"]>
 +ap.config(essid=ap_id, password=ap_pass)
 +</code>
 +
 +Других принципиальных отличий программы от программы из предыдущего эксперимента нет.
 +
 +После запуска программы видим нашу сеть среди списка доступных на смартфоне или на ноутбуке
 +{{ :products:esp-iot:whatsapp_image_2021-04-25_at_18.30.06.jpeg?nolink |}}
 +
 +Необходимо подключиться к нашей точке доступа. Сообщение об отсутствии интернета — нормально. Ведь откуда ему взяться в нашей сети? Ведь сейчас микроконтроллер не подключен к сети, в которой есть интернет. Сейчас он сам точка доступа. Однако отсутствие интернета никак не помешает подключиться к нашему веб-серверу и посмотреть температуру как раньше, ведь интернет для этого не нужен. Обмен данными происходит внутри локальной сети, образованной микроконтроллером и клиентским устройством.
 +
 +После установки соединения в терминал будет выведен IP адрес, который принадлежит микроконтроллеру. В нашем случае это ''192.168.4.1''. Именно этот адрес и нужно теперь вводить в адресную строку браузера. Адрес из прошлого эксперимента уже не подойдет, ведь теперь у нас совсем другая сеть.
 +
 +{{ :products:esp-iot:whatsapp_image_2021-04-25_at_18.31.07.jpeg?nolink&400 |}}