Dalam tutorial sebelumnya, kita telah belajar tentang Bagaimana Menghubungkan Modul GPS dengan Komputer dan Cara Melacak Kendaraan Menggunakan GSM dan GPS. Kami juga membangun Sistem Peringatan Kecelakaan Kendaraan menggunakan Arduino dan akselerometer. Di sini kami kembali membangun proyek yang sama tetapi kali ini landasan peluncuran MSP430 dan sensor getaran akan digunakan untuk mendeteksi kecelakaan kendaraan. Jadi proyek ini juga akan menceritakan tentang menghubungkan sensor getaran dengan launchpad MSP430. Anda dapat menemukan lebih banyak proyek MSP430 di sini.
Disini modul sensor Getaran mendeteksi getaran kendaraan dan mengirimkan sinyal ke MSP430 Launchpad. Kemudian MSP430 mengambil data dari modul GPS dan mengirimkannya ke Ponsel pengguna melalui SMS menggunakan modul GSM. Sebuah LED juga akan menyala sebagai sinyal Peringatan Kecelakaan, LED ini dapat diganti dengan beberapa alarm. Lokasi kecelakaan dikirimkan dalam bentuk link Google Map, diperoleh dari latitude dan longitude dari modul GPS. Lihat Video Demo di bagian akhir.
Modul GPS mengirimkan data yang berhubungan dengan posisi pelacakan secara real time, dan mengirimkan banyak data dalam format NMEA (lihat gambar di bawah). Format NMEA terdiri dari beberapa kalimat, dimana kita hanya membutuhkan satu kalimat. Kalimat ini dimulai dari $ GPGGA dan berisi koordinat, waktu, dan informasi berguna lainnya. Ini GPGGA disebut Global Positioning System Fix data. Ketahui lebih banyak tentang kalimat NMEA dan membaca data GPS di sini.
Kita dapat mengekstrak koordinat dari string $ GPGGA dengan menghitung koma dalam string tersebut. Misalkan Anda menemukan string $ GPGGA dan menyimpannya dalam array, Latitude dapat ditemukan setelah dua koma dan Longitude dapat ditemukan setelah empat koma. Sekarang, lintang dan bujur ini bisa diletakkan di array lain.
Di bawah ini adalah String $ GPGGA, beserta deskripsinya:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47 $ GPGGA, HHMMSS.SSS, lintang, N, bujur, E, FQ, NOS, HDP, ketinggian, M, tinggi, M,, data checksum
Pengenal |
Deskripsi |
$ GPGGA |
Data perbaikan sistem Global Positioning |
HHMMSS.SSS |
Waktu dalam format jam menit detik dan milidetik. |
Garis Lintang |
Lintang (Koordinat) |
N |
Arah N = Utara, S = Selatan |
Garis bujur |
Bujur (Koordinat) |
E |
Arah E = Timur, W = Barat |
FQ |
Perbaiki Data Kualitas |
NOS |
Jumlah Satelit yang Digunakan |
HDP |
Pengenceran Horizontal Presisi |
Ketinggian |
Ketinggian (meter di atas permukaan laut) |
M |
Meter |
Tinggi |
Tinggi |
Checksum |
Data Checksum |
Modul GSM
SIM900 adalah Modul GSM / GPRS Quad-band lengkap yang dapat disematkan dengan mudah digunakan oleh pelanggan atau penghobi. Modul GSM SIM900 menyediakan antarmuka standar industri. SIM900 memberikan kinerja GSM / GPRS 850/900/1800 / 1900MHz untuk suara, SMS, Data dengan konsumsi daya yang rendah. Ini dengan mudah tersedia di pasar.
- SIM900 dirancang dengan menggunakan prosesor chip tunggal yang mengintegrasikan inti AMR926EJ-S
- Modul GSM / GPRS quad-band dalam ukuran kecil.
- GPRS Diaktifkan
AT Perintah
AT berarti PERHATIAN. Perintah ini digunakan untuk mengontrol modul GSM. Ada beberapa perintah untuk menelepon dan mengirim pesan yang telah kami gunakan di banyak proyek GSM sebelumnya dengan Arduino. Untuk menguji Modul GSM kami menggunakan perintah AT. Setelah menerima AT Command Modul GSM merespon dengan OK. Artinya modul GSM berfungsi dengan baik. Di bawah ini adalah beberapa perintah AT yang kami gunakan di sini dalam proyek ini:
ATE0 Untuk gema mati
DI + CNMI = 2,2,0,0,0
ATD
DI + CMGF = 1
AT + CMGS = "Nomor Ponsel"
>> Sekarang kita bisa menulis pesan kita
>> Setelah menulis pesan
Ctrl + Z mengirim perintah pesan (26 dalam desimal).
ENTER = 0x0d di HEX
(Untuk mempelajari lebih lanjut tentang modul GSM, Periksa berbagai proyek GSM kami dengan berbagai mikrokontroler di sini)
Modul Sensor Getaran
Dalam proyek Sistem Peringatan Kecelakaan MSP430 ini, kami telah menggunakan modul sensor getaran yang mendeteksi getaran atau modulasi mendadak. Modul sensor getaran memberikan output digital logika HIGH / LOW tergantung pada modulnya. Dalam kasus kami, kami telah menggunakan modul sensor getaran logika TINGGI aktif. Artinya, setiap kali sensor getaran mendeteksi getaran maka mikrokontroler akan diberi logika TINGGI.
Penjelasan Sirkuit
Sambungan Sirkuit Proyek Sistem Peringatan Kecelakaan Kendaraan ini sederhana. Di sini pin Tx modul GPS terhubung langsung ke nomor pin digital P1_1 dari MSP430 Launchpad (perangkat keras Serial) dan 5v digunakan untuk menyalakan Modul GPS. Dengan menggunakan Software Serial Library di sini, kami mengizinkan komunikasi serial pada pin P_6 dan P1_7, dan menjadikannya Rx dan Tx masing-masing dan terhubung ke modul GSM. Suplai 12 Volt digunakan untuk memberi daya pada Modul GSM. The getaran sensor terhubung pada P1_3. Sebuah LED juga digunakan untuk menunjukkan deteksi kecelakaan. Sisa koneksi ditunjukkan pada diagram sirkuit.
Penjelasan Pemrograman
Pemrograman untuk proyek ini mudah kecuali bagian GPS. Kode lengkap diberikan di akhir proyek. Untuk menulis atau mengkompilasi kode di MSP430 kami telah menggunakan Energia IDE yang kompatibel dengan Arduino. Sebagian besar fungsi Arduino IDE dapat digunakan langsung di Energia IDE ini.
Jadi pertama-tama kami telah menyertakan pustaka yang diperlukan dan menyatakan pin dan variabel.
#include
Fungsi yang diberikan digunakan untuk membaca sinyal sensor getaran. Fungsi ini akan menyaring getaran kecil atau palsu juga.
#define count_max 25 char SensorRead (int pin) // baca sw dengan debounce { char count_low = 0, count_high = 0; lakukan { delay (1); if (digitalRead (pin) == HIGH) { count_high ++; count_low = 0; } lain { count_high = 0; count_low ++; } } sementara (count_low <count_max && count_high <count_max); if (count_low> = count_max) return LOW; jika tidak kembali TINGGI; }
Fungsi di bawah ini mendeteksi getaran dan memanggil fungsi gpsEvent () untuk mendapatkan koordinat GPS dan terakhir memanggil fungsi Send () untuk mengirim SMS.
void loop () { if (SensorRead (VibrationSensor) == HIGH) { digitalWrite (led, HIGH); gpsEvent (); Kirim(); digitalWrite (led, LOW); penundaan (2000); } }
Fungsi yang diberikan bertanggung jawab untuk mendapatkan string GPS dari modul GPS, mengekstrak koordinat darinya dan mengubahnya dalam format derajat-desimal.
void gpsEvent () { char gpsString; tes karakter = "RMC"; i = 0; while (1) { while (Serial.available ()) // Data masuk serial dari GPS { char inChar = (char) Serial.read (); gpsString = inChar; // simpan data masuk dari GPS ke string temparary str i ++; if (i <4) { if (gpsString! = test) // periksa string kanan i = 0; }
int derajat = 0; derajat = gpsString-48; derajat * = 10; derajat + = 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); menit float = ((float) minut_int + ((float) minut_dec / 100000.0)) / 60.0; latitude = ((float) derajat + menit);
Dan terakhir, fungsi Send () digunakan untuk mengirim SMS ke nomor pengguna yang disisipkan di bagian kode ini.
batal Kirim () { GSM.print ("AT + CMGS ="); GSM.print ('"'); GSM.print (" 961 **** 059 "); // masukkan nomor Ponsel Anda GSM.println ('"'); penundaan (500); // GSM.print ("Latitude:"); // GSM.println (latitude); GSM.println ("Kecelakaan Terjadi"); penundaan (500); // GSM.print ("longitude:"); // GSM.println (logitude); GSM.println ("Klik pada link untuk melihat Lokasi"); 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.write (26); penundaan (4000); }
Kode lengkap dan video demo diberikan di bawah ini, Anda dapat memeriksa semua fungsi dalam kode.