Привет всем любителям электроники и IoT-разработок! Сегодня я расскажу о своём пет-проекте "GSM Module Version 1" — компактном устройстве на базе ESP32S, которое объединяет GSM-связь, управление реле, обработку входных сигналов и удобный веб-интерфейс. Этот модуль можно использовать для автоматизации систем безопасности, удалённого управления и IoT-приложений. Я собрал его постепенно, сталкиваясь с различными вызовами, и в итоге получилась рабочая версия для тестирования и доработки. Давайте разберёмся по шагам: от идей до кода. 😊
Введение в проектМодуль "GSM Module Version 1" — это устройство, которое:
- Обрабатывает звонки и SMS: При поступлении звонка с известного номера включает реле на определённое время; команды SMS позволяют управлять реле удалённо.
- Хранит базу номеров: В EEPROM содержатся до 5000 телефонных номеров с адресами для авторизации звонков.
- Управляет нагрузками: 4 реле с задержками включения/выключения, привязанными к оптронным входам.
- Предоставляет веб-доступ: Точка доступа Wi-Fi с паролем, четыре страницы настроек (адаптированные для мобильных устройств).
- Мониторит состояния: Лог событий в реальном времени, индикация статуса через светодиоды и кнопку.
Проект основан на открытом ПО и Arduino IDE, с использованием библиотек TinyGSM, ESP32 WebServer и Wire. Общая стоимость компонентов — около 2000–3000 рублей, зависит от источников.
Необходимые компонентыПеред сборкой соберите материалы. Вот полный список:
- Микроконтроллер: ESP32S (модуль с ESP32-D0WDQ6).
- GSM-модуль: SIM800L в плате с антенной и разъёмом для SIM-карты.
- Память: EEPROM модуль (например, AT24C256, 256Кб) для хранения номеров.
- Реле: 4 релейных модуля (5V, с оптопарами) для управления нагрузками.
- Оптронные входы: 4 модуля оптронов (для гальванической развязки входных сигналов).
- Индикация: 2 светодиода (красный и зелёный), 2 резистора 220 Ом.
- Кнопка: Одна тактовая кнопка для переключения индикации.
- Питание: Стабилизатор 5V/2A для реле, батарея/адаптер для ESP32.
- Дополнительно: Макетная плата, провода, SIM-карта с GPRS.
Библиотеки для Arduino IDE:
- TinyGsm (для SIM800L).
- ESP32 Web Server (встроена в Arduino ESP32 ядро).
- Wire (для I2C).
Подключите компоненты к ESP32S по следующим пинам (GND и VCC общие, где 3.3V для ESP32, 5V для реле и SIM800L):
- SIM800L: RX (GPIO16), TX (GPIO17), Reset (GPIO19).
- EEPROM: SDA (GPIO21), SCL (GPIO22).
- Реле: GPIO2, GPIO4, GPIO5, GPIO13.
- Оптронные входы: GPIO14, GPIO25, GPIO26, GPIO27 (входы с внутренней подтяжкой).
- Светодиоды: GPIO18 (в противофазе: красный анод через 220Ω to GPIO, катод to GND; зелёный катод через 220Ω to GPIO, анод to VCC).
- Кнопка: GPIO32 to GND.
ESP32S
- GPIO16 (RX) --> SIM800L TX
- GPIO17 (TX) --> SIM800L RX
- GPIO19 (RST) --> SIM800L Reset/PWRKEY
- GPIO21 (SDA) --> EEPROM SDA
- GPIO22 (SCL) --> EEPROM SCL
- GPIO2 --> Реле 1
- GPIO4 --> Реле 2
- GPIO5 --> Реле 3
- GPIO13 --> Реле 4
- GPIO14 --> Оптрон 1 --> GND
- GPIO25 --> Оптрон 2 --> GND
- GPIO26 --> Оптрон 3 --> GND
- GPIO27 --> Оптрон 4 --> GND
- GPIO18 --> [220Ω] --> Анод красного LED --> GND
[220Ω] --> Катод зелёного LED --> VCC
- GPIO32 --> Кнопка --> GND
Для защиты используйте диоды на реле и оптроны для соединения с внешними сигналами.
Программная часть: Код Arduino IDE
Полный код проекта (разделён на части для удобства вставки в файл .ino). Установите библиотеки через менеджер Arduino IDE.
Часть 1: Включаемые файлы, структуры и глобальные переменные