SEN0610 ( c4001 12m) Not Detected with Ardunio
Ed.Dow 2025-11-25 03:11:40 287 Views4 Replies I purchased the SEN0610 to experiment with motion detection and integration into various products.
Using the dfrobot library for the Arduino I am trying to run the sample application; however, the only output I'm getting is “No Devices! ”. I've tried running it with an Arduino Mega 2560 and Ardunio Uno.
And I've tried running it in I2C and UART modes but I get the same response. I've ohmed out all my connectors from the Arduino to the c4001 and everything is good. Both Ardunio's have been tested and work with other code.
The c4001 has a solid white led (OUTPUT) and a flashing green led (RUN). Not sure what this indicates.
From the sample code this would indicate that the Ardunio cannot see the dfrobot c4001 sensor. I'm not exactly sure what's going on?
Is there anything else to try before ruling out this is a faulty sensor?
Here is the Python Code to use with the Raspberry Pi.
Use this Python script to interpret the data coming off the serial GPIO pins 14 and 15.
#!/usr/bin/env python3
import serial
import time
# Open UART
ser = serial.Serial('/dev/serial0', 115200, timeout=0.5)
def parse_frame(frame):
# Byte 0: header (0x55)
# Byte 2: presence flag (1 = presence, 0 = none)
if len(frame) < 3:
return None
return frame[2] != 0
buffer = bytearray()
print("C4001 Presence Detection Started...")
try:
while True:
if ser.in_waiting:
data = ser.read(ser.in_waiting)
buffer.extend(data)
# Process in 5-byte frames (adjust if your module sends more)
while len(buffer) >= 5:
frame = buffer[:5]
buffer = buffer[5:]
detected = parse_frame(frame)
if detected is not None:
if detected:
print("Presence Detected")
else:
print("No Presence")
time.sleep(0.1)
except KeyboardInterrupt:
print("\nExiting...")
ser.close()
---------------------------------
You can also use this simple script to dump raw hex…
#!/usr/bin/env python3
import serial
ser = serial.Serial('/dev/serial0', 115200, timeout=0.5)
while True:
if ser.in_waiting:
data = ser.read(ser.in_waiting)
print(data.hex(), end=' ')
Ed.Dow The wiring diagram on the DFRobot website is misleading as you must be connected to 3.3V logic . I've been able to get something working with a Raspberry Pi 3 B+.
On Raspberry Pi (40-pin header):
C4001 Pin Pi Pin Notes
VCC 3.3V (pin 1) Must be 3.3V, not 5V
GND GND (pin 6) Any GND pin
TX GPIO15 (Pin 10) Sensor → Pi (RX)
RX GPIO14 (Pin 8) Pi → Sensor (TX)
NOTE:
If /dev/serial0 is missing → go to:
sudo raspi-config
→ Interface Options
→ Serial Port
Disable login shell over serial
Enable serial hardware
Reboot
Ed.Dow Run the standard I2C scanner example:
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(115200);
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop() {
byte error, address;
int nDevices = 0;
for(address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address: 0x");
Serial.println(address, HEX);
nDevices++;
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("Done\n");
delay(3000);
}
If this scanner doesn’t find 0x62. I²C mode is not actually enabled, or the sensor is damaged.
ahsrab.rifat Thanks for the reply Ahsrab!
I might give this a try.
According to the DFRobot demo code and also the dip switches/silk screen on the c4001 device I believe the I2C address is either 0x2A or 0x2B (dip switch on c4001).
Is that the address that we are trying to find?

