Sensor de presencia

Buenas,

Hoy os vengo con una consulta que me tiene la cabeza loca. El tema es muy sencillo, encendido de luces por deteccion de movimiento en una casa. La finalidad es que mientres estes en la habitacion no se apague la luz, y que cuando salgas se apague. El problema reside en que si uso un detector de movimiento como el HC-SR501 ocurre que en el momento que te dejes de mover estas jodido y se te apagara la luz, y en el caso de que metas un contador de 1 min, al final puede que acabes gastando mas electricidad de la que debieras, por no contar de lo que pasara si tienes algun animal como un gato.
Por eso me gustaria saber si alguno tiene experiencia, que tipo de sensores o soluciones se suelen aplicar a este tipo de cosas.

Un saludo,

Pedro

Hay soluciones varias:

  1. Cámara con detector de presencia. Otro nivel alejado de Arduino. Requiere Raspbery Pi

  2. sensores en cada puerta sean
    2.1 barreras infrarrojas o sensores ultrasónicos.

Los dos sensores detectan si entras o si sales porque primero interrumpes uno y luego el otro. En sentido de interrupcion le dice al Arduino si estas dentro o fuera. Lleva un contador entonces, entras tu, tu hermano, etc... y va contando 1 2 3 2 1 0 y apaga.

surbyte:

  1. Cámara con detector de presencia. Otro nivel alejado de Arduino. Requiere Raspbery Pi

Esas camaras son las que se arman en sistemas de seguridad, pero creo que vienen a ser lo mismo, es decir, por deteccion de movimiento nada mas. Lo que yo me pregunto, los sensores de movimiento en realidad son sensores que segun tengo entendido detectan formas de calor, no hay ninguno que se pueda programar en plan de que si hay una masa de calor con cierto nivel infrarojo, por mucho que no se mueva se siga sabiendo que en realidad hay una persona. Es decir, niveles de calor del 0 al 10, y digamos que el 10 es la radiacion que desprende una persona, asi que con eso en principio ya estaria funcionando.

surbyte:
Los dos sensores detectan si entras o si sales porque primero interrumpes uno y luego el otro. En sentido de interrupcion le dice al Arduino si estas dentro o fuera. Lleva un contador entonces, entras tu, tu hermano, etc... y va contando 1 2 3 2 1 0 y apaga.

Eso ya lo habia estado pensando. Pero tengo ciertas preocupaciones, es decir, si el arduino que lleve dicho sensor lleva bastante codigo metido o con algun que otro delay, no se podria detectar exactamente cual se activa primero y cual se apaga el ultimo, aunque a lo mejor se me esta escapando algo. Tambien estuve pensando en los animales del hogar ya que los ultrasonidos los humanos no los percibimos pero habria que mirar que frecuencias llegarian a escuchar los gatos o perros por no estar constantemente bombardeandoles con dichas frecuencias, asi que por ultimo solo se me ocurriria lo de la barrera infrarroja, pero ahi habria que mirar donde colocarlas ya que el ultrasonido pensaba encima del marco de una puerta por ejemplo, pero la señal infrarroja en principio no rebotaria contra el suelo como el sonido no?¿

Un saludo

  1. no es lo que tu piensas. Yo hablo de un Raspberry Pi que lo hace sin problemas.
    No respondo lo de la masa de calor. No se a que te refieres. El sensor PIR solo detecta cambios de temperatura. Para algo mejor necesitas sensores mas caros que tampoco sirven para lo que quieres.
    Lo mejor es lo que te dije como punto 1.

  2. El código lo acabo de corregir para alguiein que pedía lo mismo ya te paso el link.
    Mira el post #5 de este hilo programado, ahi basicamente dos sensores ultrasónicos separados 15 cmts uno de otro cuenta personas que entras / salen.
    Le falta ajustes pero esta muy encaminado.

Muchas gracias, voy a mirar el link que me has pasado de los ultrasonidos, pero en caso de no poder usarlo por temas de molestia a animales, se te ocurriria alguna otra forma?

Un saludo

Buenas,

