ArduinoRaspberry

Comunicação do Raspberry com Arduino utilizando NRF24L01

Nesse artigo veremos a comunicação entre dois dispositivos, já em uma rede mesh, sendo um Raspberry Pi e um Arduino. Alguns passos estão sendo repassados porque as versões anteriores do Raspbian beseados em Debian Wheezy e Jessie tinham uma pequena diferença na configuração do SPI, além de que a versão mais nova (Stretch) tem umas arestas, que veremos no decorrer do artigo.

Raspberry com Arduino

Acredito que seja a melhor forma de fazer uma comunicação entre o Raspberry e o Arduino, afinal, utilizar um módulo ethernet já não é mais tão atrativo nos dias de hoje e, se for para utilizar um ESP8266, não tem porque inserir um Arduino na configuração. Já o rádio NRF24L01 é uma solução de baixo custo que lhe oferece uma excelente interface.

Onde comprar o NRF24L01



Para essa comunicação você precisará de no mínimo um Raspberry Pi e um Arduino UNO. E claro, os rádios. Se você ainda não tem um par de NRF24L01, pegue na AutoCore Robótica.

Habilitar o barramento SPI no Raspberry Pi

A ferramenta de interação para isso continua sendo a mesma no Raspbian, mas o menu foi modificado. Se você está utilizando a última versão do sistema (Stretch), execute o programa raspi-config e vá ao menu Interfacing options. Procure por SPI, habilite-o e confirme qualquer questionamento da interface, incluindo um reboot.

SPI - Raspberry com Arduino
SPI – Raspberry com Arduino

Ajustando o locales

locales - Raspberry com Arduino
locales – Raspberry com Arduino

Se você também recebe essa sujeira no terminal, saiba que a solução para o ajuste do locales é simples, porém tem um efeito colateral;  será necessário reconectar-se à sua rede WiFi.

Para fazer esse ajuste e se livrar desses warnings, rode mais uma vez o comando raspi-config e selecione o menu localisation options. O código a ser selecionado é o pt_BR.UTF8.

Concluindo essa configuração, um reboot será solicitado e então você não terá mais mensagem de erro.

Configurar o NRF24 no Raspberry

Isso já foi visto anteriormente nesse outro artigo, mas aqui vou adotar outro caminho. Tendo habilitado o barramento SPI como explicado anteriormente, baixe o RF24 e configure-o com o suporte ao SPIDEV.

Exisem outras opções além do SPIDEV, mas estou focando nele. Assim sendo, você tem o pino 15 para o GPIO 22 (CE) e pino 24 para o GPIO 8 (CSN).

O construtor então deve ficar desse modo:

Essa compilação foi exemplificada nesse outro artigo , onde o foco principal era configurar o NRF24L01 no Raspberry para ser um gateway (calma, hoje vamos fazer a comunicação entre o Raspberry e o Arduino, chega de gateway).

Adicionando suporte ao Python

Nada mais simples do que usar Python e pode ser desejável utilizá-lo por essa razão, apesar dos exemplos contidos no diretório da compilação. Se quiser adicionar o suporte a Python, siga esses passos (adicionalmente, instalando o bpython para programação em fluxo):

Agora o processo é um pouco demorado, principalmente em Raspberry menor que o 3. Se tiver menos que 1G de RAM, é bom que tenha swap de sobra. Se não tiver e precisar de uma swap temporária, faça o seguinte:

E depois que finalizar o uso, poderá descartá-la:

Tendo a swap ativa (ou memória RAM suficiente), o passo final:

Wiring

O wiring não deve ser confundido com o GPIO, eles são representados por números diferentes. Eu encontrei uma tabela bacana para o wiring de diferentes boards, basta seguir por aqui e você terá seu NRF24L01 funcionando no Raspberry e no Arduino. De quebra, pode usar um Digispark ou qualquer outra board com Attiny85.

Wiring - Raspberry com Arduino
Wiring – Raspberry com Arduino

Hello World!

Faça uma primeira execução de teste, mas como root ou utilizando o comando sudo. De outro modo, vocẽ pegara uma falha de segmentação. O gettingstarted é uma boa opção pra começar, mas para isso, compile os exemplos primeiramente:

Execute o exemplo gettingstarted e veja saída:

hello world - Raspberry com Arduino
hello world – Raspberry com Arduino

…e no Arduino

Abra o gerenciador de bibliotecas e instale o que tiver relacionado a “RF24” (assim não tem erro). Selecione a opção 0 e suba o sketch File > Examples > RF24 > gettingStarted para o Arduino. Eu utilizei o Arduino UNO no exemplo e ao abrir o terminal Serial, inseri a letra ‘t’ para iniciar a transmissão. O resultado:

Comunicação Raspberry com Arduino
Comunicação Raspberry com Arduino

No próximo artigo relacionado iniciaremos a comunicação de uma rede mesh, por enquanto aproveite essa comunicação, modique os sketches e divirta-se um pouco.

1 Star2 Stars3 Stars4 Stars5 Stars (69 votes, average: 5,00 out of 5)
Loading...

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!

One comment

Comments are closed.

%d blogueiros gostam disto: