Olá, inventores de todas as idades! Hoje, vou guiá-los através de um projeto fascinante que mistura diversão e aprendizado: um carrinho controlado remotamente usando a tecnologia Arduino e módulos RF2401. Vamos detalhar cada componente e como você pode replicar este projeto em casa.
Lista de Materiais:
- 1 Arduino Uno (Transmissor)
- 1 Arduino Nano com Shield Nano (Receptor)
- 2 Módulo RF2401
- 4 Botões push (para comandos de direção)
- 1 Protoboard de 830 furos
- 4 Resistores de 1kΩ (para divisores de tensão)
- 1 Módulo Ponte H L298 (para controle dos motores)
- Bateria LiPo (para alimentar o carrinho)
- Bateria alcalina 9V (para alimentar o Arduino transmissor)
- Fios, Jumper e conectores diversos
Agora que temos nossa lista de compras pronta, vamos mergulhar nos detalhes do projeto.
Arduino em Sintonia: Uno e Nano Trabalhando Juntos
O coração deste projeto são dois Arduinos. O Uno, nosso transmissor, envia comandos para o Nano, montado em uma prática Shield Nano. Esta shield facilita enormemente as conexões, tornando o projeto mais acessível e reduzindo a possibilidade de erros de cabeamento.
Comunicação Clara: RF2401
O módulo RF2401 é o que permite que nossos Arduinos ‘conversem’ entre si. Esta comunicação sem fio é o que torna possível controlar o carrinho remotamente, abrindo um mundo de possibilidades para futuros projetos e experimentos.
Comandos ao Toque: Botões e Resistores
Os quatro botões push conectados à protoboard de 830 furos são os responsáveis por enviar os comandos de movimento para o carrinho. Eles trabalham em conjunto com resistores de 1kΩ, garantindo que os sinais sejam precisos e seguros.
Potência Controlada: Módulo Ponte H L298
O módulo Ponte H L298 é vital para controlar os motores do carrinho, permitindo que você ajuste a direção e a velocidade com facilidade. Este componente é essencial para a dinâmica e agilidade do carrinho.
Energia Sustentada: Baterias LiPo e Alcalina
A bateria LiPo oferece o poder necessário para o carrinho, enquanto a bateria alcalina 9V mantém o Arduino transmissor em funcionamento. Esta combinação garante que seu carrinho tenha um desempenho estável e duradouro durante as operações.
Montagem e Programação: Um Guia Passo a Passo
Em meu blog, você encontrará instruções detalhadas e ilustrações para cada etapa da montagem. Também compartilho o código-fonte necessário para o Uno e o Nano, explicando como cada segmento contribui para a funcionalidade do carrinho. Estou aqui para ajudar a desmistificar a programação e a montagem, tornando este projeto acessível para todos que desejam aprender e criar.
Este projeto não é apenas sobre construir algo legal; é sobre entender como as coisas funcionam e aplicar esse conhecimento de forma prática e divertida. Convido todos vocês a pegarem suas ferramentas e a se juntarem a mim nesta aventura de construção. Quem sabe onde suas criações podem levá-los!
Ao final deste projeto, você não apenas terá um carrinho 2WD funcional, mas também uma compreensão mais profunda da robótica e da programação. Pronto para começar? Todos os componentes necessários estão à sua espera na Smart Projects Brasil.
Não deixe sua criatividade esperando. Visite Smart Projects Brasil agora mesmo para adquirir tudo que você precisa para construir seu próprio carrinho 2WD Arduino. Transforme suas ideias em projetos incríveis com os nossos kits e componentes. Comece sua construção hoje e torne-se o maker que sempre quis ser!
Transmissor
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";
int buttonPins[] = {2, 3, 4, 5};
int buttonState[] = {0, 0, 0, 0};
void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
for(int i = 0; i < 4; i++) {
pinMode(buttonPins[i], INPUT);
}
}
void loop() {
for(int i = 0; i < 4; i++) {
int state = digitalRead(buttonPins[i]);
if(state != buttonState[i]) {
buttonState[i] = state;
char text[10];
if(state == HIGH) {
sprintf(text, "LED%d_ON", i+1);
Serial.println("Button " + String(i+1) + " Pressed: LED " + String(i+1) + " ON");
} else {
sprintf(text, "LED%d_OFF", i+1);
Serial.println("Button " + String(i+1) + " Released: LED " + String(i+1) + " OFF");
}
radio.write(&text, sizeof(text));
delay(200); // Debounce
}
}
}
Receptor
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
for(int i=3; i<=6; i++) {
pinMode(i, OUTPUT);
}
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
}
void loop() {
if (radio.available()) {
char text[10] = "";
radio.read(&text, sizeof(text));
Serial.print("Received command: ");
Serial.println(text);
if (strcmp(text, "LED1_ON") == 0) {
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
}
else if (strcmp(text, "LED1_OFF") == 0) {
digitalWrite(3, LOW);
digitalWrite(5, LOW);
}
else if (strcmp(text, "LED2_ON") == 0) {
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
}
else if (strcmp(text, "LED2_OFF") == 0) {
digitalWrite(4, LOW);
digitalWrite(6, LOW);
}
else if (strcmp(text, "LED3_ON") == 0) {
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
else if (strcmp(text, "LED3_OFF") == 0) {
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else if (strcmp(text, "LED4_ON") == 0) {
digitalWrite(3, HIGH);
digitalWrite(6, HIGH);
}
else if (strcmp(text, "LED4_OFF") == 0) {
digitalWrite(3, LOW);
digitalWrite(6, LOW);
}
}
}