ayanfeoluwaadekanye1
Published © GPL3+

Project Arva (Autonomous Emergency Bot concept)

Project Arva is an autonomous emergency vehicle concept aimed to be used to check places too dangerous for humans to check.

IntermediateShowcase (no instructions)363
Project Arva (Autonomous Emergency Bot concept)

Things used in this project

Hardware components

IR Transceiver (Generic)
×1
Arduino UNO
Arduino UNO
×1

Software apps and online services

MIT App Inventor 2
MIT App Inventor 2

Story

Read more

Schematics

The Circuit

Note i used 3 18650 Li ion batteries NOT 2

The apk

Code

The Code

Arduino
#include <dht.h>

//sensor pins
#define gasSens A4
dht DHT;

#define DHT11_PIN 2

//motor driver pins
#define enA 9
#define enB 10
#define in1 8
#define in2 7
#define in3 6
#define in4 5

//infared pins
#define lftIr 12
#define ctrIr 4
#define rghIr 3

#define buzzer 13

int dist=1000;
int lastVal=0;
int degVal;
int leftDist;
int rightDist;
int gasVal;
int buzzerTrig=0;
unsigned long curTime;
String msg="";
int spd=150;
bool swtch=0;

void setup() {
  // put your setup code here, to run once:
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  
  pinMode(lftIr,INPUT);
  pinMode(ctrIr,INPUT);
  pinMode(rghIr,INPUT);

  pinMode(buzzer, OUTPUT);
  
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);

  curTime=millis();

  Serial.begin(38400);
}

void loop() {
 if(millis()-curTime>=10000){
    int chk = DHT.read11(DHT11_PIN);
    gasVal=analogRead(gasSens);
    Serial.print(DHT.temperature);
    Serial.print(" C");
    Serial.print("|");
    Serial.print(DHT.humidity);
    Serial.print("%");
    Serial.print("|");
    Serial.print(gasVal);
    Serial.print("|");
    if(gasVal>500){Serial.println("Dangerous gas levels");buzzerTrig=1;}
    else{Serial.println("normal");buzzerTrig=0;}
    curTime=millis();
  }
 if(Serial.available()){
   msg=Serial.readString();
   }
  if (msg=="start"){
    swtch=1;
  }
  else if(msg=="stop"){
    swtch=0;
  }
  else if (msg=="left"){
    stopAll();
    analogWrite(enA, spd);
    analogWrite(enB, spd);
    leftMov();
    delay(500);
    stopAll();
  }
  else if (msg=="right"){
    stopAll();
    analogWrite(enA, spd);
    analogWrite(enB, spd);
    rightMov();
    delay(500);
    stopAll();
  }
  else if(msg=="back"){
    stopAll();
    analogWrite(enA, spd);
    analogWrite(enB, spd);
    backMov();
    delay(500);
    stopAll();
  }
  else if(msg=="foward"){
    stopAll();
    analogWrite(enA, spd);
    analogWrite(enB, spd);
    fowardMov();
    delay(500);
    stopAll();
  }
  else if(msg!=""){
    spd=msg.toInt();
  }
  if(swtch==1){
    moveBot(spd);
  }
  else{
    stopAll();
    }
  msg="";
  
}

void moveBot(int mSpeed){
  analogWrite(enA, mSpeed);
  analogWrite(enB, mSpeed);
  int leftIr=digitalRead(lftIr);
  int centerIr=digitalRead(ctrIr);
  int rightIr=digitalRead(rghIr);
  

   if (leftIr==LOW && rightIr==HIGH){
        stopAll();
        while(leftIr==LOW){
          rightMov();
          leftIr=digitalRead(lftIr);
        }
        stopAll();
       }
       else if (leftIr==HIGH && rightIr==LOW){
        stopAll();
          while(rightIr==LOW){
            leftMov();
            rightIr=digitalRead(rghIr);
          }
        stopAll(); 
      }
      else if (leftIr==LOW && centerIr==LOW && rightIr==LOW){
          stopAll();
              while(leftIr==LOW || centerIr==LOW || rightIr==LOW){
                backMov();
                leftIr=digitalRead(lftIr);
                centerIr=digitalRead(ctrIr);
                rightIr=digitalRead(rghIr);
                }
                stopAll();
          }
          
      else if (leftIr==HIGH && centerIr==LOW && rightIr==HIGH){
          stopAll();
          while(centerIr==LOW){
            backMov();
            centerIr=digitalRead(ctrIr);
          }
          stopAll();
          delay(10);
          leftMov();
          delay(500);
          stopAll();
        }
      else{
        fowardMov();
      }
  }
void fowardMov(){
  digitalWrite(in2,HIGH);
  digitalWrite(in4,HIGH);
  digitalWrite(in1, LOW);
  digitalWrite(in3, LOW);
}

void backMov(){
  digitalWrite(in1,HIGH);
  digitalWrite(in3,HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in4, LOW);
}

void rightMov(){
  digitalWrite(in1, HIGH);
  digitalWrite(in4, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
}

void leftMov(){
  digitalWrite(in2, HIGH);
  digitalWrite(in3, HIGH);
  digitalWrite(in1, LOW);
  digitalWrite(in4, LOW);
}

void stopAll(){
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void buzzerCall(){
    tone(buzzer, 5000);
    delay(500);
    noTone(buzzer);
    tone(buzzer, 1000);
    delay(500);
    noTone(buzzer);
 }

Credits

ayanfeoluwaadekanye1
0 projects • 8 followers
Contact

Comments

Please log in or sign up to comment.