Olá pessoal, estou inciando no arduino e, após algumas pesquisas surgiram algumas dúvidas na implementação de um projeto antigo. Tenho interesse em fazer um carrinho controlado por uma rede sem fio, li bastante coisa sobre módulo rf, mas achei, até então, que o NRF24L01 2.4GHz pode ser uma melhor e mais barata opção, porém, surgiu a dúvida: Eu posso ter um controle remoto com um arduino ligado a um módulo desse e o carrinho também com um arduino e um módulo desse, se comunicando um com o outro, sem uso de um computador? 

Abraço a todos!

Exibições: 3315

Responder esta

Respostas a este tópico

Talvez tenha ficado confuso, quero realizar a comunicação de dois módulos NRF24L01, cada módulo ligado a um arduino, sendo um arduino e um NRF24L01 para o controle remoto e um arduino e um NRF24L01 para o carrinho. Isso bastaria e/ou seria possível o controle do carrinho? O carrinho vai ter dois servos motores e um motor dc ligado a uma ponte h, para ir para frente e para traz.

Obrigado.

 Olá Miguel. Tudo bem?

 Pelo que entendi, sim a sua idéia é possível, e para facilitar o controle eu indicaria usar mais um shield chamado: "Keypad Shield".

[Link] http://blogembarcado.blogspot.com.br/2012/12/simulino-keypad-shield...

 Assim, cada tecla pode corresponder ao controle de movimento do carrinho, ou demais funções.

 Praticamente trabalhando com o módulo NRF24L01 você estará trabalhando com comunicação serial. Então basta pensar que seus dados serão transmitidos e recebidos como "char'. Dai faz o tratamento que precisa concatenando eles e/ou trabalhando com strings.

Em breve estarei fazendo um projeto parecido, estou só esperando minha ponte H chegar.  ^^

Caso queira entrar em contato meu email é: blogembarcado@gmail.com  , e caso queira tenho whatsapp também.

Espero ter ajudado. ^^

T++.

Olá, Daniel.

Então, a minha ideia é um controle com potenciômetros, para controlar precisamente quantos graus quero

que o carrinho vire. Não sei a velocidade que vou conseguir de transferência, apesar de ter me informado que SPI costuma ser bem rápida e a taxa é muito boa também. Como lhe falei, sou novo no arduino, mas já programo em C para PIC, programo em java, entre outras linguagens, com as quais trabalho, aí, pesquisando, vi que o arduino é nada mais que um 'framework em C' e muito limitado, apesar de ter várias bibliotecas e passei a estudar C para avr, com o winar e gostei bastante. Já estou fluente em muitos pontos, agora entrando à fundo em SPI, para fazer a comunicação. Estou estudando uma biblioteca do nRF24l01, para fazer tudo em C. Ainda não fiz funcionar, mas em breve estarei postando aqui meu código.

De qualquer forma qualquer ajuda é bem vinda. Muito obrigado pela resposta e disponibilidade em ajudar.

Se tiver uma biblioteca simplificada em C, para comuniação com esse módulo, será muito bem vinda!

Obrigado.Abraço

Olá Miguel.

Eu ganhei de meu sobrinho um controle zerado do PS2 com o seu devido receptor (sem fio).

Iria instalar no carrinho de meu afilhado mais não deu tempo ele detonou primeiro.

Seguinte tenho o código e o circuito:

Controle PS2 envia sinal para o receptor que envia sinal para o Arduino (para ficar menor o projeto vc pode usar um Arduino Pro Mini ou somente o Atmega 328 com o cristal e os capacitores); e o Arduino controlando as cargas.

Dê uma olhada ai.

Ele ficou super 10 e outra com recurso barato.

Valeu.

Wow!

muito interessante, vou dar uma olhada e posto alguma coisa.

Valeu!

Galera quem quiser o código ai vai:

#include <PS2X_lib.h> // Declaração das bibliotecas necessárias.
#include <Servo.h>
PS2X ps2x; // criando a classe ps2

Servo direcao; // Declaração das variaveis que serão utilizadas no programa.
int direcaoPos = 75;
int error = 0;
int ledpin = 9;
int type = 0;
byte vibrate = 0;
byte Acel_frente = 6;
byte Acel_tras = 5;

