- Komponen yang Dibutuhkan:
- Modul GPS dan Cara Kerjanya:
- Modul GSM:
- Akselerometer:
- Penjelasan Sirkuit:
- Penjelasan Kerja:
- Penjelasan Pemrograman:
Dalam tutorial kami sebelumnya, kami telah belajar tentang Cara menghubungkan modul GPS dengan Komputer, cara membuat Jam Arduino GPS dan cara Melacak kendaraan menggunakan GSM dan GPS. Di sini, di proyek ini, kami akan membangun sistem peringatan kecelakaan kendaraan berbasis Arduino menggunakan GPS, GSM dan akselerometer. Accelerometer mendeteksi perubahan mendadak pada sumbu kendaraan dan modul GSM mengirimkan pesan peringatan di Ponsel Anda dengan lokasi kecelakaan. Lokasi kecelakaan dikirimkan dalam bentuk link Google Map, diperoleh dari latitude dan longitude dari modul GPS. Pesan tersebut juga berisi tentang kecepatan kendaraan dalam satuan knot. Lihat Video Demopada akhirnya. Proyek peringatan Kecelakaan Kendaraan ini juga dapat digunakan sebagai Sistem Pelacakan dan banyak lagi, hanya dengan membuat sedikit perubahan pada perangkat keras dan perangkat lunak.
Komponen yang Dibutuhkan:
- Arduino Uno
- Modul GSM (SIM900A)
- Modul GPS (SIM28ML)
- Akselerometer (ADXL335)
- LCD 16x2
- Sumber Daya listrik
- Menghubungkan Kabel
- 10 K-POT
- Breadboard atau PCB
- Catu daya 12v 1amp
Sebelum masuk ke Project, kita akan membahas tentang GPS, GSM dan Accelerometer.
Modul GPS dan Cara Kerjanya:
GPS adalah singkatan dari Global Positioning System dan digunakan untuk mendeteksi Lintang dan Bujur dari lokasi mana pun di Bumi, dengan waktu UTC yang tepat (Waktu Universal Terkoordinasi). Modul GPS digunakan untuk melacak lokasi kecelakaan di proyek kami. Perangkat ini menerima koordinat dari satelit untuk setiap detik, dengan waktu dan tanggal. Kami sebelumnya telah mengekstrak string $ GPGGA di Sistem Pelacakan Kendaraan untuk menemukan Koordinat Lintang dan Bujur.
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
DI 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 AT + CNMI = 2,2,0,0,0
(Untuk mempelajari lebih lanjut tentang modul GSM, Periksa berbagai proyek GSM kami dengan berbagai mikrokontroler di sini)
Akselerometer:
Pin Deskripsi accelerometer:
- Suplai Vcc 5 volt harus terhubung pada pin ini.
- X-OUT Pin ini memberikan keluaran Analog dalam arah x
- Y-OUT Pin ini memberikan Output Analog dalam arah y
- Z-OUT Pin ini memberikan Output Analog dalam arah z
- GND Ground
- ST Pin ini digunakan untuk mengatur sensitivitas sensor
Juga periksa proyek kami yang lain menggunakan Accelerometer: Game Ping Pong menggunakan Arduino dan Robot Kontrol Gerakan Tangan Berbasis Accelerometer.
Penjelasan Sirkuit:
Sambungan Sirkuit Proyek Sistem Peringatan Kecelakaan Kendaraan ini sederhana. Di sini pin Tx modul GPS terhubung langsung ke pin digital nomor 10 Arduino. Dengan menggunakan Software Serial Library di sini, kami mengizinkan komunikasi serial pada pin 10 dan 11, dan menjadikannya Rx dan Tx masing-masing dan membiarkan pin Rx Modul GPS terbuka. Secara default Pin 0 dan 1 Arduino digunakan untuk komunikasi serial tetapi dengan menggunakan pustaka SoftwareSerial, kami dapat mengizinkan komunikasi serial pada pin digital Arduino lainnya. Suplai 12 Volt digunakan untuk memberi daya pada Modul GPS.
Pin Tx dan Rx modul GSM terhubung langsung ke pin D2 dan D3 Arduino. Untuk interface GSM, disini kami juga menggunakan software serial library. Modul GSM juga didukung oleh pasokan 12v. Sebuah LCD opsional ini data pin D4, D5, D6, dan D7 terhubung ke pin nomor 6, 7, 8, dan 9 dari Arduino. Pin perintah RS dan EN LCD dihubungkan dengan pin nomor 4 dan 5 dari Arduino dan pin RW terhubung langsung dengan ground. Potensiometer juga digunakan untuk mengatur kontras atau kecerahan LCD.
Sebuah Accelerometer ditambahkan dalam sistem ini untuk mendeteksi kecelakaan dan x-nya, y, dan z-sumbu pin output ADC langsung terhubung ke Arduino ADC pin A1, A2, dan A3.
Penjelasan Kerja:
Dalam proyek ini, Arduino digunakan untuk mengontrol seluruh proses dengan penerima GPS dan modul GSM. Penerima GPS digunakan untuk mendeteksi koordinat kendaraan, modul GSM digunakan untuk mengirimkan SMS peringatan dengan koordinat dan link ke Google Map. Accelerometer yaitu ADXL335 digunakan untuk mendeteksi kecelakaan atau perubahan mendadak pada sumbu apapun. Dan LCD 16x2 opsional juga digunakan untuk menampilkan pesan status atau koordinat. Kami telah menggunakan Modul GPS SIM28ML dan Modul GSM SIM900A.
Ketika kita siap dengan perangkat keras kita setelah pemrograman, kita dapat memasangnya di kendaraan kita dan menyalakannya. Sekarang setiap kali terjadi kecelakaan, mobil akan miring dan akselerometer mengubah nilai porosnya. Nilai-nilai ini dibaca oleh Arduino dan memeriksa apakah ada perubahan yang terjadi di sumbu mana pun. Jika terjadi perubahan maka Arduino membaca koordinat dengan mengekstrak $ GPGGA String dari data modul GPS (GPS berfungsi dijelaskan di atas) dan mengirim SMS ke nomor yang telah ditentukan ke polisi atau ambulans atau anggota keluarga dengan koordinat lokasi tempat kecelakaan. Pesan tersebut juga berisi link Google Map ke lokasi kecelakaan, sehingga lokasi dapat dilacak dengan mudah. Ketika kita menerima pesan tersebut maka kita hanya perlu mengklik link tersebut dan kita akan mengarahkan ke peta Google dan kemudian kita bisa melihat lokasi kendaraan yang tepat. Kecepatan Kendaraan, dalam satuan knot(1,852 KPH), juga dikirim dalam SMS dan ditampilkan pada panel LCD. Lihat Video Demo lengkap di bawah Proyek.
Di sini, di proyek ini, kita dapat mengatur sensitivitas Accelerometer dengan memasukkan nilai min dan max dalam kode.
Di sini, di demo telah menggunakan nilai yang diberikan:
# tentukan minVal -50 # tentukan MaxVal 50
Tetapi untuk hasil yang lebih baik Anda dapat menggunakan 200 sebagai pengganti 50, atau dapat diatur sesuai kebutuhan Anda.
Penjelasan Pemrograman:
Program Lengkap telah diberikan di bawah ini di bagian Kode; di sini kami menjelaskan berbagai fungsinya secara singkat.
Pertama kita telah memasukkan semua perpustakaan atau file header yang diperlukan dan menyatakan berbagai variabel untuk perhitungan dan menyimpan data sementara.
Setelah ini, kami telah membuat fungsi void initModule (String cmd, char * res, int t) untuk menginisialisasi modul GSM dan memeriksa responsnya menggunakan perintah AT.
void initModule (String cmd, char * res, int t) {while (1) {Serial.println (cmd); Serial1.println (cmd); penundaan (100); sementara (Serial1.available ()> 0) {if (Serial1.find (res)) {Serial.println (res); penundaan (t); kembali; } else {Serial.println ("Error"); }} penundaan (t); }}
Setelah ini, pada fungsi void setup () , kita telah menginisialisasi komunikasi serial hardware dan software, LCD, GPS, modul GSM dan akselerometer.
batal penyiapan () {Serial1.begin (9600); Serial.begin (9600); lcd.begin (16,2); lcd.print ("Peringatan Kecelakaan"); lcd.setCursor (0,1); lcd.print ("Sistem"); penundaan (2000); lcd.clear ();…………………
Proses kalibrasi akselerometer juga dilakukan dalam setup loop. Dalam hal ini, kami telah mengambil beberapa sampel dan kemudian menemukan nilai rata-rata untuk sumbu x, sumbu y, dan sumbu z. Dan simpan dalam variabel. Kemudian kami menggunakan nilai sampel ini untuk membaca perubahan sumbu akselerometer saat kendaraan mengalami kemiringan (kecelakaan).
lcd.print ("Callibrating"); lcd.setCursor (0,1); lcd.print ("Akseleromiter"); untuk (int i = 0; i
Setelah ini, pada fungsi void loop () , kita telah membaca nilai sumbu akselerometer dan melakukan perhitungan untuk mengekstrak perubahan dengan bantuan sampel yang diambil di Kalibrasi. Sekarang jika ada perubahan yang lebih atau kurang dari level yang ditentukan maka Arduino mengirim pesan ke nomor yang telah ditentukan.
void loop () {int value1 = analogRead (x); int nilai2 = analogRead (y); int nilai3 = 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 kami juga telah membuat beberapa fungsi lain untuk berbagai fungsi seperti void gpsEvent () untuk mendapatkan koordinat GPS, void coordinate2dec () untuk mengekstraksi koordinat dari string GPS dan mengubahnya menjadi nilai Desimal, void show_coordinate () untuk menampilkan nilai melalui monitor serial dan LCD, dan terakhir Batal Kirim () untuk mengirim SMS peringatan ke nomor yang telah ditentukan.
Kode lengkap dan video demo diberikan di bawah ini, Anda dapat memeriksa semua fungsi dalam kode.