- Potrebne komponente:
- GPS modul i njegov rad:
- GSM modul:
- Brzinomjer:
- Objašnjenje sklopa:
- Radno objašnjenje:
- Objašnjenje programiranja:
U našim prethodnim vodičima naučili smo kako povezati GPS modul s računalom, kako izraditi Arduino GPS sat i kako pratiti vozilo pomoću GSM-a i GPS-a. Ovdje ćemo u ovom projektu izgraditi sustav upozorenja na nezgode na bazi Arduina koristeći GPS, GSM i akcelerometar. Akcelerometar otkriva iznenadnu promjenu osi vozila, a GSM modul na vaš mobitel šalje poruku upozorenja s mjestom nesreće. Mjesto nesreće šalje se u obliku veze Google Map, izvedene iz geografske širine i dužine iz GPS modula. Poruka također sadrži brzinu vozila u čvorovima. Pogledajte demo videona kraju. Ovaj projekt upozorenja na nesreću u vozilu može se koristiti i kao sustav praćenja i još mnogo toga, tako što ćete unijeti samo nekoliko promjena u hardver i softver.


Potrebne komponente:
- Arduino Uno
- GSM modul (SIM900A)
- GPS modul (SIM28ML)
- Akcelerometar (ADXL335)
- LCD 16x2
- Napajanje
- Spajanje žica
- 10 K-POT
- Breadboard ili PCB
- Napajanje 12v 1amp
Prije ulaska u projekt razgovarat ćemo o GPS-u, GSM-u i akcelerometru.
GPS modul i njegov rad:
GPS je skraćenica od Global Positioning System i koristi se za otkrivanje zemljopisne širine i dužine bilo kojeg mjesta na Zemlji, s točnim UTC vremenom (koordinirano univerzalnim vremenom). GPS modul koristi se za praćenje mjesta nesreće u našem projektu. Ovaj uređaj prima koordinate sa satelita svake sekunde, s vremenom i datumom. Prethodno smo izdvojili $ GPGGA niz u sustavu za praćenje vozila kako bismo pronašli koordinate geografske širine i dužine.

GPS modul šalje podatke koji se odnose na položaj praćenja u stvarnom vremenu i šalje toliko podataka u NMEA formatu (pogledajte snimku zaslona u nastavku). NMEA format sastoji se od nekoliko rečenica, u kojima nam treba samo jedna rečenica. Ova rečenica počinje od $ GPGGA i sadrži koordinate, vrijeme i ostale korisne informacije. Ovaj GPGGA odnosi se na podatke o popravcima sustava globalnog pozicioniranja. Ovdje saznajte više o NMEA rečenicama i čitanju GPS podataka.
Koordinate možemo izdvojiti iz $ GPGGA niza brojanjem zareza u nizu. Pretpostavimo da pronađete $ GPGGA niz i pohranite ga u niz, a zatim Latitude možete pronaći nakon dva zareza, a Longitude nakon četiri zareza. Sada se ta zemljopisna širina i dužina mogu staviti u druge nizove.

Ispod je $ GPGGA string, zajedno s opisom:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47 $ GPGGA, HHMMSS.SSS, zemljopisna širina, N, dužina, E, FQ, NOS, HDP, nadmorska visina, M, visina, M,, podaci o kontrolnoj sumi
|
Identifikator |
Opis |
|
$ GPGGA |
Podaci o popravcima sustava globalnog pozicioniranja |
|
HHMMSS.SSS |
Vrijeme u satima minutnim sekundama i milisekundama. |
|
Zemljopisna širina |
Geografska širina (koordinata) |
|
N |
Smjer N = sjever, S = jug |
|
Zemljopisna dužina |
Zemljopisna dužina (koordinata) |
|
E |
Smjer E = Istok, Z = Zapad |
|
FQ |
Ispravite podatke o kvaliteti |
|
NOS |
Broj satelita koji se koriste |
|
HDP |
Horizontalno razrjeđivanje preciznosti |
|
Visina |
Nadmorska visina (metri iznad razine mora) |
|
M |
Metar |
|
Visina |
Visina |
|
Kontrolna suma |
Podaci o kontrolnoj sumi |
GSM modul:
SIM900 je cjeloviti četveropojasni GSM / GPRS modul koji kupac ili hobi mogu jednostavno ugraditi. SIM900 GSM modul pruža industrijsko sučelje. SIM900 pruža GSM / GPRS 850/900/1800 / 1900MHz performanse za glas, SMS i podatke s niskom potrošnjom energije. Lako je dostupan na tržištu.
- SIM900 dizajniran pomoću jednočipovog procesora koji integrira jezgru AMR926EJ-S
- Četvero pojasni GSM / GPRS modul u maloj veličini.
- GPRS omogućen

