Skip to content

zeniafiat/Wifi-School-Station

Repository files navigation

Проект «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 для серверной части сайта. он предоставляет возможность обновлять данные, вести администрирование данных и учётных записей и взаимодействовать с объектом пользователя.

Применение

Проект может быть использован для мониторинга окружающей среды в учебных заведениях, офисах, домах или других помещениях а также обеспечения безопастности. Основные функции:

  1. Отображение данных: Текущие показания датчиков отображаются на OLED-дисплее.
  2. Передача данных: Данные передаются на сервер для хранения и обработки.
  3. Запрос данных через Telegram-бота: Пользователь может запросить актуальные данные или историю показаний через Telegram-бота.
  4. Вывод последних данных на сайте: Польтзователь может зайти на сайт, зарегистрироваться и посмотреть последние данные с разных кабинетов или помещений.

Вопросы и ответы

Вопрос: Как подключить датчики к NodeMCU ESP8266?

Ответ:

  • MQ-5: Подключите аналоговый выход датчика к аналоговому входу NodeMCU (например, A0).
  • DHT-22: Подключите выход датчика к цифровому пину NodeMCU (например, D4).

Вопрос: Как настроить Wi-Fi подключение?

Ответ: В коде для NodeMCU укажите SSID и пароль от вашей Wi-Fi сети в переменных ssid и password.

Вопрос: Как получить данные через Telegram-бота?

Ответ: Отправьте команду пришли данные в Telegram-боте, чтобы получить актуальные данные, или посмотреть прошлые данные, чтобы получить историю показаний.

Вопрос: как запустить проект у себя на ПК?

Ответ: Скачайте файлы проекта с https://github.com/zeniafiat/Wifi-School-Station. Далее откройте файл main.py в файлах Telegram-бота. После этого подключите устройство через провод Type-C к источнику питания 5В. Откройте телеграмм бота токен которого надо ввести в main.py .

Информация о датчиках и плате

Датчик MQ-5

  • Назначение: Определение концентрации газов (углеводороды, водород, метан и др.).
  • Подключение: Аналоговый выход датчика подключается к аналоговому входу NodeMCU.
  • Особенности: Требуется калибровка для точного определения концентрации газов.

Датчик DHT-22

  • Назначение: Измерение температуры и влажности.
  • Подключение: Цифровой выход датчика подключается к цифровому пину NodeMCU.
  • Особенности: Высокая точность измерений, но может быть задержка в получении данных.

Датчик RFID-RC522

  • Назначение: Чтение RFID-меток (идентификация объектов или пользователей)
  • Подключение: Подключается по интерфейсу SPI (SDA, SCK, MOSI, MISO, RST) к микроконтроллеру.
  • Особенности: Работает на частоте 13,56 МГц, поддерживает несколько типов RFID-меток.

Датчик HC-SR505

  • Назначение: Обнаружение движения с помощью инфракрасного излучения.
  • Подключение: Цифровой выход датчика подключается к цифровому пину микроконтроллера.
  • Особенности: Компактный, низкое энергопотребление, автоматическая калибровка.

Зуммер YL-44

  • Назначение: Генерация звуковых сигналов (оповещение или сигнализация).
  • Подключение: Подключается к цифровому пину микроконтроллера.
  • Особенности: Простое управление, может издавать звуки разной частоты и длительности.

Arduino Nano

  • Назначение: Компактный микроконтроллер для управления устройствами и обработки данных.
  • Особенности:Поддерживает интерфейсы SPI, I2C, UART.Идеален для работы с датчиками, RFID-модулями, зуммерами и другими периферийными устройствами.

Плата LOLIN (wemos) d1

  • Микроконтроллер: ESP8266 с интегрированным Wi-Fi модулем.
  • Порты: Аналоговые и цифровые порты для подключения датчиков и других устройств.
  • Питание: 3.3V, но может работать от 5V через встроенный регулятор напряжения.

Сложности в программировании

  1. Работа с Wi-Fi: Настройка стабильного Wi-Fi соединения может быть сложной, особенно в условиях слабого сигнала.
  2. Калибровка датчиков: Датчик MQ-5 требует калибровки для точного измерения концентрации газов. Но в загруженной программе калибровка происходит автоматически.
  3. Обработка данных на сервере: Необходимо учитывать возможные задержки в передаче данных и обрабатывать ошибки соединения. При неправильном подключении.

Вывод

Проект «Wifi-School-Station» представляет собой эффективное решение для мониторинга окружающей среды с использованием современных технологий. Он сочетает в себе аппаратную часть на базе LOLIN(WEMOS) D1 и программную часть, реализованную на Python. Проект может быть расширен за счет добавления новых датчиков и функциональности. В будущем планируется улучшение стабильности работы, добавление новых функций и оптимизация кода. Себестоимость устройства ≈70 BYN

Для дальнейшего развития проекта планируется:

  • Улучшить обработку ошибок и стабильность соединения.
  • Добавить поддержку новых датчиков.
  • Оптимизировать код для повышения производительности.
  • Cоздать сайт для администрации школьного заведения(для просмотра последних данных с классов учебного заведения)
  • Новый способ подключения устройств к Telegram-бота по их токену
  • Более компактная сборка устройста на печтаной плате личного производства(в процессе)

Ссылка на проект: Wifi-School-Station

Ссылка на телеграмм бота: https://t.me/Coyrstestbot

Переходник на github проекта: photo_2025-02-05_07-57-28

Вопросы разработчику можно задать тут: eugeniydevtalent@gmail.com

Приложение: Schematic_esp1_2025-01-27 Schematic_wifi-school_2025-02-25

Источники: 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

https://github.com/miguel5612/MQSensorsLib

https://docs.djangoproject.com/en/5.1/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published