SUPPLIES AND COMPONENTS
- Arduino UNO
- Breadboard (generic)
- Jumper wires (generic)
- DC motor (generic)
- SparkFun Dual H-Bridge motor drivers L298
- Ultrasonic Sensor – HC-SR04 (Generic)
- Arduino Nano R3
- LED (generic)
- Buzzer
- TTP223B Touch Sensor
TOOLS AND MACHINES REQUIRED
- Soldering iron (generic)
- Hot glue gun (generic)
ONLINE SERVICES AND APPS
Arduino IDE
A PROJECT SUMMARY
Chassis
The Bogie Runt Rover from Servo City served as the basis for the Probability rover’s chassis, and I built it together by following a tutorial. The package does not include any electronics; it only includes a full set of motors and chassis.
Motors
The rover’s wheels are propelled by six DC motors. The wires for each motor pass through a hole in the chassis and emerge at the top of each motor. After that, they join an L298N motor driver. Probability may go at a speed of up to 4 mph with to these strong engines!
Motor Driver
A L298N dual bridge motor driver chip powers each of the six motors. The right and left sides of the chip are linked to each motor wire. The Arduino is wired to the chip’s 5V and GND pins to supply power. Then the GND and 5V connect to their respective voltages. The ENA, IN1, IN2, IN3, IN4, and ENB pins on the Arduino must be linked to the L298N motor driving chip in order for all of the motors to function. The six digital pins of the Arduino are then linked using these cables.
long-range ultrasonic sensor
The device that detects items in front of it and steers clear of them is called the HC-SR04 or (Ultra long distance sensor). It functions by producing a high-pitched sound using the echo pin and picking it up with the trig pin. After cutting a paperclip in half, I burned a small hole in the ABS plastic using it to place the sensor. I attached the sensor after first wrapping paperclips around its tiny screw holes. The GND pin is connected to the arduino’s GND, while the VCC pin is connected to the 5V pin. The Trig and Echo pins are then connected to one of the Arduino’s digital pins.When writing the code, be sure to mention the pins you’re utilising for the Trig and Echo pins.
Servo
Probability has a servo that is designed to spin its head so that it may use an ultra-long distance sensor. The black or brown wire is connected to the Arduino’s GND pin, while the red wire is connected to the 5v pin. Any digital I/O pin is connected to the opposite wire. Do not insert paper clips into the chassis if you intend to utilise the servo. Read the part that describes the ultra-long distance sensor if you still don’t understand. Always ensure to enter the correct digital pin you used when entering the code for it.
Buzzer
In order to create noise, the buzzer is set to Probability. Don’t turn on the buzzer if you don’t want your rover to make any noise. One side of the buzzer’s top has a plus sign. Its connecting cable, which may be attached to any Arduino digital pin, is located beneath. The other wire is connected to the Arduino’s GND pin. Do not forget to state the digital pin you are using. You must create a piece of code that specifies the tone in order for it to play sound. You may find the tone code you need in the Probability soft 1.9.
SCHEMATICS
CODE
// connect motor controller pins to Arduino digital pins
// motor one
int enA = 10;
int in1 = 9;
int in2 = 8;
// motor two
int enB = 5;
int in3 = 7;
int in4 = 6;
#include <Servo.h>
#define TRIG_PIN 13
#define ECHO_PIN 12
#define MAX_DISTANCE 200
#define ctsPin 11
Servo servo;
// defines pins numbers
const int trigPin = 13;
const int echoPin = 12;
// defines variables
long duration;
int distance;
void setup() {
pinMode(2, OUTPUT);
analogWrite(enA, 90);
analogWrite(enB, 90);
// set all the motor control pins to outputs
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(1200);
}
void loop() {
int ctsValue = digitalRead(ctsPin);
if(ctsValue==HIGH) {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(800);
//forward
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(800);
digitalWrite(in1, HIGH);//Turn Back
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(800);
digitalWrite(in1, LOW);//Turn Back
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(800);
tone(2, 250); //A
delay(15);
tone(2, 280); //A
delay(15);
tone(2, 310); //A
delay(15);
tone(2, 340); //A
delay(15);
tone(2, 380); //A
delay(15);
tone(2, 420); //A
delay(15);
tone(2, 460); //A
delay(15);
tone(2, 500); //A
delay(75);
tone(2, 420); //A
delay(100);
tone(2, 380); //A
delay(90);
tone(2, 340); //A
delay(80);
tone(2, 300); //A
delay(70);
tone(2, 260); //A
delay(60);
tone(2, 240); //A
delay(60);
tone(2, 220); //A
delay(60);
tone(2, 180, 100); //A
}
while(ctsValue==LOW) {
//forward
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(8);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
if (distance < 27.5){
digitalWrite(in1, LOW);//Motor off for 2 sec
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(800);
tone(2, 250); //A
delay(15);
tone(2, 280); //A
delay(15);
tone(2, 310); //A
delay(15);
tone(2, 340); //A
delay(15);
tone(2, 380); //A
delay(15);
tone(2, 420); //A
delay(15);
tone(2, 460); //A
delay(15);
tone(2, 500); //A
delay(75);
tone(2, 420); //A
delay(100);
tone(2, 380); //A
delay(90);
tone(2, 340); //A
delay(80);
tone(2, 300); //A
delay(70);
tone(2, 260); //A
delay(60);
tone(2, 240); //A
delay(60);
tone(2, 220); //A
delay(60);
tone(2, 180, 100); //A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(400);
digitalWrite(in1, HIGH);//Turn Back
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(800);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
while(distance < 60){
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
}
if(ctsValue==HIGH) {
//forward
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
}
}
}
Busy person will never get sad, Sad person will never get busy
KP
“Behaviour > Character, Attitude > Gratitude, curiosity > fidelity” – KP
It’s better to invest in long-term business than having short-term profit
KP
Helping Hands.