- Komponenter som krävs:
- GPS-modul och dess funktion:
- GSM-modul:
- Accelerometer:
- Kretsförklaring:
- Arbetsförklaring:
- Programmeringsförklaring:
I våra tidigare självstudier har vi lärt oss hur man gränssnitt GPS-modul med dator, hur man bygger en Arduino GPS-klocka och hur man spårar fordon med GSM och GPS. Här i det här projektet ska vi bygga ett Arduino-baserat fordonsolyckesystem med GPS, GSM och accelerometer. Accelerometer detekterar den plötsliga förändringen i fordonets axlar och GSM-modulen skickar ett varningsmeddelande på din mobiltelefon med platsen för olyckan. Platsen för olyckan skickas i form av en Google Map-länk, härledd från latitud och longitud från GPS-modulen. Meddelandet innehåller också fordonets hastighet i knop. Se demo-videoni slutet. Detta fordonsolycksvarningsprojekt kan också användas som ett spårningssystem och mycket mer, genom att bara göra några ändringar i hårdvara och programvara.
Komponenter som krävs:
- Arduino Uno
- GSM-modul (SIM900A)
- GPS-modul (SIM28ML)
- Accelerometer (ADXL335)
- 16x2 LCD
- Strömförsörjning
- Anslutande ledningar
- 10 K-POT
- Brödbräda eller kretskort
- Strömförsörjning 12v 1amp
Innan vi går in i Project kommer vi att diskutera om GPS, GSM och Accelerometer.
GPS-modul och dess funktion:
GPS står för Global Positioning System och används för att upptäcka latitud och longitud för vilken plats som helst på jorden, med exakt UTC-tid (Universal Time Coordinated). GPS-modulen används för att spåra olycksplatsen i vårt projekt. Enheten tar emot koordinaterna från satelliten för varje sekund, med tid och datum. Vi har tidigare extraherat $ GPGGA- sträng i Vehicle Tracking System för att hitta koordinaterna för latitud och longitud.
GPS-modulen skickar data relaterade till spårningsposition i realtid och skickar så många data i NMEA-format (se skärmdumpen nedan). NMEA-formatet består av flera meningar, där vi bara behöver en mening. Denna mening börjar från $ GPGGA och innehåller koordinater, tid och annan användbar information. Denna GPGGA hänvisas till fixeringsdata för globalt positioneringssystem. Lär dig mer om NMEA-meningar och läs GPS-data här.
Vi kan extrahera koordinat från $ GPGGA-sträng genom att räkna komma i strängen. Antag att du hittar $ GPGGA-sträng och lagrar den i en matris, då kan Latitude hittas efter två komma och longitud kan hittas efter fyra komma. Nu kan denna latitud och longitud placeras i andra matriser.
Nedan är $ GPGGA- strängen, tillsammans med dess beskrivning:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0,9,510.4, M, 43,9, M,, * 47 $ GPGGA, HHMMSS.SSS, latitud, N, longitud, E, FQ, NOS, HDP, altitude, M, height, M,, checksum data
Identifierare |
Beskrivning |
$ GPGGA |
Data för fixering av globalt positioneringssystem |
HHMMSS.SSS |
Tid i timme minut sekunder och millisekunder format. |
Latitud |
Latitud (Koordinat) |
N |
Riktning N = Nord, S = Syd |
Longitud |
Longitud (koordinat) |
E |
Riktning E = öst, W = väst |
FQ |
Fixa kvalitetsdata |
NOS |
Antal satelliter som används |
HDP |
Horisontell utspädning av precision |
Höjd över havet |
Höjd (meter över havet) |
M |
Meter |
Höjd |
Höjd |
Kontrollsumma |
Data för kontrollsumman |
GSM-modul:
SIM900 är en komplett fyrbands GSM / GPRS-modul som lätt kan inbäddas av kund eller hobbyist. SIM900 GSM-modul har ett branschstandardgränssnitt. SIM900 levererar GSM / GPRS 850/900/1800 / 1900MHz prestanda för röst, SMS, data med låg strömförbrukning. Den är lätt tillgänglig på marknaden.
- SIM900 designad med enchip-processor som integrerar AMR926EJ-S-kärnan
- Fyrbands GSM / GPRS-modul i liten storlek.
- GPRS aktiverat
AT Command:
AT betyder OBS! Detta kommando används för att styra GSM-modulen. Det finns några kommandon för samtal och meddelanden som vi har använt i många av våra tidigare GSM-projekt med Arduino. För att testa GSM-modulen använde vi AT-kommandot. Efter att ha fått AT Command GSM-modul, svara med OK. Det betyder att GSM-modulen fungerar bra. Nedan följer några AT-kommandon som vi använde här i det här projektet:
ATE0 För eko av AT + CNMI = 2,2,0,0,0
(För att lära dig mer om GSM-modul, se våra olika GSM-projekt med olika mikrokontroller här)
Accelerometer:
Stift Beskrivning av accelerometer:
- Vcc 5 volt matning ska anslutas vid denna stift.
- X-OUT Denna stift ger en analog utgång i x-riktning
- Y-UT Denna stift ger en analog utgång i y-riktning
- Z-OUT Denna stift ger en analog utgång i z-riktning
- GND Ground
- ST Denna stift används för att ställa in sensorns känslighet
Kontrollera också våra andra projekt med hjälp av Accelerometer: Ping Pong Game med Arduino och Accelerometer Based Hand Gesture Controlled Robot.
Kretsförklaring:
Kretsanslutningar för detta fordonsprojekt för olycksfallssystem är enkla. Här är Tx-stift på GPS-modulen direkt ansluten till det digitala stiftet nummer 10 på Arduino. Genom att använda Software Serial Library här har vi tillåtit seriekommunikation på stift 10 och 11 och gjort dem Rx respektive Tx och lämnat Rx-stiftet på GPS-modulen öppen. Som standard används stift 0 och 1 i Arduino för seriell kommunikation men med hjälp av SoftwareSerial-biblioteket kan vi tillåta seriell kommunikation på andra digitala stift i Arduino. 12-voltsförsörjning används för att driva GPS-modulen.
GSM-modulens Tx- och Rx-stift är direkt anslutna till stift D2 och D3 i Arduino. För GSM-gränssnitt har vi här också använt mjukvaruseriebibliotek. GSM-modulen drivs också av 12v-matning. En valfri LCD- datapinne D4, D5, D6 och D7 är ansluten till stift nummer 6, 7, 8 och 9 i Arduino. Kommandostift RS och EN på LCD är anslutna med stift nummer 4 och 5 på Arduino och RW-stift är direkt ansluten till jord. En potentiometer används också för att ställa in kontrast eller ljusstyrka på LCD-skärmen.
En accelerometer läggs till i detta system för att upptäcka en olycka och dess x-, y- och z-axel ADC-utgångar är direktanslutna till Arduino ADC-stift A1, A2 och A3.
Arbetsförklaring:
I detta projekt används Arduino för att styra hela processen med en GPS-mottagare och GSM-modul. GPS-mottagare används för att upptäcka fordonets koordinater, GSM-modulen används för att skicka ett SMS med koordinaterna och länken till Google Map. Accelerometer nämligen ADXL335 används för att upptäcka olycka eller plötslig förändring i valfri axel. Och en valfri 16x2 LCD-skärm används också för att visa statusmeddelanden eller koordinater. Vi har använt GPS-modul SIM28ML och GSM-modul SIM900A.
När vi är klara med vår hårdvara efter programmering kan vi installera den i vårt fordon och slå på den. Närhelst det inträffar en olycka blir bilen tiltad och accelerometern ändrar axelvärdena. Dessa värden läses av Arduino och kontrollerar om någon förändring sker i någon axel. Om någon förändring inträffar läser Arduino koordinater genom att extrahera $ GPGGA-sträng från GPS-modeldata (GPS-funktion förklaras ovan) och skicka SMS till det fördefinierade numret till polisen eller ambulansen eller familjemedlemmen med platskoordinaterna för olycksplatsen. Meddelandet innehåller också en Google Map-länk till olycksplatsen så att platsen enkelt kan spåras. När vi får meddelandet behöver vi bara klicka på länken så omdirigeras vi till Google-kartan och sedan kan vi se fordonets exakta plats. Fordonshastighet, i knop(1,852 KPH), skickas också i SMS och visas på LCD-panelen. Kontrollera hela demo-videon under projektet.
Här i det här projektet kan vi ställa in Accelerometers känslighet genom att sätta min- och maxvärde i koden.
Här i demo har använt givna värden:
#define minVal -50 #define MaxVal 50
Men för bättre resultat kan du använda 200 istället för 50, eller kan ställa in enligt dina krav.
Programmeringsförklaring:
Komplett program har ges nedan i kodavsnittet; här förklarar vi kortfattat dess olika funktioner.
Först har vi inkluderat alla nödvändiga bibliotek eller rubrikfiler och förklarat olika variabler för beräkningar och lagring av data tillfälligt.
Efter detta har vi skapat en funktion void initModule (String cmd, char * res, int t) för att initiera GSM-modulen och kontrollera dess svar med AT-kommandon.
ogiltigt initModule (String cmd, char * res, int t) {while (1) {Serial.println (cmd); Serial1.println (cmd); fördröjning (100); medan (Serial1.available ()> 0) {if (Serial1.find (res)) {Serial.println (res); fördröjning (t); lämna tillbaka; } annat {Serial.println ("Fel"); }} fördröjning (t); }}
Efter detta, i ogiltig installation () -funktionen, har vi initierat hårdvaru- och programvarukommunikation, LCD, GPS, GSM-modul och accelerometer.
ogiltig installation () {Serial1.begin (9600); Serial.begin (9600); lcd.begin (16,2); lcd.print ("Olycksvarning"); lcd.setCursor (0,1); lcd.print ("System"); fördröjning (2000); lcd.clear ();…………………
Accelerometerkalibreringsprocessen görs också i inställningsslingan . I detta har vi tagit några prover och sedan hittar medelvärdena för x-axeln, y-axeln och z-axeln. Och lagra dem i en variabel. Sedan har vi använt dessa provvärden för att läsa ändringar i accelerometeraxeln när fordonet lutar (olycka).
lcd.print ("Callibrating"); lcd.setCursor (0,1); lcd.print ("Acceleromiter"); för (int i = 0; i
Efter detta, i funktionen tomrumslinga () , har vi läst accelerometeraxelvärden och gjort en beräkning för att extrahera ändringar med hjälp av prover som tas i kalibrering. Nu om några ändringar är mer eller mindre än definierad nivå skickar Arduino ett meddelande till det fördefinierade numret.
void loop () {int value1 = analogRead (x); int värde2 = analogRead (y); int värde3 = analogRead (z); int xValue = xsample-value1; int yValue = ysample-value2; int zValue = zsample-value3; Serial.print ("x ="); Serial.println (xValue); Serial.print ("y ="); Serial.println (yValue); Serial.print ("z ="); Serial.println (zValue);…………………
Här har vi också skapat en annan funktion för olika valpar som void gpsEvent () för att få GPS-koordinater, void coordinate2dec () för att extrahera koordinater från GPS-strängen och konvertera dem till decimalvärden, void show_coordinate () för att visa värden över seriell bildskärm och LCD, och slutligen ogiltigt Skicka () för att skicka varnings-SMS till det fördefinierade numret.
Komplett kod och demo-video ges nedan, du kan kontrollera alla funktioner i koden.