Como construir uma entrada digital e controle digital usando o módulo Bluetooth RN487x da Microchip
Aprenda a usar um módulo Microchip para criar protótipos de entrada digital e periféricos de controle digital.
Neste artigo, o segundo de uma série de três partes sobre os módulos Bluetooth RN487x da Microchip, mostrarei como criar uma entrada digital (uma chave) e um controle digital (de um LED).
Consulte meu primeiro artigo para obter informações básicas e instruções sobre como configurar o módulo RN487x.
Projeto 1:Chave de entrada digital RN478x
Nosso padrão de design tem três componentes que precisamos fornecer:
- Hardware: Hardware específico da tarefa para gerar o sinal digital
- Configuração: Comandos do módulo RN487x para alocar uma variável em um banco de dados e para mapear o sinal para a variável
- Aplicativo: Script em uma estação de trabalho, para aceitar o valor do banco de dados
O que se segue é a repartição dos componentes.
Hardware de entrada digital
A função de 'entrada digital' é simplesmente fornecida por um interruptor; SW1.

O módulo RN487x possui pullups internos nos pinos, portanto, uma chave normalmente aberta conectada ao aterramento no fechamento nos dará o controle de 2 estados necessário.

Como estamos gerenciando apenas um sinal e não estamos usando PWM, escolhemos o RN4871. O circuito pode ser alimentado por um par de baterias AAA ou até mesmo por uma célula tipo moeda.
Os demais elementos do circuito são;
- C1: Um capacitor de desvio para estabilizar a energia
- R1, C2: Um atraso para a reinicialização do processador na inicialização
- J1: Uma porta serial para configuração
Configuração de entrada digital
Antes de criar a configuração para este exemplo, certifique-se de que o módulo esteja em um estado conhecido. Isso é descrito na seção do apêndice sobre inicialização comum. Não pule esta etapa!
Precisamos apenas de uma característica no banco de dados para representar o estado do nosso sensor. Portanto, criamos um serviço e uma característica nesse serviço. Os dois comandos correspondentes são:
PS, 59c88760536411e7b114b2f933d5fe66 PC, 59c889e0536411e7b114b2f933d5fe66,10,01
O primeiro comando, PS, cria o serviço. O segundo comando, PC, cria a característica. Em ambos os comandos, o primeiro parâmetro é o identificador que permite que nosso periférico exista no universo de outros periféricos Bluetooth e ainda seja acessado de forma única. Este parâmetro deve estar em conformidade com o padrão UUID. Você pode usar os valores de exemplo mostrados. Também é fácil criar qualquer número de UUIDs padrão.
No comando PC, o segundo parâmetro informa à camada Bluetooth como as alterações no valor devem chegar ao cliente. Neste caso o parâmetro (10), diz que alterações no valor podem resultar em uma notificação imediata aos clientes. Esta é uma parte importante de nossa intenção para este exemplo. Finalmente, no comando PC, o terceiro parâmetro define o tamanho do valor em bytes; apenas um neste caso (01).
A parte do script de nossa configuração se parece com isto:
@PW_ON SW, 0A, 09 @ PIO1H SHW, 0072,01 @ PIO1L SHW, 0072,00
Existem três métodos neste script, cada um prefixado com ‘@’. Cada método é executado em um evento de sistema específico.
- PW_ON: É executado ao ligar. O método configura nosso pino de interesse (P1_2) como um sinal de entrada digital ‘disparado’.
- PIO1H: É executado sempre que o sinal do acionador muda para alto. O método grava um '1' no banco de dados.
- PIO1L: É executado sempre que o sinal do acionador muda para baixo. O método grava um '0' no banco de dados.
Aplicativo de entrada digital
O script Python é switch.py e pode ser encontrado aqui. Edite o script e substitua o endereço MAC de amostra pelo endereço MAC do seu dispositivo. Em seguida, para exercitar o exemplo, basta ligar o periférico e, em seguida, executar o script em um sistema com os recursos Bluetooth apropriados. Consulte o apêndice para obter ajuda com esta configuração no Linux. O script emitirá mensagens para indicar o progresso durante a conexão com o periférico. Depois que o periférico estiver conectado, pressione e solte o botão algumas vezes. Cada evento de abertura / fechamento do switch será anotado com uma mensagem do script em execução.
O script é curto e inclui comentários para todos os blocos de funções e chamadas de API do GATT.
O recurso BLE que usamos, único neste exemplo, é a notificação.
- Usamos um método de retorno de chamada para lidar com uma mudança de sinal do periférico quando isso acontece. Não precisamos pesquisar o periférico para saber o estado do sinal.
- Devemos informar ao periférico que queremos essas notificações escrevendo para uma característica do sistema.
Projeto 2:Controle Digital RN487x
Nosso padrão de design tem três componentes que precisaremos fornecer:
- Hardware: Hardware específico de tarefa para expressar uma saída digital
- Configuração: Comandos do módulo RN487x para alocar uma variável em um banco de dados e mapear a variável para o sinal
- Aplicativo: Script em uma estação de trabalho, para gravar o valor do banco de dados
O que se segue é a repartição dos componentes.
Hardware de controle digital
A função de 'saída digital' é simplesmente fornecida por um LED; D1.

