code
نسخ
اقتباس
عرض
تنزيل
LD2420 ESP32
----------- ---------------
VCC ---> 3.3V
GND ---> GND
TX (OT1) ---> GPIO16 (RX2)
RX ---> GPIO17 (TX2)
code
نسخ
اقتباس
عرض
تنزيل
#include <Arduino.h>
// =====================
// LD2420 UART
// =====================
/*
LD2420 ESP32
--------- -----------
VCC ---> 3.3V
GND ---> GND
TX (OT1) ---> GPIO16 (RX2)
RX ---> GPIO17 (TX2)
*/
#define RADAR_RX 16
#define RADAR_TX 17
// جرب 115200 وإذا لم يعمل جرب 256000
#define RADAR_BAUD 115200
HardwareSerial LDSerial(2);
// =====================
// Buffer
// =====================
#define BUFFER_SIZE 128
uint8_t frame[BUFFER_SIZE];
uint16_t frameIndex = 0;
// =====================
// Variables
// =====================
uint32_t lastFrameTime = 0;
bool motion = false;
uint8_t lastData[BUFFER_SIZE];
// =====================
// Setup
// =====================
void setup()
{
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.println("======================");
Serial.println("LD2420 RAW READER");
Serial.println("NO LIBRARY");
Serial.println("======================");
LDSerial.begin(
RADAR_BAUD,
SERIAL_8N1,
RADAR_RX,
RADAR_TX
);
}
// =====================
// Main Loop
// =====================
void loop()
{
while(LDSerial.available())
{
uint8_t c = LDSerial.read();
if(frameIndex < BUFFER_SIZE)
{
frame[frameIndex++] = c;
}
// طباعة مباشرة
Serial.print("0x");
if(c < 16)
Serial.print("0");
Serial.print(c,HEX);
Serial.print(" ");
lastFrameTime = millis();
if(frameIndex >= BUFFER_SIZE)
{
Serial.println();
analyzeFrame();
frameIndex=0;
}
}
// إذا توقف الإرسال
if(frameIndex > 0 &&
millis()-lastFrameTime > 100)
{
Serial.println();
analyzeFrame();
frameIndex=0;
}
}
// =====================
// Analyze
// =====================
void analyzeFrame()
{
Serial.println();
Serial.println("----------------------");
Serial.print("Frame size : ");
Serial.println(frameIndex);
bool changed=false;
for(int i=0;i<frameIndex;i++)
{
if(frame[i]!=lastData[i])
{
changed=true;
break;
}
}
if(changed)
{
motion=true;
Serial.println("Movement : YES");
}
else
{
motion=false;
Serial.println("Movement : NO");
}
Serial.print("RAW : ");
for(int i=0;i<frameIndex;i++)
{
if(frame[i]<16)
Serial.print("0");
Serial.print(frame[i],HEX);
Serial.print(" ");
}
Serial.println();
memcpy(lastData,frame,frameIndex);
Serial.println("----------------------");
}