Acionamento do LED da placa DK105

Esse tópico visa mostrar como fazemos o controle do estado de um dos LEDs soldados diretamente na placa de aplicação DK105. Essa mesma lógica pode ser utilizada para controlar outros dispositivos ligados às portas digitais do módulo rádio (BE900 ou BE990). Para facilitar, preparamos uma planilha com o mapeamento dos pinos físicos e lógicos do rádio na placa de aplicação DK105. Para mais informações, você deve baixar os datasheets dos módulos BE900/BE990.

Mapeamento dos pinos no DK105 –> Pinagem grove DK105

Datasheet BE900 –> BE900-Datasheet-v1.5

Datasheet BE990 –> BE990-Datasheet-v6

A Figura 1 mostra o DK105. O LED verde foi soldado fisicamente no pino 4 do rádio. O pino lógico correspondente, devido ao mapeamento feito no Firmware do nó sensor, é o IO0_PIN. Nós iremos alterar o estado do LED verde via software. Em primeira instância, iremos utilizar o RadiuinoTest; posteriormente, faremos um Script em Python utilizando a versão 2.7.13.

Figura 1. DK105.

Vamos utilizar a biblioteca Radiuino, que pode ser baixada na aba Downloads. Abra os Firmwares e faça upload da base e do nó sensor. Se você não sabe como fazer isso, vá até a aba Aprendendo.

Só temos uma observação a fazer: no firmware do nó sensor, você precisa atribuir o valor zero à variável “TxledBlink”. Observe a Figura 2. A variável está na aba da camada física. Atribuindo o valor zero a ela fará com que o LED verde pare de piscar no momento em que transmitir um pacote. Assim, o LED verde ficará aceso ou apagado mesmo quando um pacote for transmitido.

Figura 2. Variável TxledBlink.

Abra o RadiuinoTest e configure de acordo com a Figura 3. Selecione a porta Serial COM da sua base e a taxa de 9600 bps; insira 1 no byte 8 do pacote e faça uma transmissão a cada 1s. Clique em Conectar e depois em Enviar.

Figura 3. RadiuinoTest.

Quando a conexão RF foi estabelecida, apenas o LED vermelho da placa vai piscar, uma vez que alteramos o valor do estado da variável TxledBlink para zero. Agora, observe a Figura 4, na aba App do Firmware do nó sensor. O byte do pacote que controla o estado do LED é o 34. Assim, só precisamos modificar seu valor para controlar o LED verde, seguindo a seguinte lógica:

Byte 34 = 1 —> Liga o LED verde

Byte 34 = 0 —> Desliga o LED verde

Figura 4. Controle do LED verde.

Agora que você aprendeu a fazer o controle via RadiuinoTest, vamos ensiná-lo a criar a mesma lógica utilizando um script em python. Se você não sabe como utilizar o Python, deixamos as instruções e arquivos de instalação do Python 2.7.13. Caso já estiver com o Python instalado, apenas baixe o Script em Python.

Instruções de instalação Python 2.7.13 –> Instalação do Python 2.7.13

Download instalador Python 2.7.13 –>  Instalador python2.7.13

Script Python –> Script Python

Abra o Script no modo IDLE e pressione F5 para executar. Observe a Figura 5. Digite os valores conforme o que foi apresentado na Figura 5. Fique atento ao número da Serial, pois o seu pode ser diferente do exemplo apresentado aqui.

Figura 5. Script Python.

Quando for pressionado a tecla Enter na última instrução (entrada ID_sensor = 1), então o estado do LED verde será invertido (se estiver apagado, acende; se estiver aceso, apaga). Feito isso, abra o Script em Python para que possamos entender seu funcionamento. Observe a Figura 6. Ela representa apenas o trecho mais importante da codificação e, portanto, merece uma explicação mais detalhada.

Figura 6. Codificação em Python.

Pacote[10] = int(ID_base)  –> Coloca o ID da base no byte 10 do pacote (você digitou 0 quando executou o arquivo).

if Opcao == “1”:   –> Verifica se a variável “Opcao” é igual a 1. Se for 1, então a base transmite o pacote.

ID_sensor = raw_input(‘ID_sensor = ‘)  –> Identificação do sensor a ser acessado.

Pacote[8] = int(ID_sensor) –> Coloca no pacote o ID_sensor

Pacote[34] = not(Pacote[34]) –> Inverte o valor que já estava na posição 35 do vetor (lembre-se de que em linguagens de programação, a contagem começa em 0 e Pacote[34] representa a posição 35 do vetor Pacote)

for k in range(0,52): # transmite o pacote
TXbyte = chr(Pacote[k])
ser.write(TXbyte)

# Aguarda a resposta do sensor
time.sleep(0.3)

Resumidamente, o Script possui o papel de montar um pacote de 52 bytes e enviar pela Serial. Quando digitamos 1 na variável “Opcao”, invertemos o valor Pacote[34] por meio do comando Pacote[34] = not(Pacote[34]). O Firmware do módulo Rádio está preparado para receber esse valor e, então, atua sobre o LED verde.