LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: filipe89 em 25 de Abril de 2013, 01:03

Título: comunicação entre arduinos e PC
Enviado por: filipe89 em 25 de Abril de 2013, 01:03
Boa noite.

Estou para fazer um upgrade a um projecto meu já antigo e o objectivo é adicionar um arduino, porque no  antigo já não tenho mais espaço de memória nem espaço físico.

No segundo arduino terei sensores e motores, disponível com porta série mas sem SPI (queimou porque a ponte H lá ligada entrou em cc), no outro vai ter a porta série ocupada com o PC poderá não levar sensores mas vai comunicar com o segundo arduino.

A minha questão agora era saber qual a melhor forma de comunicação. consigo interligar através de I2C? enviar dados para um porto de modo a que saiam em série? em ultimo caso pulsos, mas nunca mais saia dali :/

PS: a comunicação entre o primeiro arduino e o PC é constante, por isso não dá jeito haver interrupção.
Título: Re: comunicação entre arduinos e PC
Enviado por: dropes em 25 de Abril de 2013, 16:22
O modo de comunicação em I2C é mais para endereçamentos, não sendo o mais indicado; rs232 também não é muito adequado porque não se pode interromper a comunicação a meio e o sincronismo tem de ser preciso, por isso resta o spi, se não tens disponível fisicamente sempre podes fazer por software.
Título: Re: comunicação entre arduinos e PC
Enviado por: npereira em 25 de Abril de 2013, 17:26
Talvez o mais simples é fazer comunicação serie por software (http://arduino.cc/en/Tutorial/SoftwareSerial) entre os dois arduinos.
Título: Re: comunicação entre arduinos e PC
Enviado por: filipe89 em 26 de Abril de 2013, 00:23
O modo de comunicação em I2C é mais para endereçamentos, não sendo o mais indicado; rs232 também não é muito adequado porque não se pode interromper a comunicação a meio e o sincronismo tem de ser preciso, por isso resta o spi, se não tens disponível fisicamente sempre podes fazer por software.

A informação que quero receber também é "curta" 4 inteiros de 4 dígitos de cada vez, repete-se é muitas vezes

Talvez o mais simples é fazer comunicação serie por software (http://arduino.cc/en/Tutorial/SoftwareSerial) entre os dois arduinos.

era +- isso que estava a pensar, mas não de forma tão simples, embora no I2C só preciso de 2 fios, função genérica, e consigo por ex partilhar um RTC pelos 2.
Título: Re: comunicação entre arduinos e PC
Enviado por: senso em 26 de Abril de 2013, 00:39
Não sei se é muito boa ideia partilhar periféricos, pode ser feito, mas á que ter em atenção ao código, não seria uma solução melhor, usar só um micro maior/com mais pinos?
Título: Re: comunicação entre arduinos e PC
Enviado por: filipe89 em 26 de Abril de 2013, 01:08
Não sei se é muito boa ideia partilhar periféricos, pode ser feito, mas á que ter em atenção ao código, não seria uma solução melhor, usar só um micro maior/com mais pinos?

não por causa do processamento, enquanto fica a fazer contas passa o tempo para a resposta do PC
Título: Re: comunicação entre arduinos e PC
Enviado por: senso em 26 de Abril de 2013, 12:31
Por falta de processamento?
Título: Re: comunicação entre arduinos e PC
Enviado por: filipe89 em 26 de Abril de 2013, 12:54
Por falta de processamento?

O PC pede comunicação x em x milissegundos, caso não haja resposta ele reinicia a comunicação, quando o arduino vai a responder, já vai tarde depois de fazer as contas e actuar os motores.
Título: Re: comunicação entre arduinos e PC
Enviado por: senso em 26 de Abril de 2013, 13:08
Isso deve é ser código mal pensado, até porque serial é algo lento, o que é que o micro está mesmo a fazer com o que envia/recebe para o pc?
Título: Re: comunicação entre arduinos e PC
Enviado por: StarRider em 27 de Abril de 2013, 02:17
Boas,


Eu tenho uma solução para o teu dilema ... mas possivelmente não a vais querer ouvir ;)

Abraços,
PA
Título: Re: comunicação entre arduinos e PC
Enviado por: senso em 27 de Abril de 2013, 13:36
É mandar o IDE do arduino pela janela fora, porque para que está a fazer o atmega deve servir perfeitamente..
Título: Re: comunicação entre arduinos e PC
Enviado por: filipe89 em 27 de Abril de 2013, 20:12
o arduino está a comunicar com o PC com um programa chamado setellarium. Então o arduino tem que receber a informação converter os dados, ler posição e corrigir/mudar de posição actuando motores.

Esta ultima parte é a mais lenta e que faz desligar a comunicação, podia meter por interrupção mas acho que complica :/
Título: Re: comunicação entre arduinos e PC
Enviado por: senso em 27 de Abril de 2013, 20:18
O serial implementado no Arduino funciona por interrupções, como é que "desliga" a comunicação?
O teu código está mal feito e é bloqueante na parte do movimento, só pode..
Título: Re: comunicação entre arduinos e PC
Enviado por: filipe89 em 27 de Abril de 2013, 20:42
Se ficar a actuar motores, estando dentro dum ciclo for, não vai poder responder ao PC
Título: Re: comunicação entre arduinos e PC
Enviado por: senso em 27 de Abril de 2013, 20:54
Não precisa de bloquear para rodar um stepper ou dois, tens de alterar a estrutura do código, olha para o exemplo blinky without delay e entende como ele funciona, podes implementar milhentas coisas diferentes para que funcionem de x em x tempo sem serem bloqueantes, foi precisamente isso que o Njay te disse para fazeres e te deu links(noutro tópico penso eu).
Título: Re: comunicação entre arduinos e PC
Enviado por: filipe89 em 27 de Abril de 2013, 21:03
pois, o problema é que não de passo, e tenho uma bussula e um acelarometro a serem verificados para saber se está na posição certa ou não.
Já tenho o arduino sem saídas/entradas, e quero passar para motores de passo. por isso também é uma das razoes para mudar, também podia usar o arduino mega, mas ai sim, teria que melhorar a programação.
Título: Re: comunicação entre arduinos e PC
Enviado por: senso em 27 de Abril de 2013, 21:16
Muda para um micro com mais pinos, porque usar mais micro-controladores só te vai dar é mais problemas..