Logo Hardware.com.br
JOMARUMU
JOMARUMU General de Pijama Registrado
2.7K Mensagens 342 Curtidas

[Resolvido] - Arduino - Alguém entende sobre o funcionamento básico dessa peça?

#1 Por JOMARUMU 14/03/2014 - 23:22
Já estou enlouquecendo com uma dessas peças, me lembrou porque passei a odiar programação.
Nada faz sentido, tentei fazer um programa como esse:

http://futebol-uff.blogspot.com.br/2012/12/nrf24l01-testes-iniciais.html

Funcionou, adicionei uma linha para melhorar o código, parou tudo, removi a linha, não voltou mais, perdi umas 2 horas tentando arrumar, nada, desliguei tudo e deixei parado umas 5 horas, conectei no PC e tudo voltou a funcionar novamente, testei umas 3 vezes com sucesso, depois disso nada mais funcionava (sem alterar o código).

O programa era baseado no do link, agora depois de perder a paciência joguei o programa do link, e nada de funcionar, desliguei tudo, esperei uns 5 minutos e liguei tudo, funcionou, ai foi uma maravilha, fiz vários testes tudo funcionando, mas em um dos testes parou de novo.


Não faz o menor sentido, o programa é o mesmo, só que o sinal de rádio não é lido por um sensor.

Alguém sabe como essa peça maldita funciona? Se ela apresenta algum delay depois de um tempo de funcionamento, se é uma peça feita para não ficar ligada por muito tempo..., se o microcontrolador pode ter problema para processar muitos dados e trava tudo?
Estou desde a semana passada mexendo nisso, já perdi umas 10 horas tentando fazer um simples código funcionar, hora funciona, hora para, ai volta a funcionar, para de vez...
JOMARUMU
JOMARUMU General de Pijama Registrado
2.7K Mensagens 342 Curtidas
#3 Por JOMARUMU
15/03/2014 - 10:53
Olhei uma das coisas que o Fergo fez, não tem muito a ver com esse.

Testei novamente agora, acabei de ligar ambas e está tudo perfeito, já iria comprar algumas outras peças, vou aproveitar e pegar um transmissor de rádio novo para testar, deve ser problema na peça.

Estava pensando que o microcontrolador não estava dando conta de mandar um vetor de ints a cada ciclo, ou que desligar e segundos depois ligar ele dava algum tipo de problema (minha HP50g era assim, fazer isso não limpa a memória e deixava ela com problema na hora de fazer alguma coisa), mas acho que o problema deve ser em uma das placas mesmo.
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#4 Por Fergo
15/03/2014 - 17:04
O que exatamente você está tentando fazer?
Dificilmente o problema é com o Arduino e se for dar um palpite, o problema é na leitura das informações recebidas via rádio. Use o próprio serial monitor para depurar o problema. Imprima as variáveis até encontrar o que está dando errado. Pode ser inclusive interferência, uma vez que a comunicação é via rádio.

Adianto também que o emissor está enviando dados a cada iteração do loop e o receptor está lendo esses dados a cada 1 segundo devido ao delay no fim do loop. Quando se está trabalhando com comunicação, seja ela serial, rádio, infra-vermelha, etc, é sempre bom definir um timing para a comunicação. Emitir dados no mesmo ritmo do loop costuma ser um problema para a porta serial, por exemplo, pois é rápido demais para o protocolo dela. Sendo assim, sugiro adicionar o mesmo delay tanto no receptor quanto no emissor. Não precisa ser de 1s. As vezes 1ms é mais que suficiente.
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
JOMARUMU
JOMARUMU General de Pijama Registrado
2.7K Mensagens 342 Curtidas
#5 Por JOMARUMU
15/03/2014 - 21:36
Fergo disse:

É exatamente esse código que postei que estou tentando fazer rodar, quero testar um sistema para transmissão de dados sem fio, então tentei esse exemplo.
Tentei transmitir uma série de dados, usei um LDR para captar dados de luz, um código para transmissão de tempo, um para emitir dados a cada 'n' ciclos, agora resolvi colocar um interruptor, ai achei o que deve ser o problema, comprei cabos jumper macho-fêmea, o vendedor me mandou fêmea-fêmea, ai cortei os cabos de resistores (tirei os resistores) e usei eles para ligar o Arduino aos jumpers, acho que é ai que está o problema, nem sempre a informação correta era passada para o PC, pelo que parece está dando mal contato com o Arduino.
Dependia da inclinação do Arduino, se eu colocava o braço na mesa já alterava, era um único cabo assim e deu uns 8~15% de dados errados, considerando que o emissor de rádio e o receptor tem 7 cabos cada, ligados dessa forma (sendo 5 de dados em cada um), acho que o problema está exatamente ai.

Vou esperar agora chegar os cabos certos e tentar novamente.

Mas valeu pela dica do delay, não sabia o que fazer quanto a isso, não tinha entendido se o "radio.write( sirene , sizeof(sirene) );" (no caso para tocar uma sirene) dispararia sinal continuamente e como seria a leitura dele, vou adicionar um delay no emissor também.

Obrigado.




EDIT:
Resolvido, perdi tanto tempo e o problema era um simples mal contato. Fui inventar de fazer sistemas automáticos para pegar os dados a serem enviados, ou sistemas que pegam dados do ambiente, foi só fazer um simples interruptor, pois assim eu tinha controle dos dados a serem enviados e deu para ver onde estava o defeito. Não tive paciência de esperar os cabos corretos, cortei o cabo de 10 resistores maiores, que encaixavam perfeitamente nas entradas do Arduino, agora o programa está rodando há uns 3 minutos sem nenhum problema.
JOMARUMU
JOMARUMU General de Pijama Registrado
2.7K Mensagens 342 Curtidas
#7 Por JOMARUMU
16/03/2014 - 12:07
ripongao disse:

A imagem que tem no site é para o nRF24L01, se alguém usar ela pode copiar o circuito de lá, eu usei a nRF24L01+ então segui a tabela desse site:
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
Tem uma imagem ai indicando os pinos e quais seus nomes e em quais pinos do Arduino ligar.
Acho que é mais fácil postar isso do que imagens, já que são 7 cabos só do arduino, mais 2 do interruptor e mais um para um resistor no interruptor.


A sincronização não deu para resolver com delay no emissor, se jogava delay nele acabava interferindo na transmissão, então tirei o delay dele (só transmite dois números, então a velocidade é boa) e o delay está no receptor, esse pode receber quanto for de delay, inicialmente deixei 1000 ms, ia bem, mas obviamente demorava para executar as ações, ai fui reduzindo até um momento em que o tempo de resposta ficou nulo aos meus olhos e evitou que ele rodasse sem delay.
No fim a transmissão ficou ótima, é apertar o interruptor e já acende o LED na outra placa.
© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal