Boa tarde,

Estou num projecto em que tenho de comunicar com um master ( arduino mega) em que recebe escreve a informação em lcd 16x4, a informação de outros dois arduinos (arduinos uno).

A informação que vou enviar para o master é de um a info de um dht11 e do outro o valor de um HY-SRF 05 ( sensor de distância ultrasonico).

Estou a utilizar um transciever  (ER400TRS - modulo RF 433Mhz), que faz comunicação através de porta serie.

A comunicação entre 2 arduinos é fácil, agora com 3 ou mais é que a coisa complica devido aos endereços.

O meu problema é como faço para fazer o endereço nos arduinos para o master receber a informação quando faz o pedido. Podem-me ajudar?

Exibições: 463

Responder esta

Respostas a este tópico

Muito bom RV!

Faltou apenas incluir no sketch a origem do pacote, ou seja, se vem da sala 1 ou da sala2, conforme o desenho do HFTG.


O maior problema por ele relatado era poder usar endereçamento de cada UNO e saber de onde a informação vem, como se faz em um protocolo I2C, por exemplo.

Abraços!


-------- Opinião sobre o projeto proposto:

Eu creio que outro complicador para o uso de RF 433MHz com esse transciever será o gerenciamento da interface aérea, ou seja, do próprio protocolo eletromagnético para garantir envio de dados de duas origens na mesma frequência sem haver interferência.
Mas isso pode ser feito com algo como um ACK de lado a lado para informar que o pacote foi recebido e o enviador pode passar para o próximo dado ou reenviar o dado não recebido após um certo timeout sem receber ACK.Tudo isso com um número sequencial de identificação do pacote (mensagem) enviado e recebido.

Procotolos de comunicação são baseados no modelo ISO/OSI. É algo relativamente complexo.

Por esse motivo desaconselho o uso dessa interface RF 433MHz!
Se fosse eu, abandonava esse método e faria tudo com ou Bluetooth, ou WiFi ou mesmo, como sugeri, ESP-NOW. Todos esses detalhes de RF, reenvio etc são resolvidos pelo STACK de cada protocolo.

Abraços.

os códigos para o sónico e para o dhr já estão no OK. Agora não sei como fazer o resto.
desculpa só agora vi a resposta toda
o sketch do mega é fazer o pedido do slave e receber. Vou tentar...

Boa noite HFTG.

existe uma outra solução.

Como você está usando transciever , você faz assim:

o Mega será o master e os UNOs  os slaves.

coloca os 2 UNOs como escravos.e em modo de recebimento.

Sendo slaves eles nunca tomam a iniciativa de iniciar a comunicação com o master.

Dai o master manda um comando para um slave solicitando dados e o slave manda os dados

para o master e volta a ficar no modo de recebimento..

Em seguida o master manda um comando para o outro slave solicitando dados e o slave manda os

dados para o master e volta a ficar no modo de recebimento..

E assim sucessivamente, e deste modo você evita o overrun na transmissão.

Seguem abaixo 3 exemplos para os UNOs e o Mega, agora vc tem que modificar para os seus sensores,

No inicio dos sketch tem mais detalhes sobre o funcionamento.

RV

Arduino_MegaV01.ino

Arduino_HTV02.ino

Arduino_USV02.ino

Boa noite HFTG.

algum progresso no projeto?

RV

Amigo RV, estou a ver os códigos e estão excelentes.

Já estava a fazer  o trabalho com os 2 unos  a trabalhar com  os DHT11 e estava a afinar a comunicação e estava  usar  o comando "serial.find"  e já estava a dar bons resultados

 estava a dar o nome aos  unos de"001" e "002" mas o teu programa está espetacular

vou agora afinar os teus sketch para imprimir no lcd edepois envio-te um pequeno video como funciona este projecto.

Vi que o programa está muito bem descrito, bem comentado e muito bem estruturado.

Pesquisei muito e estou a aprender muito com estas pesquisas.

Não sabia que havia tanta, boa gente que gostava de ajudar de forma tão pronta e preocupda , como tu fizeste.

Isto vai-me obrigar a continuar, a pesquisar mais e ajudar de forma sustentátel os outros,.

Vou colocar os sktech com os parâmetros que pretendo e depois digo-te como ficou.

Até já. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço