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.
Nuestro patrón de diseño tiene tres componentes que debemos proporcionar:
Lo que sigue es el desglose de componentes.
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.
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;
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.
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.
Nuestro patrón de diseño tiene tres componentes que tendremos que proporcionar:
Lo que sigue es el desglose de componentes.
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;
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.
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.
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.
ga('create', 'UA-1454132-1', 'auto'); ga('require', 'GTM-MMWSMVL'); ga('require', 'displayfeatures'); ga('set',{'dimension1':'tadiran-batterylowpower,iot,power,wireless-rf,iot'}); ga('set',{'contentGroup1':'tadiran-batterylowpower,iot,power,wireless-rf,iot'});
ga('set',{'dimension3':"October 13, 2019"});
ga('set',{'dimension4':"Aaron Hanson"});
ga('send', 'pageview');
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1808435332737507'); // Insert your pixel ID here. fbq('track', 'PageView'); fbq('track', 'ViewContent', { content_ids: ['tadiran-batterylowpower','iot','power','wireless-rf','iot'], content_type: 'category'});
_linkedin_data_partner_id = "353081"; (function(){var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(); } if(jstz.determine().name().indexOf("Europe") === -1) { showSocialCode(); // NOT EU } else { showSocialCode(); window.addEventListener("load", function () { window.cookieconsent.initialise({ "palette": { "popup": { "background": "#252e39" }, "button": { "background": "#14a7d0" } }, "type": "opt-out", "content": { "message": "This website uses tracking cookies to ensure you get the best experience on our website.", "href": "https://www.allaboutcircuits.com/privacy-policy/", "dismiss": "OK, GOT IT" }, onInitialise: function (status) { var type = this.options.type; var didConsent = this.hasConsented(); if (type == 'opt-out' && didConsent) { console.log("eu"); //showSocialCode(); } },
onStatusChange: function (status, chosenBefore) { var type = this.options.type; var didConsent = this.hasConsented(); if (type == 'opt-out' && didConsent) { console.log("eu"); //showSocialCode(); } },
onRevokeChoice: function () { var type = this.options.type; if (type == 'opt-out') { console.log("eu"); //showSocialCode(); } },
}) }); }
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…