Boa tarde.
Tenho um código para comunicação ponto a ponto utilizando o módulo nrf24L01 de 2.4GHz (em anexo).
Funciona direitinho. É só pra enviar o estado de um botão e no receptor mudar o estado de uma saída.
O módulo em questão usa uma biblioteca específica RF24.h e sua comunicação com o Arduino Uno é via protocolo SPI.
Estou tentando adaptar o mesmo código só que para usar o módulo LoRa E32-915T30D. Este módulo usa a biblioteca SoftwareSerial.h e sua comunicação com o Arduino Uno é via serial.
Como pode-se ver no código estou usando uma estrutura chamada estruturaDadosRF que envio para o receptor via o comando:
radio.write(&dadosRF, sizeof(tipoDadosRF)); //radio é o objeto criado
Tentando adaptar para a biblioteca SoftwareSerial eu tentei enviar a mesma estrutura através do comando:
radio.print(dadosRF);
Só que o compilador dá o erro:
no matching function for call to 'SoftwareSerial::print(tipoDadosRF&)'
Tentei tb desmanchar a estrutura e enviar as variáveis assim separadamente:
radio.print(ligando, boiaCaixa);
Assim compilou. Só que minha dúvida é de como pegar esses valores no receptor usando o comando radio.read() e guardá-los separadamente em duas variáveis.
Agradeço a ajuda dos Mestres!
Tags:
Olá, Rodrigo!
Em primeiro lugar, embora a documentação das bibliotecas do Arduino seja muito ruim, eu acho que Serial.print() só aceita strings e dados numéricos. Tua estrutura não é uma coisa nem outra.
Neste caso, o melhor seria usar Serial.write() que envia bytes "crus" pela seial.
Claro que, desta forma, você não vai poder mandar diretamente a tua estrutura, mas há um remédio.
Você pode enviar separadamente dadosRF.ligando e dadosRF.boiaCaixa.
Pouco uso as seriais do Arduino, então não sei se será necessário "partir" em bytes os valores inteiros de dadosRF.ligando e dadosRF.boiaCaixa antes de passá-los à função Serial.write().
Antes que você objete que dadosRF.ligando é booleano e não inteiro, informo que, para o C, booleano é inteiro.
Há que se fazer testes.
Do outro lado você lerá os bytes e talvez tenha que "montar" os dados originais. Mas, se for necessário, é bem simples, acredito que não terá dificuldade em fazê-lo.
Qualquer coisa, voltamos a conversar por aqui.
Bom trabalho.
D.T. Ribeiro.
Obrigado!
Boa tarde.
Descobri a biblioteca EByte_LoRa_E32_library.
https://www.mischianti.org/category/my-libraries/lora-e32-devices/
Nela tem vários exemplos, inclusive um que se chama sendReceiveFixedMessageStructure.
Vou estudar o exemplo e posto os resultados aqui.
Obrigado.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por