Мониторинг присутствия в реальном времени с помощью датчика миллиметровых волн и макетной платы Beetle C6

в 9:34, , рубрики: arduino, diy-проекты, мониторинг присутствия, разработка на arduino, система обнаружения движения

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

Real-Time Presence Monitoring with mmWave and Beetle C6

Real-Time Presence Monitoring with mmWave and Beetle C6

История

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

https://hackster.imgix.net/uploads/attachments/1745900/image_Eo6ckeW3Pd.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Необходимые компоненты

·         датчик миллиметровых волн 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 к подходящему источнику питания.

Мониторинг присутствия в реальном времени с помощью датчика миллиметровых волн и макетной платы Beetle C6 - 3

Шаг 2: Установка программного обеспечения

·         Перейдите на страницу программного обеспечения Arduino

·         Скачайте и установите Arduino IDE: выберите версию, совместимую с вашей ОС (Windows, Mac OS X или Linux), и скачайте её.

https://hackster.imgix.net/uploads/attachments/1745902/image_GyVAwgOSFj.png?auto=compress%2Cformat&w=1280&h=960&fit=max

·         Запустите Arduino IDE: откройте Arduino IDE из установленных приложений.

https://hackster.imgix.net/uploads/attachments/1745903/image_WyIxnbOGWk.png?auto=compress%2Cformat&w=1280&h=960&fit=max

·         Откройте настройки: перейдите в File > Preferences (или Arduino > Preferences для Mac).

В поле “Additional Board Manager URLs” («Дополнительные URL-адреса менеджера плат») введите следующий URL-адрес:

Мониторинг присутствия в реальном времени с помощью датчика миллиметровых волн и макетной платы Beetle C6 - 6

Если у вас уже есть другие URL-адреса, их можно разделить запятой.

https://hackster.imgix.net/uploads/attachments/1745904/image_8NBKXAnFj4.png?auto=compress%2Cformat&w=1280&h=960&fit=max

·         Откройте Менеджер плат (Boards Manager): перейдите в меню Tools > Board > Boards Manager.

·         Поиск ESP32: в строке поиска введите «ESP32».

·         Установите ESP32: найдите запись «ESP32 by Espressif Systems» и нажмите кнопку «Установить».

https://hackster.imgix.net/uploads/attachments/1745905/image_IoMcy75opN.png?auto=compress%2Cformat&w=1280&h=960&fit=max

·         Подключите плату ESP32 к компьютеру с помощью USB-кабеля.

·         Выберите плату: перейдите в меню Tools > Board  и выберите конкретную модель платы ESP32 — Beetle ESP32 C6.

https://hackster.imgix.net/uploads/attachments/1745906/image_kIimob8lU6.png?auto=compress%2Cformat&w=1280&h=960&fit=max

·         Выберите порт: перейдите в меню Tools > Port и выберите COM-порт, к которому подключена ваша плата ESP32.

https://hackster.imgix.net/uploads/attachments/1745907/image_s71279M33g.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Шаг 3: Добавление необходимых библиотек

·         Откройте Arduino IDE и перейдите в раздел Sketch > Include Library > Manage Libraries.

https://hackster.imgix.net/uploads/attachments/1745911/image_pdOoVIivq9.png?auto=compress%2Cformat&w=1280&h=960&fit=max
https://hackster.imgix.net/uploads/attachments/1745912/image_mwQweqktp0.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Шаг 4: Программирование Beetle ESP32 C6

Сначала перейдите в раздел скетчей примеров и найдите скетч Human Detection («Обнаружение человека»), а затем используйте базовый скетч.

https://hackster.imgix.net/uploads/attachments/1745913/image_aZhGJginvX.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Далее необходимо настроить выводы UART в соответствии с инструкцией Beetle ESP32 C6.

https://hackster.imgix.net/uploads/attachments/1745915/image_xA2dgQP86y.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Загрузите код и посмотрите на вывод последовательного порта в терминале.

https://hackster.imgix.net/uploads/attachments/1745916/image_xwkfWjDFOB.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Вы можете наблюдать как за движением, так и за показателями дыхания и работы сердце. Для получения данных о работе сердца и дыхании датчик должен располагаться непосредственно на груди человека.

https://hackster.imgix.net/uploads/attachments/1745919/image_fGjVfOEBPp.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Шаг 5: Настройка Telegram-бота

Создайте Telegram-бота:

·         Откройте Telegram и найдите BotFather.

https://hackster.imgix.net/uploads/attachments/1745920/image_GVfHXJI9UV.png?auto=compress%2Cformat&w=1280&h=960&fit=max

·         Начните чат с BotFather и используйте команду /newbot, чтобы создать новый бот. 

https://hackster.imgix.net/uploads/attachments/1745921/image_AUnoNfkswi.png?auto=compress%2Cformat&w=1280&h=960&fit=max

·         Следуйте инструкциям, чтобы получить свой токен бота.

https://hackster.imgix.net/uploads/attachments/1745922/image_ij0RumFPX1.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Получите свой идентификатор чата: начните общение со своим ботом и отправьте любое сообщение.

https://hackster.imgix.net/uploads/attachments/1745923/image_fAzz1nsoUM.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Найдите объект 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.nn";
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-бот.

https://hackster.imgix.net/uploads/attachments/1745925/image_rsYCalGnWY.png?auto=compress%2Cformat&w=1280&h=960&fit=max

Шаг 7: Протестируйте установку

Вот и всё! Вы успешно разработали систему обнаружения движения. Теперь давайте проверим работу системы. Вот видео, на котором система работает.

Заключение

https://hackster.imgix.net/uploads/attachments/1745934/screenshot_2024-08-06_161852_9HAFacwohx.png?auto=compress%2Cformat&w=1280&h=960&fit=max

В этом руководстве мы рассмотрели интеграцию датчика миллиметровых волн DFRobot C1001 с платой ESP32 C6 для создания сложной системы обнаружения движения человека. Мы рассмотрели процесс установки оборудования, настройки датчика и написания необходимого кода для обнаружения присутствия и движения человека. Кроме того, мы продемонстрировали, как подключить эту систему к Telegram-боту, что позволяет получать уведомления и оповещения в реальном времени прямо на мобильное устройство. 

Этот проект не только демонстрирует возможности датчика миллиметровых волн в точном обнаружении движения, но и подчеркивает удобство и эффективность использования Telegram для удаленного мониторинга и управления. Следуя этому руководству, вы сможете создать надёжную и интерактивную систему обнаружения движения для различных приложений, от систем «умного» дома до систем безопасности.

 

Автор: AI_MCU_hub

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js