LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: medecau em 09 de Novembro de 2009, 18:31
-
Estava a aescrever este post aqui quando me surgiu uma ideia, que resolveu a minha duvida. Resolução após citação.
Estou a tentar trocar dados entre dois Arduinos. Um Duemilanove e um Pro.
As ligações são:
Duemilanove -> Pro
Tx -> RX
RX -> TX
5v -> +
GND -> -
Consigo fazer passar dados do Duemilanove para o Pro sem problemas mas não no sentido contrario, os dados ao passarem do Pro para o Duemilanove parecem perder alguns bits.
Como tenho mais do que um Arduino Pro(3) tentei utilizar outro mas continua igual, já tentei carregar o código que tinha no Duemilanove para outro Pro mas o problema persiste pelo que deduzo que seja na transmissão de dados dos Arduino Pro que esteja o problema.
Depois de ter escrito isto surgiu-me a ideia de ligar dois dos Pro mas fornecer alimentação através do Duemilanove em vez de usar o cabo USB. Desta forma libertando o Serial.
Ainda assim o comportamento é um pouco estranho, se alguém souber porque é que isto acontece e/ou como contornar agradeço que partilhem a informação.
-
Boa tarde,
Não percebi bem como tem as ligações mas vou deixar umas dicas que podem ajudar:
- Confirmar que todos os dispositivos têm GND comum (ter o GND (0V) ligado com fios entre todos os Arduinos para eles saberem falar a mesma "língua".
- Confirmar que a alimentação tem capacidade para fornecer energia aos diversos dispositivos (o regulador de tensão do Duemilanove pode não aguentar a carga de todos os Arduinos + componentes pelo que se necessário utilizar uma fonte de alimentação externa (transformador) para alimentar parte do circuito).
Se depois de confirmar isto ainda tiver com problemas, tente explica-las melhor para o tentar ajudar ;)
-
O GND(terra) esta partilhado porque os Pro recebem alimentação do Duemilanove e a potência não é problema. O problema parece-me estar quando ligo a placa de USB aos Pro ou quando utilizo o Duemilanove para receber dados dos Pro.
Vou tirar umas fotos para mostrar as ligações.
-
Aqui esta:
a A é uma Duemilanove ligada por USB ao computador
a B é uma Pro com alimentação do A e com o pino digital 0 ligado ao pino digital 1 do C
e a C também é Pro com alimentação da B
A A só da alimentação, a B esta sempre a ler do Serial e quando lê um char '1' liga o LED do pino 13 durante 50 ms e por fim a C escreve no Serial um '1' e depois para durante 500ms.
Espero que isto seja útil para aqueles que estejam a tentar por dois Arduinos a "conversar".
-
Quanto às ligações, só suspeitaria dos pro, se a entrada onde estás a liga-los estiver como entrada dos reguladores de tensão, esta pode não conseguir só com os 5V alimentar o regulador e dar os 5V estáveis visto que a recomendação para essas entradas é de 7V a 12V.
Também não percebi como é que o C envia o 1 visto que nenhum dos arduinos "C/B" estão ligados ao A para saber que aconteceu algo.
Experimenta ligar através de uma breadboard e ligar da breadboar aos pro em vez de estares a alimenta-los por essa ficha frontal ao lado do serial.
-
o A só esta ali para fornecer energia, o C envia dados, neste caso um byte a cada 800ms, e o B ao receber esse byte liga o LED durante 50ms.
fiz upload do video para mostrar:
3 little Arduinos (http://www.youtube.com/watch?v=5-dOaXQyn6c#)
-
Não tás a ligar o TX do B ao RX do C.
-
Offtopic... fizeste o vídeo com que câmara?
-
Não tás a ligar o TX do B ao RX do C.
bem visto, mas para efeitos de por a coisa a funcionar o B esta só a escutar o que o C estiver a escrever.
TigPT:
a maquina é uma Sony Cyber-shot DSC-T70 (http://www.google.com/search?sourceid=chrome&q=sony%20cyber-shot%20dsc-t70&um=1&hl=en&ie=UTF-8&sa=N&tab=iw&start=0) - estava com o macro
-
Muita qualidade para a luz da cena... muito boa câmara!
-
Muita qualidade para a luz da cena... muito boa câmara!
realmente, tá brutal :) faz-me lembrar o k800 (joking ;D)
(desculpem o off-topic :D)