Tutorial para diseñar un Sistema RF de Transmisor y Receptor de Código Evolutivo

Back To Blog
Imagen de Sistema RF de Transmisor y Receptor de Código Evolutivo

 

 

Tutorial para diseñar un Sistema RF de Transmisor y Receptor de Código Evolutivo

 

Tabla de Contenidos

 

  1. Introducción
  2. Principio de Operación
  3. Descripción Funcional
  4. Descripción del Diseño de la Solución

 

En este manual mostraremos el diseño de una solución RF de Transmisor y Receptor de Código Evolutivo. Se explicará la arquitectura del sistema así como el diseño de las partes involucradas en la encriptación y la desencriptación de los mensajes. Para esta solución, los componentes principales que usaremos serán los del fabricante Holtek Semiconductor Inc.

Holtek es un fabricante líder en el diseño de microcontroladores y componentes periféricos con sede en Taiwán. Este fabricante permanece en contínua expansión en el diseño y fabricación de microcontroladores para nuevos diseños. Entre la gama de productos que podemos encontrar en la actualidad tenemos:

  • MCU de propósito general (8/32 bits)
  • MCU para aplicaciones específicas: Voz, comunicaciones, periféricos de PC, electrodomésticos, equipos médicos, automoción y seguridad, etc.
  • Otros dispositivos: Control energía, control/gestión LCD y Led, sensores de huella de alta precisión, módulos con variedad de sensores y otros periféricos.

1. Introducción

La solución implementada es un sistema de control remoto inalámbrico de RF que, además de los requisitos generales de transmisión de RF, también presenta ciertas características de seguridad. Una vez que se presione cualquier botón del control remoto, éste encriptará el mensaje del botón usando un algoritmo de encriptación y lo enviará por medio de una señal de RF. Por su parte, después de recibir la señal de RF, el receptor descifrará los datos de acuerdo con el algoritmo de desencriptación que se ha establecido previamente para posteriormente ejecutar la acción correspondiente.

Esta arquitectura de código evolutivo utiliza el algoritmo de cifrado NLFSR (Registros de Desplazamiento Realimentados No Linealmente) para implementar la función de cifrado de los mensajes.

La parte de comunicación de RF estará basada principalmente en un transmisor sub-1GHz, el BC68F2130, y un receptor OOK sub-1GHz, el BC2302. Cuando se recibe un paquete cifrado, el BC2302 lo descifrará utilizando el algoritmo de descifrado NLFSR. De esta forma, se construye un enlace OOK RF sub-1GHz (315/433/868/915MHz) para lograr un control inalámbrico seguro. El BC68F2130 incluye un MCU Holtek de 8 bits y un transmisor de RF, proporcionando una velocidad de transmisión de hasta 100 Kbps (FSK) y una potencia de salida máxima de 13 dBm. El receptor de RF BC2302 proporciona un bajo consumo de corriente de 3,2 mA a 433 MHz y una alta sensibilidad de -112 dBm a 1 Ksps~10 Ksps.

Esquema del sistema

Este sistema inalámbrico está destinado a aplicaciones como el control de puertas automáticas, apertura de vehículos y otras aplicaciones de hogar y dispositivos inteligentes.

Características de la Solución

    1. Alta seguridad: transmisor RF MCU SoC, comunicación estable y confiable, cifrado de código evolutivo.

El BC68F2130 es un transmisor OOK/GFSK altamente integrado que puede operar con las bandas de frecuencia 315/433/868/915 MHz y proporciona una potencia de hasta 13 dBm. Solo se requiere un oscilador de cristal externo y algunos componentes externos adicionales para que los usuarios implementen un transmisor de RF universal completo.

La comunicación de RF para esta solución utiliza el método de modulación OOK (Modulación Digital de Amplitud) y opera en la banda de frecuencia de 433 MHz. Se utiliza un determinado algoritmo de encriptación para codificar los datos de texto plano en un formato de texto cifrado ilegibles para la comunicación de RF. El valor del contador de sincronización aumenta automáticamente en uno cada vez que se envían datos de texto cifrado, lo que garantiza que cada dato de texto cifrado enviado sea único, irregular y no repetitivo.

    1. Receptor: bajo consumo de energía, alta sensibilidad, circuitos simplificados.

