Sensor avanzado para apertura de puerta


En el post de hoy vamos a ver un nuevo sistema de monitorización que se alimenta mediante una simple batería. La versión anterior se basó en una radio XBee y ha estado en servicio durante casi 3 años y medio. El tiempo de duración de la batería real ha sido de alrededor de 3 meses para una pila de botón CR2032, que no está mal del todo, pero aún así como vamos a ver es mejorable.

En el nuevo diseño ,aparte de usar un modulo de radio de 868 MHz RFM69 en lugar del XBee Monteino y, se ha reducido la lista de componentes moviendo la lógica del hardware a lógica de software,lo cual  significa utilizar las capacidades de ahorro energético en modo dormir tanto del ATMega328 y la RFM69 y la codificación de una manera inteligente para reducir el tiempo despertar.

Hardware

monteino.PNG

Moteino es una placa  Arduino inalámbrica de bajo coste basado en el microcontrolador Atmel ATmega328P  .

Para una guía detallada de la placa , consulte esta página dedicada . Aquí están algunas características y aspectos más destacados de Moteino:

  • Arduino bajo costo totalmente compatible con el IDE de Arduino
  • La versión regular incluye un RFM69W / transceptor a bordo HW y la antena de alambre monopolo de 1/4 de longitud de onda por separado
  • Bajo consumo de energía, energía de la batería de usar
  • 3.3V a bordo regulador (MCP1703) proporciona hasta 250 mA, entrada de hasta 16V (3.5-9V recomendado), muy baja corriente de reposo permite que este regulador para hacer funcionar su Moteino con la batería durante un tiempo muy largo
  • Muy pequeño tamaño (1,3 pulgadas x0.9)
  • diseño de tablero de cabecera de usar le permite adjuntar hembra / macho pines del conector en la parte superior o inferior y hacer escudos para ello o sólo lo utilizan en el tablero para prototipos
  • Cabecera de programación FTDI, ofrecemos este consejo adaptador FTDI para la programación de todos los Moteinos
  • DualOptiboot gestor de arranque para la programación rápida y no está en puesta demora. Elija Arduino Uno / Moteino en Herramientas> Juntas de Arduino IDE.
  • LED bordo de pin digital 9 (D9 / PB1) para depurar o indicación visual
  • acabado ENIG (RoHS Sin plomo)
  • Orgullosamente hecho y probado en Michigan EE.UU.-con componentes genuinos!

 

Para hacer un enlace inalámbrico, necesitará al menos 2 Moteinos. Alternativamente, esta es compatible con otros Arduinos que utilizan el transceptor RFM69.

Como ya se ha dicho, el hardware es mucho más simple en esta segunda versión del monitor de la puerta, se puede comprobar aquí ambos lados «generaciones» una al lado de la otra:

Monitor de puerta con XBee y Monteino

Esta segunda generación es básicamente un Monteino con un RFM69W a bordo, un divisor de tensión para controlar la batería, un interruptor de láminas( es decir un rele reed)  con una resistencia de  pull-up(370k) y un terminal de tornillo para conectar una batería.

Las razones para cambiar a una  aruitectura basada en la placa Monteino son:

  • Una mejor personalización. XBees son programables , pero en realidad, ¿quién hace eso?Así que aquí tiene una buena placa Arduino de edad con suficiente capacidad de procesamiento para utilizar prácticamente cualquier sensor que hay.
  • Mayor duración de la batería. Usted tiene más opciones de código, como poner la radio, el chip flash y el propio microcontrolador para ponerlo en modo dormir. Además también admite  una solución de  batería más robusta con 3  baterías AAA con 1000 mAh.
  • Más fácil de usar  gracias al software X-CTU .

Monteno monitor de puerta de esquema con Fritzing

Hay algunas cosas a tener en cuenta en cuanto al hardware. En primer lugar el monitor de la batería se ha diseñado después de John k2ox mensaje en el foro LowPowerLab. El divisor de tensión consiste en una resistencia de  470k y otra de 1 M. La resistencia de pull up no está ligado a GND, pero si al pin digital 12. Cuando este pin está en modo de alta impedancia de los circuitos está desactivado y no se pierde energía. Para medir el voltaje primero tiene que ajustarse para que emita y luego baja, realice una analogRead en A1 y poner de nuevo a D12 ENTRADA.

Divisor de voltaje

En segundo lugar la resistencia de pull-up en el interruptor de láminas fue una adición tardía a comprobar el tiempo hubo una caída en el consumo de energía en comparación con el pull-up interna.