AT zapovjedništvo:
AT znači PAŽNJA. Ova se naredba koristi za upravljanje GSM modulom. Postoje neke naredbe za pozivanje i razmjenu poruka koje smo koristili u mnogim našim prethodnim GSM projektima s Arduinom. Za testiranje GSM modula koristili smo AT naredbu. Nakon primanja AT Command GSM modula odgovorite s OK. To znači da GSM modul radi u redu. Ispod je nekoliko AT naredbi koje smo ovdje koristili u ovom projektu:
ATE0 Za eho off AT + CNMI = 2,2,0,0,0
(Da biste saznali više o GSM modulu, ovdje provjerite naše razne GSM projekte s raznim mikrokontrolerima)
Brzinomjer:
Pin Opis mjerača ubrzanja:
- Vcc 5-voltno napajanje trebalo bi se spojiti na ovom pinu.
- X-OUT Ovaj pin daje analogni izlaz u smjeru x
- Y-OUT Ovaj pin daje analogni izlaz u smjeru y
- Z-OUT Ovaj pin daje analogni izlaz u smjeru z
- GND Tlo
- ST Ovaj pin služi za podešavanje osjetljivosti senzora


Također provjerite i druge naše projekte pomoću Accelerometer: Ping Pong Game koristeći Arduino i Accelerometer Hand Gesture Controlled Robot.
Objašnjenje sklopa:
Kružne veze ovog Projekta sustava upozorenja na nezgode u vozilu jednostavne su. Ovdje je Tx pin GPS modula izravno povezan s digitalnim pinom 10 Arduina. Koristeći ovdje softversku serijsku biblioteku, dopustili smo serijsku komunikaciju na pinovima 10 i 11, te ih učinili Rx odnosno Tx, a Rx pin GPS modula ostavili otvorenim. Prema zadanim postavkama pin 0 i 1 Arduina koriste se za serijsku komunikaciju, ali pomoću biblioteke SoftwareSerial možemo dopustiti serijsku komunikaciju na drugim digitalnim pinovima Arduina. Za napajanje GPS modula koristi se napajanje od 12 volti.
Pribadače Tx i Rx GSM modula izravno su povezane s pinovima D2 i D3 Arduina. Za GSM povezivanje ovdje smo koristili i serijsku biblioteku softvera. GSM modul se također napaja napajanjem od 12v. Nekog Izborno LCD daje podatke igle D4, D5, D6, D7, a povezani su na PIN broj 6, 7, 8, i 9 Težak. Naredbeni pin RS i EN LCD-a povezani su pinovima 4 i 5 Arduina, a RW pin je izravno povezan sa zemljom. Potenciometar se također koristi za podešavanje kontrasta ili svjetline LCD-a.
U ovaj je sustav dodan akcelerometar za otkrivanje nesreće, a njegovi izlazni pinovi AD, x, y i z osi izravno su povezani s Arduino ADC pinom A1, A2 i A3.

Radno objašnjenje:
U ovom se projektu Arduino koristi za upravljanje cijelim postupkom GPS prijemnikom i GSM modulom. GPS prijamnik služi za otkrivanje koordinata vozila, GSM modul služi za slanje upozoravajućeg SMS-a s koordinatama i poveznicom na Google Map. Akcelerometar, naime ADXL335, koristi se za otkrivanje nesreće ili nagle promjene bilo koje osi. A dodatni LCD 16x2 također se koristi za prikaz poruka statusa ili koordinata. Koristili smo GPS modul SIM28ML i GSM modul SIM900A.