He estado investigando y el sensor por ejemplo basico para arduino HC-SR04 no me valdria ya que opera a 40KHZ y un gato escucha hasta los 65KHZ asi que voy a ver si encuentro otro mas potente, por que ese no me sirve. De todas formas si alguien conoce algun otro le agradeceria el consejo.

Un saludo

2.1 barreras infrarrojas o sensores ultrasónicos.

Si descartas ultrasónicos usa Barreras!

Y se te ocurre alguna forma de ponerlas en las puertas, para contar las personas que entra en una habitacion y las que no?

Lees lo que respondo porque a cada respuesta me preguntas algo que ya escribí

  1. El código lo acabo de corregir para alguiein que pedía lo mismo ya te paso el link.
    Mira el post #5 de este hilo programado, ahi basicamente dos sensores ultrasónicos separados 15 cmts uno de otro cuenta personas que entras / salen.
    Le falta ajustes pero esta muy encaminado.

La distancia entre ambas es necesaria para poder discertir el paso de una persona tal que los dos sensores tengan cambios 0 1 0 1 0 donde cada 1 es un sensor diferente. La secuencia de cual se enciende primero y cual luego determina el sentido.

Todo explicado en las referencias anteriores.

No me has entendido. No me estaba refiriendo que cuantos sensores habia que poner, sino a la localizacion de donde ponerlos, ya se que se necesitan 2 modulos. Es decir, con ultrasonidos no importa por que el emisor y el receptor van en la misma placa. Pero con los infrarrojos el emisor y receptor segun tengo entendido van separados, con lo que es mas dificil para situar en una puerta.

Ah, pues parece que en realidad si que hay modulos de detector de obstaculos por infrarrojos, con eso en principio deberia de funcionar de sobra no?

Un saludo

Barreras infrarrojas usadas en alarmas claro!!
Es mas, ni pienses en hacerlas.
Busca una barrera de las que se usan con las Alarmas.
de donde eres? Te puedo sugerir alguna en algun sitio online

He estado mirando barreras infrarrojas, pero para un hogar las veo un poco grandes. Yo soy de españa, he visto algo como esto:

https://www.amazon.es/gp/product/B06XCCYDK7/ref=s9u_simh_gw_i2?ie=UTF8&pd_rd_i=B06XCCYDK7&pd_rd_r=VW9P5FSK0WMH1QY195P0&pd_rd_w=QNR93&pd_rd_wg=naQsg&pf_rd_m=A1AT7YVPFBWXBL&pf_rd_s=&pf_rd_r=FW46S9Q70Y4HM5MG6V0C&pf_rd_t=36701&pf_rd_p=6908f43d-d139-4893-9bfc-e27e9baa9410&pf_rd_i=desktop

Y creo que podria ir bastante bien para ponder debajo del marco de la puerta de forma disimulada.

Un saludo

Buenas surbyte,

Estuve mirando el post que me indicaste que lo estaba haciendo con ultrasonicos, pero el problema es que el hombre que lo estaba haciendo, por lo que se ve el codigo solo es para contar personas. Mi problema es que mi arduino tendra mas codigo aparte de ese, y puede haber problemas ya que si una persona pasa por en medio de la barrera y el arduino se encuentra ejecutando otra parte del codigo, puede haber perdidas de datos. Estuve investigando ayer, y encontre librerias que simulan multithreading, y tambien otra cosa llamada interrupciones por hardware, que en el caso del arduino nano solamente tiene 2 pins para hacer dicha interrupcion. Que opinas sobre el tema?

Un saludo

Estuve mirando lo del tema del multithreading y interrupciones por que por lo visto los pines de arduino no tienen ningun buffer. De todas formas si sabeis de algun modulo aparte o componente que actue como dicho buffer lo cual seria una solucion mas sencilla, os lo agradeceria.

Un saludo

Mi problema es que mi arduino tendra mas codigo aparte de ese, y puede haber problemas ya que si una persona pasa por en medio de la barrera y el arduino se encuentra ejecutando otra parte del codigo, puede haber perdidas de datos.

No hay perdida de datos.
El único tiempo que demoras es el que tarda cada sensor en indicar si hay o no objeto que lo atraviesa y eso son máximo 100 mseg. NO he hecho las cuentas pero si 100 mseg te parece que vas a perder datos, me gustaría ver el resto de tu código para asegurarme que el problema no va a estar ahi.