Además, esto podría no parecer importante, pero le puede ahorrar algo de dinero y una gran cantidad de dolor de cabeza. Esos interruptores de láminas son realmente frágiles( el momento crítico es cuando se tiene que doblar sus patas con  un pequeño alicate de  puntas : debe  mantener la pata justo antes del punto de flexión, por lo que la cápsula está protegida en un lado del alicate y doble suavemente el otro extremo).

Doblando una caña piernas del interruptor

Y, por último, comprobar cuál es la mejor posición para el interruptor de láminas y el imán. Para imanes redondos neodinium el interruptor debe ser perpendicular al plano del imán(compruebe la imagen de cabecera en este post) y éste:

interruptor de láminas

firmware

El código es bastante simple, se basa en Felix Rusu y Thomas Studwell RFM69_ATC yRocketScream baja potencia bibliotecas. El interruptor de láminas está ligado a un pin de interrupción que despierta el Monteino cada vez que cambia su estado. A continuación, el código debe  leer  la señal y comprueba si el valor ha cambiado. Se empezo con un tiempo de rebote 25ms y más tarde he comprobado con un  DSO Nano cone 5ms es más que suficiente. Señal y mensajería parece mucho más fiable que con el XBee, donde hay mas rebotes y señales fantasma (una puerta abierta y cerrada gatillo dos mensajes y segundos después, dos mensajes más,etc).

Este es el código de bucle responsable del sueño y despertar del microcontrolador:

void loop() {
    // We got here for three possible reasons:
    // - it's the first time (so we report status and battery)
    // - after 4*15 seconds (we report status and maybe battery)
    // - after an event (same)
    send();
    // Sleep loop
    // 15 times 4 seconds equals 1 minute,
    // but in real life messages are received every 77 seconds
    // with this set up, so I'm using 13 here instead...
    for (byte i = 0; i < 13; i++) {
        // Sleep for 8 seconds (the maximum the WDT accepts)
        LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF);
        // At this point either 4 seconds have passed or
        // an interrupt has been triggered. If the later
        // delay execution for a few milliseconds to avoid
        // bouncing signals and break
        if (flag) {
            flag = false;
            delay(DEBOUNCE_INTERVAL);
            break;
        }
        // If the former, check status and quit if it has changed
        if (status != digitalRead(REED_PIN)) break;
    }
}

La variable de estado mantiene el último estado enviado y reconocida por la puerta de entrada . Así que si nos falta un ACK el código intentará enviar el mismo mensaje de nuevo en cuatro segundos . Puede comprobar el código completo en la puerta de el repositorio de monitor en la Bitbucket . Se esta usando una biblioteca envoltorio ( RFM69Manager ) para gestionar la configuración y formato de los mensajes de radio . Los mensajes están en el formato :

key:value:packetID

Al igual que en » BAT : 4302 : 34 » . El ID de paquete es opcional pero el RFM69GW lo utiliza para comprobar si hay duplicados o paquetes que faltan. Se puede desactivar cambiando el valor SEND_PACKET_ID en RFM69Manager.h a 0 .

Alimentación

La alimentación  es clave en este proyecto desde el sensor será operado de la batería . En la primera generación , con el XBee , podría funcionar por cerca de 3 meses con una sola pila de botón CR2032 ~ 300mAh ,por eso para esta segunda generaciones se buscaba tanto más autonomía y fiabilidad . La fiabilidad es a menudo un intercambio de energía con el consumo : más controles , más mensajes, más tiempo despierto .
Fuente aqui

Iniciacion a los modulos de radio XBee


XBee es el nombre comercial de Digi International para una familia de módulos de radio compatibles con factor de forma que permiten enviar información digital entre módulos  de la misma familia con un consumo  mínimo de energía ,de reducido  tamaño, de «bajo» coste(entre 20-40$)  y de una forma muy sencilla ,como  intentare mostrar en sucesivos ejemplos  .

Las primeras radios XBee se introdujeron bajo la marca MaxStream en 2005 y se basaron en el  estándar  802.15.4 -2003 r diseñado para comunicaciones punto a punto y  configuraciones en  estrella en  el airea  para velocidades de transmisión de 250 kbit / s.

Dos modelos fueron introducidos inicialmente-a con una potencia menor de 1 mW(Xbee) y también de mayor potencia 100 mW (XBee-PRO). Desde el lanzamiento inicial, se han introducido una serie de nuevas radios XBee y todas XBees ahora se comercializan y venden bajo la marca Digi .

