La Défense, Paris
+06 48 48 87 40
Crea un rastreador autónomo de $5 con ESP8266 y @Sigfox

Crea un rastreador autónomo de $5 con ESP8266 y @Sigfox

Hay varias formas de rastrear algo o alguien. El teléfono celular usa un método diferente para poder darle una ubicación precisa en la mayor parte de las situaciónes. El más global es el GPS, funciona en cualquier parte del mundo pero no funciona en interiores. También es costoso (alrededor de 8 $ o más) y consume mucha energía. Al aire libre, generalmente tienes una precisión de 15 metros. El menos preciso es la triangulación: un mensaje recibido por diferentes antenas será localizado por la red en un área cubierta por todas estas antenas. Esta solución funciona en cualquier lugar que cubra la red y no necesita mas energía que la usada para comunicarse. La precisión suele ser de 500m a 10 km.

El último método habitual que usamos es el que vamos a implementar en esta publicación: el posicionamiento WiFi. El rastreador está escuchando el punto de acceso WiFi y pregunta a una de las bases de datos existentes que conocen la mayor parte de la ubicación WiFi para obtener una posición. Esto está funcionando gracias al esfuerzo de hacinamiento que todos estamos haciendo con nuestro teléfono inteligente de capturar WiFi a nuestro alrededor y ubicaciones asociadas. La solución WiFi funciona donde está el WiFi, por lo general en las ciudades; alrededor de los edificios. Funciona bien en interiores, mejor que en exteriores, donde el WiFi es menos activo. La precisión es de aproximadamente 30-50 metros. El consumo de energía es más bajo que el GPS.

Sigfox es una red LPWA (Low Power Wide Area) que cubre aproximadamente 45 países (como hoy) dedicados a dispositivos autónomos de baja potencia también conocidos como IoT. El seguimiento de activos es uno de los mejores casos de uso.

El uso de Sigfox con un rastreador WiFi permite crear un dispositivo rastreador de bajo costo, autónomo con batería de un mes a años, obteniendo beneficios en 45 países con una localización de red WiFi +.

Esta publicación explicará cómo comenzar a utilizar esta tecnología mediante el uso de dos componentes estándar, fáciles de usar y de bajo costo que le permitirán obtener su prototipo por aproximadamente $ 5 de hardware.

¿Qué vamos a hacer?

Queremos hacer que un rastreador pueda darnos una posición de manera regular utilizando dos formas posibles: WiFi o red. Sigfox Network nos permite comunicarnos cada 10 minutos.

Básicamente, el rastreador dormirá durante 10 minutos, se despertará, escaneará la red WiFi durante unos 4 segundos e informará sobre dos de ellos: el que tiene la mejor señal. El servidor de back-end obtendrá una posición a partir de esta información.

Cuando no haya WiFi en la red Sigfox, se informará la ubicación en sí.

esp8266 – el wifi tan fácil como un arduino

ESP8266 es una conocida MCU que ofrece conectividad WiFi por menos de 2 $ en tiendas como aliexpress. Este componente tiene un gran éxito y Arduino ha sido portuario en él. La comunidad es grande y el soporte basado en multitud de Internet es realmente grande.

Este componente se puede ejecutar en modo normal, donde el consumo de energía es grande, alrededor de 15 mA / h, cuando la conexión WiFi no funciona. Esto es demasiado grande para dispositivos autónomos (IoT). Por esta razón, el siguiente programa aprovechará los beneficios del modo Deep Sleep Mode que ofrece el chip. En este modo, el dispositivo puede dormir y bajar a 10uA / h. Como hemos visto, debemos estar en funcionamiento unos 10 segundos cada 15 minutos. Teniendo en cuenta el consumo de recepción WiFi alrededor de 50mAh, el consumo promedio será de aproximadamente 0.5mAh.

Esto es alrededor de 200 días corriendo en celdas 2xAA. Simplemente reduzca la frecuencia de la transmisión para saltar de meses a años.

Este modo es realmente interesante, pero crea cierta complejidad en el código, ya que cuando el dispositivo se activa después de un sueño profundo se reinicia, durante el período de sueño profundo la memoria se pierde y como consecuencia solo se puede mover y almacenar un poco de paz de memoria en el área de memoria RTC (Reloj de tiempo real).

Además, durante esta secuencia de inicio, el mensaje de inicio enviará correo no deseado al puerto serie. Esta es otra complejidad para gestionar la comunicación con el módulo Wisol y también un desastre para registrar la información de depuración.

wisol – módulo sigfox de bajo costo

El módulo Wisol es una de las soluciones para enviar mensajes a través de la red Sigfox. Este módulo es realmente accesible alrededor de $ 2 y fácil de usar. También tiene un modo de suspensión eficiente que solo requiere 1uAh.

La comunicación entre ESP8266 y el módulo Wisol está utilizando una comunicación serie TTL. Lo mejor habría sido conectar este módulo a una de las 2 líneas serie existentes en ESP8266. Lamentablemente, el cargador de arranque ESP8266 utiliza esta línea serie en el arranque y se envía mucho ruido. Por esta razón, he preferido usar un UART SoftwareSerial para hacer la comunicación.

Esquema general