El BC2302 es un receptor de RF OOK de baja FI de alto rendimiento. Adopta una arquitectura integrada de de receptor OOK de baja FI con una función de control automático de ganancia (AGC) y un demodulador OOK totalmente integrado.

Para esta solución, el BC2302 opera en una banda de frecuencia de 433MHz con una sensibilidad de recepción de -112dBm a 10Ksps y transmite los datos de RF recibidos a la MCU maestra utilizando su interfaz I2C.

Principio de Operación

Cuando se presiona cualquier botón del transmisor, los datos de texto plano se codificarán en datos de texto cifrado ilegibles a través de un algoritmo de cifrado y luego se enviarán en paquetes de 66 bits. Para convertir los datos de texto cifrado en datos de texto plano, el receptor debe decodificar estos paquetes utilizando la misma clave de cifrado/descifrado que el transmisor. El valor del contador de sincronización aumenta automáticamente en uno cada vez que se envían datos de texto cifrado, de modo que cada dato de texto cifrado enviado sea único, irregular y no repetitivo. Este es el principio de funcionamiento del “Código Evolutivo”, que puede prevenir eficazmente situaciones de captura y copia de contraseñas.

La arquitectura básica de este código evolutivo se divide en tres partes.

    1. Generación de claves de cifrado
      • Código del fabricante (64 bits): ID del fabricante
      • Número de serie (28 bits): ID del transmisor
      • Uso del algoritmo de generación de claves para generar una clave de cifrado de 64 bits.

Generación de la Clave de Cifrado

    1. Cifrado
      • Contador de sincronización (16 bits): este valor aumenta en uno cada vez que se presiona una vez un botón del transmisor.
      • Los datos cifrados de 32 bits, que se generan utilizando el contador de sincronización y la clave de cifrado a través del algoritmo de cifrado, junto con el número de serie y los datos de información del botón presionado de 6 bits, forman un paquete de 66 bits que se transmitirá.

Cifrado de los Datos

    1. Descifrado

El receptor ejecutará los siguientes cinco pasos cuando reciba un paquete.

      1. Determinar si el número de serie es el correcto, verificando si coincide con la ID del transmisor.
      2. Decodificar los datos cifrados de 32 bits.
      3. Determinar si el valor del contador de sincronización decodificado es correcto comparándolo con el último valor del contador de sincronización almacenado.
      4. Almacenar el valor correcto del contador de sincronización.
      5. Ejecutar la acción que corresponda al botón presionado.

Descifrado de los Datos

Descripción Funcional

Características Técnicas de la Solución

  • Transmisor
    • Voltaje de funcionamiento: DC3V (CR2032)
    • Corriente de funcionamiento: consumo de corriente en espera de 0,6 μA
    • Rango de Temperatura: -40°C ~ 85°C
    • Banda de frecuencia RF: 433,92 MHz
    • Velocidad de datos RF: 2,5 Kbps
    • Potencia de transmisión: 13dBm
  • Receptor
    • Voltaje de funcionamiento: DC5V
    • Sensibilidad RX: -112dBm@10Ksps, 433MHz
    • Corriente de funcionamiento media: 3mA

Funciones de la Solución

El producto físico real para el transmisor inalámbrico de código evolutivo se muestra en la siguiente imagen.

Transmisor de Código Evolutivo

Se debe realizar una acción de emparejamiento antes de usar el transmisor. La acción de emparejamiento no se repetirá si se sigue utilizando un transmisor ya emparejado, es decir, un transmisor que tiene el mismo número de serie. El receptor decodificador puede grabar dos transmisores. El receptor solo responderá a funciones de control remoto de transmisores que ya hayan sido emparejados previamente.

Cada transmisor tiene un número de serie único de 28 bits. La acción de emparejamiento es para que el receptor decodificador almacene el número de serie y determine si es correcto.

Emparejamiento (10 segundos)

