Los 433 MHz y el Software Libre. Parte 3

viernes, 28 de julio de 2017

Antes de adentrarse en los proyectos de software, es conveniente considerar el hardware que será necesario, mínimo en muchos casos, pero imprescindible.

Hardware RF 433Mhz AM (ASK/OOK)
  • Receptor SDR-RTL. Aunque no es propiamente dicho un hardware específico para trabajar en la banda ISM de 433 MHz, su extrema versatilidad hace que sea posible de forma muy sencilla. Puede utilizarse cualquier receptor USB de TDT que cuente con un chipset compatible, existiendo controladores y software para sistemas Windows, Mac OS X, BSD, Linux (Raspberry incluido), e incluso para Android.


  • Receptor-Trasmisor por tarjeta de sonido. Es la opción más económica, ya que tan solo es necesario el receptor y/o el transmisor, conectándolos directamente a la tarjeta de sonido de cualquier equipo, aunque se recomienda una tarjeta de sonido externa por USB. Puede utilizarse tanto en Windows y Mac OS X, como en Linux (Raspberry incluido).


  • Receptor-Trasmisor por GPIO en Raspberry PI. Es extensible a cualquier plataforma Linux que pueda manejar, al menos, una línea de entrada/salida digital (GPIO), como podría ser un router con OpenWRT o similar.

  • Receptor-Trasmisor en Arduino. Esta es la opción preferida por la comunidad de makers que montan sus proyectos para funcionar de forma autónoma sin la necesidad de un PC, o bien como interface a través del puerto USB. Puede utilizarse en cualquiera de las múltiples plataformas compatibles con Arduino, como los ESP8266 con Wifi, los potentes Teensy, o los mínimos Trinket.
Antenas
Es habitual que los módulos de bajo coste se presenten sin antena. Esta configuración es funcional, pero el rango de alcance es de apenas unos metros, por lo que solo se puede utilizar para realizar pruebas dentro del entorno cercano. Si necesitamos un alcance mayor, tanto para el emisor como para el receptor, se hace imprescindible incorporar una antena sintonizada lo más aproximadamente posible a la frecuencia central de la banda de trabajo, en este caso, 433.92 MHz.

Las características de la antena influyen notablemente en la calidad de la emisión y recepción, por lo que es un elemento crucial cuando se requieren unas mínimas prestaciones
.


No obstante, el diseño de la antena puede ser realmente simple. Los tipos más usuales son en espiral, en bucle, o en hilo; todos ellos de fácil calculo e implementación, gracias a la abundante documentación y programas de ayuda disponibles en internet.

La antena más sencilla posible es tan solo un hilo (whip, látigo en inglés), de un cuarto de la longitud de onda, poco más de 17 centímetros, con la que se obtienen resultados satisfactorios. También son de uso habitual las antenas en espiral por su reducido tamaño, así como sus diferentes combinaciones con otros elementos.

Proyectos de Software Libre
El “Software Libre” (Free Software), y el software de “Código Abierto” (Open Source), no son lo mismo aunque suelen utilizarse ambos términos indistintamente; y por supuesto, ninguno de los dos tiene relación alguna con el concepto de “gratuito” al que muchas veces se simplifican.

Estas dos iniciativas son promovidas por organizaciones diferentes, por un lado la FSF, Fundación para el Software Libre, liderada por Richard Stallman, elabora, mantiene y defiende la Licencia Pública General GNU (GNU/GPL) desde 1989. Sus diferentes versiones y variantes se fundamentan en cuatro libertades esenciales:

  • La libertad para usar el software como se desee, con cualquier propósito (libertad 0).
  • La libertad para estudiar su funcionamiento y adaptarlo a otras necesidades (libertad 1).
  • La libertad para redistribuir copias a otros usuarios (libertad 2).
  • La libertad para modificar el software y distribuir copias de las modificaciones (libertad 3).

El acceso al código fuente es una condición necesaria para satisfacer las libertades primera y tercera, implicando que cualquier software derivado que utilice Software Libre, debe ser a su vez Software Libre, y por lo tanto respetar sus libertadas, quedando obligando a la publicación del código fuente, tanto de las modificaciones del Software Libre utilizado, si las hubiera, como del resto del software en su conjunto.

Por otro lado está la OSI, Iniciativa para el Código Abierto, creada casi 10 años más tarde por Bruce Perens y Eric S. Raymond, con el objetivo de acentuar los beneficios prácticos del acceso al código fuente, frente a los aspectos éticos o de libertad de índole filosófico que son tan relevantes en el Software Libre.

La FSF y la OSI se reconocen mutuamente como aliadas, ya que persiguen objetivos similares, aunque no coincidan demasiado en sus principios básicos. Articulan diferentes “licencias” como instrumentos jurídicos para definir y salvaguardar los términos en los que un software es publicado.

Se calcula que más del 60% de todo el software de dominio público se licencia bajo alguna de las versiones de Software Libre GNU/GPL, mientras que el resto queda muy repartido entre diferentes variantes y otras licencias Open Source más permisivas como BSD, Apache, X11, MIT, o Mozilla.

La diferencia más significativa entre las licencias de Software Libre y las licencias Open Source, es que estas últimas no obligan a redistribuir el código fuente del software que las utiliza.

