- Nødvendige komponenter:
- GPS-modul og dets funktion:
- GSM-modul:
- Accelerometer:
- Forklaring af kredsløb:
- Arbejdsforklaring:
- Programmeringsforklaring:
I vores tidligere tutorials har vi lært om, hvordan man interface GPS-modul med computer, hvordan man bygger et Arduino GPS-ur, og hvordan man sporer køretøj ved hjælp af GSM og GPS. Her i dette projekt skal vi bygge et Arduino-baseret alarmsystem til køretøjsulykker ved hjælp af GPS, GSM og accelerometer. Accelerometer registrerer den pludselige ændring i køretøjets akser, og GSM-modulet sender alarmmeddelelsen på din mobiltelefon med placeringen af ulykken. Ulykkesplacering sendes i form af Google Map-link, afledt af breddegrad og længdegrad fra GPS-modulet. Meddelelsen indeholder også køretøjets hastighed i knob. Se demo-videoeni slutningen. Dette alarmprojekt om køretøjsulykker kan også bruges som et sporingssystem og meget mere ved blot at foretage få ændringer i hardware og software.
Nødvendige komponenter:
- Arduino Uno
- GSM-modul (SIM900A)
- GPS-modul (SIM28ML)
- Accelerometer (ADXL335)
- 16x2 LCD
- Strømforsyning
- Tilslutning af ledninger
- 10 K-POT
- Brødbræt eller PCB
- Strømforsyning 12v 1amp
Før vi går ind i projektet, vil vi diskutere om GPS, GSM og accelerometer.
GPS-modul og dets funktion:
GPS står for Global Positioning System og bruges til at registrere bredde og længdegrad for enhver placering på jorden med nøjagtig UTC-tid (Universal Time Coordinated). GPS-modul bruges til at spore placeringen af ulykker i vores projekt. Denne enhed modtager koordinaterne fra satellitten for hvert sekund med tid og dato. Vi har tidligere ekstraheret $ GPGGA- streng i Vehicle Tracking System for at finde bredde- og længdegradskoordinaterne.
GPS-modul sender data relateret til sporingsposition i realtid, og det sender så mange data i NMEA-format (se skærmbilledet nedenfor). NMEA-format består af flere sætninger, hvor vi kun har brug for en sætning. Denne sætning starter fra $ GPGGA og indeholder koordinater, tid og andre nyttige oplysninger. Denne GPGGA henvises til data om Global Positioning System Fix. Lær mere om NMEA-sætninger og læsning af GPS-data her.
Vi kan udtrække koordinater fra $ GPGGA-streng ved at tælle kommaerne i strengen. Antag at du finder $ GPGGA-streng og gemmer den i en matrix, så kan Latitude findes efter to kommaer og længdegrad kan findes efter fire kommaer. Nu kan denne breddegrad og længdegrad placeres i andre arrays.
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, længdegrad, E, FQ, NOS, HDP, højde, M, højde, M,, kontrolsumdata
Identifikator |
Beskrivelse |
$ GPGGA |
Data om Global Positioning-systemrettelse |
HHMMSS.SSS |
Tid i time minut sekunder og millisekunder format. |
Breddegrad |
Breddegrad (Koordinat) |
N |
Retning N = Nord, S = Syd |
Længde |
Længdegrad (Koordinat) |
E |
Retning E = øst, W = vest |
FQ |
Ret kvalitetsdata |
NOS |
Antal anvendte satellitter |
HDP |
Vandret fortynding af præcision |
Højde |
Højde (meter over havets overflade) |
M |
Måler |
Højde |
Højde |
Kontrolsum |
Data om kontrolsum |
GSM-modul:
SIM900 er et komplet Quad-band GSM / GPRS-modul, som let kan integreres af kunde eller hobbyist. SIM900 GSM-modul giver en industristandard-interface. SIM900 leverer GSM / GPRS 850/900/1800 / 1900MHz ydeevne til tale, SMS, data med lavt strømforbrug. Det er let tilgængeligt på markedet.
- SIM900 designet ved hjælp af single-chip-processor, der integrerer AMR926EJ-S-kerne
- Quad-band GSM / GPRS modul i lille størrelse.
- GPRS aktiveret
AT-kommando:
AT betyder OBS! Denne kommando bruges til at styre GSM-modulet. Der er nogle kommandoer til opkald og beskeder, som vi har brugt i mange af vores tidligere GSM-projekter med Arduino. Til test af GSM-modul brugte vi AT-kommandoen. Efter modtagelse af AT Command GSM-modul, svar med OK. Det betyder, at GSM-modul fungerer fint. Nedenfor er nogle AT-kommandoer, vi brugte her i dette projekt:
ATE0 For ekko fra AT + CNMI = 2,2,0,0,0
(For at lære mere om GSM-modul, se vores forskellige GSM-projekter med forskellige mikrocontrollere her)
Accelerometer:
Stift Beskrivelse af accelerometer:
- Vcc 5 volt forsyning skal tilsluttes ved denne pin.
- X-OUT Denne pin giver en analog udgang i x-retning
- Y-OUT Denne pin giver en analog udgang i y-retning
- Z-OUT Denne pin giver en analog udgang i z-retning
- GND Ground
- ST Denne pin bruges til at indstille følsomheden for sensoren
Tjek også vores andre projekter ved hjælp af Accelerometer: Ping Pong-spil ved hjælp af Arduino og Accelerometer-baseret håndbevægelsesstyret robot.
Forklaring af kredsløb:
Kredsløbstilslutninger af dette køretøjsulykkesystemprojekt er enkle. Her er Tx-stift på GPS-modulet direkte forbundet til det digitale pin nummer 10 på Arduino. Ved at bruge softwareseriebibliotek her har vi tilladt seriel kommunikation på pin 10 og 11 og gjort dem henholdsvis Rx og Tx og efterladt Rx-pin i GPS-modulet åben. Som standard bruges pin 0 og 1 i Arduino til seriel kommunikation, men ved hjælp af SoftwareSerial-biblioteket kan vi tillade seriel kommunikation på andre digitale pins i Arduino. 12 volt forsyning bruges til at drive GPS-modulet.
GSM-modulets Tx- og Rx-ben er direkte forbundet til pin D2 og D3 i Arduino. Til GSM-grænseflade har vi også brugt serielt softwarebibliotek. GSM-modulet drives også af 12v forsyning. En valgfri LCD's datapinde D4, D5, D6 og D7 er forbundet til pin nummer 6, 7, 8 og 9 i Arduino. Kommandostik RS og EN på LCD er forbundet med pin nummer 4 og 5 på Arduino, og RW pin er direkte forbundet med jorden. Et potentiometer bruges også til at indstille kontrast eller lysstyrke på LCD.
Der tilføjes et accelerometer i dette system til at detektere en ulykke, og dens x-, y- og z-akse ADC-udgangsstifter er direkte forbundet til Arduino ADC-pin A1, A2 og A3.
Arbejdsforklaring:
I dette projekt bruges Arduino til at styre hele processen med en GPS-modtager og GSM-modul. GPS-modtager bruges til at detektere køretøjets koordinater, GSM-modulet bruges til at sende alarm-SMS med koordinaterne og linket til Google Map. Accelerometer, nemlig ADXL335, bruges til at opdage ulykker eller pludselige ændringer i enhver akse. Og en valgfri 16x2 LCD bruges også til visning af statusmeddelelser eller koordinater. Vi har brugt GPS-modul SIM28ML og GSM-modul SIM900A.
Når vi er klar med vores hardware efter programmering, kan vi installere den i vores køretøj og tænde den. Nu når der er en ulykke, får bilen hældning, og accelerometer ændrer sine akseværdier. Disse værdier læses af Arduino og kontrollerer, om der sker ændringer i en akse. Hvis der sker en ændring, læser Arduino koordinater ved at udtrække $ GPGGA-streng fra GPS-moduldata (GPS fungerer forklaret ovenfor) og sende SMS til det foruddefinerede nummer til politiet eller ambulancen eller familiemedlem med placeringskoordinaterne for ulykkesstedet. Meddelelsen indeholder også et Google Map-link til ulykkesplaceringen, så placeringen let kan spores. Når vi modtager meddelelsen, behøver vi kun klikke på linket, og vi omdirigerer til Google-kortet, og så kan vi se køretøjets nøjagtige placering. Køretøjets hastighed i knob(1.852 KPH), sendes også i SMS'en og vises på LCD-panelet. Tjek den fulde demo-video under projektet.
Her i dette projekt kan vi indstille følsomheden af Accelerometer ved at sætte min og max værdi i koden.
Her i demo har brugt givne værdier:
#define minVal -50 #define MaxVal 50
Men for bedre resultater kan du bruge 200 i stedet for 50 eller kan indstille efter dine krav.
Programmeringsforklaring:
Komplet program er givet nedenfor i afsnittet kode; her forklarer vi kort de forskellige funktioner.
Først har vi inkluderet alle de nødvendige biblioteker eller headere-filer og erklæret forskellige variabler til beregninger og lagring af data midlertidige.
Efter dette har vi oprettet en funktion ugyldig initModule (String cmd, char * res, int t) til at initialisere GSM-modulet og kontrollere dets svar ved hjælp af AT-kommandoer.
ugyldigt initModule (String cmd, char * res, int t) {while (1) {Serial.println (cmd); Serial1.println (cmd); forsinkelse (100); mens (Serial1.tilgængelig ()> 0) {hvis (Serial1.find (res)) {Serial.println (res); forsinkelse (t); Vend tilbage; } andet {Serial.println ("Fejl"); }} forsinkelse (t); }}
Efter dette, i ugyldig opsætning () -funktion, har vi initialiseret hardware- og softwarekommunikation, LCD, GPS, GSM-modul og accelerometer.
ugyldig opsætning () {Serial1.begin (9600); Serial.begin (9600); lcd.begin (16,2); lcd.print ("Accident Alert"); lcd.setCursor (0,1); lcd.print ("System"); forsinkelse (2000); lcd.clear ();…………………
Accelerometer kalibreringsprocessen udføres også i opsætningssløjfe . I dette har vi taget nogle prøver og derefter fundet gennemsnitsværdierne for x-aksen, y-aksen og z-aksen. Og opbevar dem i en variabel. Så har vi brugt disse prøveværdier til at læse ændringer i accelerometeraksen, når køretøjet vippes (ulykke).
lcd.print ("Callibrating"); lcd.setCursor (0,1); lcd.print ("Acceleromiter"); for (int i = 0; i
Herefter har vi i void loop () -funktionen læst accelerometerakseværdier og foretaget en beregning for at udtrække ændringer ved hjælp af prøver, der tages i kalibrering. Nu hvis ændringer er mere eller mindre end defineret niveau, sender Arduino en besked til det foruddefinerede nummer.
ugyldig sløjfe () {int værdi1 = analogRead (x); int-værdi2 = analogRead (y); int-værdi3 = 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å oprettet en anden funktion til forskellige pupper som ugyldige gpsEvent () for at få GPS-koordinater, ugyldig koordinat2dec () til at udtrække koordinater fra GPS-strengen og konvertere dem til decimalværdier , ugyldigt show_koordinat () til visning af værdier over seriel skærm og LCD, og endelig ugyldigt Send () til afsendelse af alarm-SMS til det foruddefinerede nummer.
Komplet kode og demo-video er angivet nedenfor, du kan kontrollere alle funktionerne i koden.