Después de haber encendido, presione el botón KEY1 (TXA) o KEY2 (TXB) del receptor de decodificación hasta que parpadee el LED1 o el LED2, lo que indica que ha ingresado con éxito al modo de emparejamiento. Luego presione el botón del transmisor para enviar paquetes de datos. Si el receptor recibe dos paquetes continuos durante el período de emparejamiento y los valores del contador de sincronización difieren en uno, el LED1 o el LED2 dejarán de parpadear y el LCM mostrará «TXA emparejado OK» o «TXB emparejado OK». Esto significa que la acción de emparejamiento ha tenido éxito. Use KEY1 (TXA) o KEY2 (TXB) para completar la acción de emparejamiento, es decir, el aprendizaje de SN, para dos transmisores. Al aprender un SN diferente, el SN registrado previamente se sobrescribirá.

Desemparejamiento

Después del encendido, presione el botón KEY3 del receptor de decodificación hasta que el LED3 parpadee. Esto indica que todos los registros de emparejamiento anteriores se han eliminado correctamente.

Descripción del Diseño de la Solución

La solución inalámbrica de cifrado de código evolutivo se divide en las partes de cifrado y descifrado. El extremo de cifrado usa el BC68F2130 como núcleo principal, que es responsable de la detección de botones, el cifrado de datos y la transmisión de señales de RF. El extremo de descifrado usa el HT66F2370 como componente principal y el BCM-2302-X01 para recibir las señales de RF. El HT66F2370 descifra la señal y ejecuta las acciones correspondientes en función de los datos descifrados. La siguiente es una introducción de hardware de la parte de cifrado y de la del descifrado.

Descripción Hardware de los Equipos

Esquema del Transmisor

La figura anterior muestra el circuito de hardware del transmisor, donde el transmisor de encriptación de código evolutivo utiliza una pila de botón de 3V como fuente de alimentación. El BC68F2130 permanece en el modo de suspensión cuando no se presiona ningún botón y se activa cuando se presiona cualquier botón. Cuando se presiona un botón, los datos se encriptan utilizando el algoritmo de encriptación integrado y luego se convertirán en una señal de RF mediante un modulador para la transmisión. Después de esto, el BC68F2130 volverá al modo de suspensión nuevamente.

Esquema del Receptor

Mediante el uso de un cable USB, el receptor de descifrado de código evolutivo recibe alimentación del HT7533, que puede proporcionar un voltaje regulado de 3,3 V para las aplicaciones. La parte de RF se implementa mediante un módulo receptor OOK, el BCM-2302-X01, que se controla mediante el HT66F2370 mediante una interfaz I2C. Para ayudar a los usuarios a ver la información de cifrado/descifrado, los datos correspondientes cifrados/descifrados de 32 bits, el número de serie (SN) de 28 bits y el contador de sincronización (SC) de 16 bits se muestran usando el display LCM y el LED. Este receptor inalámbrico de descifrado código evolutivo puede grabar dos transmisores.

El fabricante Holtek, además de proporcionar los esquemáticos de los diseños que intervienen en esta solución, comparte los diseños de las PCB que forman parte del sistema, así como la lista de materiales necesarios para crear esta solución completa:

PCB del Transmisor

PCB del Módulo Receptor

PCB de la Placa de Control

PCB de la Placa de Control

BOM del Transmisor

BOM del Receptor

Descripción Software de la Solución

Para esta solución, fabricante nos proporciona todos los códigos de programación necesarios para implementar en esta solución.

Transmisor

Descripción del software del Transmisor

    • Inicialización

Después del encendido, el programa primero ejecutará una configuración inicial para el transmisor de RF y el temporizador, etc., y cargará el código de fabricación almacenado (ubicado en 0x7F4~0x7FB) y el número de serie (ubicado en 0x7FC~0x7FF) directamente de la ROM para a generar una clave de encriptación. Luego cargará el valor del contador de sincronización. El LED parpadeará una vez después de la inicialización.

    • Bucle principal

En el bucle principal, primero ejecuta un escaneo de botones para verificar si alguno de los botones S1, S2, S3 o S4 ha sido presionado o no. Si se ha presionado algún botón, el programa implementará una función de mapeo de bits para el parámetro de estado del botón según la posición del botón. Si el botón se ha presionado por primera vez, el valor del contador de sincronización se incrementará en 1 y se almacenará. Luego, el programa ingresará a la subrutina DATA_PRO para obtener los parámetros relacionados con el algoritmo de cifrado y pasará a la subrutina de transmisión de datos RF para enviar los paquetes. Finalmente volverá al bucle principal.

