- Nepieciešamās sastāvdaļas:
- GPS modulis un tā darbība:
- GSM modulis:
- Akselerometrs:
- Ķēdes skaidrojums:
- Darba skaidrojums:
- Programmēšanas skaidrojums:
Iepriekšējās apmācībās mēs esam iemācījušies par to, kā saskarni GPS moduli savienot ar datoru, kā izveidot Arduino GPS pulksteni un kā izsekot transportlīdzekli, izmantojot GSM un GPS. Šajā projektā mēs gatavojamies izveidot Arduino balstītu transportlīdzekļu negadījumu trauksmes sistēmu, izmantojot GPS, GSM un akselerometru. Akselerometrs atklāj pēkšņas izmaiņas transportlīdzekļa asīs, un GSM modulis uz mobilo tālruni nosūta trauksmes ziņojumu ar negadījuma vietu. Negadījuma vieta tiek nosūtīta Google Map saites veidā, kas iegūta no GPS moduļa platuma un garuma. Ziņojumā ir norādīts arī transportlīdzekļa ātrums mezglos. Skatiet demonstrācijas videobeigās. Šo trauksmes signālu par transportlīdzekļu negadījumiem var izmantot arī kā izsekošanas sistēmu un daudz ko citu, veicot tikai dažas izmaiņas aparatūrā un programmatūrā.
Nepieciešamās sastāvdaļas:
- Arduino Uno
- GSM modulis (SIM900A)
- GPS modulis (SIM28ML)
- Akselerometrs (ADXL335)
- 16x2 LCD
- Enerģijas padeve
- Vadu savienošana
- 10 K-POT
- Maizes dēlis vai PCB
- Barošanas avots 12v 1amp
Pirms iesaistāmies projektā, mēs apspriedīsim GPS, GSM un akselerometru.
GPS modulis un tā darbība:
GPS apzīmē globālo pozicionēšanas sistēmu un tiek izmantots, lai noteiktu jebkuras vietas uz Zemes platumu un garumu ar precīzu UTC laiku (universālā laika koordinēts). GPS modulis tiek izmantots, lai izsekotu negadījuma vietai mūsu projektā. Šī ierīce saņem satelīta koordinātas par katru sekundi, norādot laiku un datumu. Mēs iepriekš esam izvilkuši $ GPGGA virkni transportlīdzekļu izsekošanas sistēmā, lai atrastu platuma un garuma koordinātas.
GPS modulis reāllaikā nosūta datus, kas saistīti ar izsekošanas pozīciju, un tik daudz datu NMEA formātā (skat. Ekrānuzņēmumu zemāk). NMEA formāts sastāv no vairākiem teikumiem, kuros mums vajadzīgs tikai viens teikums. Šis teikums sākas ar $ GPGGA un satur koordinātas, laiku un citu noderīgu informāciju. Šis GPGGA attiecas uz globālās pozicionēšanas sistēmas labošanas datiem. Uzziniet vairāk par NMEA teikumiem un GPS datu lasīšanu šeit.
Saskaitot virknes komatus, mēs varam iegūt koordinātas no $ GPGGA virknes. Pieņemsim, ka atrodat virkni $ GPGGA un glabājat to masīvā, tad Latitude var atrast pēc diviem komatiem un Longitude - pēc četriem komatiem. Tagad šo platumu un garumu var ievietot citos masīvos.
Zemāk ir $ GPGGA virkne kopā ar aprakstu:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0,9,510,4, M, 43,9, M,, * 47 $ GPGGA, HHMMSS.SSS, platums, N, garums, E, FQ, NOS, HDP, augstums, M, augstums, M,, kontrolsummas dati
Identifikators |
Apraksts |
$ GPGGA |
Globālās pozicionēšanas sistēmas fiksēšanas dati |
HHMMSS.SSS |
Laiks stundas minūtēs sekundēs un milisekundes formātā. |
Platums |
Platums (koordinātas) |
N |
Virziens N = ziemeļi, S = dienvidi |
Garums |
Garums (koordinātas) |
E |
Virziens E = Austrumi, W = Rietumi |
FQ |
Labot kvalitātes datus |
NOS |
Izmantoto satelītu skaits |
HDP |
Horizontāls precizitātes atšķaidījums |
Augstums |
Augstums (metrus virs jūras līmeņa) |
M |
Skaitītājs |
Augstums |
Augstums |
Kontrolsumma |
Kontrolsummas dati |
GSM modulis:
SIM900 ir pilnīgs četrjoslu GSM / GPRS modulis, kuru var viegli ievietot klients vai hobijs. SIM900 GSM modulis nodrošina nozares standarta saskarni. SIM900 nodrošina GSM / GPRS 850/900/1800 / 1900MHz veiktspēju balss, SMS un datiem ar mazu enerģijas patēriņu. Tas ir viegli pieejams tirgū.
- SIM900 izstrādāts, izmantojot vienas mikroshēmas procesoru, integrējot AMR926EJ-S kodolu
- Neliela izmēra četrjoslu GSM / GPRS modulis.
- GPRS iespējots
AT komanda:
AT nozīmē UZMANĪBU. Šo komandu izmanto, lai kontrolētu GSM moduli. Zvanīšanai un ziņojumapmaiņai ir dažas komandas, kuras esam izmantojuši daudzos mūsu iepriekšējos GSM projektos ar Arduino. Lai pārbaudītu GSM moduli, mēs izmantojām AT komandu. Pēc AT komandas GSM moduļa saņemšanas atbildiet ar OK. Tas nozīmē, ka GSM modulis darbojas labi. Zemāk ir dažas AT komandas, kuras mēs šeit izmantojām šajā projektā:
ATE0 atbalss izslēgšanai AT + CNMI = 2,2,0,0,0
(Lai uzzinātu vairāk par GSM moduli, šeit pārbaudiet mūsu dažādos GSM projektus ar dažādiem mikrokontrolleriem)
Akselerometrs:
Akselerometra apraksts:
- Pie šīs tapas ir jāpievienojas Vcc 5 voltu barošanai.
- X-OUT Šī tapa nodrošina analogo izvadi x virzienā
- Y-OUT Šī tapa dod analogo izvadi y virzienā
- Z-OUT Šī tapa nodrošina analogo izvadi z virzienā
- GND zeme
- ST Šī tapa izmantota sensora jutības iestatīšanai
Pārbaudiet arī citus mūsu projektus, izmantojot akselerometru: Ping Pong Game, izmantojot Arduino un Accelerometer Based Hand Gesture Robot.
Ķēdes skaidrojums:
Šī transportlīdzekļa avārijas trauksmes sistēmas projekta ķēdes savienojumi ir vienkārši. Šeit GPS moduļa Tx tapa ir tieši savienota ar Arduino digitālo tapu numuru 10. Šeit izmantojot programmatūras sērijas bibliotēku, mēs esam atļāvuši sērijveida saziņu uz tapām 10 un 11, padarījām tās attiecīgi par Rx un Tx un atstājām GPS moduļa Rx tapu atvērtu. Pēc noklusējuma Arduino 0 un 1 tapas tiek izmantotas sērijveida saziņai, taču, izmantojot SoftwareSerial bibliotēku, mēs varam atļaut seriālu saziņu ar citām Arduino digitālajām tapām. GPS moduļa darbināšanai izmanto 12 voltu barošanu.
GSM moduļa Tx un Rx tapas ir tieši savienotas ar Arduino tapām D2 un D3. GSM saskarnēm šeit esam izmantojuši arī programmatūras sērijveida bibliotēku. GSM moduli darbina arī 12v barošana. Papildaprīkojumā LCD s datu pins D4, D5, D6, un D7 ir savienoti ar PIN kodu 6., 7., 8., un 9. Arduino. LCD komandtapa RS un EN ir savienota ar Arduino tapām 4 un 5, un RW tapa ir tieši savienota ar zemi. LCD kontrasta vai spilgtuma iestatīšanai tiek izmantots arī potenciometrs.
Accelerometer pievieno šajā sistēmā, lai noteiktu nelaimes gadījuma un tā X, Y un Z-ass ADC izejas pins ir tieši savienots ar Arduino ADC pin A1, A2 un A3.
Darba skaidrojums:
Šajā projektā Arduino tiek izmantots visa procesa kontrolei ar GPS uztvērēju un GSM moduli. GPS uztvērējs tiek izmantots transportlīdzekļa koordinātu noteikšanai, GSM modulis tiek izmantots trauksmes īsziņu nosūtīšanai ar koordinātām un saiti uz Google Map. Akselerometru, proti, ADXL335, izmanto nelaimes gadījumu vai pēkšņu izmaiņu noteikšanai jebkurā asī. Papildus 16x2 LCD tiek izmantots arī statusa ziņojumu vai koordinātu parādīšanai. Mēs esam izmantojuši GPS moduli SIM28ML un GSM moduli SIM900A.
Kad pēc programmēšanas mēs esam gatavi ar savu aparatūru, mēs varam to instalēt savā transportlīdzeklī un ieslēgt. Tagad, kad notiek negadījums, automašīna sasveras un akselerometrs maina ass vērtības. Šīs vērtības nolasa Arduino un pārbauda, vai kādā asī notiek kādas izmaiņas. Ja notiek kādas izmaiņas, Arduino nolasa koordinātas, iegūstot $ GPGGA virkni no GPS moduļa datiem (GPS darbojas iepriekš paskaidrots iepriekš) un nosūta SMS uz iepriekš noteiktu numuru policijai vai ātrās palīdzības automašīnai vai ģimenes loceklim ar negadījuma vietas koordinātām. Ziņojumā ir arī Google Map saite uz negadījuma vietu, lai šo vietu varētu viegli izsekot. Kad mēs saņemam ziņojumu, mums tikai jānoklikšķina uz saites, un mēs novirzīsimies uz Google karti, un tad mēs varēsim redzēt precīzu transportlīdzekļa atrašanās vietu. Transportlīdzekļa ātrums mezglos(1,852 KPH), tiek nosūtīts arī īsziņā un parādīts LCD panelī. Pārbaudiet pilnu demonstrācijas video zem projekta.
Šajā projektā mēs varam iestatīt akselerometra jutīgumu, kodā ievietojot min un max vērtību.
Šeit demonstrācijā ir izmantotas norādītās vērtības:
#define minVal -50 #define MaxVal 50
Bet, lai iegūtu labākus rezultātus, jūs varat izmantot 200 vietā 50 vai iestatīt atbilstoši jūsu prasībām.
Programmēšanas skaidrojums:
Pilnīga programma ir dota zemāk sadaļā Kods; šeit mēs īsi izskaidrojam tās dažādās funkcijas.
Vispirms mēs esam iekļāvuši visas nepieciešamās bibliotēkas vai galvenes failus un deklarējuši dažādus mainīgos aprēķiniem un pagaidu datu glabāšanai.
Pēc tam mēs esam izveidojuši funkciju void initModule (String cmd, char * res, int t), lai inicializētu GSM moduli un pārbaudītu tā reakciju, izmantojot AT komandas.
void initModule (String cmd, char * res, int t) {while (1) {Serial.println (cmd); Serial1.println (cmd); kavēšanās (100); while (Seriālais1.pieejamais ()> 0) {ja (Seriālais1.atrod (res)) {Seriālais.println (res); kavēšanās (t); atgriešanās; } else {Serial.println ("Kļūda"); }} kavēšanās (t); }}
Pēc tam, izmantojot funkciju void setup () , mēs esam inicializējuši aparatūras un programmatūras sērijveida sakarus, LCD, GPS, GSM moduli un akselerometru.
void setup () {Serial1.begin (9600); Sērijas sākums (9600); lcd.begin (16,2); lcd.print ("Brīdinājums par nelaimes gadījumu"); lcd.setCursor (0,1); lcd.print ("Sistēma"); kavēšanās (2000); lcd.clear ();…………………
Akselerometra kalibrēšanas process tiek veikts arī iestatīšanas ciklā. Šajā gadījumā mēs esam paņēmuši dažus paraugus un pēc tam atrodam x ass, y ass un z ass vidējās vērtības. Un uzglabājiet tos mainīgajā. Tad mēs esam izmantojuši šīs parauga vērtības, lai nolasītu akselerometra ass izmaiņas, kad transportlīdzeklis sasveras (negadījums).
lcd.print ("kalibrēšana"); lcd.setCursor (0,1); lcd.print ("Acceleromiter"); par (int i = 0; i
Pēc tam funkcijā void loop () mēs esam nolasījuši akselerometra ass vērtības un veikuši aprēķinu, lai iegūtu izmaiņas, izmantojot kalibrēšanā ņemtos paraugus. Tagad, ja kādas izmaiņas ir vairāk vai mazāk noteiktā līmenī, tad Arduino nosūta ziņojumu uz iepriekš noteiktu numuru.
void loop () {int vērtība1 = analogRead (x); int vērtība2 = analogRead (y); int vērtība3 = analogRead (z); int xValue = xparauga vērtība1; int yValue = yparauga vērtība2; int zValue = zsample-value3; Sērijas.druka ("x ="); Serial.println (xValue); Sērijas.druka ("y ="); Serial.println (yValue); Sērijas.druka ("z ="); Serial.println (zValue);…………………
Šeit mēs esam izveidojuši arī kādu citu funkciju dažādām pupozēm, piemēram, void gpsEvent (), lai iegūtu GPS koordinātas, void coordinate2dec (), lai iegūtu koordinātas no GPS virknes un pārvērstu tās decimāldaļās, void show_coordinate () vērtību parādīšanai sērijveida monitorā un LCD un, visbeidzot, tukšais Send () brīdinājuma SMS nosūtīšanai uz iepriekš noteiktu numuru.
Pilns kods un demonstrācijas video ir norādīts zemāk, jūs varat pārbaudīt visas koda funkcijas.