Acionar relé com Whisper Node

Talk2 - Whisper Node
Talk2 – Whisper Node

Recentemente escrevi o artigo de apresentação do Talk² Whisper Node e em um curto espaço de tempo escrevi o segundo artigo, já esse introdutório. Se não leu e ainda não conhece esse fabuloso hardware, leia os artigos anteriores para ver as especificações e recursos, simplesmente clicando nos links desse parágrafo.

Nesse artigo de hoje vou mostrar um pouco da comunicação entre os Whisper Node, utilizando um GPIO (que obviamente você já utilizou aos montes) para acionar um relé de canal duplo.. Após esse artigo, você será capaz de fazer tudo com o Whisper Node, bastando trocar informações via RF. Decidi fazê-lo porque me perguntaram sobre o modo de acionar relé que no final das contas, é igual qualquer Arduino, então percebi que a dúvida que paira é na camada de rádio.

Sobre o relé de canal duplo

Relé canal duplo - GBK Robotics
Relé canal duplo – GBK Robotics

Um relê de canal duplo oferece saída para um segundo borne, de modo que você fica com 2 COM, 2 NO e 2 NC. Se não tem intimidade com relés ainda, sugiro esse artigo onde discorro a respeito. Escrevi diversos outros artigos sobre relé, mas esse video é mais teórico.

Nesse video não falei do relé de canal duplo porque não o tinha. Se tiver interesse nele, visite a loja da GBK Robotics e divirta-se.

A carga sobre esse modelo pode ser 2A em 24V ou 1A em 120V. A carga máxima é de 50VA; 30W. Sua sensibilidade é ótima, 1V@1mA para acionamento.

Seleção da board

No artigo anterior relacionado, mostrei como preparar a IDE do Arduino para utilizar a Whisper Node. Leia-o para saber o quão simples é todo o processo.

Configurações do rádio

O sketch default de qualquer exemplo já tem as configurações pre-definidas, de modo que você não precisará nunca decorar essas instruções. Destas, você deve dar atenção às seguintes:

No artigo anterior relacionado, eu deixei uma tabela relacionada. No caso, esse 916.0 é a frequência que deve ser configurada para o rádio de 915MHz; default do sketch e o que estou utilizando para escrever esse artigo.

Dois valores são aplicáveis; 13 para baixo consumo, 14 para normal. Eu não experimentei com 14, mas provavelmente farei testes tão logo crie uma condição que o propicie.

Por fim, selecionar os endereços do base e do node; receptor e emissor, respectivamente. No sketch padrão você encontrará a seguinte configuração (que poderá inclusive deixar como está):

 

setup()

No setup de qualquer exemplo você vê a inicialização do rádio, modo de configuração, ajuste de frequência, encriptação do canal e ajuste de potência. Tudo simples assim:

A chave não está fechada porque tem mais conteúdo em setup(). Esses valores são iguais em ambos; o ‘node’ e o ‘base’. No caso, o ‘base’ está recebendo a mensagem.

loop()

Em loop, o exemplo “Voltage.base” utiliza uma função runReceiver(). Essa função está mastigada para que você não tenha o menor trabalho em receber dados.

Enquanto isso no ‘Voltage.base’…

E no sketch que envia, você vê mais  e mais dos métodos prontos do Talk2. Realmente fica fácil brincar (ou trabalhar) com um hardware bom que tenha uma boa biblioteca, como é o caso dessa delícia. Na função sendTestVoltage(…) você vê uma chamada de um método da classe T2Utils, que é a readVoltage(…). Dá pra ser mais fácil que isso? Eu duvido.

Depois que o valor é lido para uma variável, formata-se a mensagem para o envio e acontece a chamada myRadio.send(…).

Porque tanta explicação?





Se você abrir o sketch, pode ficar desanimado se não tiver essa introdução. Digo isso porque você verá diversas chamadas da própria biblioteca e todas elas são conceitos a serem adquiridos, mas você pode de imediato passar a utilizar o Talk2 Whisper Node e absorver os recursos extras oferecidos posteriormente. Tudo exclarecido, vamos então aos testes.

Primeiro teste – suba os sketch padrão

Antes de fazer qualquer coisa diferente, suba os sketches default em cada um dos dispositivos. É importante que você os veja operando normalmente para depois ter absoluta de certeza de que qualquer comportamento anômalo estará sendo causado por um erro de programação, não do dispositivo.

Conecte todos os fios do FTDI, de outro modo não funcionará – isto é, não conecte apenas DTX, DRX, GND e VCC; conecte todos!

Se utilizar o FTDI dessa imagem acima, basta conectar na ordem; pino 1 ao pino 1, pino 2 ao pino 2 e assim por diante. Atente-se apenas em não iniciar o wiring com as direções invertidas. Na parte de trás do Whisper Node tem os nomes dos headers. Coloque o GND ao GND do FTDI, depois basta seguir a sequência.

