Sa mga nakaraang tutorial, natutunan namin ang tungkol sa Paano i-interface ang module ng GPS sa Computer at kung paano Subaybayan ang sasakyan gamit ang GSM at GPS. Nagtayo rin kami ng Sistema ng Alerto sa Aksidente sa Sasakyan gamit ang Arduino at accelerometer. Narito namin muling binubuo ang parehong proyekto ngunit sa oras na ito isang MSP430 launchpad at isang sensor ng panginginig ng boses ay gagamitin upang makita ang aksidente sa sasakyan. Kaya't sasabihin din ng proyektong ito ang tungkol sa pag-interfacing ng isang vibration sensor sa MSP430 launchpad. Maaari kang makahanap ng maraming mga proyekto sa MSP430 dito.
Dito nakita ng module ng sensor ng Vibration ang panginginig ng sasakyan at nagpapadala ng isang senyas sa MSP430 Launchpad. Pagkatapos ang MSP430 ay kukuha ng data mula sa module ng GPS at ipadala ito sa gumagamit ng Mobile Phone sa pamamagitan ng SMS gamit ang module na GSM. Ang isang LED ay mamula rin bilang signal ng Accident Alert, ang LED na ito ay maaaring mapalitan ng ilang alarma. Ang lokasyon ng aksidente ay ipinadala sa anyo ng link ng Google Map, nagmula sa latitude at longitude mula sa module ng GPS. Tingnan ang Demo Video sa dulo.
Nagpapadala ang module ng GPS ng data na nauugnay sa posisyon sa pagsubaybay sa real time, at nagpapadala ito ng napakaraming data sa format na NMEA (tingnan ang screenshot sa ibaba). Ang format na NMEA ay binubuo ng maraming mga pangungusap, kung saan kailangan lang namin ng isang pangungusap. Ang pangungusap na ito ay nagsisimula sa $ GPGGA at naglalaman ng mga coordinate, oras at iba pang kapaki-pakinabang na impormasyon. Ang GPGGA na ito ay tinukoy sa Global Positioning System Fix Data. Malaman ang higit pa tungkol sa mga pangungusap ng NMEA at pagbabasa ng data ng GPS dito.
Maaari kaming kumuha ng coordinate mula sa $ GPGGA string sa pamamagitan ng pagbibilang ng mga kuwit sa string. Ipagpalagay na nakahanap ka ng $ GPGGA string at iniimbak ito sa isang array, pagkatapos ay matatagpuan ang Latitude pagkatapos ng dalawang kuwit at angitude ay mahahanap pagkatapos ng apat na kuwit. Ngayon, ang latitude at longitude na ito ay maaaring ilagay sa iba pang mga arrays.
Nasa ibaba ang $ GPGGA String, kasama ang paglalarawan nito:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47 $ GPGGA, HHMMSS.SSS, latitude, N, longitude, E, FQ, NOS, HDP, altitude, M, taas, M,, data ng tsekum
Identifier |
Paglalarawan |
$ GPGGA |
Ang data ng system ng Global Positioning ayusin ang data |
HHMMSS.SSS |
Oras sa oras na minuto segundo at format ng milliseconds. |
Latitude |
Latitude (Coordinate) |
N |
Direksyon N = Hilaga, S = Timog |
Longhitud |
Longhitud (Coordinate) |
E |
Direksyon E = Silangan, W = Kanluran |
FQ |
Ayusin ang Data ng Kalidad |
NOS |
Bilang ng Mga satellite na Ginagamit |
HDP |
Pahalang na Paghahalo ng Katumpakan |
Taas |
Altitude (metro sa itaas mula sa antas ng dagat) |
M |
Sukat |
Taas |
Taas |
Checksum |
Data ng Checksum |
Module ng GSM
Ang SIM900 ay isang kumpletong Quad-band GSM / GPRS Module na maaaring mai-embed na madaling gamitin ng customer o hobbyist. Nagbibigay ang SIM900 GSM Module ng isang interface na pamantayan sa industriya. Naghahatid ang SIM900 ng pagganap ng GSM / GPRS 850/900/1800 / 1900MHz para sa boses, SMS, Data na may mababang paggamit ng kuryente. Madali itong magagamit sa merkado.
- Dinisenyo ang SIM900 sa pamamagitan ng paggamit ng solong-chip processor na pagsasama ng core ng AMR926EJ-S
- Quad-band GSM / GPRS module sa maliit na sukat.
- Pinagana ang GPRS
SA Utos
Ang ibig sabihin ay ATTENTION. Ginagamit ang utos na ito upang makontrol ang module ng GSM. Mayroong ilang mga utos para sa pagtawag at pagmemensahe na ginamit namin sa marami sa aming nakaraang mga proyekto sa GSM kasama si Arduino. Para sa pagsubok sa GSM Module ginamit namin ang AT command. Matapos matanggap ang AT Command GSM Module na tumugon sa OK. Nangangahulugan ito na gumagana nang maayos ang module ng GSM. Nasa ibaba ang ilang mga utos ng AT na ginamit namin dito sa proyektong ito:
ATE0 Para sa echo off
SA + CNMI = 2,2,0,0,0
ATD
SA + CMGF = 1
SA + CMGS = "Numero ng Mobile"
>> Ngayon ay maaari naming isulat ang aming mensahe
>> Pagkatapos ng pagsusulat ng isang mensahe
Nagpapadala ang Ctrl + Z ng utos ng mensahe (26 sa decimal).
ENTER = 0x0d sa HEX
(Upang matuto nang higit pa tungkol sa module ng GSM, Suriin ang aming iba't ibang mga proyekto ng GSM na may iba't ibang mga microcontroller dito)
Modyul ng Sensor ng Panginginig
Sa proyekto ng MSP430 Accident Alert System na ito, gumamit kami ng isang module ng sensor ng panginginig ng boses na nakakakita ng mga panginginig o biglaang pagbago. Ang module ng sensor ng panginginig ay nagbibigay ng isang digital na output HIGH / LOW logic na depende sa module. Sa aming kaso, gumamit kami ng isang aktibong module ng sensor ng panginginig ng lohika na mataas. Nangangahulugan ito na tuwing ang sensor ng panginginig ay makakakita ng panginginig ng boses ay magbibigay ng TAAS na lohika sa microcontroller.
Paliwanag sa Circuit
Ang Mga Koneksyon sa Circuit ng Project Project ng Alerto sa aksidente sa Sasakyan ay simple. Dito ang Tx pin ng module ng GPS ay direktang konektado sa digital pin number P1_1 ng MSP430 Launchpad (hardware Serial) at ang 5v ay ginagamit upang paandarin ang Module ng GPS. Sa pamamagitan ng paggamit ng Software Serial Library dito, pinayagan namin ang serial na komunikasyon sa pin P_6 at P1_7, at ginawang Rx at Tx ayon sa pagkakabanggit at nakakonekta sa module ng GSM. Ginagamit ang 12 Volt supply upang mapagana ang GSM Module. Ang sensor ng panginginig ng boses ay konektado sa P1_3. Ginagamit din ang isang LED para ipahiwatig ang pagtuklas ng aksidente. Ang natitirang mga koneksyon ay ipinapakita sa diagram ng circuit.
Paliwanag sa Programming
Madali ang Programming para sa proyektong ito maliban sa bahagi ng GPS. Ang kumpletong code ay ibinibigay sa pagtatapos ng proyekto. Upang isulat o ipagsama ang code sa MSP430 ginamit namin ang Energia IDE na katugma ng Arduino. Karamihan sa pagpapaandar ng Arduino IDE ay maaaring direktang magamit sa Energia IDE na ito.
Kaya una sa lahat ay nagsama kami ng isang kinakailangang aklatan at idineklara ang mga pin at variable.
# isama
Ginamit na pagpapaandar ay ginagamit para sa pagbabasa ng signal ng sensor ng panginginig ng boses. Ang function na ito ay mag-filter ng maliit o maling mga panginginig din.
#define count_max 25 char SensorRead (int pin) // read sw with debounce { char count_low = 0, count_high = 0; gawin { antala (1); kung (digitalRead (pin) == MATAAS) { count_high ++; count_low = 0; } iba pa { count_high = 0; count_low ++; } } habang (count_low <count_max && count_high <count_max); kung (count_low> = count_max) bumalik LOW; kung hindi man ay bumalik nang TAAS; }
Sa ibaba ang pag-andar ay nakita ang panginginig ng boses at tawag na gpsEvent () na function upang makuha ang koordinasyon ng GPS at sa wakas ay tawagan ang Send () na function upang magpadala ng SMS.
void loop () { if (SensorRead (vibrationSensor) == MATAAS) { digitalWrite (led, HIGH); gpsEvent (); Magpadala (); digitalWrite (led, LOW); pagkaantala (2000); } }
Responsable ang Give Function para sa pagkuha ng mga string ng GPS mula sa module ng GPS, kunin ang mga coordinate mula sa kanila at i-convert ang mga ito sa degree-decimal format.
void gpsEvent () { char gpsString; char test = "RMC"; i = 0; habang (1) { habang (Serial.available ()) // Serial incomming data mula sa GPS { char inChar = (char) Serial.read (); gpsString = inChar; // store incomming data from GPS to temparary string str i ++; kung (i <4) { kung (gpsString! = test) // suriin ang tamang string i = 0; }
int degree = 0; degree = gpsString-48; degree * = 10; degree + = gpsString-48; int minut_int = 0; minut_int = gpsString-48; minut_int * = 10; minut_int + = gpsString-48; int minut_dec = 0; minut_dec + = (gpsString-48) * 10000; minut_dec + = (gpsString-48) * 1000; minut_dec + = (gpsString-48) * 100; minut_dec + = (gpsString-48) * 10; minut_dec + = (gpsString-48); float minut = ((float) minut_int + ((float) minut_dec / 100000.0)) / 60.0; latitude = ((float) degree + minut);
At sa wakas, ang pagpapaandar na Magpadala () ay ginagamit upang maipadala ang SMS sa numero ng gumagamit na naipasok sa bahaging ito ng code.
walang bisa ang Ipadala () { GSM.print ("AT + CMGS ="); GSM.print ('"'); GSM.print (" 961 **** 059 "); // ipasok ang iyong Mobile number GSM.println ('"'); pagkaantala (500); // GSM.print ("Latitude:"); // GSM.println (latitude); GSM.println ("Nangyari ang Aksidente"); pagkaantala (500); // GSM.print ("longitude:"); // GSM.println (logitude); GSM.println ("Mag-click Sa link upang makita ang Lokasyon"); GSM.print ("http://maps.google.com/maps?&z=15&mrt=yp&t=k&q="); GSM.print (latitude, 6); GSM.print ("+"); GSM.print (logitude, 6); GSM. Magsulat (26); pagkaantala (4000); }
Ang kumpletong code at demo na video ay ibinibigay sa ibaba, maaari mong suriin ang lahat ng mga pag-andar sa code.