Kada smo spremni s našim hardverom nakon programiranja, možemo ga instalirati u svoje vozilo i uključiti. Sad kad god se dogodi nesreća, automobil se naginje, a akcelerometar mijenja vrijednosti osi. Te vrijednosti čita Arduino i provjerava je li došlo do promjene na bilo kojoj osi. Ako se dogodi bilo kakva promjena, Arduino čita koordinate izvlačenjem $ GPGGA Stringa iz podataka GPS modula (GPS rad je objašnjen gore) i šalje SMS na unaprijed definirani broj policiji ili hitnoj pomoći ili članu obitelji s koordinatama mjesta mjesta nesreće. Poruka također sadrži vezu Google Map do mjesta nesreće, tako da se to mjesto može lako pratiti. Kad primimo poruku, trebamo samo kliknuti vezu i preusmjerit ćemo se na Google kartu i tada ćemo moći vidjeti točno mjesto vozila. Brzina vozila, u čvorovima(1,852 KPH), također se šalje u SMS-u i prikazuje na LCD zaslonu. Provjerite cijeli demo video ispod Projekta.

Ovdje u ovom projektu možemo postaviti osjetljivost akcelerometra stavljanjem min i max vrijednosti u kôd.
Ovdje su u demonstraciji korištene zadane vrijednosti:
#define minVal -50 #define MaxVal 50
Ali za bolje rezultate možete upotrijebiti 200 umjesto 50 ili ih možete postaviti prema vašim zahtjevima.
Objašnjenje programiranja:
Kompletni program naveden je u nastavku u odjeljku Code; ovdje ukratko objašnjavamo njegove različite funkcije.
Prvo smo uključili sve potrebne knjižnice ili datoteke zaglavlja i proglasili razne varijable za izračune i pohranu podataka privremenim.
Nakon toga stvorili smo funkciju void initModule (String cmd, char * res, int t) za inicijalizaciju GSM modula i provjeru njegovog odgovora pomoću AT naredbi.
void initModule (niz cmd, char * res, int t) {while (1) {Serial.println (cmd); Serial1.println (cmd); kašnjenje (100); while (Serial1.available ()> 0) {if (Serial1.find (res)) {Serial.println (res); kašnjenje (t); povratak; } else {Serial.println ("Pogreška"); }} kašnjenje (t); }}
Nakon toga, u funkciji void setup () , pokrenuli smo serijsku komunikaciju hardvera i softvera, LCD, GPS, GSM modul i akcelerometar.
void setup () {Serial1.begin (9600); Serial.begin (9600); lcd.početak (16,2); lcd.print ("Upozorenje o nesreći"); lcd.setCursor (0,1); lcd.print ("Sustav"); kašnjenje (2000); lcd.clear ();…………………
Postupak kalibracije akcelerometra također se vrši u petlji za postavljanje . U ovome smo uzeli neke uzorke, a zatim pronašli prosječne vrijednosti za os x, os y i z. I spremite ih u varijablu. Zatim smo koristili ove uzorke vrijednosti za čitanje promjena u osi akcelerometra kada se vozilo nagne (nesreća).
lcd.print ("Kalibriranje"); lcd.setCursor (0,1); lcd.print ("Acceleromiter"); za (int i = 0; i
Nakon toga, u funkciji void loop () pročitali smo vrijednosti osi akcelerometra i izvršili izračun za izdvajanje promjena uz pomoć uzoraka koji su uzeti u kalibraciji. Ako su bilo kakve promjene više ili manje od definirane razine, Arduino šalje poruku na unaprijed definirani broj.
void loop () {int value1 = analogRead (x); int vrijednost2 = analogRead (y); int vrijednost3 = 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);…………………
Ovdje smo također stvorili neke druge funkcije za razne svrhe poput void gpsEvent () za dobivanje GPS koordinata, void coordinate2dec () za izdvajanje koordinata iz GPS niza i njihovo pretvaranje u decimalne vrijednosti, void show_coordinate () za prikaz vrijednosti preko serijskog monitora i LCD, a na kraju i poništeno Send () za slanje upozoravajućeg SMS-a na unaprijed definirani broj.
Kompletni kod i demo video prikazan je u nastavku, možete provjeriti sve funkcije u kodu.
