mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-09-12 01:24:04 +00:00
121 lines
3.8 KiB
Arduino
121 lines
3.8 KiB
Arduino
/*
|
|
* Example sketch for reporting on readings from the LD2410 using whatever settings are currently configured.
|
|
*
|
|
* This has been tested on the following platforms...
|
|
*
|
|
* On ESP32, connect the LD2410 to GPIO pins 32&33
|
|
* On ESP32S2, connect the LD2410 to GPIO pins 8&9
|
|
* On ESP32C3, connect the LD2410 to GPIO pins 4&5
|
|
* On Arduino Leonardo or other ATmega32u4 board connect the LD2410 to GPIO pins TX & RX hardware serial
|
|
*
|
|
* The serial configuration for other boards will vary and you'll need to assign them yourself
|
|
*
|
|
* There is no example for ESP8266 as it only has one usable UART and will not boot if the alternate UART pins are used for the radar.
|
|
*
|
|
* For this sketch and other examples to be useful the board needs to have two usable UARTs.
|
|
*
|
|
*/
|
|
|
|
#if defined(ESP32)
|
|
#ifdef ESP_IDF_VERSION_MAJOR // IDF 4+
|
|
#if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4
|
|
#define MONITOR_SERIAL Serial
|
|
#define RADAR_SERIAL Serial1
|
|
#define RADAR_RX_PIN 32
|
|
#define RADAR_TX_PIN 33
|
|
#elif CONFIG_IDF_TARGET_ESP32S2
|
|
#define MONITOR_SERIAL Serial
|
|
#define RADAR_SERIAL Serial1
|
|
#define RADAR_RX_PIN 9
|
|
#define RADAR_TX_PIN 8
|
|
#elif CONFIG_IDF_TARGET_ESP32C3
|
|
#define MONITOR_SERIAL Serial
|
|
#define RADAR_SERIAL Serial1
|
|
#define RADAR_RX_PIN 4
|
|
#define RADAR_TX_PIN 5
|
|
#else
|
|
#error Target CONFIG_IDF_TARGET is not supported
|
|
#endif
|
|
#else // ESP32 Before IDF 4.0
|
|
#define MONITOR_SERIAL Serial
|
|
#define RADAR_SERIAL Serial1
|
|
#define RADAR_RX_PIN 32
|
|
#define RADAR_TX_PIN 33
|
|
#endif
|
|
#elif defined(__AVR_ATmega32U4__)
|
|
#define MONITOR_SERIAL Serial
|
|
#define RADAR_SERIAL Serial1
|
|
#define RADAR_RX_PIN 0
|
|
#define RADAR_TX_PIN 1
|
|
#endif
|
|
|
|
#include <ld2410.h>
|
|
|
|
ld2410 radar;
|
|
|
|
uint32_t lastReading = 0;
|
|
bool radarConnected = false;
|
|
|
|
void setup(void)
|
|
{
|
|
MONITOR_SERIAL.begin(115200); //Feedback over Serial Monitor
|
|
//radar.debug(MONITOR_SERIAL); //Uncomment to show debug information from the library on the Serial Monitor. By default this does not show sensor reads as they are very frequent.
|
|
#if defined(ESP32)
|
|
RADAR_SERIAL.begin(256000, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN); //UART for monitoring the radar
|
|
#elif defined(__AVR_ATmega32U4__)
|
|
RADAR_SERIAL.begin(256000); //UART for monitoring the radar
|
|
#endif
|
|
delay(500);
|
|
MONITOR_SERIAL.print(F("\nConnect LD2410 radar TX to GPIO:"));
|
|
MONITOR_SERIAL.println(RADAR_RX_PIN);
|
|
MONITOR_SERIAL.print(F("Connect LD2410 radar RX to GPIO:"));
|
|
MONITOR_SERIAL.println(RADAR_TX_PIN);
|
|
MONITOR_SERIAL.print(F("LD2410 radar sensor initialising: "));
|
|
if(radar.begin(RADAR_SERIAL))
|
|
{
|
|
MONITOR_SERIAL.println(F("OK"));
|
|
MONITOR_SERIAL.print(F("LD2410 firmware version: "));
|
|
MONITOR_SERIAL.print(radar.firmware_major_version);
|
|
MONITOR_SERIAL.print('.');
|
|
MONITOR_SERIAL.print(radar.firmware_minor_version);
|
|
MONITOR_SERIAL.print('.');
|
|
MONITOR_SERIAL.println(radar.firmware_bugfix_version, HEX);
|
|
}
|
|
else
|
|
{
|
|
MONITOR_SERIAL.println(F("not connected"));
|
|
}
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
radar.read();
|
|
if(radar.isConnected() && millis() - lastReading > 1000) //Report every 1000ms
|
|
{
|
|
lastReading = millis();
|
|
if(radar.presenceDetected())
|
|
{
|
|
if(radar.stationaryTargetDetected())
|
|
{
|
|
Serial.print(F("Stationary target: "));
|
|
Serial.print(radar.stationaryTargetDistance());
|
|
Serial.print(F("cm energy:"));
|
|
Serial.print(radar.stationaryTargetEnergy());
|
|
Serial.print(' ');
|
|
}
|
|
if(radar.movingTargetDetected())
|
|
{
|
|
Serial.print(F("Moving target: "));
|
|
Serial.print(radar.movingTargetDistance());
|
|
Serial.print(F("cm energy:"));
|
|
Serial.print(radar.movingTargetEnergy());
|
|
}
|
|
Serial.println();
|
|
}
|
|
else
|
|
{
|
|
Serial.println(F("No target"));
|
|
}
|
|
}
|
|
}
|