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.
Components and supplies
1
IR Transceiver (Generic)
1
Arduino UNO
Apps and platforms
1
MIT App Inventor 2
Project description
Code
The Code
arduino
1#include <dht.h> 2 3//sensor pins 4#define gasSens A4 5dht DHT; 6 7#define DHT11_PIN 2 8 9//motor driver pins 10#define enA 9 11#define enB 10 12#define in1 8 13#define in2 7 14#define in3 6 15#define in4 5 16 17//infared pins 18#define lftIr 12 19#define ctrIr 4 20#define rghIr 3 21 22#define buzzer 13 23 24int dist=1000; 25int lastVal=0; 26int degVal; 27int leftDist; 28int rightDist; 29int gasVal; 30int buzzerTrig=0; 31unsigned long curTime; 32String msg=""; 33int spd=150; 34bool swtch=0; 35 36void setup() { 37 // put your setup code here, to run once: 38 pinMode(enA, OUTPUT); 39 pinMode(enB, OUTPUT); 40 pinMode(in1, OUTPUT); 41 pinMode(in2, OUTPUT); 42 pinMode(in3, OUTPUT); 43 pinMode(in4, OUTPUT); 44 45 pinMode(lftIr,INPUT); 46 pinMode(ctrIr,INPUT); 47 pinMode(rghIr,INPUT); 48 49 pinMode(buzzer, OUTPUT); 50 51 digitalWrite(in1, LOW); 52 digitalWrite(in2, LOW); 53 digitalWrite(in3, LOW); 54 digitalWrite(in4, LOW); 55 56 curTime=millis(); 57 58 Serial.begin(38400); 59} 60 61void loop() { 62 if(millis()-curTime>=10000){ 63 int chk = DHT.read11(DHT11_PIN); 64 gasVal=analogRead(gasSens); 65 Serial.print(DHT.temperature); 66 Serial.print(" C"); 67 Serial.print("|"); 68 Serial.print(DHT.humidity); 69 Serial.print("%"); 70 Serial.print("|"); 71 Serial.print(gasVal); 72 Serial.print("|"); 73 if(gasVal>500){Serial.println("Dangerous gas levels");buzzerTrig=1;} 74 else{Serial.println("normal");buzzerTrig=0;} 75 curTime=millis(); 76 } 77 if(Serial.available()){ 78 msg=Serial.readString(); 79 } 80 if (msg=="start"){ 81 swtch=1; 82 } 83 else if(msg=="stop"){ 84 swtch=0; 85 } 86 else if (msg=="left"){ 87 stopAll(); 88 analogWrite(enA, spd); 89 analogWrite(enB, spd); 90 leftMov(); 91 delay(500); 92 stopAll(); 93 } 94 else if (msg=="right"){ 95 stopAll(); 96 analogWrite(enA, spd); 97 analogWrite(enB, spd); 98 rightMov(); 99 delay(500); 100 stopAll(); 101 } 102 else if(msg=="back"){ 103 stopAll(); 104 analogWrite(enA, spd); 105 analogWrite(enB, spd); 106 backMov(); 107 delay(500); 108 stopAll(); 109 } 110 else if(msg=="foward"){ 111 stopAll(); 112 analogWrite(enA, spd); 113 analogWrite(enB, spd); 114 fowardMov(); 115 delay(500); 116 stopAll(); 117 } 118 else if(msg!=""){ 119 spd=msg.toInt(); 120 } 121 if(swtch==1){ 122 moveBot(spd); 123 } 124 else{ 125 stopAll(); 126 } 127 msg=""; 128 129} 130 131void moveBot(int mSpeed){ 132 analogWrite(enA, mSpeed); 133 analogWrite(enB, mSpeed); 134 int leftIr=digitalRead(lftIr); 135 int centerIr=digitalRead(ctrIr); 136 int rightIr=digitalRead(rghIr); 137 138 139 if (leftIr==LOW && rightIr==HIGH){ 140 stopAll(); 141 while(leftIr==LOW){ 142 rightMov(); 143 leftIr=digitalRead(lftIr); 144 } 145 stopAll(); 146 } 147 else if (leftIr==HIGH && rightIr==LOW){ 148 stopAll(); 149 while(rightIr==LOW){ 150 leftMov(); 151 rightIr=digitalRead(rghIr); 152 } 153 stopAll(); 154 } 155 else if (leftIr==LOW && centerIr==LOW && rightIr==LOW){ 156 stopAll(); 157 while(leftIr==LOW || centerIr==LOW || rightIr==LOW){ 158 backMov(); 159 leftIr=digitalRead(lftIr); 160 centerIr=digitalRead(ctrIr); 161 rightIr=digitalRead(rghIr); 162 } 163 stopAll(); 164 } 165 166 else if (leftIr==HIGH && centerIr==LOW && rightIr==HIGH){ 167 stopAll(); 168 while(centerIr==LOW){ 169 backMov(); 170 centerIr=digitalRead(ctrIr); 171 } 172 stopAll(); 173 delay(10); 174 leftMov(); 175 delay(500); 176 stopAll(); 177 } 178 else{ 179 fowardMov(); 180 } 181 } 182void fowardMov(){ 183 digitalWrite(in2,HIGH); 184 digitalWrite(in4,HIGH); 185 digitalWrite(in1, LOW); 186 digitalWrite(in3, LOW); 187} 188 189void backMov(){ 190 digitalWrite(in1,HIGH); 191 digitalWrite(in3,HIGH); 192 digitalWrite(in2, LOW); 193 digitalWrite(in4, LOW); 194} 195 196void rightMov(){ 197 digitalWrite(in1, HIGH); 198 digitalWrite(in4, HIGH); 199 digitalWrite(in2, LOW); 200 digitalWrite(in3, LOW); 201} 202 203void leftMov(){ 204 digitalWrite(in2, HIGH); 205 digitalWrite(in3, HIGH); 206 digitalWrite(in1, LOW); 207 digitalWrite(in4, LOW); 208} 209 210void stopAll(){ 211 digitalWrite(in1, LOW); 212 digitalWrite(in2, LOW); 213 digitalWrite(in3, LOW); 214 digitalWrite(in4, LOW); 215} 216 217void buzzerCall(){ 218 tone(buzzer, 5000); 219 delay(500); 220 noTone(buzzer); 221 tone(buzzer, 1000); 222 delay(500); 223 noTone(buzzer); 224 }
The Code
arduino
1#include <dht.h> 2 3//sensor pins 4#define gasSens A4 5dht DHT; 6 7#define 8 DHT11_PIN 2 9 10//motor driver pins 11#define enA 9 12#define enB 10 13#define 14 in1 8 15#define in2 7 16#define in3 6 17#define in4 5 18 19//infared pins 20#define 21 lftIr 12 22#define ctrIr 4 23#define rghIr 3 24 25#define buzzer 13 26 27int 28 dist=1000; 29int lastVal=0; 30int degVal; 31int leftDist; 32int rightDist; 33int 34 gasVal; 35int buzzerTrig=0; 36unsigned long curTime; 37String msg=""; 38int 39 spd=150; 40bool swtch=0; 41 42void setup() { 43 // put your setup code here, 44 to run once: 45 pinMode(enA, OUTPUT); 46 pinMode(enB, OUTPUT); 47 pinMode(in1, 48 OUTPUT); 49 pinMode(in2, OUTPUT); 50 pinMode(in3, OUTPUT); 51 pinMode(in4, 52 OUTPUT); 53 54 pinMode(lftIr,INPUT); 55 pinMode(ctrIr,INPUT); 56 pinMode(rghIr,INPUT); 57 58 59 pinMode(buzzer, OUTPUT); 60 61 digitalWrite(in1, LOW); 62 digitalWrite(in2, 63 LOW); 64 digitalWrite(in3, LOW); 65 digitalWrite(in4, LOW); 66 67 curTime=millis(); 68 69 70 Serial.begin(38400); 71} 72 73void loop() { 74 if(millis()-curTime>=10000){ 75 76 int chk = DHT.read11(DHT11_PIN); 77 gasVal=analogRead(gasSens); 78 Serial.print(DHT.temperature); 79 80 Serial.print(" C"); 81 Serial.print("|"); 82 Serial.print(DHT.humidity); 83 84 Serial.print("%"); 85 Serial.print("|"); 86 Serial.print(gasVal); 87 88 Serial.print("|"); 89 if(gasVal>500){Serial.println("Dangerous gas levels");buzzerTrig=1;} 90 91 else{Serial.println("normal");buzzerTrig=0;} 92 curTime=millis(); 93 94 } 95 if(Serial.available()){ 96 msg=Serial.readString(); 97 } 98 if (msg=="start"){ 99 100 swtch=1; 101 } 102 else if(msg=="stop"){ 103 swtch=0; 104 } 105 else 106 if (msg=="left"){ 107 stopAll(); 108 analogWrite(enA, spd); 109 analogWrite(enB, 110 spd); 111 leftMov(); 112 delay(500); 113 stopAll(); 114 } 115 else if 116 (msg=="right"){ 117 stopAll(); 118 analogWrite(enA, spd); 119 analogWrite(enB, 120 spd); 121 rightMov(); 122 delay(500); 123 stopAll(); 124 } 125 else if(msg=="back"){ 126 127 stopAll(); 128 analogWrite(enA, spd); 129 analogWrite(enB, spd); 130 backMov(); 131 132 delay(500); 133 stopAll(); 134 } 135 else if(msg=="foward"){ 136 stopAll(); 137 138 analogWrite(enA, spd); 139 analogWrite(enB, spd); 140 fowardMov(); 141 142 delay(500); 143 stopAll(); 144 } 145 else if(msg!=""){ 146 spd=msg.toInt(); 147 148 } 149 if(swtch==1){ 150 moveBot(spd); 151 } 152 else{ 153 stopAll(); 154 155 } 156 msg=""; 157 158} 159 160void moveBot(int mSpeed){ 161 analogWrite(enA, 162 mSpeed); 163 analogWrite(enB, mSpeed); 164 int leftIr=digitalRead(lftIr); 165 166 int centerIr=digitalRead(ctrIr); 167 int rightIr=digitalRead(rghIr); 168 169 170 171 if (leftIr==LOW && rightIr==HIGH){ 172 stopAll(); 173 while(leftIr==LOW){ 174 175 rightMov(); 176 leftIr=digitalRead(lftIr); 177 } 178 stopAll(); 179 180 } 181 else if (leftIr==HIGH && rightIr==LOW){ 182 stopAll(); 183 184 while(rightIr==LOW){ 185 leftMov(); 186 rightIr=digitalRead(rghIr); 187 188 } 189 stopAll(); 190 } 191 else if (leftIr==LOW && centerIr==LOW 192 && rightIr==LOW){ 193 stopAll(); 194 while(leftIr==LOW || 195 centerIr==LOW || rightIr==LOW){ 196 backMov(); 197 leftIr=digitalRead(lftIr); 198 199 centerIr=digitalRead(ctrIr); 200 rightIr=digitalRead(rghIr); 201 202 } 203 stopAll(); 204 } 205 206 207 else if (leftIr==HIGH && centerIr==LOW && rightIr==HIGH){ 208 stopAll(); 209 210 while(centerIr==LOW){ 211 backMov(); 212 centerIr=digitalRead(ctrIr); 213 214 } 215 stopAll(); 216 delay(10); 217 leftMov(); 218 219 delay(500); 220 stopAll(); 221 } 222 else{ 223 fowardMov(); 224 225 } 226 } 227void fowardMov(){ 228 digitalWrite(in2,HIGH); 229 digitalWrite(in4,HIGH); 230 231 digitalWrite(in1, LOW); 232 digitalWrite(in3, LOW); 233} 234 235void backMov(){ 236 237 digitalWrite(in1,HIGH); 238 digitalWrite(in3,HIGH); 239 digitalWrite(in2, LOW); 240 241 digitalWrite(in4, LOW); 242} 243 244void rightMov(){ 245 digitalWrite(in1, HIGH); 246 247 digitalWrite(in4, HIGH); 248 digitalWrite(in2, LOW); 249 digitalWrite(in3, LOW); 250} 251 252void 253 leftMov(){ 254 digitalWrite(in2, HIGH); 255 digitalWrite(in3, HIGH); 256 digitalWrite(in1, 257 LOW); 258 digitalWrite(in4, LOW); 259} 260 261void stopAll(){ 262 digitalWrite(in1, 263 LOW); 264 digitalWrite(in2, LOW); 265 digitalWrite(in3, LOW); 266 digitalWrite(in4, 267 LOW); 268} 269 270void buzzerCall(){ 271 tone(buzzer, 5000); 272 delay(500); 273 274 noTone(buzzer); 275 tone(buzzer, 1000); 276 delay(500); 277 noTone(buzzer); 278 279 }
Downloadable files
The Circuit
Note i used 3 18650 Li ion batteries NOT 2
The Circuit

The apk
The apk
The Circuit
Note i used 3 18650 Li ion batteries NOT 2
The Circuit

Comments
Only logged in users can leave comments