El esquema es simple: en el ESP8266 necesitamos conectar Reset y GPIO16 para administrar el proceso de sueño profundo / despertar. GPIO 12 y 13 se utilizan para la comunicación serial con el módulo Wisol.

Agregue una función de control en GPIO14 para salir del modo de sueño profundo y reemplazarlo por una función de bucle para obtener un mejor acceso a la depuración y poder actualizar el dispositivo a demanda. Puedes dejarlo desconectado para una ejecución normal.

acceder y comprender el código fuente

El código fuente está accesible en github siguiendo este enlace

Este es un boceto Arduino de múltiples archivos. Conteniendo diferentes bibliotecas, no entraré en detalle en esta publicación. Solo quiero centrarme en los pasos principales de este proyecto.

Para usarlo, como requisito previo necesita un entorno ESP8266 configurado. El boceto se ha realizado para un mini módulo WeMos D1, por lo que la configuración del hardware está relacionada con esta plataforma.

Para modificar la configuración, puede verificar el archivo config.h. Encontrará la configuración del hardware y también la configuración del temporizador de frecuencia de escaneo, depuración y registro.

El archivo main.ino contiene la rutina principal; básicamente, cada vez que el dispositivo se despierta del sueño profundo, se ejecuta la función de configuración y se analiza la causa del restablecimiento para detectar si estamos ante la primera ejecución o un despertar profundo.

En esta función, tenemos dos formas diferentes de realizar bucles en la ejecución, dependiendo de si el modo de depuración está activado (poniendo el GPIO14 a tierra) o si se está ejecutando el modo de sueño profundo. En este caso, en la función de despertador se restaura el contexto de la memoria, de esta forma la función execute () no tiene que administrar el contexto de sueño profundo.

El modo de depuración también se puede cambiar durante los 5 primeros segundos del inicio al escribir un comando en la línea serie. Este comando es “! D”. Una vez en el modo de depuración hay una lista de comandos que puede escribir en la línea serie como “: l” para volcar el archivo de registro en la consola; “! P” para obtener el PAC inicial del dispositivo Sigfox …

Para este código de rastreador puro, algunos de estos elementos podrían eliminarse, pero si desea agregar un comportamiento diferente a este rastreador para hacerlo más inteligente, la copia de seguridad del estado y el almacenamiento de configuración, como el registro, son cosas realmente importantes.

Este archivo principal está ejecutando la función del rastreador cada 15 minutos:

Se escanea el WiFi alrededor, la función de escaneo está buscando hasta 4 SSID diferentes, filtra la dirección Mac y el SSID para maximizar las capacidades de localización. Elimina la multidifusión y las direcciones MAC definidas localmente. Intenta prohibir el nombre de SSID utilizado por el punto de acceso del teléfono inteligente.

Luego busca las 2 direcciones Mac con mejor señal e infórmales en la red Sigfox. Si queremos agregar un posicionamiento de red cuando las condiciones de WiFi no son viables, podríamos agregar una transmisión de un solo byte en una condición else.

integración con sigfox

Sigfox tiene un servicio de localización llamado Atlas, en realidad ofrece un posicionamiento de red para cada trama recibida en el back-end de sigfox. En un futuro muy cercano, este servicio se ampliará para admitir la localización WiFi.

El código fuente que me proporcionaron está trabajando con el servicio Sigfox Atlas. De esta forma, al enviar un mensaje que contenga las dos mejores direcciones de WiFi Mac a su alrededor, obtendrá una posición. Si la información de WiFi coincide con una ubicación almacenada en la base de datos Here (here.com) (el servicio de back-end de Sigfox), se realizará una devolución de llamada en su servidor con la ubicación. La precisión dada va de 30 a 100 metros. Cuando el WiFi no coincide con ninguna posición o cuando no tiene WiFi, la red devolverá una posición basada en la red con una precisión de 500 ma 10 km.

Gracias a este servicio no necesita implementar ningún servicio de terceros para obtener una ubicación y el precio está incluido en la suscripción de Sigfox. Básicamente, además del hardware de $ 5, solo necesitas menos de $ 10 por año para obtener un rastreador.

Para configurar el servicio Atlas-WiFi, solo necesita configurar dos llamadas en el back-end de Sigfox:

El primero es una devolución de llamada de Data Uplink que apunta al servicio, el segundo es una redirección de la devolución de llamada de GEOLOC que apunta al mismo servicio. De esta forma, el servicio mezcla la información de red y la información de WiFi para crear una devolución de llamada para su propio servidor. El mensaje GEOLOC recibido en su lado del servidor se ve así:

para concluir

Puede encontrar mi código un poco complejo para lo que debe demostrarse. Hay dos razones para esto:

° Esta es una versión de código abierto, realmente simplificada, de uno de los próximos miembros de la familia de rastreadores Sigfox de foxtrackr.com. Por esta razón, incluye componentes listos para producción como configuración, RTC / deep-sleep, registro avanzado.

° El segundo fue compartir un código fuente de proyecto completo ejecutando ESP8266, algo que puede usarse como un buen punto de partida para hacer un producto. Ese es mi primer proyecto en este entorno (ESP8266) y no encontré un código de muestra de este tipo. Espero que ahorre algo de vista la mayor parte del tiempo que paso comenzando por ejemplos básicos para un código completamente funcional, escalable y confiable.”

Fuente: www.disk91.com

 

 

 

Related Posts