Todos los módulos de radio XBee todos pueden ser utilizados con el mínimo de cuatro número de conexiones:

  • Alimentación (3,3 V),
  • Tierra,
  • Datos
  • Datos salida ( UART .)

Lógicamente puden conectarse   otras líneas recomendadas  entre las que es destacar la  funcion sleep .Además  las familias xBee admiten algún otro control de flujo e incluyen en su interior  lineas de  E / S ,asi como lineas de  A / D  .

Una versión de los XBees  llamado el XBee programable tiene un procesador de a bordo adicional para el código de usuario. El XBee programable y un nuevo montaje en superficie ( SMT versión) de los radios XBee fueron introducidas en 2010

En febrero de 2013, la familia de radios XBee consiste en los siguientes modulos:

  • XBee 802.15.4 – La primera topología de punto a punto o topología en estrella módulo ejecutando el  protocoloIEEE 802.15.4
  • XBee-PRO 802.15.4 – Con mayor potencia  y  mayor alcance que el XBee 802.15.4
  • XBee ZB – Un módulo XBee que incorpora el ZigBee PRO protocolo de red de malla
  • ZB XBee-PRO — Con mayor potencia  y  mayor alcance que el ZB XBee
  • XBee ZB SMT – Un montaje XB  en superficie de rodadura del protocolo ZigBee
  • XBee-PRO ZB SMT – – Con mayor potencia  y  mayor alcance que de ZB SMT

Otros módulod menos conocidos

  • xBee DigiMesh 2.4 – Un módulo XBee 2,4 GHz que utiliza DigiMesh, un protocolo de red de mallar desarrollado por Digi International
  • XBee-PRO DigiMesh 2.4 – – Con mayor potencia  y  mayor alcance que el XBee DigiMesh 2.4
  • XBee SE – Un módulo XBee ZB que incorpora el grupo de seguridad para el ZigBee Smart Energy con perfil público
  • XBee-PRO SE – – Con mayor potencia  y  mayor alcance que el XBee SE
  • XBee-PRO 900HP – A 900 MHz módulo XBee-PRO con un rango de hasta 28 millas con antena de alta ganancia, que soporta el protocolo de red DigiMesh
  • XBee-PRO 900 (Legacy) – A 900 MHz de punto a punto y patentado módulo de topología en estrella, no recomendado para nuevo diseño
  • XBee-PRO XSC (S3B) – Un módulo de 900 MHz compatible de forma inalámbrica con los 9XStream radios Digi
  • XBee-PRO DigiMesh 900 (Legacy) – Un módulo de 900 MHz que utiliza DigiMesh, no recomendado para nuevo diseño (ver 900HP XBee-PRO para los nuevos diseños)
  • XBee-PRO 868 – un 868 MHz 500 mW módulo de largo alcance que apoya de punto a punto y la estrella de propiedad, para su uso en Europa
  • XBee 865/868LP – Un módulo de 868 MHz que utiliza XBee DigiMesh, disponible en montaje en superficie de factor de forma (también configurable a 865 MHz para su utilización en la India

Los módulos XBee están disponibles en dos formatos: de inserción y de montaje en superficie. Todos XBees (con la excepción de la XBee 868LP) están disponibles en el popular factor de forma de 20-pin  . Algunos módulos XBee también están disponibles en un diseño de montaje en superficie 37-pad, que es popular para aplicaciones de mayor volumen, debido a los costes de fabricación reducidos de la tecnología SMT.

Los módulos XBee normalmente vienen con varias opciones de antena, incluyendo U.FL, PCB Embedded, Wire, y RPSMA.

Los XBees pueden funcionar bien en un modo transparente de datos o bien basados  en paquetes de interfaz de programación de aplicaciones de modo (API).

  •  En el modo transparente, los datos que llegan a los datos IN (DIN) pin se transmite directamente sobre el aire a los radios receptores  sin ninguna modificación .
  • En el modo «paquete»,los paquetes entrantes puede ser dirigidas directamente a un objetivo (punto a punto) o transmisión a múltiples destinos (estrella). Este modo se utiliza sobre todo en los casos en que un protocolo existente no puede tolerar los cambios en el formato de datos.

Se utilizan comandos AT  para controlar los ajustes de la radio como veremos en sucesivas entregas  de este artiulo. Existe una  API de modo que los datos se envuelven en una estructura de paquetes que permite abordar, parametrizar y  retroalimentar la entrega de paquetes,  incluyendo la teledetección y control de E / S digitales y pines de entrada analógica.

Por ultimo los modulos Xbee pueden encontarse en  Sparkfun directamente en Digi