Aprenda a usar un módulo Microchip para crear prototipos de salida digital y periféricos de control digital.

En este artículo, el segundo de una serie de tres partes sobre los módulos Bluetooth RN487x de Microchip, le mostraré cómo crear una salida digital (un interruptor) y un control digital (de un LED).

Consulte mi primer artículo para obtener antecedentes e instrucciones sobre cómo configurar el módulo RN487x.

Proyecto 1: Interruptor de entrada digital RN478x

Nuestro patrón de diseño tiene tres componentes que debemos proporcionar:

  1. Hardware: Hardware específico de la tarea para generar la señal digital
  2. Configuración: Comandos del módulo RN487x para asignar una variable en una base de datos y asignar la señal a la variable
  3. Solicitud: Script en una estación de trabajo, para aceptar el valor de la base de datos

Lo que sigue es el desglose de componentes.

Hardware de entrada digital

La función de "entrada digital" es simplemente proporcionada por un interruptor; SW1.

El módulo RN487x tiene pullups internos en los pines, por lo que un interruptor normalmente abierto conectado a tierra en el cierre nos dará el control necesario de 2 estados.

El esquema para el diseño de entrada digital RN487x

Como solo estamos administrando una señal y no estamos usando PWM, hemos elegido el RN4871. El circuito puede ser alimentado por un par de baterías AAA, o incluso una celda de moneda.

Los elementos restantes del circuito son;

  • C1: Un condensador de derivación para estabilizar la potencia.
  • R1, C2: Un retraso para el reinicio del procesador al encender
  • J1: Un puerto serie para la configuración.

Configuración de entrada digital

Antes de crear la configuración para este ejemplo, asegúrese de que el módulo esté en un estado conocido. Esto se describe en la sección del apéndice sobre inicialización común. ¡No te saltes este paso!

Solo necesitamos una característica en la base de datos para representar nuestro estado del sensor. Entonces creamos un servicio y una característica en ese servicio. Los dos comandos correspondientes son:

                    PS, 59c88760536411e7b114b2f933d5fe66
PC, 59c889e0536411e7b114b2f933d5fe66,10,01
                  

El primer comando, PS, crea el servicio. El segundo comando, PC, crea la característica. En ambos comandos, el primer parámetro es el identificador que permite que nuestro periférico exista en el universo de otros periféricos Bluetooth y aún así se pueda acceder de forma única. Este parámetro debe cumplir con el estándar UUID. Puede usar los valores de ejemplo que se muestran. También es fácil crear cualquier cantidad de UUID estándar.

En el comando de PC, el segundo parámetro le dice a la capa Bluetooth cómo los cambios en el valor deberían llegar al cliente. En este caso, el parámetro (10) dice que los cambios en el valor pueden dar lugar a una notificación inmediata a los clientes. Esta es una parte importante de nuestra intención para este ejemplo. Finalmente, en el comando de PC, el tercer parámetro define el tamaño del valor en bytes; solo uno en este caso (01).

La parte del script de nuestra configuración se ve así:

                    @PW_ON
SW, 0A, 09
@ PIO1H
SHW, 0072,01
@ PIO1L
SHW, 0072,00
                  

Hay tres métodos en este script, cada uno con el prefijo "@". Cada método se ejecuta en un evento específico del sistema.

  • PW_ON: Se ejecuta en el encendido. El método configura nuestro pin de interés (P1_2) como una señal de entrada digital "activada".
  • PIO1H: Se ejecuta cada vez que la señal de activación pasa a alta. El método escribe un "1" en la base de datos.
  • PIO1L: Se ejecuta cada vez que la señal de activación pasa a baja. El método escribe un "0" en la base de datos.

Aplicación de entrada digital

El script de Python es switch.py ​​y se puede encontrar aquí. Edite el script y reemplace la dirección MAC de muestra con la dirección MAC de su dispositivo. Luego, para ejercitar el ejemplo, simplemente aplique energía al periférico, luego ejecute el script en un sistema con las capacidades Bluetooth apropiadas. Consulte el apéndice para obtener ayuda con esta configuración en Linux. El script emitirá mensajes para indicar el progreso mientras se conecta al periférico. Después de conectar el periférico, presione y suelte el interruptor varias veces. Cada evento de apertura / cierre del interruptor se anotará con un mensaje del script en ejecución.

El script es breve e incluye comentarios para todos los bloques de funciones y llamadas a la API de GATT.

