Objetivos
- Vamos a usar el PCF8575 con ESP32.
- Veremos el diagrama de conexión.
- Comprobaremos que es el mismo programa que con Arduino UNO.
Material requerido.
![]() |
Un RCWL-0516 |
![]() |
Un arduino UNO R3 |
![]() |
Fuente de protoboard |
![]() |
Una protoboard |
Radar de efecto Doppler RCWL-0516
Con este nombre, el éxito del sensor RWCL-0516 esta garantizado claro. Pero como todo en la vida, cuando algo es demasiado bonito para ser verdad …. No suele serlo.
Veamos, el sensor RWCL-0516 parece ser realmente un emisor receptor que aprovecha el efecto Doppler para detectar movimiento en sus inmediaciones con buena sensibilidad y hasta distancias de unos 7 u 8 metros, pero no sirve para medir la velocidad del objeto (Una autentica lastima)
Básicamente nos servirá como detector de presencia o de intrusión, si lo prefieres, en la línea de algunos que ya hemos visto anteriormente en Prometec, como:
- Sensor de distancia HC-SR04:
- Este sensor es muy sensible a la humedad y temperatura ambiente y su rango de detección es del orden de 3-4 metros pero nos da la distancia al objeto que tenga enfrente tanto si está en movimiento como inmóvil.
- Sensor HC-SR501 PIR:
- Los sensores PIR no nos entrega la distancia al objeto detectado sino solamente que ha visto movimiento y además solamente detecta cuerpos calientes (Radiación infrarroja) lo que no dispararía con algo frio como que se hundiera el techa.
- Sensores de distancia Infrarrojo GP2Y0A21:
- Estos si que miden la distancia al objeto más próximo hasta unos 12 metros dependiendo del modelo pero tiene que ser enfocados en un punto relativamente estrecho.
El sensor RWCL-0516 de efecto Doppler, emite una serie de señales de radiofrecuencia y escucha el eco de los rebotes (De ahí lo radar) y es muy sensible a las variaciones en esos rebotes, que es lo que cuando hay variaciones dispara la alarma (De aquí viene lo de efecto Doppler)
Para los que no estéis familiarizados con el efecto Doppler, la idea básica es que la longitud de onda de una señal radioeléctrica que se propaga, se ve modificada por la velocidad del objeto que lo emite. Es esa sensación tan familiar de cambio del tono de una sirena que es aguda cuando se acerca y mas grave cuando se aleja lo que nos permite, a ojos cerrados, saber si una sirena se acerca o se aleja.
Se puede utilizar ese efecto con ondas de mas frecuencia para detectar objetos lejanos (radares comerciales y militares) y además nos informa de la velocidad de aproximación en función de la variación de la frecuencia o de la longitud de onda.
Lamentablemente el sensor RWCL-0516 no puede medir esa variación, lo que seria interesantísimo, pero la verdad es que lo que cuesta no se puede medir mucho mas y a cambio es un elemento muy sensible y capaz de detectar las variaciones en la presencia de cualquier objeto (Caliente o no) hasta unos 7 u 8 metros de forma fiable y muy rápida
Y como tenia un par de estos cacharritos dando vueltas por mi mesa una temporada ya es momento de que hablemos de ellos. Vamos a lio.
Conectando el RCWL-0516
Vamos a ver que es de lo mas sencillo. En principio ni siquiera necesitamos un Arduino para hacerlo funcionar y podemos montar simplemente un circuito con una protoboard sin más. Veamos el patillaje del sensor:
PIN | Función |
---|---|
Vin | 5V |
GND | GND |
OUT | Salida digital 3,3 V. Se puede leer desde Arduino |
3,3V | Es una salida a 3,3V y se puede usar para alimentar otras cosas hasta 100 mA |
CDS | Habilita el uso de un LDR en los pines frontales CDS. Habilitar-> 3,3V Deshabilitar-> 0V |
Podemos hacer un montaje sencillo como este:
Conectamos la alimentación a 5V con Vin y GND y después usamos la salida OUT para encender el LED. Cuando el detector se active pondrá un positivo de 3,3V en el pin OUT y encenderá el LED. Cuando la señal desaparezca simplemente bajará a 0V y listo.
He usado un LED con una resistencia para que pudiéramos ver cómodamente cunado se activa el detector, pero naturalmente podemos usar el pin OUT del sensor para leerlo desde nuestro Arduino y emplearlo para cualquier programa que se os ocurra. Por ejemplo, podríamos hacer esta conexión que nos propone el datasheet del RCWL-0516:

Y el programa no puede ser más simple. En lugar de usar un LED exterior usaremos el led de integrado en nuestra placa, que en el caso del Arduino UNO está conectado al pin 13:
int detectPin = 10; bool detect = false; int led = 13; void setup() { Serial.begin(115200); Serial.println("Starting...\n"); pinMode (detectPin, INPUT); pinMode (led, OUTPUT); } void loop() { detect = digitalRead(detectPin); if(detect == true) { digitalWrite(led, HIGH); Serial.println("Movement detected"); } else digitalWrite(led, LOW); delay(1000); }
Aquí os dejo un mini vídeo con el asunto:
Algunos Comentarios adicionales
Cuando miras al chip hay un par de antenas (Una en cada cara) como era de esperar. Una emite una señal RF y la otra la recibe. Cuando el sistema detecta cambios en esta señal es que hay movimiento y algo se ha cruzado. Vale, pero no esta muy claro cual de las caras es la del detector.
Unas consultas rápidas me ha dejado claro que lo había montado al revés de lo debido (Con los cables por delante, naturalmente) por lo que en este momento puedo confirmaros que el receptor está en la cara que tiene el chip más grande.
Lo siguiente es que se pueden configurar varios parámetros de la detección mediante el uso de resistencias soldadas en los terminales que veis aquí C-TM, R-GN y R-CDS que tenéis rotulados en la placa, en la parte central.
- Los pad C-TM permiten modifica el trigger del sensor para variar el tiempo de disparo y mantenimiento de la señal de salida que es de 2 segundos si no hay componentes soldados.
- Los R-GN permiten modificar el rango de detección de los 7 m sin nada soldado hasta los 5 M.
- Los pines de CDS en la cara del detector, nos permiten conectar una LDR para evitar el disparo del sensor mientras haya luz. Algo que parece sensato ya que las alarmas deben saltar cunado no hay luz en la casa, pero en fin cada uno puede hacer lo que le parezca y de fabrica viene sin el LDR.
No creáis que he entendido muy bien todo esto, pero, en fin, ya le daremos mas vueltas en el futuro.
Por último, después de tener escrito el tuto he encontrado una hoja de características que dice que deberíamos ser capaces de calcular la velocidad del objeto con una serie de cálculos que propone y hasta presenta un programa Arduino para ello, aunque dice que no lo ha comprobado, tócate los…
Pero como tiene bastante información técnica interesante, os dejo aquí el link al documento y el que se aburra que lo pruebe.