МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра вычислительной техники
ОТЧЕТ по лабораторной работе №2
по дисциплине «Интернет вещей» Тема: Клиентское приложение на базе ESP32
Студентка гр. 1308 |
_______________ |
Кочубей Е.Д. |
Студентка гр. 1308 |
_______________ |
Зубченко П.А. |
Преподаватель |
_______________ |
Фаткиева Р.Р. |
Санкт-Петербург
2025
Цель работы
Получение практических навыков в работе с микроконтроллерами,
связанных с передачей данных по стандарту IEEE 802.11.
Ход работы
Подключение
Работа проводилась на онлайн платформе Wokwi, которая позволяет проводить симуляцию на различных микроконтроллерах.
Для разработки используем микроконтроллер ESP32 и цифровой датчик температуры и влажности DHT22.
Рисунок 1 – схема подключения компонентов
Датчик температуры и влажности воздуха подключается в цифровой порт 15, а также получает питание 3V3 и заземляется GND. Зелёный светодиод подключается к 14 цифровому порту через резистор 220 Ом.
2
Моделирование
При запуске симуляции схема подключается к WiFi, к MQTT-
брокеру, а затем отсылает текущие показатели датчика.
Рисунок 2 – результаты запуска программы
При изменении параметров датчика (температуры и влажности)
светодиод загорается, что означает успешную отправку данных на брокер.
Если параметры не изменяются, то светодиод не горит.
Рисунок 3 – процесс изменения параметров
Рисунок 4 – сообщение об обновлении параметров и сами данные
3
Листинг
import network |
|
|
|
|
import time |
|
|
|
|
from machine import Pin |
|
|
||
import dht |
|
|
|
|
import ujson |
|
|
|
|
from umqtt.simple import MQTTClient |
|
|
||
# MQTT Server Parameters |
|
|
||
MQTT_CLIENT_ID = "micropython-weather-demo" |
|
|
||
MQTT_BROKER |
|
= "broker.mqttdashboard.com" |
|
|
MQTT_USER |
|
= "" |
|
|
MQTT_PASSWORD |
= "" |
|
|
|
MQTT_TOPIC |
|
= "wokwi-weather" |
|
|
sensor = dht.DHT22(Pin(15)) |
|
|
||
led = Pin(14, Pin.OUT) |
|
|
||
led.on() |
|
|
|
|
print("Connecting to WiFi", end="") |
|
|
||
sta_if = network.WLAN(network.STA_IF) |
|
|
||
sta_if.active(True) |
|
|
||
sta_if.connect('Wokwi-GUEST', '') |
|
|
||
while not sta_if.isconnected(): |
|
|
||
print(".", end="") |
|
|
||
time.sleep(0.1) |
|
|
||
print(" Connected!") |
|
|
||
print("Connecting to MQTT server... ", end="") |
|
|
||
client |
= |
MQTTClient(MQTT_CLIENT_ID, |
MQTT_BROKER, |
user=MQTT_USER, |
password=MQTT_PASSWORD) client.connect() print("Connected!") prev_weather = "" while True:
print("Measuring weather conditions... ", end="") sensor.measure()
message = ujson.dumps({
"temp": sensor.temperature(), "humidity": sensor.humidity(),
})
if message != prev_weather: print("Updated!") led.on()
print("Reporting to MQTT topic {}: {}".format(MQTT_TOPIC, message)) client.publish(MQTT_TOPIC, message)
prev_weather = message else:
led.off() print("No change")
time.sleep(1)
4
Выводы
Входе лабораторной работы были успешно освоены навыки работы
смикроконтроллеров ESP32, а также с передачей данных по стандарту
IEEE802.11.
Была собрана схема с датчиком температуры и влажности. Для подготовленного проекта была видоизменена программа, которая позволила передавать данные на сервер с использованием изученного беспроводного соединения.
5
