KIKIBOT Robo Car ESP32 Project

 How To Make "KikiBot" Robot Car

Commands:-

forward
backward
left
right
smile
cry

ESP32 Code:-

#include <BluetoothSerial.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

BluetoothSerial SerialBT;

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// Motor Pins
#define IN1 27
#define IN2 26
#define IN3 25
#define IN4 33

// Ultrasonic
#define trigPin 5
#define echoPin 18

// Mic
#define micPin 34

String command;

// ---------- MOTOR FUNCTIONS ----------
void forward() {
  digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);
  digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW);
}
void backward() {
  digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH);
  digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH);
}
void left() {
  digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH);
  digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW);
}
void right() {
  digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);
  digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH);
}
void stopCar() {
  digitalWrite(IN1,LOW); digitalWrite(IN2,LOW);
  digitalWrite(IN3,LOW); digitalWrite(IN4,LOW);
}

// ---------- EMOTIONS ----------
void smile() {
  display.clearDisplay();
  display.drawCircle(40,30,10,WHITE);
  display.drawCircle(88,30,10,WHITE);
  display.drawCircle(40, 50, 30, WHITE); // full circle
display.fillRect(10, 50, 60, 30, BLACK); // erase upper half

  display.display();
}

void cry() {
  display.clearDisplay();
  display.drawCircle(40,30,10,WHITE);
  display.drawCircle(88,30,10,WHITE);
  display.drawLine(40,40,40,55,WHITE);
  display.drawLine(88,40,88,55,WHITE);
  display.display();
}

void blink() {
  display.clearDisplay();
  display.drawLine(30,30,50,30,WHITE);
  display.drawLine(80,30,100,30,WHITE);
  display.display();
}

// ---------- OBSTACLE ----------
long getDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  return pulseIn(echoPin, HIGH)/58;
}

// ---------- SETUP ----------
void setup() {
  Serial.begin(115200);
  SerialBT.begin("KikiBot");

  pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT);

  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.display();
}

// ---------- LOOP ----------
void loop() {

  // Voice / App Command
  if (SerialBT.available()) {
    command = SerialBT.readString();
    command.toLowerCase();

    if (command.indexOf("forward")!=-1) forward();
    else if (command.indexOf("backward")!=-1) backward();
    else if (command.indexOf("left")!=-1) left();
    else if (command.indexOf("right")!=-1) right();
    else if (command.indexOf("smile")!=-1) smile();
    else if (command.indexOf("cry")!=-1) cry();
    else stopCar();
  }

  // Obstacle Avoid
  if (getDistance() < 20) {
    stopCar();
    blink();
  }

  // Mic Reaction
  if (analogRead(micPin) > 2000) {
    blink();
  }
}


Thankyou...

Electronics Material Used :-

ESP32 

L298N Motor Driver 

Oled Display 

Ultrasonic Sensor 

Microphone Module 

4 DC Motors 


Thankyou...

Comments

Popular posts from this blog

Obstacle Avoiding Robot Car Arduino Project

4 Best Science Projects For School Without Using Arduino

SENSOR TUTORIAL

AUTOMATIC TOLL GATE PROJECT

ARDUINO TUTORIAL

Drone Tech | How To Make Mini Drone For Science Exhibition It Can Fly || Remote Control Drone

RAIN ALARM PROJECT

BASIC SERVO MOTOR TEST

SMART IRRIGATION FOR FLYOVER