Проект «Wifi-School-Station» представляет собой систему мониторинга окружающей среды и обеспечения безопасности помещений, для школы, которая собирает данные с датчиков и передает их на сервер для дальнейшей обработки и хранения. Пользователь может запросить актуальные данные или историю показателей через Telegram-бота и сайт. Проект разработан на базе микроконтроллера LOLIN(WEMOS) D1 с использованием OLED-дисплея, датчиков MQ-5, DHT-22, HC-SR505 и RFID-RC522. Программная часть включает в себя код для микроконтроллера, написанный на C++ в Arduino IDE, и серверную часть, реализованную с использованием Python, SQLite и библиотеки aiogram для Telegram-бота, фреймворком Django.
компонент | назначение |
---|---|
LOLIN(WEMOS) D1 | Основной микроконтроллер |
Arduino Nano | RFID и сигнализация |
Датчик MQ-5 | Определение концентрации газов |
Датчик DHT-22 | Измерение температуры и влажности |
RFID-RC522 | Чтение RFID-меток |
HC-SR505 | Инфракрасный датчик движения |
Зуммер YL-44 | Звуковая сигнализация |
Микроконтроллер: Программа написана на C++ в среде Arduino IDE. Используются библиотеки для работы с OLED-дисплеем, датчиками MQ-5 и DHT-22, а также для подключения к Wi-Fi и отправки данных на сервер:
Библиотека | Назначение |
---|---|
ESP8266WiFi.h | Для подключения к Wi-Fi на ESP8266. |
WiFiClient.h | Для создания TCP-клиентов на ESP8266. |
MQUnifiedsensor.h | Для работы с датчиками газа (например, MQ-5). |
Wire.h | Для взаимодействия с устройствами по интерфейсу I2C. |
Adafruit_GFX.h | Графическая библиотека для управления дисплеями (например, OLED). |
Adafruit_SSD1306.h | Для управления OLED-дисплеями на базе чипа SSD1306. |
SPI.h | Для работы с интерфейсом SPI (Serial Peripheral Interface). |
MFRC522.h | Для работы с RFID-модулем MFRC522 (чтение RFID-меток). |
Сервер — Серверная часть написана на Python. Используются библиотеки:
Библиотека | Назначение |
---|---|
Aiogram | Для создания Telegram-бота. |
sqlite3 | Для работы с базой данных SQLite. |
Requests | Для обработки HTTP-запросов. |
SQLite | Для хранения истории показаний датчиков. |
Socket | Для работы с сетью в Python. |
asyncio | Для асинхронной работы с сетью в Python. |
Также использован фреймворк Django для серверной части сайта. он предоставляет возможность обновлять данные, вести администрирование данных и учётных записей и взаимодействовать с объектом пользователя.
Проект может быть использован для мониторинга окружающей среды в учебных заведениях, офисах, домах или других помещениях а также обеспечения безопастности. Основные функции:
- Отображение данных: Текущие показания датчиков отображаются на OLED-дисплее.
- Передача данных: Данные передаются на сервер для хранения и обработки.
- Запрос данных через Telegram-бота: Пользователь может запросить актуальные данные или историю показаний через Telegram-бота.
- Вывод последних данных на сайте: Польтзователь может зайти на сайт, зарегистрироваться и посмотреть последние данные с разных кабинетов или помещений.
Ответ:
- MQ-5: Подключите аналоговый выход датчика к аналоговому входу NodeMCU (например, A0).
- DHT-22: Подключите выход датчика к цифровому пину NodeMCU (например, D4).
Ответ: В коде для NodeMCU укажите SSID и пароль от вашей Wi-Fi сети в переменных ssid
и password
.
Ответ: Отправьте команду пришли данные
в Telegram-боте, чтобы получить актуальные данные, или посмотреть прошлые данные
, чтобы получить историю показаний.
Ответ: Скачайте файлы проекта с https://github.com/zeniafiat/Wifi-School-Station. Далее откройте файл main.py в файлах Telegram-бота. После этого подключите устройство через провод Type-C к источнику питания 5В. Откройте телеграмм бота токен которого надо ввести в main.py .
- Назначение: Определение концентрации газов (углеводороды, водород, метан и др.).
- Подключение: Аналоговый выход датчика подключается к аналоговому входу NodeMCU.
- Особенности: Требуется калибровка для точного определения концентрации газов.
- Назначение: Измерение температуры и влажности.
- Подключение: Цифровой выход датчика подключается к цифровому пину NodeMCU.
- Особенности: Высокая точность измерений, но может быть задержка в получении данных.
- Назначение: Чтение RFID-меток (идентификация объектов или пользователей)
- Подключение: Подключается по интерфейсу SPI (SDA, SCK, MOSI, MISO, RST) к микроконтроллеру.
- Особенности: Работает на частоте 13,56 МГц, поддерживает несколько типов RFID-меток.
- Назначение: Обнаружение движения с помощью инфракрасного излучения.
- Подключение: Цифровой выход датчика подключается к цифровому пину микроконтроллера.
- Особенности: Компактный, низкое энергопотребление, автоматическая калибровка.
- Назначение: Генерация звуковых сигналов (оповещение или сигнализация).
- Подключение: Подключается к цифровому пину микроконтроллера.
- Особенности: Простое управление, может издавать звуки разной частоты и длительности.
- Назначение: Компактный микроконтроллер для управления устройствами и обработки данных.
- Особенности:Поддерживает интерфейсы SPI, I2C, UART.Идеален для работы с датчиками, RFID-модулями, зуммерами и другими периферийными устройствами.
- Микроконтроллер: ESP8266 с интегрированным Wi-Fi модулем.
- Порты: Аналоговые и цифровые порты для подключения датчиков и других устройств.
- Питание: 3.3V, но может работать от 5V через встроенный регулятор напряжения.
- Работа с Wi-Fi: Настройка стабильного Wi-Fi соединения может быть сложной, особенно в условиях слабого сигнала.
- Калибровка датчиков: Датчик MQ-5 требует калибровки для точного измерения концентрации газов. Но в загруженной программе калибровка происходит автоматически.
- Обработка данных на сервере: Необходимо учитывать возможные задержки в передаче данных и обрабатывать ошибки соединения. При неправильном подключении.
Проект «Wifi-School-Station» представляет собой эффективное решение для мониторинга окружающей среды с использованием современных технологий. Он сочетает в себе аппаратную часть на базе LOLIN(WEMOS) D1 и программную часть, реализованную на Python. Проект может быть расширен за счет добавления новых датчиков и функциональности. В будущем планируется улучшение стабильности работы, добавление новых функций и оптимизация кода. Себестоимость устройства ≈70 BYN
Для дальнейшего развития проекта планируется:
- Улучшить обработку ошибок и стабильность соединения.
- Добавить поддержку новых датчиков.
- Оптимизировать код для повышения производительности.
- Cоздать сайт для администрации школьного заведения(для просмотра последних данных с классов учебного заведения)
- Новый способ подключения устройств к Telegram-бота по их токену
- Более компактная сборка устройста на печтаной плате личного производства(в процессе)
Ссылка на проект: Wifi-School-Station
Ссылка на телеграмм бота: https://t.me/Coyrstestbot
Вопросы разработчику можно задать тут: eugeniydevtalent@gmail.com
Источники: https://docs.python.org/3/library/socket.html
https://docs.python.org/3/library/sqlite3.html
https://docs.python.org/3/library/sys.html
https://docs.python.org/3/library/os.html
https://docs.aiogram.dev/en/stable/
https://github.com/adafruit/Adafruit_FeatherOLED
https://github.com/adafruit/Adafruit_BusIO
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
https://github.com/dvarrel/DHT22