Tendo confirmado o funcionamento, uma leve modificação no código incrementará a mensagem para por exemplo, acionar um relé. O define T2_MESSAGE_MAX_DATA_LEN mantém a mensagem em 8 bytes. Não experimentei ainda mexer na biblioteca, mas com esses 8 bytes por mensagem já dá pra brincar um bocado. Mas sem pensar em escrever um código completo por enquanto, vamos apenas adicionar um byte na mensagem.

A última informação importante para o momento é que o LED azul está sendo utilizado para a comunicação do rádio e o LED ambar é local.

Repare que estou utilizando o quinto byte da mensagem formatada, assim não preciso nem escrever código. Em um próximo artigo mostrarei uma comunicação notebook a notebook, de forma a ter uma rede de comunicação de longa distância exclusiva. Pense que com esse único byte você poderá definir mais chamadas do que a memória do dispositivo pode suportar e para enviar comandos remotos é perfeito. Apenas para exemplificar isso, poderia ser por exemplo um relé duplo (não um relé de canal duplo). A definição de myMsg.data[5] será ‘1’ para o relé 1, ‘2’ para o relé 2, ‘3’ para os 2 relés e ‘0’ para desligar ambos. Vamos implementar isso no quinto Byte e implementar também a recepção serial de um valor para o relé. Além disso, precisamos definir um I/O para o relé, sendo os pinos D4 e D5 (o D5z será fictício, uma vez que estou exemplificando com um relé apenas).

Falei com o Mike (o criador da jóia) e pedi algumas informações, pois eu estava tratando de ler todas as classes disponíveis, mas sequer foi necessário ler tudo para terminar esse post, ele me deu uma ótima orientação e, no final das contas, decidi que esse dispositivo merece mais alguns artigos devido às possibilidades e em um desses artigos, vou tentar mostrar uma comunicação de uma distância muito, muito longa. Além disso pretendo mostrar em outros artigos  os recursos já implementados na biblioteca do Talk2, o de hoje é para mostrar apenas o  acionamento do relé juntamente com o recurso que o próprio sketch oferece, então sigamos.

Voltage.node

Mais uma vez, estou utilizando esse sketch para rechear com mais informações.

No Voltage.node apenas adicionamos um byte extra na mensagem (apesar de o ideal ser passar o endereço do relay e o valor). Tirei o header do código apenas para reduzir o tamanho, mas esse é o sketch de exemplo default acrescido de algumas linhas de comando para a comunicação pretendida:

Suba o sketch para o Talk2 Whisper Node. Apenas o LED ambar estará se acendendo de forma intermitente. Posteriormente (durante a comunicação) o LED azul se acenderá e você perceberá que a comunicação está acontecendo. Não será o caso desse exemplo, mas em minhas tentativas e erro eu percebi que minha recepção estava errada porque a comunicação acontecia, só que eu não estava conseguindo tratar a recepção. Como eu queria debugar visualmente, adquiri um novo FTDI e demorei um pouco mais para publicar esse artigo, devido à demora da chegada.

Voltage.base

O envio da mensagem é feito periodicamente porque estou utilizando o sketch padrão para enviar as informações de tensão do Whisper Node, mas a informação do relé é recebida pela comunicação serial. Isto significa que a qualquer momento que você digitar um dos valores aceitáveis, ele substituirá o valor original da inicialização do sketch (que é ‘0’, para os relés desligados) e passará a enviá-lo constantemente via rádio. Aqui no Voltage.base teremos uma memória de estado, isto é,  se o novo comando para o relé for o mesmo que o anterior, simplesmente descarta a interação. Repare que na linha 155 tem uma chamada de debug, que me ajudou de imediato a perceber o que estava acontecendo. Após utilizada (isto é, se desejado) volte a comentá-la.

Mais uma vez devo enfatizar que você pode alimentar a board com um par de pilhas em um adaptador como o mostrado no artigo anterior. Aqui estou com ambas as boards conectadas aos FTDIs para poder mostrar pra você também a troca de mensagem para o acionamento do relé.

Obviamente você não poderá utilizar a IDE do Arduino para visualizar mensagem serial em ambas, mas em uma delas sim. Na outra, você pode utilizar o programa “screen”, “minicom” “gtkterm” ou outro que desejar. Eu gosto do GTKTerm e é ele que estou utilizando no video.

A conexão com o relé é o padrão de sempre; COM, NO, NC. COM é a tensão, “NO” é “normalmente aberto” e “NC” é “normalmente fechado”. Vou acender um LED com o relé apenas para exemplificar.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!

 

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.