- Komponen Diperlukan
- Modul GPS
- Pin dari STM32F103C8
- Diagram Sirkuit dan Koneksi
- Pemrograman STM32F103C8 untuk Antarmuka Modul GPS
- Menemukan Lintang dan Bujur dengan GPS dan STM32
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). Perangkat ini menerima koordinat dari satelit untuk setiap detik, dengan waktu dan tanggal. GPS menawarkan akurasi tinggi dan juga menyediakan data lain selain koordinat posisi.
Kita semua tahu bahwa GPS adalah perangkat yang sangat berguna dan sangat umum digunakan di ponsel dan perangkat portabel lainnya untuk melacak lokasi. Ini memiliki berbagai aplikasi yang sangat luas di setiap bidang mulai dari memanggil taksi di rumah Anda hingga melacak ketinggian pesawat. Berikut adalah beberapa proyek terkait GPS yang berguna, yang kami buat sebelumnya:
- Sistem Pelacakan Kendaraan
- Jam GPS
- Sistem Peringatan Deteksi Kecelakaan
- Tutorial Antarmuka Modul GPS Raspberry Pi
- Antarmuka Modul GPS dengan Mikrokontroler PIC
Di sini, di tutorial ini, kita akan melakukan Interface modul GPS dengan mikrokontroler STM32F103C8 untuk mencari koordinat lokasi dan menampilkannya pada layar LCD 16x2.
Komponen Diperlukan
- Mikrokontroler STM32F103C8
- Modul GPS
- Layar LCD 16x2
- Papan tempat memotong roti
- Menghubungkan Kabel
Modul GPS
Ini adalah Modul GPS GY-NEO6MV2 XM37-1612. Modul GPS ini memiliki empat pin + 5V, GND, TXD dan RXD. Ini berkomunikasi menggunakan pin Serial dan dapat dengan mudah dihubungkan dengan port Serial STM32F103C8.
Modul GPS mengirimkan 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 Membaca data GPS dan stringnya di sini.
Di bawah ini adalah salah satu contoh 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
Tetapi di sini, di tutorial ini, kami menggunakan pustaka GPS TinyGPSPlus yang mengekstrak semua informasi yang diperlukan dari kalimat NMEA, dan kami hanya perlu menulis baris kode sederhana untuk mendapatkan garis lintang dan bujur, yang akan kita lihat nanti di tutorial.
Pin dari STM32F103C8
Port komunikasi serial USART STM32F103C8 (BLUE PILL) ditunjukkan pada gambar pin di bawah. Ini memiliki warna biru (PA9-TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11- RX3). Ia memiliki tiga saluran komunikasi seperti itu.
Diagram Sirkuit dan Koneksi
Koneksi Sirkuit antara modul GPS & STM32F103C8
Modul GPS |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5V |
+ 5V |
GND |
GND |
Koneksi antara LCD 16x2 & STM32F103C8
Pin LCD Tidak Ada |
Nama Pin LCD |
Nama Pin STM32 |
1 |
Tanah (Gnd) |
Tanah (G) |
2 |
VCC |
5V |
3 |
VEE |
Pin dari Center of Potentiometer |
4 |
Register Select (RS) |
PB11 |
5 |
Baca / Tulis (RW) |
Tanah (G) |
6 |
Aktifkan (EN) |
PB10 |
7 |
Data Bit 0 (DB0) |
Tidak Ada Koneksi (NC) |
8 |
Data Bit 1 (DB1) |
Tidak Ada Koneksi (NC) |
9 |
Data Bit 2 (DB2) |
Tidak Ada Koneksi (NC) |
10 |
Data Bit 3 (DB3) |
Tidak Ada Koneksi (NC) |
11 |
Data Bit 4 (DB4) |
PB0 |
12 |
Data Bit 5 (DB5) |
PB1 |
13 |
Data Bit 6 (DB6) |
PC13 |
14 |
Data Bit 7 (DB7) |
PC14 |
15 |
LED Positif |
5V |
16 |
LED Negatif |
Tanah (G) |
Seluruh pengaturan akan terlihat seperti di bawah ini:
Pemrograman STM32F103C8 untuk Antarmuka Modul GPS
Program lengkap untuk mencari lokasi menggunakan modul GPS menggunakan STM32 diberikan di akhir proyek ini. STM32F103C8 dapat diprogram menggunakan Arduino IDE cukup dengan menghubungkannya ke PC melalui port USB. Pastikan untuk melepas pin TX dan RX saat mengupload kode dan menghubungkannya setelah mengupload.
Untuk menghubungkan GPS dengan STM32, pertama-tama kita harus mengunduh perpustakaan dari tautan GitHub TinyGPSPlus. Setelah mengunduh perpustakaan, itu dapat dimasukkan dalam Arduino IDE dengan ke Sketch -> Include Library -> Add.zip Library. Perpustakaan yang sama dapat digunakan untuk menghubungkan GPS dengan Arduino.
Jadi pertama-tama sertakan file perpustakaan yang diperlukan dan tentukan pin untuk LCD 16x2:
#include
Kemudian buat sebuah objek bernama gps dari kelas TinyGPSPlus.
GPS TinyGPSPlus;
Selanjutnya di pengaturan void , mulai komunikasi serial dengan modul GPS menggunakan Serial1.begin (9600). Serial1 digunakan sebagai port Serial 1 (Pins-PA9, PA10) dari STM32F103C8.
Serial1.begin (9600);
Kemudian tampilkan pesan selamat datang untuk beberapa waktu.
lcd.begin (16,2); lcd.print ("Circuit Digest"); lcd.setCursor (0,1); lcd.print ("STM32 dengan GPS"); penundaan (4000); lcd.clear ();
Selanjutnya pada void loop (), kita menerima latitude dan longitude dari GPS dan memeriksa apakah data yang diterima valid atau tidak dan menampilkan informasi di monitor serial dan LCD.
Memeriksa apakah data lokasi yang tersedia valid atau tidak
loc_valid = gps.location.isValid ();
Menerima data lintang
lat_val = gps.location.lat ();
Menerima data bujur
lng_val = gps.location.lng ();
Jika data yang diterima tidak valid, ini akan menampilkan "*****" di monitor serial dan menampilkan "menunggu" di LCD.
if (! loc_valid) { lcd.print ("Menunggu"); Serial.print ("Lintang:"); Serial.println ("*****"); Serial.print ("Bujur:"); Serial.println ("*****"); penundaan (4000); lcd.clear (); }
Jika data yang valid diterima, lintang dan bujur ditampilkan pada monitor serial serta pada layar LCD.
lcd.clear (); Serial.println ("GPS READING:"); Serial.print ("Lintang:"); Serial.println (lat_val, 6); lcd.setCursor (0,0); lcd.print ("LAT:"); lcd.print (lat_val, 6); Serial.print ("Bujur:"); Serial.println (lng_val, 6); lcd.setCursor (0,1); lcd.print ("PANJANG:"); lcd.print (lng_val, 6); penundaan (4000);
Fungsi berikut menyediakan penundaan untuk membaca data. Itu terus mencari data di port serial.
void statis GPSDelay (ms panjang unsigned) { unsigned long start = millis (); do { while (Serial1.available ()) gps.encode (Serial1.read ()); } sementara (milis () - mulai <ms); }
Menemukan Lintang dan Bujur dengan GPS dan STM32
Setelah membuat pengaturan dan mengunggah kode, pastikan untuk menempatkan modul GPS di area terbuka untuk menerima sinyal dengan cepat. Terkadang dibutuhkan beberapa menit untuk menerima sinyal jadi tunggu beberapa saat. LED akan mulai berkedip di modul GPS saat mulai menerima sinyal dan koordinat lokasi akan ditampilkan di layar LCD.
Anda dapat memverifikasi lintang dan bujur lokasi dengan menggunakan peta Google. Cukup Buka peta Google dengan GPS AKTIF dan klik pada titik biru. Ini akan menunjukkan alamat dengan garis lintang dan bujur seperti yang ditunjukkan pada gambar di bawah ini
The kode dan demonstrasi lengkap video yang diberikan di bawah ini.