collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Comunicação directa entre dois Arduinos  (Lida 10845 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline norbanvs

  • Mini Robot
  • *
  • Mensagens: 236
Comunicação directa entre dois Arduinos
« em: 31 de Dezembro de 2008, 05:41 »
Ok pessoal, então é o seguinte...

Já se falou num outro tópico que "Ai... e tal... dois Arduinos que comunicam atravez de XBee... e por aí fora...".
Mas eu, como não tenho pachorra de gastar dinheiro em XBee, quero começar com algo mais primitivo, por isso eu pretendo ligar duas Arduinos fisicamente, de maneira a que, por exemplo, numa Arduino receba dados a partir de um potenciómetro, depois envie esses dados a uma segunda Arduino, os quais poderemos confirmar no pc.

A imagem que coloquei em anexo dá uma ideia de como vai ficar essa enorme confusão...

As ligações foram feitas de acordo com pesquisas que fiz, assim como as fontes de alimentação separadas, se bem que ainda não tenho a certeza se alguma coisa estará correcta.

Os programas para cada uma das Arduinos são simples, mas não dão bem aquilo que eu pretendo, talvez por serem simples em excesso, ainda não entendi bem esta parte...

Coloquei também em anexo os dois programas das Arduinos para que possam ver a onde é que poderei estar a errar.

Sei que nem toda a gente tem duas Arduinos, mas de qualquer maneira gostaria de ouvir a vossa justiça, nem que seja só para ver o que isto vai dar!  :P

Fiquem bem... e Feliz Ano Novo!
 ;D :D ;) :) :-* ::) :) ;) :D ;D
« Última modificação: 31 de Dezembro de 2008, 05:44 por norbanvs »

Offline ngoncalves

  • Mini Robot
  • *
  • Mensagens: 145
    • Thinking Olive Tree
Re:Comunicação directa entre dois Arduinos
« Responder #1 em: 31 de Dezembro de 2008, 09:42 »
A forma de comunicar está engenhosa, mas só funciona se os dois arduinos estiverem a utilizar a mesma alimentação. E também é muito sensível ao ruído e maus contactos.
 
Podes tentar utilizar a porta série (RS-232) para enviar o valor lido de um arduino para o outro. É mais robusto a interferências. Ou em alternativa utilizar o I2C que permite ter vários arduínos a comunicarem utilizando apenas 2 fios. Mas é sempre necessário que a alimentação seja a mesma para a porta série ou para o I2C.  Talvez seja possível utilizar a porta série e alimentações diferentes se se utilizar um CI conversor de nível (o MAX232 ou parecido). Mas não tenho a certeza desta última.

Sem utilizar a mesma alimentação só rádio ou luz. Se o XBee é caro, tenta com 2 pares de leds inframvermelhos, um emissor e o outro receptor. O problema é que tens que escrever o código para garantir que os dois arduinos não tentam falar ao mesmo tempo. Mas se pretendes apenas que um fale e outro escute, então é simples. Um bocadinho mais caro que 4 leds é utilizar dois "leds" de infra-vermelhos utilizados nos comandos remotos. Procura na net por "sharp ir transceiver".
-----
Ambient intelligence, mobile robotics, life. 42
http://www.thinkingolivetree.blogspot.com/

Offline delphi

  • Mini Robot
  • *
  • Mensagens: 217
Re:Comunicação directa entre dois Arduinos
« Responder #2 em: 31 de Dezembro de 2008, 11:09 »
Olá,

E se se usarem os pins TX/RX dos dois arduinos (o TX de um arduino ao RX do outro e vice-versa)?

Ou então podem-se utilizar outros pins digitais com a library http://www.arduino.cc/en/Tutorial/SoftwareSerial.


Bom Ano para todos!
www.saborapalco.com - Companhia de Teatro Amador
www.megavaquinha.com - Uma mega aposta no euromilhões de um grupo de mega amigos

Offline ngoncalves

  • Mini Robot
  • *
  • Mensagens: 145
    • Thinking Olive Tree