Os circuitos de referência do módulo RN487x sugerem GPIO de coletor aberto, então iluminamos o LED de acordo, absorvendo a corrente.

Como estamos gerenciando apenas um sinal e não estamos usando PWM, escolhemos o RN4871. O circuito pode ser alimentado por um par de baterias AAA ou até mesmo por uma célula tipo moeda.
Os demais elementos do circuito são;
- C1: Um capacitor de desvio para estabilizar a energia
- R1, C2: Um atraso para a reinicialização do processador na inicialização
- J1: Uma porta serial para configuração
Configuração de controle digital
Antes de criar a configuração para este exemplo, certifique-se de que o módulo esteja em um estado conhecido. Isso é descrito na seção do apêndice sobre inicialização comum.
Não pule esta etapa!
Precisamos apenas de uma característica no banco de dados para representar o estado do nosso sensor. Portanto, criamos um serviço e uma característica nesse serviço.
Os dois comandos correspondentes são:
PS, 59c88760536411e7b114b2f933d5fe66 PC, 59c889e0536411e7b114b2f933d5fe66,08,01
O primeiro comando, PS, cria o serviço. O segundo comando, PC, cria a característica. Em ambos os comandos, o primeiro parâmetro é o identificador que permite que nosso periférico exista no universo de outros periféricos Bluetooth e ainda seja acessado de forma única. Este parâmetro deve estar em conformidade com o padrão UUID. Você pode usar os valores de exemplo mostrados. Também é fácil criar qualquer número de UUIDs padrão.
No comando PC, o segundo parâmetro informa à camada Bluetooth como as mudanças no valor devem chegar ao periférico. Nesse caso, o parâmetro (08), diz que o periférico deve enviar uma confirmação ao cliente quando um valor for alterado. Finalmente, no comando PC, o terceiro parâmetro define o tamanho do valor em bytes; apenas um neste caso (01).
A parte do script de nossa configuração se parece com isto:
@CONN | O, 08,72
Existe apenas um método neste script ‘@CONN’. Ele é executado sempre que um cliente se conecta ao periférico.
A única linha de script é um comando de "associação de manipulação", com um resultado muito poderoso. Ele associa a variável do banco de dados a um comando de saída de pino digital. O parâmetro '08' é uma máscara de bits que especifica o pino ao qual nosso LED está conectado. O parâmetro '72' é um tratamento único e permanente para a característica que criamos no banco de dados. Portanto, depois que um cliente se conecta, toda vez que o cliente grava um novo valor na variável do banco de dados, nosso LED acende ou apaga de acordo.
Aplicativo de controle digital
O script Python é light.py e pode ser encontrado aqui. Edite o script e substitua o endereço MAC de amostra pelo endereço MAC do seu dispositivo. Em seguida, para exercitar o exemplo, basta ligar o periférico e, em seguida, executar o script em um sistema com os recursos Bluetooth apropriados. Consulte o apêndice para obter ajuda com esta configuração no Linux. O script emitirá mensagens para indicar o progresso durante a conexão com o periférico. Depois que o periférico estiver conectado, o script enviará um novo comando ao periférico a cada segundo. Os comandos irão ligar e desligar o LED.
O script é curto e inclui comentários para todos os blocos de funções e chamadas de API do GATT. O recurso BLE que usamos, único neste exemplo, é a associação de identificadores.
Você pode ver todo este exemplo em ação no vídeo do projeto que acompanha.
Próximas etapas
Isso conclui a parte 2 de nossa série de três partes no módulo RN487x.
A Parte 3 seguirá o mesmo padrão de design para criar um sensor analógico e um controle analógico. Também incluirá alguns tópicos para estudo posterior que se aplicam a todos os projetos de exemplo.
Tecnologia da Internet das Coisas
- Grátis como em liberdade ou cerveja grátis? ... que tal:grátis para usar, construir e pesquisar!
- Entrada e saída básica em C#
- Recapitulação:Como Bluetooth LE e XLE são o futuro do rastreamento e monitoramento de ativos
- Como Bluetooth + Ultrassom =Melhor precisão de RTLS e menor custo
- Como construir e otimizar um cronograma de manutenção preventiva
- Sensores e controles com o módulo RN487x Bluetooth da Microchip
- Como criar soluções que seus clientes desejam (e estão dispostos a pagar)
- Como construir uma operação mais inteligente usando a tecnologia IoT de monitoramento de tanque
- Como entender big data:RTUs e aplicativos de controle de processo
- O que é Lean Digital e como integrá-lo?