Это руководство поможет вам создать систему мониторинга присутствия в реальном времени с помощью датчика миллиметровых волн DFRobot и макетной платы Beetle ESP32 C6.
История
В этом проекте мы создадим систему мониторинга сердцебиения в реальном времени, используя датчик миллиметровых волн DFRobot, макетную плату Beetle ESP32 C6 и Arduino IDE. Система будет отправлять оповещения через Telegram, что делает ее идеальной для мониторинга присутствия человека. Данная разработка будет полезна для непрерывного мониторинга в сфере безопасности.
Необходимые компоненты
· датчик миллиметровых волн DFRobot (60 ГГц)
· плата Beetle ESP32 C6
· соединительные провода
· макетная плата
· блок питания
· аккаунт в Telegram и бот
Шаг 1: Пошаговое руководство
Настройка оборудования
· Подключите датчик к плате Beetle ESP32 C6:
o VCC — 5V
o GND к GND
o TX к RX
o RX — TX
· Подключите плату Beetle ESP32 C6 к подходящему источнику питания.
Шаг 2: Установка программного обеспечения
· Перейдите на страницу программного обеспечения Arduino
· Скачайте и установите Arduino IDE: выберите версию, совместимую с вашей ОС (Windows, Mac OS X или Linux), и скачайте её.
· Запустите Arduino IDE: откройте Arduino IDE из установленных приложений.
· Откройте настройки: перейдите в File > Preferences (или Arduino > Preferences для Mac).
В поле “Additional Board Manager URLs” («Дополнительные URL-адреса менеджера плат») введите следующий URL-адрес:
Если у вас уже есть другие URL-адреса, их можно разделить запятой.
· Откройте Менеджер плат (Boards Manager): перейдите в меню Tools > Board > Boards Manager.
· Поиск ESP32: в строке поиска введите «ESP32».
· Установите ESP32: найдите запись «ESP32 by Espressif Systems» и нажмите кнопку «Установить».
· Подключите плату ESP32 к компьютеру с помощью USB-кабеля.
· Выберите плату: перейдите в меню Tools > Board и выберите конкретную модель платы ESP32 — Beetle ESP32 C6.
· Выберите порт: перейдите в меню Tools > Port и выберите COM-порт, к которому подключена ваша плата ESP32.
Шаг 3: Добавление необходимых библиотек
· Откройте Arduino IDE и перейдите в раздел Sketch > Include Library > Manage Libraries.
-
Найдите и установите следующие библиотеки:
-
Wi-Fi
-
UniversalTelegramBot (https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot)
Шаг 4: Программирование Beetle ESP32 C6
Сначала перейдите в раздел скетчей примеров и найдите скетч Human Detection («Обнаружение человека»), а затем используйте базовый скетч.
Далее необходимо настроить выводы UART в соответствии с инструкцией Beetle ESP32 C6.
Загрузите код и посмотрите на вывод последовательного порта в терминале.
Вы можете наблюдать как за движением, так и за показателями дыхания и работы сердце. Для получения данных о работе сердца и дыхании датчик должен располагаться непосредственно на груди человека.
Шаг 5: Настройка Telegram-бота
Создайте Telegram-бота:
· Откройте Telegram и найдите BotFather.
· Начните чат с BotFather и используйте команду /newbot, чтобы создать новый бот.
· Следуйте инструкциям, чтобы получить свой токен бота.
Получите свой идентификатор чата: начните общение со своим ботом и отправьте любое сообщение.
Найдите объект chat
в ответе, чтобы узнать свой идентификатор чата.
Шаг 6: Интеграция с ботом Telegram.
Это готовый скетч, способный распознавать движения человека и отправлять сообщения в Telegram.
#include "DFRobot_HumanDetection.h"
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h> // Universal Telegram Bot Library written by Brian Lough: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
#include <ArduinoJson.h>
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
#include <SoftwareSerial.h>
#endif
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_HumanDetection hu(&mySerial);
#else
DFRobot_HumanDetection hu(&Serial1);
#endif
// Replace with your network credentials
const char* ssid = "ELDRADO";
const char* password = "amazon123";
// Use @myidbot to find out the chat ID of an individual or a group
// Also note that you need to click "start" on a bot before it can
#define CHAT_ID "xxxxxxxxxxxxxxxxxxxx"
// Initialize Telegram BOT
#define BOTtoken "xxxxxxxxxxxxxxxxxxxxx" // your Bot Token (Get from Botfather)
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
//Checks for new messages every 1 second.
int botRequestDelay = 1000;
unsigned long lastTimeBotRan;
void setup() {
Serial.begin(115200);
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
mySerial.begin(115200);
#elif defined(ESP32)
Serial1.begin(115200, SERIAL_8N1, /*rx =*/17, /*tx =*/16);
// Serial1.begin(115200, SERIAL_8N1, /*rx =*/20, /*tx =*/21);
#else
Serial1.begin(115200);
#endif
Serial.println("Start initialization");
// Connect to Wi-Fi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
#ifdef ESP32
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org
#endif
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
while (hu.begin() != 0) {
Serial.println("init error!!!");
delay(1000);
}
Serial.println("Initialization successful");
Serial.println("Start switching work mode");
while (hu.configWorkMode(hu.eSleepMode) != 0) {
Serial.println("error!!!");
delay(1000);
}
Serial.println("Work mode switch successful");
Serial.print("Current work mode:");
switch (hu.getWorkMode()) {
case 1:
Serial.println("Fall detection mode");
break;
case 2:
Serial.println("Sleep detection mode");
break;
default:
Serial.println("Read error");
}
hu.configLEDLight(hu.eHPLed, 1); // Set HP LED switch, it will not light up even if the sensor detects a person when set to 0.
hu.sensorRet(); // Module reset, must perform sensorRet after setting data, otherwise the sensor may not be usable Serial.print("HP LED status:");
switch (hu.getLEDLightState(hu.eHPLed)) {
case 0:
Serial.println("Off");
break;
case 1:
Serial.println("On");
break;
default:
Serial.println("Read error");
}
Serial.println();
Serial.println();
String welcome = "Welcome ";
welcome += "Motion Detector Activated.\n\n";
bot.sendMessage(CHAT_ID, welcome, "");
}
void loop() {
Serial.print("Existing information:");
switch (hu.smHumanData(hu.eHumanPresence)) {
case 0:
Serial.println("No one is present");
break;
case 1:
Serial.println("Someone is present");
break;
default:
Serial.println("Read error");
}
Serial.print("Motion information:");
switch (hu.smHumanData(hu.eHumanMovement)) {
case 0:
Serial.println("None");
break;
case 1:
Serial.println("Still");
break;
case 2:
Serial.println("Active");
break;
default:
Serial.println("Read error");
}
Serial.print("Body movement parameters: ");
Serial.println(hu.smHumanData(hu.eHumanMovingRange));
if (hu.smHumanData(hu.eHumanMovingRange) > 2) {
String message = "Motion Detected: Please check the status \n"; bot.sendMessage(CHAT_ID, message, ""); }
Serial.print("Respiration rate: ");
Serial.println(hu.getBreatheValue());
Serial.print("Heart rate: ");
Serial.println(hu.gitHeartRate());
Serial.println("---------------------- -");
delay(200);
}
Примечание: необходимо обновить учётные данные Wi-Fi и Telegram, чтобы они соответствовали вашим собственным.
Как только статус движения станет выше 2, сработает Telegram-бот.
Шаг 7: Протестируйте установку
Вот и всё! Вы успешно разработали систему обнаружения движения. Теперь давайте проверим работу системы. Вот видео, на котором система работает.
Заключение
В этом руководстве мы рассмотрели интеграцию датчика миллиметровых волн DFRobot C1001 с платой ESP32 C6 для создания сложной системы обнаружения движения человека. Мы рассмотрели процесс установки оборудования, настройки датчика и написания необходимого кода для обнаружения присутствия и движения человека. Кроме того, мы продемонстрировали, как подключить эту систему к Telegram-боту, что позволяет получать уведомления и оповещения в реальном времени прямо на мобильное устройство.
Этот проект не только демонстрирует возможности датчика миллиметровых волн в точном обнаружении движения, но и подчеркивает удобство и эффективность использования Telegram для удаленного мониторинга и управления. Следуя этому руководству, вы сможете создать надёжную и интерактивную систему обнаружения движения для различных приложений, от систем «умного» дома до систем безопасности.
ссылка на оригинал статьи https://habr.com/ru/articles/869640/
Добавить комментарий