void setup() // Inicio do programa (estabelece as definições dos pinos e faz os testes no controle).
{
Serial.begin(57600); // Define a comunicação serial.
direcao.attach(7); // Adiciona a variável direcao ao pino 7.

pinMode(Acel_frente, OUTPUT); // Define os pinos das variáveis como saída
pinMode(Acel_tras, OUTPUT);
error = ps2x.config_gamepad(13,11,10,12, true, true); // Define os pinos onde está conectado o controle.

ps2x.enableRumble(); //Ativar vibração do controle
ps2x.enablePressures(); //Ativar modo analógico do controle
}

void loop() //Inicio do programa (parte executável).
{

error = 0;

type = 1;

ps2x.read_gamepad(false, vibrate);

vibrate = ps2x.Analog(PSAB_RED); // Se pressionado o botão vermelho, ativa a vibração do controle.


if(ps2x.Analog(PSS_LY) > 130 && ps2x.Analog(PSS_LY) <= 255) // Se o botão analógico L for pressionado para cima (eixo Y).
{
int Veloc =map(ps2x.Analog(PSS_LY), 131 , 255, 0 , 255); // Os valores serão mapeados e escritos na porta acel_frente e a porta Acel_tras é desativada.
analogWrite(Acel_frente, Veloc); //Então o carro anda para frente.
digitalWrite(Acel_tras, LOW);
}

else if(ps2x.Analog(PSS_LY) >= 0 && ps2x.Analog(PSS_LY) <= 126) // Se o botão analógico L for pressionado para baixo (eixo Y).
{
int Veloc =map(ps2x.Analog(PSS_LY),0 , 127, 255 , 0); // Os valores serão mapeados e escritos na porta Acel_tras e a porta Acel_frente é desativada.
digitalWrite(Acel_frente, LOW); //Então o carro anda para trás.
analogWrite(Acel_tras, Veloc);
}

else { //Se não as portas Acel_frente e Acel_tras serão desativadas e o carro fica parado.
digitalWrite(Acel_frente, LOW);
digitalWrite(Acel_tras, LOW);
}

if(ps2x.Analog(PSS_RX) > 130 && ps2x.Analog(PSS_RX) <= 255) // Se o botão analógico R for pressionado para direita (eixo X).
{
int direcaoPos =map(ps2x.Analog(PSS_RX),131 , 255, 75 , 120); // Os valores serão mapeados e recebidos pela variável direcaoPos.

direcao.write (direcaoPos); // a variável direcaoPos será escrita na porta direcao, então o servo gira a direção para a direita.

}


else if(ps2x.Analog(PSS_RX) >= 0 && ps2x.Analog(PSS_RX) <= 126) // Se o botão analógico R for pressionado para esquerda (eixo X)
{
int direcaoPos =map(ps2x.Analog(PSS_RX),127 , 0, 75 , 30); // Os valores serão mapeados e recebidos pela variável direcaoPos.

direcao.write (direcaoPos); // a variável direcaoPos será escrita na porta direcao, então o servo gira a direção para a esquerda.

}

else { //Se não o servo recebe o valor inicial de direcaoPos(75) e a direção permanece centralizada.

direcao.write(direcaoPos);

if(ps2x.Button(PSB_GREEN)) // Se pressionado o botão verde, o led do farol é ativado.
{
analogWrite (ledpin, 255);
}
else if(ps2x.Button(PSB_BLUE)) //se pressionado o botão azul, o led do farol é desativado.
analogWrite (ledpin, 0);

}
delay(50);

}

Miguel, bom dia.

Chegou de montar ? Vou modificar uma outra xaranga e vou usar este ccto. 

Funfou legal ? 

No aguardo..

olá amigo nao conseguir compilar o codigo do carrinho alguem humildimente poderia ma dar uam dica?a presenta psx2 does name a type.aguardo colaboraçao dos amigos lebrando que o projeto é sensasional parabens.aguardo resposta.

Você tem a biblioteca do ps2x  instalada no pc ?

sim amigo.

desculpa a demora fui atender minha espousa. confesso que nao tenho muita experiencia  com biblioteca nao

para tirar as duvidas tem um endereço que eu possa abaixar? e instalar novamente?

seria o ps2x ? master   antonio?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço