- Nødvendige komponenter:
- GPS-modul og dens arbeid:
- GSM-modul:
- Akselerometer:
- Kretsforklaring:
- Arbeidsforklaring:
- Programmeringsforklaring:
I våre tidligere veiledninger har vi lært om hvordan du kan grensesnitt GPS-modul med datamaskin, hvordan du bygger en Arduino GPS-klokke og hvordan du kan spore kjøretøy ved hjelp av GSM og GPS. Her i dette prosjektet skal vi bygge et Arduino-basert varslingssystem for kjøretøyulykker ved hjelp av GPS, GSM og akselerometer. Akselerometer oppdager den plutselige endringen i kjøretøyets akser, og GSM-modulen sender varselmeldingen på mobiltelefonen din med ulykkesstedet. Plassering av ulykke sendes i form av Google Map-lenke, avledet fra breddegrad og lengdegrad fra GPS-modulen. Meldingen inneholder også hastigheten på kjøretøyet i knop. Se demonstrasjonsvideoenpå slutten. Dette varselprosjektet for kjøretøyulykker kan også brukes som et sporingssystem og mye mer, bare ved å gjøre noen få endringer i maskinvare og programvare.
Nødvendige komponenter:
- Arduino Uno
- GSM-modul (SIM900A)
- GPS-modul (SIM28ML)
- Akselerometer (ADXL335)
- 16x2 LCD
- Strømforsyning
- Koble ledninger
- 10 K-POT
- Brettbrett eller PCB
- Strømforsyning 12v 1amp
Før vi går inn i Project, vil vi diskutere om GPS, GSM og Accelerometer.
GPS-modul og dens arbeid:
GPS står for Global Positioning System og brukes til å oppdage bredde og lengdegrad på ethvert sted på jorden, med nøyaktig UTC-tid (Universal Time Coordinated). GPS-modul brukes til å spore ulykkesstedet i prosjektet vårt. Denne enheten mottar koordinatene fra satellitten for hvert sekund, med tid og dato. Vi har tidligere hentet $ GPGGA- streng i Vehicle Tracking System for å finne koordinatene for bredde og lengdegrad.
GPS-modulen sender data relatert til sporingsposisjon i sanntid, og den sender så mange data i NMEA-format (se skjermbildet nedenfor). NMEA-format består av flere setninger, der vi bare trenger en setning. Denne setningen starter fra $ GPGGA og inneholder koordinatene, tiden og annen nyttig informasjon. Denne GPGGA henvises til Global Positioning System Fix Data. Lær mer om NMEA setninger og lesing av GPS-data her.
Vi kan trekke ut koordinat fra $ GPGGA-streng ved å telle kommaene i strengen. Anta at du finner $ GPGGA-streng og lagrer den i en matrise, så kan du finne Latitude etter to komma og lengdegrad etter fire komma. Nå kan denne breddegraden og lengdegraden settes i andre matriser.
Nedenfor er $ GPGGA- strengen, sammen med beskrivelsen:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0,9,510.4, M, 43,9, M,, * 47 $ GPGGA, HHMMSS.SSS, breddegrad, N, lengdegrad, E, FQ, NOS, HDP, høyde, M, høyde, M,, sjekksumdata
Identifikator |
Beskrivelse |
$ GPGGA |
Data om globale posisjoneringssystemer |
HHMMSS.SSS |
Tid i time minutt sekunder og millisekunder format. |
Breddegrad |
Breddegrad (Koordinat) |
N |
Retning N = Nord, S = Sør |
Lengdegrad |
Lengdegrad (koordinat) |
E |
Retning E = Øst, W = Vest |
FQ |
Løs kvalitetsdata |
NOS |
Antall satellitter som brukes |
HDP |
Horisontal fortynning av presisjon |
Høyde |
Høyde (meter over havet) |
M |
Måler |
Høyde |
Høyde |
Sjekksum |
Kontrollsumdata |
GSM-modul:
SIM900 er en komplett Quad-band GSM / GPRS-modul som enkelt kan bygges inn av kunde eller hobbyist. SIM900 GSM-modul gir et industristandard grensesnitt. SIM900 leverer GSM / GPRS 850/900/1800 / 1900MHz ytelse for tale, SMS, data med lavt strømforbruk. Den er lett tilgjengelig i markedet.
- SIM900 designet ved bruk av enchipsprosessor som integrerer AMR926EJ-S-kjerne
- Firebånds GSM / GPRS-modul i liten størrelse.
- GPRS aktivert
AT Command:
AT betyr OBS. Denne kommandoen brukes til å kontrollere GSM-modulen. Det er noen kommandoer for å ringe og sende meldinger som vi har brukt i mange av våre tidligere GSM-prosjekter med Arduino. For å teste GSM-modulen brukte vi AT-kommandoen. Etter å ha mottatt AT Command GSM-modul, svar med OK. Det betyr at GSM-modulen fungerer bra. Nedenfor er noen AT-kommandoer vi brukte her i dette prosjektet:
ATE0 For ekko av AT + CNMI = 2,2,0,0,0
(For å lære mer om GSM-modul, sjekk våre forskjellige GSM-prosjekter med forskjellige mikrokontrollere her)
Akselerometer:
Pin Beskrivelse av akselerometer:
- Vcc 5 volt forsyning skal kobles til ved denne stiften.
- X-OUT Denne pinnen gir en analog utgang i x-retning
- Y-UT Denne pinnen gir en analog utgang i y-retning
- Z-OUT Denne pinnen gir en analog utgang i z-retning
- GND Ground
- ST Denne pinnen brukes til å stille følsomheten til sensoren
Sjekk også våre andre prosjekter ved hjelp av Accelerometer: Ping Pong Game ved hjelp av Arduino og Accelerometer Based Hand Gesture Controlled Robot.
Kretsforklaring:
Kretsforbindelser i dette prosjektet for bilvarslingsvarsler er enkle. Her er Tx pin av GPS-modulen direkte koblet til digital pin nummer 10 av Arduino. Ved å bruke Software Serial Library her, har vi tillatt seriell kommunikasjon på pin 10 og 11, og gjort dem til henholdsvis Rx og Tx og lot Rx-pin på GPS-modulen være åpen. Som standard brukes pin 0 og 1 i Arduino til seriell kommunikasjon, men ved å bruke SoftwareSerial-biblioteket kan vi tillate seriell kommunikasjon på andre digitale pinner i Arduino. 12 Volt-forsyning brukes til å drive GPS-modulen.
GSM-modulens Tx- og Rx-pinner er direkte koblet til pinne D2 og D3 på Arduino. For GSM-grensesnitt har vi her også brukt programvareseriebibliotek. GSM-modulen drives også av 12v forsyning. En valgfri LCDs datapinner D4, D5, D6 og D7 er koblet til pin 6, 7, 8 og 9 i Arduino. Kommando pin RS og EN på LCD er koblet til pin nummer 4 og 5 på Arduino og RW pin er direkte koblet til bakken. Et potensiometer brukes også til å stille inn kontrast eller lysstyrke på LCD-skjermen.
Et akselerometer er lagt til i dette systemet for å oppdage en ulykke, og dets x-, y- og z-akse ADC-utgangspinner er direkte koblet til Arduino ADC-pinne A1, A2 og A3.
Arbeidsforklaring:
I dette prosjektet brukes Arduino til å kontrollere hele prosessen med en GPS-mottaker og GSM-modul. GPS-mottaker brukes til å oppdage koordinater til kjøretøyet, GSM-modulen brukes til å sende varsel-SMS med koordinatene og lenken til Google Map. Akselerometer, nemlig ADXL335, brukes til å oppdage ulykker eller plutselig endring i en hvilken som helst akse. Og en valgfri 16x2 LCD brukes også til å vise statusmeldinger eller koordinater. Vi har brukt GPS-modul SIM28ML og GSM-modul SIM900A.
Når vi er klare med maskinvaren vår etter programmering, kan vi installere den i bilen vår og slå den på. Hver gang det er en ulykke, får bilen tilt og akselerometer endrer akseverdiene. Disse verdiene er lest av Arduino og sjekker om det forekommer endringer i en akse. Hvis det skjer noen endring, leser Arduino koordinater ved å trekke ut $ GPGGA-streng fra GPS-moduldata (GPS fungerer forklart ovenfor) og sende SMS til det forhåndsdefinerte nummeret til politiet eller ambulansen eller familiemedlemmet med plasseringskoordinatene til ulykkesstedet. Meldingen inneholder også en Google Map-lenke til ulykkesstedet, slik at plasseringen enkelt kan spores. Når vi mottar meldingen, trenger vi bare å klikke på lenken, så omdirigerer vi til Google-kartet, og så kan vi se den nøyaktige plasseringen av kjøretøyet. Kjøretøyets hastighet, i knop(1,852 KPH), sendes også i SMS og vises på LCD-panelet. Sjekk hele demovideoen under prosjektet.
Her i dette prosjektet kan vi stille følsomheten til akselerometer ved å sette min og maks verdi i koden.
Her i demo har brukt gitte verdier:
#define minVal -50 #define MaxVal 50
Men for bedre resultater kan du bruke 200 i stedet for 50, eller kan angi i henhold til dine krav.
Programmeringsforklaring:
Komplett program er gitt nedenfor i kodeseksjonen; her forklarer vi kort de forskjellige funksjonene.
Først har vi tatt med alle nødvendige biblioteker eller overskriftsfiler og erklært forskjellige variabler for beregninger og lagring av data midlertidig.
Etter dette har vi opprettet en funksjon void initModule (String cmd, char * res, int t) for å initialisere GSM-modulen og kontrollere responsen ved hjelp av AT-kommandoer.
ugyldig initModule (String cmd, char * res, int t) {while (1) {Serial.println (cmd); Serial1.println (cmd); forsinkelse (100); mens (Serial1.available ()> 0) {if (Serial1.find (res)) {Serial.println (res); forsinkelse (t); komme tilbake; } annet {Serial.println ("Feil"); }} forsinkelse (t); }}
Etter dette, i void setup () -funksjonen, har vi initialisert maskinvare- og programvareseriekommunikasjon, LCD, GPS, GSM-modul og akselerometer.
ugyldig oppsett () {Serial1.begin (9600); Serial.begin (9600); lcd.begin (16,2); lcd.print ("Ulykkesvarsel"); lcd.setCursor (0,1); lcd.print ("System"); forsinkelse (2000); lcd.clear ();…………………
Akselerometer kalibreringsprosess er også gjort i oppsettet sløyfe. I dette har vi tatt noen prøver og deretter funnet gjennomsnittsverdiene for x-aksen, y-aksen og z-aksen. Og lagre dem i en variabel. Så har vi brukt disse prøveverdiene til å lese endringer i akselerometeraksen når kjøretøyet vipper (ulykke).
lcd.print ("Callibrating"); lcd.setCursor (0,1); lcd.print ("Akseleromiter"); for (int i = 0; i
Etter dette, i void loop () -funksjonen, har vi lest akselerometerakseverdier og gjort en beregning for å hente ut endringer ved hjelp av prøver som er tatt i kalibrering. Nå hvis noen endringer er mer eller mindre enn definert nivå, sender Arduino en melding til det forhåndsdefinerte nummeret.
ugyldig sløyfe () {int-verdi1 = analogRead (x); int-verdi2 = analogRead (y); int-verdi3 = 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);…………………
Her har vi også opprettet en annen funksjon for forskjellige pupper som void gpsEvent () for å få GPS-koordinater, void coordinate2dec () for å trekke ut koordinater fra GPS-strengen og konvertere dem til desimalverdier , ugyldig show_coordinate () for å vise verdier over seriell skjerm og LCD, og til slutt ugyldig Send () for å sende varsel-SMS til det forhåndsdefinerte nummeret.
Fullstendig kode og demo-video er gitt nedenfor, du kan sjekke alle funksjonene i koden.