Kit Chassi 2WD para Robô é um conjunto projetado para entusiastas, iniciantes, hobbystas e estudantes interessados em construir seu próprio carro robô. O Kit oferece uma experiência prática de aprendizado e diversão, permitindo explorar os princípios da robótica e desenvolver habilidades técnicas. O Chassi possui 2 motores com roda e uma terceira roda boba (universal) livre para a sustentação. Você pode montar um robô segue-faixa ou robô com sensor ultrassônico para evitar obstáculos. É possível adicionar vários itens neste chassi, como placas controladoras, sensores de presença, sensores ultrassônicos, câmeras e entre outros para personalizar o seu projeto.
Composição do Kit Chassi
-
- 02 Rodas com pneus (65mm);
- 01 Chassi em acrílico tipo 3D (dimensões 21,5 x 14,9 cm);
- 02 Motores DC com redução;
- 04 Espaçadores L10mm;
- 04 Parafusos M3x30mm;
- 08 Parafusos M3x08mm;
- 02 parafusos M3x10mm;
- 06 Porcas M3;
- 02 Discos de código de precisão (encoder) de velocidade de 20 linhas;
- 04 Suportes em acrílico para fixar o motor da roda;
- 01 Suporte para 04 pilhas AA;
- 01 Chave On-Off;
- Esquema de montagem.
Especificações Técnicas
-
- Tensão DC 3V: Corrente 100mA, RPM 110;
- Tensão DC 5V: Corrente 100mA; RPM 190;
- Tensão DC 6V: Corrente 120mA, RPM 240;
- Taxa de redução: 1:48;
- Diâmetro roda: 65 mm;
- Peso do motor: 50 g;
- Tamanho do motor: 70mm x 22mm x 18mm;
- Nível de ruído: < 68db;
- Peso: ~350g.
Projeto para o Kit Chassi
O projeto consiste simplesmente em construir um carro robô autônomo com a possibilidade de desviar dos obstáculos.
Material
-
- 01 Chassi completo com dois motores DC (3~6v) com caixa de redução, duas rodas de borracha e uma roda giratória de apoio;
- 01 Arduino;
- 01 Módulo Driver Ponte H L298N;
- 01 Servo Motor;
- 01 Sensor Ultrassônico HC-SR04;
- 01 Arduino Sensor Shield (opcional);
- 02 baterias 18650 (ou outra fonte de alimentação);
- 01 Caixa para duas Baterias 18650 (ou outro suporte);
- Fios e jumpes para conexão.
Montagem
Primeiramente, monta-se a plataforma Kit Chassi Carro Robô conforme as instruções, podendo haver adaptações a critério do projetista.
Em seguida, teremos que fazer a fixação dos componentes necessários para o movimento e correto funcionamento do robô conforme o esquema a seguir:
Código
Após ter feito todas as conexões dos dispositivos no kit chassi, basta carregar o seguinte código:
#include <Servo.h> // Ativa a biblioteca Servo Motor #include <NewPing.h> // Biblioteca do Sensor Ultrassônico // Pinagem do L298N #define enA 4 // ENA #define MotorDireitoAvante 3 // IN1 #define MotorDireitoAtras 2 // IN2 #define enB 8 // ENB #define MotorEsquerdoAvante 7 // IN3 #define MotorEsquerdoAtras 6 // IN4 // Pinagem do senssor ultrassônico #define trig_pin A0 // Trig no pino analógico A0 #define echo_pin A1 // Echo no pino analógico A1 #define dist_maxima 300 boolean Adiante = false; int dist; NewPing sonar(trig_pin, echo_pin, dist_maxima); // Inicializa o NewPing Servo servo_motor; // Define servo_motor void setup() { Serial.begin(9600); pinMode(MotorDireitoAvante, OUTPUT); // IN1 pinMode(MotorDireitoAtras, OUTPUT); // IN2 pinMode(MotorEsquerdoAvante, OUTPUT); // IN3 pinMode(MotorEsquerdoAtras, OUTPUT); // IN4 servo_motor.attach(12); // servo motor setado no pino 12 servo_motor.write(115); // Ângulo inicial calibrado para frente (ângulo 0° relativo ao carro) delay(2000); dist = LerPing(); delay(100); dist = LerPing(); delay(100); dist = LerPing(); delay(100); dist = LerPing(); delay(100); } void loop() { int dist_Direita = 0; int dist_Esquerda = 0; int dist_Adiante = 0; if (dist <= 50) { Parar(); delay(500); MoverAtras(); delay(500); Parar(); dist_Direita = VarrerDireita(); delay(100); dist_Esquerda = VarrerEsquerda(); delay(100); dist_Direita = VarrerDireita(); delay(100); dist_Esquerda = VarrerEsquerda(); delay(100); if (dist_Direita >= dist_Esquerda) { VirarDireita(); delay(400); Parar(); delay(500); dist = LerPing(); } else { VirarEsquerda(); delay(400); Parar(); delay(500); dist = LerPing(); } } else { delay(100); MoverAdiante(); } dist = LerPing(); } int VarrerDireita() { servo_motor.write(50); int dist = LerPing(); delay(500); dist = LerPing(); servo_motor.write(115); return dist; } int VarrerEsquerda() { servo_motor.write(180); int dist = LerPing(); delay(500); dist = LerPing(); servo_motor.write(115); return dist; } int LerPing() { int dist_cm = sonar.ping_cm(); Serial.println(dist_cm); return dist_cm; } void Parar() { digitalWrite(MotorDireitoAvante, LOW); // IN1 digitalWrite(MotorDireitoAtras, LOW); // IN2 digitalWrite(MotorEsquerdoAvante, LOW); // IN3 digitalWrite(MotorDireitoAtras, LOW); // IN4 analogWrite(enA, 0); analogWrite(enB, 0); } void MoverAdiante() { if (!Adiante) { Adiante = true; digitalWrite(MotorDireitoAvante, HIGH); // IN1 digitalWrite(MotorDireitoAtras, LOW); // IN2 digitalWrite(MotorEsquerdoAvante, HIGH); // IN3 digitalWrite(MotorEsquerdoAtras, LOW); // IN4 analogWrite(enA, 100); // Valor de 0 a 255 analogWrite(enB, 100); } } void MoverAtras() { Adiante = false; digitalWrite(MotorDireitoAtras, HIGH); // IN2 digitalWrite(MotorEsquerdoAtras, HIGH); // IN4 digitalWrite(MotorDireitoAvante, LOW); // IN1 digitalWrite(MotorEsquerdoAvante, LOW); // IN3 analogWrite(enA, 80); analogWrite(enB, 80); } void VirarDireita() { digitalWrite(MotorDireitoAtras, HIGH); digitalWrite(MotorEsquerdoAvante, HIGH); digitalWrite(MotorDireitoAvante, LOW); digitalWrite(MotorEsquerdoAtras, LOW); analogWrite(enA, 80); analogWrite(enB, 80); } void VirarEsquerda() { digitalWrite(MotorDireitoAvante, HIGH); digitalWrite(MotorEsquerdoAtras, HIGH); digitalWrite(MotorDireitoAtras, LOW); digitalWrite(MotorEsquerdoAvante, LOW); analogWrite(enA, 80); analogWrite(enB, 80); }
Então, feito isso, basta agora ligar e observar o comportamento do carro robô.
Quando o carro robô se aproxima do obstáculo, ele para imediatamente. Então, move-se um pouco para trás, faz a leitura por duas vezes para cada lado, faz o giro para onde a distância é maior e aí então continua a mover-se.