Paso 7: La unidad receptora
Mi unidad de receptor no es una unidad de acabado para este sistema, más bien es un proyecto anterior que he modificado para actuar como una unidad receptora. La unidad consta de un escueto Arduino ATmega328p montado en una caja de plástico con una I2C 16 x 2 pantalla de cristal líquido, un relé de 10A 240VAC, RGB LED, un zumbador y un transceptor NRF24L01. La idea aquí es que cuando se recibe una señal de alarma la pantalla LCD muestra un mensaje y parpadea junto con un LED RGB, los sonidos del zumbador y el relé se enciende un reflector de seguridad o algo semejantemente alta potencia.
Mi unidad receptora también incluye otro Arduino Uno con el Shield Ethernet que está programada para acceder a un servicio en línea llamado Twilio que enviará un mensaje SMS a mi teléfono móvil. Sin embargo, me concentraré solamente en el circuito del receptor ATmega328p, si usted quiere incluir esta funcionalidad en su dispositivo y luego dirígete a aquí para aprender cómo. Mi código muestra cómo he enviado una salida digital del circuito receptor ATmega328p a Arduino Uno para activar el código de envío SMS. También tenga en cuenta que mi unidad receptora alberga una placa de relé de 4 vías, sin embargo, mi código sólo utiliza uno de los relés.
Si echamos un vistazo al código:
Aquí estamos creando una instancia de la pantalla LCD llamada 'lcd'. Los archivos de encabezado incluidos forman parte de la biblioteca LiquidCrystal_I2C que se encuentra aquí.
A continuación, hemos creado la instancia NRF24L01 utilizando el mismo método como el transmisor asegurar que usamos la misma dirección de la tubería.
La siguiente parte del código define varias variables para el bosquejo. La duración de la alarma y la duración del zumbador son configurables aquí - tengo la duración de timbre establecida en 0 en este momento como conduce a mi mujer loca cada vez que pruebo :)
El código de instalación configura los pines GPIO, imprime un mensaje en la pantalla y parpadea el LED verde diez veces. Luego se configura el NRF24L01 con la misma tarifa de datos y canales como el transmisor y empieza a escuchar transmisiones.
El bucle principal simplemente llama a la función de checkRadio() una y otra vez.
La función checkRadio() funciona simplemente revisando los datos recibieron y si los datos están iguales a 1 entonces saltan a la función triggerAlarm().
La función triggerAlarm() en primer lugar envía una señal de mensaje de texto a mi otra Arduino (no incluido en este Instructable). Entonces el resto es lo que se llama código sin bloqueos para trabajar con retrasos en el tiempo y básicamente suena la alarma por un período determinado (ALARM_DURATION) antes de devolver el sistema a un estado 'armado'.
¡Que te diviertas!