Components and supplies
water level indicator
Vibration Sensor, SPST-NC
Arduino UNO
Gboard Pro 800 SIM800 GSM / GPRS Module 3.3v ATmega2560 Mainboard For Arduino Starter
Gravity: Analog LM35 Temperature Sensor For Arduino
Alphanumeric LCD, 16 x 2
Tools and machines
Soldering iron (generic)
PCB, For DMB-4775
Hot glue gun (generic)
Apps and platforms
ThingSpeak API
Project description
Code
Arduino IDE Code
arduino
1#include <SoftwareSerial.h> 2#include <LiquidCrystal.h> 3 4SoftwareSerial; //RX, TX 5LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) 6 7#define lm35 A0 8#define vibra A1 9#define levelsens A2 10 11boolean sendsms1 = false; 12boolean sendsms2 = false; 13boolean sendsms3 = false; 14 15int temp, value; 16int vibrationvalue; 17int levelvalue; 18 19byte degree[8] = { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; 20 21 22 23void setup() 24 25{ 26 Serial.begin(9600); //Initialise serial to communicate with GSM Modem 27 delay(100); 28 pinMode(lm35, INPUT); 29 pinMode(vibra, INPUT); 30 pinMode(levelsens, INPUT); 31 pinMode(8,OUTPUT); 32 lcd.begin(16, 2); 33 digitalWrite(8,LOW); 34 delay(500); 35 Serial.begin(9600); 36 falan(); 37 singlecon(); 38 delay(500); 39 lcd.createChar(1, degree); 40 lcd.setCursor(0, 0); 41 lcd.print("Bridge Health"); 42 lcd.setCursor(0, 1); 43 lcd.print("Monitering"); 44 delay(1000); 45 lcd.clear(); 46 lcd.setCursor(0, 0); 47 lcd.print("B.E PROJECT"); 48 lcd.setCursor(0, 1); 49 lcd.print("By Vaibhav Pawar"); 50 delay(1000); 51 lcd.clear(); 52 delay(1000); 53} 54void loop() 55{ 56 value = analogRead(lm35);//LM35 temperature sensor calibration 57 temp = (value / 3) + 4; 58 vibrationvalue = analogRead(vibra); 59 levelvalue = analogRead(levelsens); 60 delay(500); //Give enough time for GSM to register on Network 61 Serial.print("vibration: "); 62 Serial.print(vibrationvalue, 1); 63 Serial.print(" hz\ 64"); 65 Serial.print("water level: "); 66 Serial.print(levelvalue, 1); 67 Serial.print(" mm\ 68"); 69 Serial.print("temperature value: "); 70 Serial.print(temp, 1); 71 Serial.print(" *C\ 72"); 73 74 delay(500); 75 lcd.clear(); 76 lcd.setCursor(0, 0); 77 lcd.print("temperature"); 78 lcd.setCursor(0, 1); 79 lcd.print(temp); // temperature data on LCD 80 lcd.print(" *C"); 81 delay(1000); 82 lcd.clear(); 83 lcd.setCursor(0, 0); 84 lcd.print(vibrationvalue); 85 lcd.setCursor(0, 1); 86 lcd.print("vibration"); // Vibration data on LCD 87 lcd.write(1); 88 lcd.print(" Hz"); 89 delay(1000); 90 lcd.clear(); 91 lcd.setCursor(0, 0); 92 lcd.print("Level"); 93 lcd.setCursor(0, 1); 94 lcd.print(levelvalue); // Level data on LCD 95 lcd.print(" mm"); 96 delay(1000); 97 lcd.clear(); 98 99 if 100 (temp > 25) 101 { 102 sendsms1 = true; // SMS for temperature high 103 } 104 else 105 { 106 sendsms1 = false; 107 } 108 if (vibrationvalue > 800) 109 { 110 sendsms2 = true; // SMS for vibration high 111 } 112 else 113 { 114 sendsms2 = false; 115 } 116 117 if (levelvalue > 600) 118 { 119 sendsms3 = true; // SMS for Close water level 120 } 121 else 122 { sendsms3 = false; 123 } 124 125 if (sendsms1) 126 { 127 delay(1000); 128 129 Serial.println("AT+CMGF=1"); //To send SMS in Text Mode 130 delay(500); 131 Serial.println("AT+CMGS=\\"+919604724852\\"\ "); //Change to destination phone number 132 delay(500); 133 Serial.print("Very High,"); 134 Serial.print(" Temperature at bridge "); 135 Serial.print(temp); 136 Serial.println(" *C"); 137 Serial.println((char)26); //the stopping character Ctrl+Z 138 lcd.setCursor(0, 0); 139 lcd.print("Very high "); 140 delay(1000); 141 lcd.clear(); 142 lcd.setCursor(0, 0); 143 lcd.print("Temperature"); 144 lcd.setCursor(0, 1); 145 lcd.print(temp); 146 lcd.print(" C"); 147 delay(1000); 148 lcd.clear(); 149 lcd.setCursor(0, 0); 150 lcd.print("Sending SMS"); 151 delay(1000); 152 lcd.clear(); 153 delay(10); 154 } 155 if (sendsms2) 156 { 157 delay(1000); 158 Serial.println("AT+CMGF=1"); 159 delay(500); 160 Serial.println("AT+CMGS=\\"+919604724852\\"\ "); 161 delay(500); 162 Serial.print("high vibration at bridge, "); 163 Serial.print(" vibration "); 164 Serial.print(vibrationvalue); 165 Serial.println(" Hz"); 166 Serial.println((char)26); 167 lcd.setCursor(0, 0); 168 lcd.print("Vibration High "); 169 delay(1000); 170 lcd.clear(); 171 lcd.setCursor(0, 0); 172 lcd.print("vibration"); 173 lcd.setCursor(0, 1); 174 lcd.print(vibrationvalue); 175 lcd.write(1); 176 lcd.print("Hz"); 177 delay(1000); 178 lcd.clear(); 179 lcd.setCursor(0, 0); 180 lcd.print("Sending SMS"); 181 delay(1000); 182 lcd.clear(); 183 delay(10); 184 } 185 186 if (sendsms3) 187 { 188 delay(1000); 189 Serial.println("AT+CMGF=1"); 190 delay(500); 191 Serial.println("AT+CMGS=\\"+919604724852\\"\ "); 192 delay(500); 193 Serial.print("High level,"); 194 Serial.print(" of water,"); 195 Serial.print(levelvalue); 196 Serial.println(" cm"); 197 Serial.println((char)26); 198 lcd.setCursor(0, 0); 199 lcd.print("High level"); 200 delay(1000); 201 lcd.clear(); 202 lcd.setCursor(0, 0); 203 lcd.print("of Water, "); 204 lcd.setCursor(0, 1); 205 lcd.print(levelvalue); 206 lcd.print(" cm"); 207 delay(1000); 208 lcd.clear(); 209 lcd.setCursor(0, 0); 210 lcd.print("Sending SMS"); 211 delay(1000); 212 lcd.clear(); 213 delay(10); 214 } 215 delay(500); 216 217 falan(); 218 singlecon(); 219 220} 221void falan() 222{ 223 Serial.println("Please Wait..."); 224 Serial.println("AT"); 225 delay(1000); 226 227 Serial.println("AT+CPIN?"); 228 delay(1000); 229 230 Serial.println("AT+CREG?"); 231 delay(1000); 232 233 Serial.println("AT+CIPSHUT"); 234 delay(1000); 235 236 Serial.println("AT+CIPSTATUS"); 237 238 delay(1000); 239 240} 241void singlecon() 242{ 243 Serial.println("Sending Data To Cloud..."); 244 Serial.println("AT+CIPMUX=0"); 245 delay(1000); 246 247 Serial.print("AT+CSTT="); 248 Serial.print('"'); 249 Serial.print("internet"); 250 Serial.println('"'); 251 delay(1000); 252 253 Serial.println("AT+CIICR"); 254 delay(1000); 255 256 257 Serial.println("AT+CIFSR"); 258 delay(1000); 259 260 261 Serial.print("AT+CIPSTART="); 262 Serial.print('"'); 263 Serial.print("TCP"); 264 Serial.print('"'); 265 Serial.print(','); 266 Serial.print('"'); 267 Serial.print("api.thingspeak.com"); 268 Serial.print('"'); 269 Serial.print(','); 270 Serial.print("80"); 271 Serial.write(0x0d); 272 Serial.write(0x0a); 273 delay(2000); 274 275 Serial.println("AT+CIPSEND"); 276 delay(1000); 277 278 Serial.print("GET"); 279 Serial.print(' '); 280 //gsm.print("http:"); 281 //gsm.print('/'); 282 //gsm.print('/'); 283 //gsm.print("api.thingspeak.com"); 284 Serial.print('/'); 285 Serial.print("update?api_key="); 286 Serial.print("TW0CD2WM7DXTCBTY");//my API Key 287 Serial.print("&field1="); 288 Serial.print(vibrationvalue); 289 Serial.print("&field2="); 290 Serial.print(levelvalue); 291 Serial.print("&field3="); 292 Serial.print(temp); 293 294 Serial.write(0x0d); 295 Serial.write(0x0a); 296 297 Serial.write(0x1a); // the trick is here to send the request. Its Ctrl+Z to start send process. 298 delay(1000); 299 300 301 302 Serial.println("AT+CIPSHUT"); 303 Serial.println("AT+CIPCLOSE"); 304 Serial.write(0x0d); 305 Serial.write(0x0a); 306 delay(1000); 307 308} 309
Downloadable files
Schematic
Schematic
Schematic
Schematic
Comments
Only logged in users can leave comments
Vaibhavpwr
0 Followers
•0 Projects
Table of contents
Intro
1
0