La característica BLE que utilizamos que es exclusiva de este ejemplo es la notificación.

  • Usamos un método de devolución de llamada para manejar un cambio de señal desde el periférico cuando ocurre. No necesitamos sondear el periférico para conocer el estado de la señal.
  • Debemos decirle al periférico que queremos estas notificaciones escribiendo a una característica del sistema.

Proyecto 2: Control digital RN487x

Nuestro patrón de diseño tiene tres componentes que tendremos que proporcionar:

  • Hardware: Hardware específico de la tarea para expresar una salida digital
  • Configuración: Comandos del módulo RN487x para asignar una variable en una base de datos y asignar la variable a la señal
  • Solicitud: Script en una estación de trabajo, para escribir el valor de la base de datos

Lo que sigue es el desglose de componentes.

Hardware de control digital

La función de "salida digital" es proporcionada simplemente por un LED; D1

Los circuitos de referencia del módulo RN487x sugieren GPIO de colector abierto, por lo que iluminamos el LED en consecuencia, al hundir la corriente.

Como solo estamos administrando una señal y no estamos usando PWM, hemos elegido el RN4871. El circuito puede ser alimentado por un par de baterías AAA, o incluso una celda de moneda.

Los elementos restantes del circuito son;

  • C1: Un condensador de derivación para estabilizar la potencia.
  • R1, C2: Un retraso para el reinicio del procesador al encender
  • J1: Un puerto serie para la configuración.

Configuración de control digital

Antes de crear la configuración para este ejemplo, asegúrese de que el módulo esté en un estado conocido. Esto se describe en la sección del apéndice sobre inicialización común.

¡No te saltes este paso!

Solo necesitamos una característica en la base de datos para representar nuestro estado del sensor. Entonces creamos un servicio y una característica en ese servicio.

Los dos comandos correspondientes son:

                    PS, 59c88760536411e7b114b2f933d5fe66
PC, 59c889e0536411e7b114b2f933d5fe66,08,01
                  

El primer comando, PS, crea el servicio. El segundo comando, PC, crea la característica. En ambos comandos, el primer parámetro es el identificador que permite que nuestro periférico exista en el universo de otros periféricos Bluetooth y aún así se pueda acceder de forma única. Este parámetro debe cumplir con el estándar UUID. Puede usar los valores de ejemplo que se muestran. También es fácil crear cualquier cantidad de UUID estándar.

En el comando de PC, el segundo parámetro le dice a la capa Bluetooth cómo los cambios en el valor deberían llegar al periférico. En este caso, el parámetro (08) dice que el periférico debe enviar una confirmación al cliente cuando se cambia un valor. Finalmente, en el comando de PC, el tercer parámetro define el tamaño del valor en bytes; solo uno en este caso (01).

La parte del script de nuestra configuración se ve así:

                    @CONN
| O, 08,72
                  

Solo hay un método en este script "@CONN". Se ejecuta cada vez que un cliente se conecta al periférico.

La línea de script único es un comando de "asociación de identificador", con un resultado muy poderoso. Asocia la variable de base de datos con un comando de salida de pin digital. El parámetro '08' es una máscara de bits que especifica el pin al que está conectado nuestro LED. El parámetro "72" es un identificador único y permanente de la característica que creamos en la base de datos. Entonces, después de que un cliente se conecta, cada vez que el cliente escribe un nuevo valor en la variable de la base de datos, nuestro LED se encenderá o apagará en consecuencia.

Aplicación de control digital

El script de Python es light.py y se puede encontrar aquí. Edite el script y reemplace la dirección MAC de muestra con la dirección MAC de su dispositivo. Luego, para ejercitar el ejemplo, simplemente aplique energía al periférico, luego ejecute el script en un sistema con las capacidades Bluetooth apropiadas. Consulte el apéndice para obtener ayuda con esta configuración en Linux. El script emitirá mensajes para indicar el progreso mientras se conecta al periférico. Después de conectar el periférico, el script enviará un nuevo comando al periférico cada segundo. Los comandos encenderán y apagarán el LED.

La secuencia de comandos es corta e incluye comentarios para todos los bloques de funciones y llamadas API GATT. La característica BLE que utilizamos que es exclusiva de este ejemplo es la asociación de identificadores.

Puedes ver todo este ejemplo en acción en el video del proyecto adjunto.

Próximos pasos

Esto concluye la parte 2 de nuestra serie de tres partes en el módulo RN487x.

La Parte 3 seguirá el mismo patrón de diseño para crear un sensor analógico y un control analógico. También incluirá algunos temas para estudios posteriores que se aplican a todos los proyectos de ejemplos.

Dejar respuesta

Please enter your comment!
Please enter your name here