Re:Comunicação directa entre dois Arduinos
« Responder #3 em: 31 de Dezembro de 2008, 11:24 »
Citar
E se se usarem os pins TX/RX dos dois arduinos (o TX de um arduino ao RX do outro e vice-versa)?

O problema de usar a porta série é que quase de certeza necessita de uma alimentação comum entre os dois arduinos. Mas para tirar as dúvidas só vendo o datasheet do Atmega168.

E utilizar quaisqueres outros pinos digitais tem o mesmo problema. Com alimentações diferentes, a tensão de referência 0 volts é diferente para os dois arduínos. Desconfio que ao ligar os fios, alguma corrente terá que passar entre os pinos dos arduinos por causa das alimentações serem diferentes. Mas posso estar errado.
-----
Ambient intelligence, mobile robotics, life. 42
http://www.thinkingolivetree.blogspot.com/

Offline ngoncalves

  • Mini Robot
  • *
  • Mensagens: 145
    • Thinking Olive Tree
Re:Comunicação directa entre dois Arduinos
« Responder #4 em: 31 de Dezembro de 2008, 11:38 »
Citar
Os programas para cada uma das Arduinos são simples, mas não dão bem aquilo que eu pretendo, talvez por serem simples em excesso, ainda não entendi bem esta parte...

O analogRead() utiliza o conversor analógico-digital (ADC) para ler a tensão no pino do potenciómetro. O analogWrite() gera uma onda quadrada com um determinado periodo. A relação entre a percentagem do período em que a onda está a 5V e a percentagem a que está a 0V depende do valor que é passado à função. O objectivo é que o valor médio da onda seja igual a 4.9 mv * valor_digital.

Mas para que o esquema funcione é necessário que o ADC no arduino que está à escuta funcione muito lentamente. Ou seja, veja o valor médio da onda quadrada. Caso contrário só vais ler 0V e 5V. A minha sugestão é que coloques um filtro RC passa-baixo na entrada do arduino que está à escuta. Ou seja:

  1) uma resistência entre o pino 3 do emissor e o pino 3 do receptor (10K por exemplo)
  2) um condensador entre o pino 3 do receptor e os 0V do receptor (10 uF por exemplo)

 Os valores devem ser calculados atraves da formula: fc = 1/(2 * pi * R * C) em que fc é a frequência de corte do filtro. Como se pretende obter o valor médio da onda quadrada, fc deve ser baixo (< 10 Hz), idealmente perto de 2 Hz ~ 5 Hz

 
-----
Ambient intelligence, mobile robotics, life. 42
http://www.thinkingolivetree.blogspot.com/

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Comunicação directa entre dois Arduinos
« Responder #5 em: 31 de Dezembro de 2008, 12:01 »
Não basta meter ground comum entre os dois arduinos?

Quando receber o meu segundo posso depois testar isto (assim que tenha tempo).

A minha ideia ia mais para fazeres um segundo serial com pins digitais no arduino que está a ligado ao pc para poderes continuar a usar o usb para enviar dados para pc.

Não posso adiantar mt mais do que já foi dito sem testar!

Boa sorte para o projecto!

Offline ngoncalves

  • Mini Robot
  • *
  • Mensagens: 145
    • Thinking Olive Tree
Re:Comunicação directa entre dois Arduinos
« Responder #6 em: 31 de Dezembro de 2008, 12:18 »
Citar
Não basta meter ground comum entre os dois arduinos?

Mas neste caso as alimentações não são separadas. Na figura que o norbanvs postou não é claro, mas eu fiquei com a impressão que são separadas.

Vendo melhor a imagem, não percebo o que lá está a pilha de 9V a fazer..... Porque não utiliza os 5V do primeiro arduino ? E parece-me que o potenciómetro também está mal ligado. O pino do meio é que devia ir ao pino analógico. Regra geral, ligam-se os 5V e os 0V aos pinos de fora. Tal como está parece-me que está a ler 5V menos a queda de tensão no potencíometro, que depende da corrente consumida pelo ADC.