El programa comprobará continuamente si se ha soltado el botón y si ha finalizado la transmisión del paquete de RF. Si la respuesta a ambas es afirmativa, el programa principal entrará en el modo de suspensión hasta que vuelva a pulsarse un botón.

Como la mayoría de los valores de registro de MCU y RF tendrán valores desconocidos después de ingresar al modo de suspensión para ahorrar energía, la acción de inicialización se ejecutará nuevamente para reconfigurar los registros cada vez que se active el sistema. Después de presionar un botón, se tarda entre 34 y 36 ms antes de iniciar la transmisión del paquete TX.

Receptor

Descripción del software del Receptor

    • Inicialización

Después del encendido, el programa primero ejecutará una configuración inicial para el receptor de RF y el temporizador, etc., y luego cargará el número de serie almacenado desde la EEPROM. Tiene un valor inicial de 0xF00FF00 si aún no se han emparejado los extremos TX y RX. Una vez completada la inicialización, el indicador LED de alimentación permanecerá encendido y el LCM mostrará si se ha emparejado TXA/TXB, así como los datos del código de fabricación correspondiente.

    • Bucle principal

En el bucle principal, primero ejecute el escaneo del botón de emparejamiento/desemparejamiento para verificar si se han presionado los botones KEY1, KEY2 o KEY3. Si se ha pulsado algún botón, el programa ejecutará una acción de emparejamiento o desemparejamiento según la función del botón.

Ahora comprueba si se recibe un paquete o no. El LCM mostrará directamente los datos de cifrado cuando se haya recibido un paquete. Luego, el programa determinará si los extremos TX y RX ya se han emparejado. De lo contrario, el programa calculará directamente la clave de descifrado. En caso afirmativo, la clave de descifrado correspondiente se leerá de la EEPROM.

A continuación, el programa ingresará a la subrutina de descifrado para decodificar. Determinará si el número de serie decodificado y el valor del contador de sincronización son correctos de acuerdo con el formato de comunicación de RF establecido. Si son correctos, se ejecutará la acción del botón correspondiente y el LCM mostrará los datos de descifrado, el número de serie y los valores del contador de sincronización. De lo contrario, no se ejecutará ninguna acción y el programa saldrá de la subrutina y volverá al ciclo principal.

API KeeloqEncrypt(uint32 data)
Función Encriptación
Parámetro de Entrada Dato a encriptar (32 bits)
Parámetro de Salida Datos Encriptados (32 bits)
Función Detallada El contenido de los datos a cifrar (32 bits) es el siguiente:

typedef union

{
uint32 value;
struct
{
//————–32bit
uint16 Sync_Counter;
unsigned int Discrimination : 10;
unsigned int OVR : 2;
unsigned int Button : 4;
};
}Encrypt_Data;

 

API KeeloqDecrypt(uint32 data)
Función Desencriptación
Parámetro de Entrada Datos encriptados (32 bits)
Parámetro de Salida Datos Desencriptados (32 bits)
Función Detallada Esta subrutina ejecutará el descifrado y obtendrá los datos sin cifrar (32 bits).

 

A continuación se muestran en la siguiente tabla algunos valores medidos en los equipos:

Test del Transmisor Valores medidos
Potencia de Transmisión TX 13dBm
Tiempo desde que se pulsa el botón hasta que se envían los paquetes TX 34ms~36ms
Consumo máx. de corriente al pulsar un botón 12mA
Consumo medio de corriente al mantener un botón pulsado 10.22mA
Consumo de corriente en standby 0.6μA
Test del Receptor Valores medidos
Sensibilidad RX -112dBm
Consumo medio de corriente del RX 3mA

Con esta aplicación desarrollada por Holtek, y con todos los documentos y archivos necesarios que nos proporciona el fabricante, podemos ayudarnos a desarrollar nuestra propia aplicación inalámbrica basada en Código Evolutivo.

 

    Contacta con nosotros:


    Madrid: +34 91 366 01 59
    Barcelona: +34 93 224 02 83

    Bilbao: +34 94 463 60 66
    Portugal: +351 219 376 267