Project tutorial
Rover for Cave Exploration

Rover for Cave Exploration © GPL3+

The purpose of our creation is to detect whether a cave is safe to enter without human intervention.

  • 4,026 views
  • 3 comments
  • 26 respects

Components and supplies

Necessary tools and machines

09507 01
Soldering iron (generic)
Hy gluegun
Hot glue gun (generic)

Apps and online services

About this project

PURPOSE

The purpose of our creation is to detect whether a cave is safe to enter without human intervention in a completely automated, cheap, easy to use and potable way. Nowadays, people use handheld sensors which can put their lives at risk. This machine has the potential to act as a 'library of sensors on wheels'.

MERITS

  • It lets cave explorers know when methane pumping is required.
  • It lets us know when miners must wear oxygen mask.
  • It has a relative compact size, is very easy to use.
  • It doesn’t require any fossil fuels and thus is eco friendly
  • It doesn’t need any controller other than an android phone.
  • It reduces the dependency of cave explorers on precious human resource.
  • It lets cave explorers know when methane pumping is required.

LIST OF MATERIALS

  • Arduino UNO R3 ( Microprocessor )
  • Mini Bread Board ( Circuit )
  • Li - ION Battery ( Power supply 3.7V )
  • 4WD Chassis ( Structure )
  • MQ5 ( LPG, Natural gas, Methane )
  • MQ135 ( Smoke, Dust, Alcohol )
  • DHT22 ( Temperature and Humidity )
  • HC-SR04 (Proximity )
  • HC-05 ( Bluetooth Module )
  • Jumper Wires (Connection )
  • L298N (Dual H-bridge/Motor Driver)

DIAGRAM

PROCEDURE

  • First assemble or make a chassis of the object you are building.
  • Then glue all electronic items on the chassis.
  • Then wire all the electronics using the software representation with a breadboard
  • Then hook your configuration to the power supply through the motor driver.

Code

Coding for arduino C/C++
its the code to be uploaded to the Arduino.
#include <dht.h>
#define dataPin 8 // Defines pin number to which the sensor is connected
char bt;
int trig_pin = 12;
int echo_pin = 9;
int airquality = A3 ;
dht DHT; // Creats a DHT object
long echotime; //in micro seconds
float distance; //in cm
unsigned long interval=2000;     // the time we need to wait
unsigned long previousMillis=0;  // millis() returns an unsigned long.

void setup() {
  Serial.begin (9600);
  pinMode(2,OUTPUT);   //left motors forward
  pinMode(3,OUTPUT);   //left motors reverse
  pinMode(4,OUTPUT);   //right motors forward
  pinMode(7,OUTPUT);   //right motors reverse
  pinMode(trig_pin, OUTPUT); 
  pinMode(echo_pin, INPUT);
  digitalWrite(trig_pin, LOW); //Start with trigger LOW
}

void loop() {
  if(Serial.available()){
  bt = Serial.read();
  Serial.println(bt);
}

if(bt == 'F'){            //move forward(all motors rotate in forward direction)
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);
  digitalWrite(7,LOW);
}
 
else if(bt == 'B'){      //move reverse (all motors rotate in reverse direction)
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(7,HIGH);
}
 
else if(bt == 'L'){      //turn right (left side motors rotate in forward direction, right side motors rotate in reverse direction)
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);
  digitalWrite(7,LOW);
}
 
else if(bt == 'R'){      //turn left (right side motors rotate in forward direction, left side motors rotate in reverse direction)
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(7,HIGH);
}
 
else if(bt == 'S'){      //STOP (all motors stop)
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(7,LOW);
}

unsigned long currentMillis = millis(); // grab current time
 
 // check if "interval" time has passed (2000 milliseconds)
 if ((unsigned long)(currentMillis - previousMillis) >= interval) {
 
  //trigger a pulse-echo measurement
  digitalWrite(trig_pin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig_pin, LOW);

  //get the result
  echotime= pulseIn(echo_pin, HIGH);
  distance= (0.0001*((float)echotime*340.0)/2.0);
  
  //send over Bluetooth 
  Serial.print("|");
  Serial.print(distance);

  int readData = DHT.read22(dataPin); // Reads the data from the sensor
  float t = DHT.temperature; // Gets the values of the temperature
  float h = DHT.humidity; // Gets the values of the humidity
  
  // Printing the results on the serial monitor
  Serial.print("|");
  Serial.print(t);
  Serial.print("|");
  Serial.print(h);

  //Read Analog pin 5 for sensor MQ 135 data
  int sensorValueMQ135 = analogRead(A3);

  //send over Bluetooth
  Serial.print("|");
  Serial.print(sensorValueMQ135);

  //Get MQ 5 sensor data
  float sensor_volt;
  float sensorValueMQ5;
  sensorValueMQ5 = analogRead(A4);
  
  
  //send over Bluetooth
  Serial.print("|");
  Serial.print(sensorValueMQ5);
  
  previousMillis = millis();
  }


}

Schematics

Diagram
Diagram for wiring and connections.
Image001 d4eawdrlb5

Comments

Author

Default
ACool
  • 1 project
  • 5 followers

Additional contributors

  • Financial support by Rockwood High School

Published on

March 7, 2019

Members who respect this project

Img 20171007 123025 6dw9zbnu0qDefaultDefaultProfilepicTsdarthurDefaultProfilepicDefault

and 18 others

See similar projects
you might like

Similar projects you might like

Probability | Autonomous Rover

Project in progress by UniverseRobotics

  • 14,289 views
  • 19 comments
  • 70 respects

'Roger Bot' the Pet Rover

Project showcase by hannu_hell

  • 2,718 views
  • 0 comments
  • 14 respects

Use the Force... Or your Brainwaves?

Project tutorial by Tamas Imets

  • 34,651 views
  • 19 comments
  • 116 respects

Beautifully Finished Humidity and Temperature Sensor

Project tutorial by Wicked Makers

  • 19,939 views
  • 22 comments
  • 145 respects

TIA Weak Artificial Intelligence IoT Assistant

Project tutorial by Adam Milton-Barker

  • 4,406 views
  • 0 comments
  • 23 respects

M1 Rover

Project tutorial by AhmedAzouz

  • 13,085 views
  • 21 comments
  • 58 respects
Add projectSign up / Login