No essencial tens razão, basta o ground ser comum. Mas cuidado que isso pode resultar mal a ligação à massa for feita através de um componente e não com um fio/pista no circuito.
-----
Ambient intelligence, mobile robotics, life. 42
http://www.thinkingolivetree.blogspot.com/

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Comunicação directa entre dois Arduinos
« Responder #7 em: 31 de Dezembro de 2008, 12:21 »
Sim, os potenciómetros no geral tem a saída para analogico ao meio e a tensão às pontas!

Offline norbanvs

  • Mini Robot
  • *
  • Mensagens: 236
Re:Comunicação directa entre dois Arduinos
« Responder #8 em: 31 de Dezembro de 2008, 18:45 »
Citar
Sem utilizar a mesma alimentação só rádio ou luz. Se o XBee é caro, tenta com 2 pares de leds inframvermelhos, um emissor e o outro receptor. O problema é que tens que escrever o código para garantir que os dois arduinos não tentam falar ao mesmo tempo. Mas se pretendes apenas que um fale e outro escute, então é simples. Um bocadinho mais caro que 4 leds é utilizar dois "leds" de infra-vermelhos utilizados nos comandos remotos. Procura na net por "sharp ir transceiver".

Esta sugestão me parece boa... só por curiosidade... e se entre o emissor IR e o receptor IR eu coloca-se um cabo de fibra óptica?

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Comunicação directa entre dois Arduinos
« Responder #9 em: 31 de Dezembro de 2008, 20:12 »
Emisor receptor de IR

Fibra-optica exige um processamento elevadicimo e um preço ainda maior.. não te metas por ai rapaz ;)

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re:Comunicação directa entre dois Arduinos
« Responder #10 em: 01 de Janeiro de 2009, 03:46 »
fiz um update ao tutorial sobre comunicação Serial, agora tenho um setup com fios, e outro sem fios:
http://lab.guilhermemartins.net/?p=346

Feliz 2009  ;D
« Última modificação: 01 de Janeiro de 2009, 03:50 por guibot »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Comunicação directa entre dois Arduinos
« Responder #11 em: 01 de Janeiro de 2009, 05:59 »
fiz um update ao tutorial sobre comunicação Serial, agora tenho um setup com fios, e outro sem fios:
http://lab.guilhermemartins.net/?p=346

Feliz 2009  ;D
Excelente... Feliz 2009 para ti também.

Offline norbanvs

  • Mini Robot
  • *
  • Mensagens: 236
Re:Comunicação directa entre dois Arduinos
« Responder #12 em: 01 de Janeiro de 2009, 10:22 »
Citar
fiz um update ao tutorial sobre comunicação Serial, agora tenho um setup com fios, e outro sem fios:
http://lab.guilhermemartins.net/?p=346

Realmente, desta maneira está impecável!
É justamente isto tudo. Apenas uma coisa curiosa que descobri. Para esta experiência dar certo, as duas Arduinos tem que estar ligadas à mesma fonte de alimentação; já para o caso de cada uma ter a sua própria fonte de alimentação, ambas terão que estar ligadas ao GRN uma com a outra.
Mas de resto está tudo a 100%

Imaginem agora que este exemplo poderia ser aplicado a dois Smallduinos que por causa de dá-cá-aquela-palha eles teriam que trocar uma informação um com o outro, assim tipo o primeiro estudava um labirinto e depois passaria a informação ao "colega"... sei que é um exemplo meio maluco, mas lá que seria divertido, seria!
 ;D ;D ;D ;D

Obrigado pela explicação

Offline norbanvs

  • Mini Robot
  • *
  • Mensagens: 236
Re:Comunicação directa entre dois Arduinos
« Responder #13 em: 01 de Janeiro de 2009, 11:12 »

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re:Comunicação directa entre dois Arduinos
« Responder #14 em: 01 de Janeiro de 2009, 11:48 »
Não sei como estás a fazer o teu setup, mas a única coisa que precisas ligar entre os arduinos são os Tx Rx

A cena dos smallduinos está muita gira, seria engraçado experimentar ;)