Это руководство поможет вам создать систему мониторинга присутствия в реальном времени с помощью датчика миллиметровых волн DFRobot и макетной платы Beetle ESP32 C6.

История
В этом проекте мы создадим систему мониторинга сердцебиения в реальном времени, используя датчик миллиметровых волн DFRobot, макетную плату Beetle ESP32 C6 и Arduino IDE. Система будет отправлять оповещения через Telegram, что делает ее идеальной для мониторинга присутствия человека. Данная разработка будет полезна для непрерывного мониторинга в сфере безопасности.

Необходимые компоненты
- датчик миллиметровых волн DFRobot (60 ГГц) 
- плата Beetle ESP32 C6 
- соединительные провода 
- макетная плата 
- блок питания 
- аккаунт в Telegram и бот 
Шаг 1: Пошаговое руководство
Настройка оборудования
- 
Подключите датчик к плате Beetle ESP32 C6: - VCC — 5V 
- GND к GND 
- TX к RX 
- 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 

Шаг 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 для удаленного мониторинга и управления. Следуя этому руководству, вы сможете создать надёжную и интерактивную систему обнаружения движения для различных приложений, от систем «умного» дома до систем безопасности.
Комментарии (7)
 - vagon33325.12.2024 10:16- На видео непонятно, есть ли надежное обнаружение движения и объектов. 
 Пробовал LD241х.
 Не смог добиться надежного определения присутствия и определения дистанции.
 Это только у меня такой грустный опыт? - Kill_Voice25.12.2024 10:16- У датчиков LD241x, есть настройки чувствительности по зонам с ними нужно экспериментировать, но в любом случае возможны какие-то фантомые обнаружения, особенно в многоквартирных домах, для более лучшей работы можно дополнить сборку IR датчиком движения 
 
 - sav1325.12.2024 10:16- А кто-то разобрался с Zigbee в этих контроллерах? - У меня поле компиляции примера случается циклические ребут ((( 
 
           
 
Kill_Voice
Цена датчика конечно мощная, на эти деньги можно купить десяток LD2410 который в целом можно использовать даже без ESP.
AI_MCU_hub Автор
Кажется немного разное назначение и фукнциональность датчиков. В статье самый простой вариант подключения использования, но сам датчик умеет больше - и детекция падений и дыхания.
У DFRobot есть более дешёвые варианты, они больше похожи на LD2410, например https://www.dfrobot.com/product-2793.html. Хотя цена всё равно выше.
kenomimi
Там датчики очень разные, правда, нигде нет вменяемой инструкции, как они работают и как их правильно использовать. Везде или как тут в статье картинки про ардуино с простейшим примером, или нечто на китайском от производителя HiLink (который их и делает, собственно)
Вроде те, что подороже, баксов 30-40, умеют чуть ли не дыхание определять через стену... В статье, похоже, оно самое, только с добавкой в виде esp32.
Kill_Voice
Они все плюс-минус одинаково работают, это микроволновый радар который на выходе выдает цифровой сигнал