Presence detection with CDM324 MMWave module

Does anyone have any experience with the CDM324 24GHz mmwave module for presence detection in HA?

1 Like

I have the same same question but i haven’t found any answers yet.
The only thing i found is this schematic but i don’t have enough experience to electronics in order to understand this.


And i cant find any documentation on esphome for this sensor.

1 Like

I don’t know much about electronics either but this seems to be an amplifier & filter circuit for the module. I have one of this in my hands now and I’m trying to make it work; the problem I saw with theese modules is that they trigger a lot of false positives and need some kind of filtering process before reading the signal in an ESP32 for example.

I am very interest to know if you have succeeded.

I am also very interested in this.

I’m not certain but I wonder if this module is more designed for speed measurement rather than presence detection? I switched to the dfrobot module which works well and there is lots online about presence detection with this module. The only issue is that it is quite expensive. I am looking for lower cost options with similar performance.

Do you need an amplifier for the dfrobot module?
I guess its the SEN0395?

I’ve been trying to get the CDM324 to work all weekend; to no avail. I suspect I have a faulty device since the output pin never changed to trigger motion. I just ordered 5 RCWL-0516s and should have them Wednesday. I’ll report back on how they work.

I’ve been playing around with the RCWL-0516 for a couple of days with basically the same results as the CDM324 when used with esphome on a D1 mini; I constantly get motion detected. However; when I connected it to an Arduino Uno and just polled the data it works normally. Not sure where the problem is. Until I figure it out here is the esphome code.

# RCWL-0516 Microwave Radar Motion Sensor
binary_sensor:
  - platform: gpio
    pin: 
      number: D2
      mode: 
        input: true
        pullup: true
    name: "officeprecence"
    id: doppler
    device_class: motion 

And here is the code on my Uno

// Below: pin number for FOUT
#define PIN_NUMBER 4
void setup() {
  
  Serial.begin(115200);
  pinMode(PIN_NUMBER, INPUT);
  pinMode(ledPin, OUTPUT);
}
void loop() {
  while(digitalRead(PIN_NUMBER)==1){
      int sensorValue = digitalRead(PIN_NUMBER);
      Serial.print(sensorValue,DEC);
      Serial.print(" High\r\n");
  }
  int sensorValue = digitalRead(PIN_NUMBER);
  digitalWrite(ledPin, LOW);
  Serial.print(sensorValue,DEC);
  Serial.print(" Low\r\n");
1 Like

Hallo,
es ist zwar schon eine Weile her, aber ich habe eine conifguration erstellt. Diese habe ich allerdings nicht getestet.

captive_portal:

uart: 
  - tx_pin: GPIO3
    rx_pin: GPIO1
    baud_rate: 9600

sensor:
  - platform: pulse_counter
    pin: GPIO2
    name: "Bewegungserkennung"  
    update_interval: 10s
    filters: 
      - debounce: 50ms

binary_sensor:
  - platform: template
    name: "Bewegung erkannt"
    device_class: motion
    lambda: |-
      if (id("Bewegungserkennung").state > 0) {
        return true;
      } else {
        return false;
      }
    filters: 
      - delayed_on: 10ms
    on_press: 
      then:
        - logger.log: "Bewegung erkannt"  
    on_release: 
      then:
        - logger.log: "Keine Bewegung"