SmartHome: Sensor multiuso inalámbrico

El nodo de sensor, como su nombre indica, permite funcionar como sensor y enviar cierta información o eventos que capture. De serie incluye sensor de temperatura, humedad, luz, y pulsador magnético, cuenta también con varios conectores de expansión para otros dispositivos externos que se conecten por I2C o con pines analógico/digitales.

2018/04/15 – Doy por terminado este nodo, como solo es para pruebas no merece la pena hacer una segunda versión para mejorar algunos detalles sin importancia, lo que es el hardware en sí funciona correctamente.

Se alimenta por baterías, ya sea mediante dos pilas AA o por una pila CR2032, en este ultimo caso existe la posibilidad de partir la placa por la mitad para que ocupe menos espacio.

Como el resto de notos, los componentes comunes son:

  • Microcontrolador ATmega 328P a 1Mhz y 3.3V.
  • Antena inalámbrica NRF24L01 a 2.4Ghz.
  • Chip flash para programación inalámbrica W25X40CLSNIG.
  • Chip de firmado para las transmisiones de datos ATSHA204A.
  • Conector de programación JST 1.0mm de 8P con AVRISP + UART.

Y los específicos:

  • Sensor de temperatura y humedad HTU21D
  • Sensor de luz BH1750
  • Pulsador magnético de cristal.
  • Detector de carga de las baterías.
  • LED azul.
  • Tres conectores de expansión JST 1.0mm de 4P.
  • Porta pilas 2xAA
  • Porta pilas 1xCR2032

Originalmente la idea era usar este sensor para puertas y ventanas además de para otros usos, pero posiblemente termine fabricando uno especifico para esa tarea y este quede solo para pruebas o como simple termómetro y medidor de luz. Por lo pronto ya he comprado un par de carcasas para ver qué tal son y comprobar si entraría la electrónica.

El sketch de ejemplo publicado en el repositorio, junto al resto de documentación, permite al nodo estar durmiendo todo el rato para ahorrar batería, el nodo se despertara unidamente en caso de que se produzca una interrupción por el pulsador magnético debido a que una puerta/ventana se ha abierto, o también en el caso de que pasen X segundos desde que se durmió (tiempo configurado con MS_SLEEP_TIME) para enviar los datos de temperatura, humedad, luz, carga de la batería, etc.

 

El código esta programado de tal forma de que el nodo NO se dormirá si no es capaz de conectarse al Gateway, además en ese caso su LED azul parpadeara constantemente hasta que por fin pueda conectarse… dado que es un nodo cuya utilidad es nula si no tiene conexión a la red decidí programarlo así, otros nodos que permiten la interacción directa con el usuario, como el interruptor de pared, si permite su uso sin necesidad de conexión aunque también alertan de ese error.

Tal vez se podría programar para que se duerma igualmente aunque no pueda conectarse a la red y así no mermar la duración de la batería, por ahora ese es sus funcionamiento, si alguien quiere cambiarlo solo hay que eliminar el else del código.

Escriba aquí su comentario