- Komponen yang Diperlukan:
- Modul GPS dan Kerjanya:
- Modul GSM:
- Accelerometer:
- Penjelasan Litar:
- Penjelasan Kerja:
- Penjelasan Pengaturcaraan:
Dalam tutorial sebelumnya, kami telah belajar mengenai Cara menginterface modul GPS dengan Komputer, cara membina Jam GPS Arduino dan cara Melacak kenderaan menggunakan GSM dan GPS. Di sini, dalam projek ini, kita akan membina sistem amaran kemalangan kenderaan berdasarkan Arduino menggunakan GPS, GSM dan accelerometer. Accelerometer mengesan perubahan mendadak pada paksi kenderaan dan modul GSM menghantar mesej amaran di Telefon bimbit anda dengan lokasi kemalangan. Lokasi kemalangan dihantar dalam bentuk pautan Peta Google, berasal dari garis lintang dan garis bujur dari modul GPS. Mesej itu juga mengandungi kelajuan kenderaan dalam keadaan simpul. Lihat Video Demopada akhir. Projek amaran Kemalangan Kenderaan ini juga dapat digunakan sebagai Sistem Pelacakan dan banyak lagi, dengan hanya membuat sedikit perubahan pada perkakasan dan perisian.
Komponen yang Diperlukan:
- Arduino Uno
- Modul GSM (SIM900A)
- Modul GPS (SIM28ML)
- Accelerometer (ADXL335)
- LCD 16x2
- Bekalan Kuasa
- Wayar Penyambung
- 10 K-POT
- Papan roti atau PCB
- Bekalan kuasa 12v 1amp
Sebelum memasuki Projek, kita akan membincangkan mengenai GPS, GSM dan Accelerometer.
Modul GPS dan Kerjanya:
GPS bermaksud Sistem Penentududukan Global dan digunakan untuk mengesan Lintang dan Bujur dari mana-mana lokasi di Bumi, dengan waktu UTC yang tepat (Universal Time Coordinated). Modul GPS digunakan untuk mengesan lokasi kemalangan dalam projek kami. Peranti ini menerima koordinat dari satelit untuk setiap detik, dengan masa dan tarikh. Kami sebelum ini mengekstrak rentetan $ GPGGA di Vehicle Tracking System untuk mencari Koordinat Lintang dan Bujur.
Modul GPS menghantar data yang berkaitan dengan kedudukan penjejakan dalam masa nyata, dan mengirimkan begitu banyak data dalam format NMEA (lihat tangkapan skrin di bawah). Format NMEA terdiri daripada beberapa ayat, di mana kita hanya memerlukan satu ayat. Kalimat ini bermula dari $ GPGGA dan mengandungi koordinat, masa dan maklumat berguna lain. Ini GPGGA disebut Sistem Kedudukan Global Fix Data. Ketahui lebih lanjut mengenai ayat NMEA dan membaca data GPS di sini.
Kita boleh mengekstrak koordinat dari rentetan $ GPGGA dengan mengira koma dalam rentetan. Katakan anda menjumpai rentetan $ GPGGA dan menyimpannya dalam array, maka Latitud dapat dijumpai setelah dua koma dan Bujur dapat dijumpai setelah empat koma. Sekarang, garis lintang dan garis bujur ini boleh dimasukkan ke dalam tatasusunan yang lain.
Berikut adalah rentetan $ GPGGA, beserta keterangannya:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47 $ GPGGA, HHMMSS.SSS, garis lintang, N, garis bujur, E, FQ, NOS, HDP, ketinggian, M, tinggi, M,, data checksum
Pengenal |
Penerangan |
$ GPGGA |
Memperbaiki data sistem Penentududukan Global |
HHMMSS.SSS |
Masa dalam jam beberapa saat dan format milisaat. |
Latitud |
Lintang (Koordinat) |
N |
Arah N = Utara, S = Selatan |
Bujur |
Bujur (Koordinat) |
E |
Arah E = Timur, W = Barat |
FQ |
Betulkan Data Berkualiti |
NOS |
Bilangan Satelit yang Digunakan |
HDP |
Pencairan Ketepatan Mendatar |
Ketinggian |
Ketinggian (meter di atas dari permukaan laut) |
M |
Meter |
Ketinggian |
Ketinggian |
Checksum |
Data Checksum |
Modul GSM:
SIM900 adalah Modul GSM / GPRS Quad-band lengkap yang dapat disematkan dengan mudah digunakan oleh pelanggan atau penggemar. SIM900 GSM Module menyediakan antara muka standard industri. SIM900 memberikan prestasi GSM / GPRS 850/900/1800 / 1900MHz untuk suara, SMS, Data dengan penggunaan kuasa yang rendah. Ia mudah didapati di pasaran.
- SIM900 direka dengan menggunakan pemproses cip tunggal yang mengintegrasikan teras AMR926EJ-S
- Modul GSM / GPRS Quad - band dalam saiz kecil.
- GPRS Diaktifkan
Perintah AT:
AT bermaksud PERHATIAN. Perintah ini digunakan untuk mengawal modul GSM. Terdapat beberapa arahan untuk memanggil dan menghantar pesanan yang telah kami gunakan dalam banyak projek GSM kami sebelumnya dengan Arduino. Untuk menguji Modul GSM kami menggunakan arahan AT. Setelah menerima Modul GSM Perintah AT, balas dengan OK. Ini bermaksud modul GSM berfungsi dengan baik. Berikut adalah beberapa arahan AT yang kami gunakan di sini dalam projek ini:
ATE0 Untuk echo off AT + CNMI = 2,2,0,0,0
(Untuk mengetahui lebih lanjut mengenai modul GSM, Periksa pelbagai projek GSM kami dengan pelbagai pengawal mikro di sini)
Accelerometer:
Huraian Pin bagi pecutan:
- Bekalan Vcc 5 volt harus disambungkan pada pin ini.
- X-OUT Pin ini memberikan output Analog dalam arah x
- Y-OUT Pin ini memberikan Output Analog dalam arah y
- Z-OUT Pin ini memberikan Output Analog dalam arah z
- Tanah GND
- ST Pin ini digunakan untuk mengatur kepekaan sensor
Juga periksa projek kami yang lain menggunakan Accelerometer: Ping Pong Game menggunakan Arduino dan Accelerometer Based Hand Gesture Controlled Robot.
Penjelasan Litar:
Sambungan Litar Projek Sistem Makluman Kemalangan Kenderaan ini mudah. Di sini pin Tx modul GPS disambungkan secara langsung ke pin digital nombor 10 dari Arduino. Dengan menggunakan Perisian Serial Perpustakaan di sini, kami telah membenarkan komunikasi bersiri pada pin 10 dan 11, dan menjadikannya Rx dan Tx masing-masing dan membiarkan pin Rx dari Modul GPS terbuka. Secara lalai Pin 0 dan 1 dari Arduino digunakan untuk komunikasi bersiri tetapi dengan menggunakan perpustakaan SoftwareSerial, kami dapat membenarkan komunikasi bersiri pada pin digital lain dari Arduino. Bekalan 12 volt digunakan untuk menghidupkan Modul GPS.
Pin Tx dan Rx modul GSM disambungkan secara langsung ke pin D2 dan D3 dari Arduino. Untuk antarmuka GSM, di sini kami juga telah menggunakan perpustakaan siri perisian. Modul GSM juga dikuasakan oleh bekalan 12v. Satu pilihan LCD ini pin data D4, D5, D6 dan D7 disambungkan kepada pin nombor 6, 7, 8, dan 9 Arduino. Pin arahan RS dan EN LCD dihubungkan dengan pin nombor 4 dan 5 Arduino dan pin RW disambungkan secara langsung dengan tanah. Potentiometer juga digunakan untuk menetapkan kontras atau kecerahan LCD.
An Accelerometer ditambah dalam sistem ini untuk mengesan kemalangan dan x yang, y, dan z paksi pin output ADC dihubungkan secara terus ke Arduino ADC pin A1, A2 dan A3.
Penjelasan Kerja:
Dalam projek ini, Arduino digunakan untuk mengendalikan keseluruhan proses dengan penerima GPS dan modul GSM. Penerima GPS digunakan untuk mengesan koordinat kenderaan, modul GSM digunakan untuk mengirim SMS amaran dengan koordinat dan pautan ke Peta Google. Accelerometer iaitu ADXL335 digunakan untuk mengesan kemalangan atau perubahan mendadak pada sebarang paksi. LCD 16x2 pilihan juga digunakan untuk memaparkan mesej status atau koordinat. Kami telah menggunakan Modul GPS SIM28ML dan Modul GSM SIM900A.
Apabila kita siap dengan perkakasan kita setelah pengaturcaraan, kita dapat memasangnya di kenderaan kita dan mengaktifkannya. Setiap kali berlaku kecelakaan, kereta akan condong dan akselerometer mengubah nilai paksinya. Nilai-nilai ini dibaca oleh Arduino dan memeriksa sama ada perubahan berlaku pada paksi mana pun. Sekiranya ada perubahan berlaku, Arduino membaca koordinat dengan mengekstrak $ GPGGA String dari data modul GPS (kerja GPS dijelaskan di atas) dan menghantar SMS ke nombor yang telah ditentukan kepada polis atau ambulans atau ahli keluarga dengan koordinat lokasi tempat kemalangan. Pesan tersebut juga berisi tautan Peta Google ke lokasi kecelakaan, sehingga lokasi dapat dilacak dengan mudah. Apabila kami menerima mesej itu, kami hanya perlu mengklik pautan dan kami akan mengarahkan ke peta Google dan kemudian kami dapat melihat lokasi kenderaan yang tepat. Kelajuan Kenderaan, dalam simpulan(1.852 KPH), juga dikirim dalam SMS dan ditampilkan di panel LCD. Lihat Video Demo lengkap di bawah Projek.
Di sini, dalam projek ini, kita dapat menetapkan kepekaan Accelerometer dengan meletakkan nilai min dan maksimum dalam kod.
Di sini dalam demo telah menggunakan nilai yang diberikan:
#define minVal -50 #define MaxVal 50
Tetapi untuk hasil yang lebih baik anda dapat menggunakan 200 sebagai ganti 50, atau dapat mengatur sesuai dengan keperluan anda.
Penjelasan Pengaturcaraan:
Program Lengkap telah diberikan di bawah di bahagian Kod; di sini kita menerangkan pelbagai fungsinya secara ringkas.
Mula-mula kami memasukkan semua fail perpustakaan atau tajuk yang diperlukan dan menyatakan pelbagai pemboleh ubah untuk pengiraan dan menyimpan data sementara.
Selepas ini, kami telah membuat fungsi void initModule (String cmd, char * res, int t) untuk menginisialisasi modul GSM dan memeriksa tindak balasnya menggunakan perintah AT.
void initModule (String cmd, char * res, int t) {manakala (1) {Serial.println (cmd); Bersiri1.println (cmd); kelewatan (100); sementara (Serial1.available ()> 0) {if (Serial1.find (res)) {Serial.println (res); kelewatan (t); kembali; } lain {Serial.println ("Ralat"); }} kelewatan (t); }}
Setelah ini, dalam fungsi setup void () , kami telah memulakan komunikasi siri perkakasan dan perisian, LCD, GPS, modul GSM dan accelerometer.
batal persediaan () {Serial1.begin (9600); Serial.begin (9600); lcd.begin (16,2); lcd.print ("Makluman Kemalangan"); lcd.setCursor (0,1); lcd.print ("Sistem"); kelewatan (2000); lcd.clear ();…………………
Proses penentukuran Accelerometer juga dilakukan dalam gelung persediaan . Dalam ini, kami telah mengambil beberapa sampel dan kemudian mencari nilai purata bagi paksi-x, paksi-y, dan paksi-z. Dan simpan dalam pemboleh ubah. Kemudian kami telah menggunakan nilai sampel ini untuk membaca perubahan pada paksi pecutan ketika kenderaan mengalami kecondongan (kemalangan).
lcd.print ("Callibrating"); lcd.setCursor (0,1); lcd.print ("Acceleromiter"); untuk (int i = 0; i
Selepas ini, dalam fungsi gelung void () , kami telah membaca nilai paksi pecutan dan melakukan pengiraan untuk mengekstrak perubahan dengan bantuan sampel yang diambil dalam Kalibrasi. Sekarang jika ada perubahan yang lebih kurang dari tahap yang ditentukan maka Arduino akan menghantar mesej ke nombor yang telah ditentukan.
gelung void () {int value1 = analogRead (x); int value2 = analogRead (y); int value3 = 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);…………………
Di sini kita juga telah mencipta beberapa fungsi lain untuk pelbagai puposes seperti gpsEvent tidak sah () untuk mendapatkan koordinat GPS, coordinate2dec tidak sah () untuk mengeluarkan koordinat dari rentetan GPS dan menukar mereka ke dalam nilai-nilai Decimal, show_coordinate tidak sah () untuk memaparkan nilai lebih monitor siri dan LCD, dan akhirnya Kirim yang kosong () untuk menghantar SMS amaran ke nombor yang telah ditentukan.
Kod lengkap dan video demo diberikan di bawah, anda boleh menyemak semua fungsi dalam kod tersebut.