- Kinakailangan ang Mga Bahagi:
- Module ng GPS at Gumagawa Ito:
- Module ng GSM:
- Accelerometer:
- Paliwanag sa Circuit:
- Paggawa ng Paliwanag:
- Paliwanag sa Programming:
Sa aming nakaraang mga tutorial, natutunan namin ang tungkol sa Paano i-interface ang module ng GPS sa Computer, kung paano bumuo ng isang Arduino GPS Clock at kung paano Subaybayan ang sasakyan gamit ang GSM at GPS. Dito sa proyektong ito, magtatayo kami ng isang sistema ng alerto sa aksidente sa sasakyan batay sa Arduino gamit ang GPS, GSM at accelerometer. Nakita ng Accelerometer ang biglaang pagbabago sa mga palakol ng sasakyan at ang module ng GSM ay nagpapadala ng mensahe ng alerto sa iyong Mobile Phone na may lokasyon ng aksidente. Ang lokasyon ng aksidente ay ipinadala sa anyo ng link ng Google Map, nagmula sa latitude at longitude mula sa module ng GPS. Naglalaman din ang Mensahe ng bilis ng sasakyan sa mga buhol. Tingnan ang Demo Videosa dulo. Ang proyektong alerto sa aksidente sa Sasakyan na ito ay maaari ding magamit bilang isang Tracking System at marami pa, sa pamamagitan lamang ng paggawa ng ilang mga pagbabago sa hardware at software.
Kinakailangan ang Mga Bahagi:
- Arduino Uno
- GSM Module (SIM900A)
- GPS Module (SIM28ML)
- Accelerometer (ADXL335)
- 16x2 LCD
- Power Supply
- Mga Koneksyon sa Mga Wires
- 10 K-POT
- Breadboard o PCB
- Pag-supply ng kuryente 12v 1amp
Bago pumunta sa Project, tatalakayin namin ang tungkol sa GPS, GSM at Accelerometer.
Module ng GPS at Gumagawa Ito:
Ang GPS ay kumakatawan sa Global Positioning System at ginagamit upang makita ang Latitude at Longitud ng anumang lokasyon sa Earth, na may eksaktong oras ng UTC (Universal Time Coordinated). Ginagamit ang module ng GPS upang subaybayan ang lokasyon ng aksidente sa aming proyekto. Tumatanggap ang aparatong ito ng mga coordinate mula sa satellite para sa bawat segundo, na may oras at petsa. Nakuha namin dati ang $ GPGGA string sa Vehicle Tracking System upang makita ang Mga Coordinate ng Latitude at Longitude.
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 Command:
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 AT + CNMI = 2,2,0,0,0
(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)
Accelerometer:
Paglalarawan ng Pin ng accelerometer:
- Ang supply ng Vcc 5 volt ay dapat na kumonekta sa pin na ito.
- X-OUT Ang pin na ito ay nagbibigay ng isang output ng Analog sa x direksyon
- Y-OUT Ang pin na ito ay nagbibigay ng isang Analog Output sa direksyon
- Z-OUT Ang pin na ito ay nagbibigay ng isang Analog Output sa z na direksyon
- GND Ground
- ST Ang pin na ito ay ginamit para sa itinakdang pagiging sensitibo ng sensor
Suriin din ang aming iba pang mga proyekto gamit ang Accelerometer: Ping Pong Game gamit ang Arduino at Accelerometer Base Hand Gesture Controlled Robot.
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 10 ng Arduino. Sa pamamagitan ng paggamit ng Software Serial Library dito, pinayagan namin ang serial na komunikasyon sa pin 10 at 11, at ginawang Rx at Tx ayon sa pagkakabanggit at iniwan ang Rx pin ng GPS Module na bukas. Bilang default ang Pin 0 at 1 ng Arduino ay ginagamit para sa serial na komunikasyon ngunit sa pamamagitan ng paggamit ng library ng SoftwareSerial, maaari naming payagan ang serial na komunikasyon sa iba pang mga digital na pin ng Arduino. Ginagamit ang 12 Volt supply upang mapagana ang GPS Module.
Ang mga Tx at Rx pin ng GSM module ay direktang konektado sa pin D2 at D3 ng Arduino. Para sa interfacing ng GSM, narito din nagamit namin ang software serial library. Ang module ng GSM ay pinalakas din ng 12v supply. Ang mga opsyonal na data pin ng data na D4, D5, D6, at D7 ay konektado sa pin number 6, 7, 8, at 9 ng Arduino. Ang Command pin RS at EN ng LCD ay konektado sa pin number 4 at 5 ng Arduino at ang RW pin ay direktang konektado sa ground. Ginagamit din ang isang Potentiometer para sa pagtatakda ng kaibahan o ningning ng LCD.
Ang isang Accelerometer ay idinagdag sa sistemang ito para sa pagtuklas ng isang aksidente at ang mga x, y, at z-axis ADC output pin ay direktang konektado sa Arduino ADC pin A1, A2, at A3.
Paggawa ng Paliwanag:
Sa proyektong ito, ginagamit ang Arduino para sa pagkontrol ng buong proseso gamit ang isang GPS Receiver at GSM module. Ginagamit ang GPS Receiver para sa pagtuklas ng mga coordinate ng sasakyan, ginagamit ang module ng GSM para sa pagpapadala ng alerto na SMS kasama ang mga coordinate at ang link sa Google Map. Ang Accelerometer na ADXL335 ay ginagamit para sa pagtuklas ng aksidente o biglaang pagbabago sa anumang axis. At isang opsyonal na 16x2 LCD ay ginagamit din para sa pagpapakita ng mga mensahe sa katayuan o mga coordinate. Gumamit kami ng GPS Module SIM28ML at GSM Module SIM900A.
Kapag handa na kami sa aming hardware pagkatapos ng programa, maaari naming mai-install ito sa aming sasakyan at i-power up ito. Ngayon tuwing may aksidente, nakakagiling ang kotse at binabago ng accelerometer ang kanyang mga halaga ng axis. Ang mga halagang ito na binasa ng Arduino at sinusuri kung ang anumang pagbabago ay nangyayari sa anumang axis. Kung may anumang pagbabago na nagaganap pagkatapos basahin ni Arduino ang mga coordinate sa pamamagitan ng pagkuha ng $ GPGGA String mula sa data ng module ng GPS (ipinapaliwanag sa itaas na gumagana ang GPS) at ipadala ang SMS sa paunang natukoy na numero sa pulisya o ambulansya o miyembro ng pamilya na may mga lokasyon na naisaayos ng lugar ng aksidente. Naglalaman din ang mensahe ng isang link ng Google Map sa lokasyon ng aksidente, upang ang lokasyon na iyon ay madaling masubaybayan. Kapag natanggap namin ang mensahe kailangan lang naming i-click ang link at magre-redirect kami sa Google map at pagkatapos ay maaari naming makita ang eksaktong lokasyon ng sasakyan. Bilis ng Sasakyan, sa buhol(1.852 KPH), ipinapadala din sa SMS at ipinapakita sa LCD panel. Suriin ang buong Demo Video sa ibaba ng Project.
Dito sa proyektong ito, maitatakda namin ang pagiging sensitibo ng Accelerometer sa pamamagitan ng paglalagay ng min at max na halaga sa code.
Dito sa demo ay gumamit ng mga naibigay na halaga:
#tukoy minVal -50 # tukuyin ang MaxVal 50
Ngunit para sa mas mahusay na mga resulta maaari mong gamitin ang 200 sa lugar ng 50, o maaaring itakda alinsunod sa iyong kinakailangan.
Paliwanag sa Programming:
Ang Kumpletong Program ay ibinigay sa ibaba sa seksyon ng Code; dito namin ipinapaliwanag ang iba't ibang mga pag-andar nito nang maikling.
Una ay isinama namin ang lahat ng kinakailangang mga file ng library o header at idineklara ang iba't ibang mga variable para sa mga kalkulasyon at pansamantalang pagtatago ng data.
Pagkatapos nito, lumikha kami ng isang function na walang bisa initModule (String cmd, char * res, int t) upang gawing simula ang module ng GSM at suriin ang tugon nito gamit ang mga utos ng AT.
void initModule (String cmd, char * res, int t) {habang (1) {Serial.println (cmd); Serial1.println (cmd); pagkaantala (100); habang (Serial1.available ()> 0) {kung (Serial1.find (res)) {Serial.println (res); antala (t); bumalik; } iba pa {Serial.println ("Error"); }} pagkaantala (t); }}
Pagkatapos nito, sa walang bisa na pag- andar () na pag- andar, nasimulan namin ang komunikasyon sa serial at hardware at software, LCD, GPS, GSM module at accelerometer.
void setup () {Serial1.begin (9600); Serial.begin (9600); lcd.begin (16,2); lcd.print ("Alerto sa aksidente"); lcd.setCursor (0,1); lcd.print ("System"); pagkaantala (2000); lcd.clear ();…………………
Ang proseso ng pagkakalibrate ng accelerometer ay ginagawa rin sa pag- setup ng loop. Sa ito, kumuha kami ng ilang mga sample at pagkatapos ay hanapin ang average na mga halaga para sa x-axis, y-axis, at z-axis. At iimbak ang mga ito sa isang variable. Pagkatapos ay ginamit namin ang mga halimbawang halimbawang ito upang mabasa ang mga pagbabago sa axis ng accelerometer kapag nakakiling ang sasakyan (aksidente).
lcd.print ("Callibrating"); lcd.setCursor (0,1); lcd.print ("Acceleromiter"); para sa (int i = 0; i
Pagkatapos nito, sa pag- andar ng void loop () , nabasa namin ang mga halaga ng axis ng accelerometer at gumawa ng isang pagkalkula upang makuha ang mga pagbabago sa tulong ng mga sample na kinuha sa Pagkakalibrate. Ngayon kung ang anumang mga pagbabago ay higit pa o mas mababa pagkatapos ay tinukoy na antas pagkatapos Arduino ay nagpapadala ng isang mensahe sa paunang natukoy na numero.
void loop () {int value1 = analogRead (x); int halaga2 = analogRead (y); int halaga3 = 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);…………………
Nilikha rin namin ang ilang iba pang pag-andar para sa iba't ibang mga puposes tulad ng void gpsEvent () upang makakuha ng mga coordinate ng GPS, void coordinate2dec () para sa pagkuha ng mga coordinate mula sa GPS string at i-convert ito sa mga desimal na halaga, walang bisa ang show_coordinate () para sa pagpapakita ng mga halaga sa serial monitor at LCD, at sa wakas ay walang bisa ang Magpadala () para sa pagpapadala ng alerto na SMS sa paunang natukoy na numero.
Ang kumpletong code at demo na video ay ibinibigay sa ibaba, maaari mong suriin ang lahat ng mga pag-andar sa code.