Estuve investigando ayer, y encontre librerias que simulan multithreading, y tambien otra cosa llamada interrupciones por hardware, que en el caso del arduino nano solamente tiene 2 pins para hacer dicha interrupcion

No existe multithreading en Arduino. Arduino es secuencial. Asi que de PLANO te digo que no es posible.
Quita esa idea de la cabeza porque estas confunciendo cosas de otros procesadores llevados a Arduino.
Lo que puedes hacer es timeslice y sin llegar a eso puedes programar usando tecnicas sin usar delay que asegurarán que todo marche como si lo fuera.

Respecto del código de ingreso a la cabina. Te aseguro que no lo has visto en su potencialidad.
El sistema funciona. Cumplirá con lo que esperas hacer.

Antes de que te enrrolles de la forma que lo estas haciendo producto que tienes mas dudas que certezas.

Porque no nos dices que mas debe hacer arduino ademas de detectar presencia?

Pues a ver, mi arduino es para empezar un arduino nano, y debera de encargarse de recibir informacion continuamente por serial cuando se envie desde una raspberry, posteriormente tambien tendra que estar atento a entradas de varios interruptores y posteriormente a la salida para luces o persianas. Tambien tendra que monitorizar las barreras infrarrojas, sensores de temperatura y humedad, sensores de puertas y ventanas y si todavia me sobra algun pin tambien sensores de humos o CO2. El tema es que son demasiados sensores que para empezar tengo que empezar a ver si me da con los pines que lleva que creo que si, y posteriormente segun la hora del dia actuar de una forma u otra, o si hay gente en casa o no, a lo mejor no parecen muchos sensores, pero la forma de actuar dependiendo de estos factores hara que el codigo se alargue bastante. Calculo que la programacion sera bastante larga por eso me preocupa que cuando un sensor reporte un dato arduino lo pierda ya que se puede encontrar en otra parte del codigo. No se si se entiende mi preocupacion, pero viene siendo esa, perdida de datos por falta de un buffer como el serial ya que sea bastante codigo a procesar

Tienes una Raspi y le pides al Arduino que haga todo eso?
Mas alla que bien programado puede hacerlo, que hará el Raspi?

El unico inconveniente en un arduino es si usas sensores de humedad DHT o temperatura dallas tipo DS18B20 u otro que demore en responder.
EL DHT tarda 2 seg en responder

El DS18B20 en maxima resolucion 12Bits tarda 750 mseg.

En estos caso si tienes razón pero de lo contrario no.
Una alternativa a lo que dices es distribuir arduinos, no concentrar todo en uno.

Sensores de puertas y ventanas son switchs que se leen rapidamente.
Sensor de CO2 es una variable analgocia que se lee rápidamente.

Ya te indiqué donde esta el cuello de botella.

Si, el tema es tirar multiples arduinos por toda la casa para que cada uno me realice esas operaciones por habitacion, y luego le mande todos los estados a una raspberry pi que tendra un software de domotica para controlar todo el status desde cualquier movil y pc.
El tema del sensor de temperatura no pensaba usar un DHT, principalmente por su precision que me parece muy baja, estaba mirando a ver como conectar un AM2321, pero claro, logicamente si conectara algun sensor con un tiempo alto de respuesta podria estar perdiendo datos. De dicha forma que me recomendarias? Aprender a hacer las interrupciones? O que otra forma verias?

Muchas gracias.

Un saludo

El tema del sensor de temperatura no pensaba usar un DHT, principalmente por su precision que me parece muy baja,

El DHT22 es uno de los mas precisos teniendo en cuenta precio/perfomance.

Y el AM2321 es similar al DHT22. El que si es malo es el DTH11

Insistes con perder datos. Si vas a poner arduinos por toda la casa no vas a perder nada!!

No voy a repetir mi explicación anterior, ya te dije en que condiciones debes seguir presetando atención a lo que haces y no te va a salvar la vida una interrupción.

Si lees Humedad/temp debes esperar a que termine el proceso. Cuando termine el pulsador accionado seguira accionado.