Receptor SDR-RTL
Es posible utilizar cualquier receptor de tipo SDR que tenga capacidad para sintonizar la banda de 433 MHz para poder comenzar a experimentar utilizando herramientas de Software Libre muy maduras como GNU Radio, o las recogidas bajo osmocom.org, de la cual forman parte los trabajos para manejar los dispositivos USB receptores de TDT con chipset Realtek, SDR-RTL (enlace a github aquí) muy accesibles por su bajo coste.


En la wiki de osmocom se enlazan más de 30 proyectos de Software Libre relacionados, destacando especialmente el proyecto RTL_433 (enlace a github aquí), específicamente diseñado para desentrañar las comunicaciones AM (ASK/OOK) en de la banda ISM de 433 MHz.

Gracias a las numerosas contribuciones que realizan los investigadores al proyecto, dispone de capacidad para interpretar casi 80 protocolos de comunicación diferentes, lo que lo convierte en una herramienta extremadamente útil a la hora de analizar cualquier actividad en dicha banda.

Ejemplo de captura con RTL_433

Transmisor-Receptor por tarjeta de sonido
La conexión de módulos de emisión y/o recepción de radiofrecuencia ASK/OOK a la salida y/o entrada de audio de un equipo, transforma los impulsos de AM en señales manejables como si de audio se tratara, por lo que se puede emplear cualquier software existente para este ámbito; como Audacity por ejemplo, tanto para recibir como para emitir en la frecuencia de 433 MHz.

Como proyecto específico, es meritorio el trabajo de Danny Havenith, CHEAPL (enlace github aquí), ya que su simplicidad, solo soporta el protocolo X10, hace que sea tremendamente didáctico.

Digna de mención es también la labor del proyecto OpenHomeNet, los cuales han publicado un analizador de protocolos escrito en Java (enlace a github aquí) que soporta 12 de los protocolos más extendidos.

Analizador de protocolos del proyecto OpenHomeNet


Transmisor-Receptor por GP10
Cuando la conexión de los módulos de emisión y recepción AM (ASK/OOK) se realiza directamente a los terminales GPIO que exponen algunas plataformas como Raspberry PI o Beaglebone, las posibilidades de integración se incrementan notablemente, ya que es posible manejar las señales ASK/OOK como si de señales digitales binarias se tratara.

Destacan los proyectos de Jean-Christophe Rona (enlace a github aquí), abarcando desde una interface de recepción y emisión que soporta los 8 protocolos más habituales de interruptores domésticos, hasta una GUI Web para la interface, pasando por un módulo de Kernel Linux para su integración en routers con OpenWRT, de forma similar o otro proyecto parecido donde se ejecuta en espacio de usuario (enlace a github aquí).


Router OpenWRT con transmisor RF 433Mhz AM (ASK/OOK) por GPIO y GUI Web de control

En lenguaje Python, con entorno web, integrando con base de datos SQL y soportando el protocolo Nexa, encontramos el proyecto Cr-Smart-Home (enlace a github aquí); un buen ejemplo de las posibilidades que ofrece la combinación de diferentes componentes software.

Con un alcance mucho más amplio, ya que comprende un sistema domótico completo, destaca “pilight”, un magnifico proyecto excelentemente documentado, en el que han diseñado un robusta interface con los módulos de radiofrecuencia conectados vía GPIO mediante wrappers TCP/IP, e incluso han desarrollado un pre-filtro digital externo para mejorar las capacidades de recepción. Soportan decenas de protocolos tanto en emisión como en recepción, pudiéndose instalar y utilizar cada módulo de forma independiente (enlace a github aquí).

Menú de instalación de “pilight”

Transmisor-Receptor con Arduino
Arduino es sin duda la plataforma con mayor cantidad de proyectos de Software Libre y Código Abierto relacionados con los módulos de radiofrecuencia AM (ASK/OOK), debido a la facilidad con la que pueden manejarse, tanto en recepción como en emisión.

El proyecto emblema es RC-Switch (enlace a github aquí), tremendamente didáctico, soporta varios protocolos fácilmente ajustables, incluyendo un sketch de recepción a modo de scanner o sniffer, como el de RCControl, muy útil en tareas de investigación y depuración. Ha sido portado a otras plataformas como Raspberry PI, en diferentes implementaciones.

Aunque el entorno de programación de Arduino soporta ya plataformas muy potentes, tradicionalmente sus desarrollos han estado marcados por la escasez de recursos del hardware, por lo que es difícil encontrar un gran proyecto que soporte múltiples protocolos, en favor de múltiples proyectos que soportan un número reducido de protocolos; como por ejemplo: RemoteSwitch, NewRemoteSwitch, NexaCtrl, Oregon, InterTechno o FlamingoSwitch, combinándose estas implementaciones en otros proyectos que agrupan varias librerías como HRCSwitch y RFToy, o incluso en proyectos de traducción entre protocolos diferentes.


También son muy frecuentes las implementaciones de interconexión inalámbrica entre Arduinos, Raspberrys, o combinaciones de ambos, utilizando módulos de radiofrecuencia ASK/OOK, junto con estos protocolos, VirtualWire, o incluso directamente a través de la UART serie a baja velocidad, unos 2400 bps, como a continuación podemos observar en una simulación con Proteus.

Emulación de Arduino y módulos de RF 433MHz


Más información:
Jorge Rivera 
CSA Global de ElevenPaths 

No hay comentarios:

Publicar un comentario