Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
products:laboratory_iot:exp66 [2021/04/25 18:25] – labuser29 | products:laboratory_iot:exp66 [2024/12/05 16:52] (текущий) – [Программный код эксперимента] labuser30 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== Эксперимент 66. Wi-Fi термометр в режиме точки доступа ===== | ===== Эксперимент 66. Wi-Fi термометр в режиме точки доступа ===== | ||
- | В прошлом эксперименте мы сделали полноценный термометр с доступом по IP адресу. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для соединения с термометром. В такой схеме подключения задействованы три устройства: | + | В прошлом эксперименте мы сделали полноценный термометр с доступом по IP адресу. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для соединения с термометром. В такой схеме подключения задействованы три устройства: |
{{ : | {{ : | ||
Строка 8: | Строка 8: | ||
{{ : | {{ : | ||
+ | |||
+ | Схему прошлого эксперимента оставляем без изменений, | ||
+ | |||
+ | ==== Программный код эксперимента ==== | ||
+ | <file python Exp66.py[enable_line_numbers=" | ||
+ | import time | ||
+ | from machine import I2C, Pin | ||
+ | import onewire | ||
+ | import ds18x20 | ||
+ | from micropyserver import MicroPyServer | ||
+ | import network | ||
+ | import gc | ||
+ | _init() | ||
+ | gc.collect() | ||
+ | |||
+ | ap_id = " | ||
+ | ap_pass = " | ||
+ | |||
+ | # 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, | ||
+ | time.sleep(2) | ||
+ | |||
+ | while ap.isconnected() == False: | ||
+ | pass | ||
+ | |||
+ | print(' | ||
+ | |||
+ | def show_message(request, | ||
+ | ''' | ||
+ | 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() | ||
+ | ''' | ||
+ | server.add_route("/", | ||
+ | ''' | ||
+ | server.start() | ||
+ | </ | ||
+ | |||
+ | Создаем объект интерфейса, | ||
+ | <code python[enable_line_numbers=" | ||
+ | ap = network.WLAN(network.AP_IF) | ||
+ | </ | ||
+ | |||
+ | Настраиваем свойства точки доступа. А именно устанавливаем имя сети и пароль | ||
+ | <code python[enable_line_numbers=" | ||
+ | ap.config(essid=ap_id, | ||
+ | </ | ||
+ | |||
+ | Других принципиальных отличий программы от программы из предыдущего эксперимента нет. | ||
+ | |||
+ | После запуска программы видим нашу сеть среди списка доступных на смартфоне или на ноутбуке | ||
+ | {{ : | ||
+ | |||
+ | Необходимо подключиться к нашей точке доступа. Сообщение об отсутствии интернета — нормально. Ведь откуда ему взяться в нашей сети? Ведь сейчас микроконтроллер не подключен к сети, в которой есть интернет. Сейчас он сам точка доступа. Однако отсутствие интернета никак не помешает подключиться к нашему веб-серверу и посмотреть температуру как раньше, | ||
+ | |||
+ | После установки соединения в терминал будет выведен IP адрес, который принадлежит микроконтроллеру. В нашем случае это '' | ||
+ | |||
+ | {{ : |