- Komponen Diperlukan
- Modul GPS
- Pin keluar dari STM32F103C8
- Diagram dan Sambungan Litar
- Pengaturcaraan STM32F103C8 untuk Interface antara Modul GPS
- Mencari Lintang dan Bujur dengan GPS dan STM32
GPS bermaksud Sistem Penentududukan Global dan digunakan untuk mengesan Lintang dan Bujur dari mana-mana lokasi di Bumi, dengan masa UTC yang tepat (Universal Time Coordinated). Peranti ini menerima koordinat dari satelit untuk setiap detik, dengan masa dan tarikh. GPS menawarkan ketepatan yang hebat dan juga memberikan data lain selain koordinat kedudukan.
Kita semua tahu bahawa GPS adalah peranti yang sangat berguna dan sangat biasa digunakan dalam telefon bimbit dan peranti mudah alih lain untuk mengesan lokasi. Ini memiliki berbagai macam aplikasi di setiap bidang mulai dari memanggil teksi di rumah anda untuk mengesan ketinggian kapal terbang. Berikut adalah beberapa projek berkaitan GPS yang berguna, yang kami bina sebelumnya:
- Sistem Penjejakan Kenderaan
- Jam GPS
- Sistem Makluman Pengesanan Kemalangan
- Tutorial Antaramuka Modul GPS Raspberry Pi
- Modul GPS antara muka dengan PIC Microcontroller
Di sini dalam tutorial ini, kita akan Mengkhubungkan modul GPS dengan mikrokontroler STM32F103C8 untuk mencari koordinat lokasi dan memaparkannya pada paparan LCD 16x2.
Komponen Diperlukan
- Pengawal Mikro STM32F103C8
- Modul GPS
- Paparan LCD 16x2
- Papan roti
- Wayar Penyambung
Modul GPS
Ia adalah Modul GPS GY-NEO6MV2 XM37-1612. Modul GPS ini mempunyai empat pin + 5V, GND, TXD dan RXD. Ia berkomunikasi menggunakan pin Serial dan dapat dihubungkan dengan mudah dengan port Serial STM32F103C8.
Modul GPS menghantar 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 Membaca data GPS dan rentetan di sini.
Berikut adalah satu contoh String $ 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
Tetapi di sini dalam tutorial ini, kita menggunakan pustaka GPS TinyGPSPlus yang mengekstrak semua maklumat yang diperlukan dari ayat NMEA, dan kita hanya perlu menulis sebaris kod yang mudah untuk mendapatkan garis lintang dan garis bujur, yang akan kita lihat kemudian dalam tutorial.
Pin keluar dari STM32F103C8
Port komunikasi bersiri USART STM32F103C8 (BLUE PILL) ditunjukkan dalam gambar pin out di bawah. Ini berwarna biru mempunyai (PA9-TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11- RX3). Ia mempunyai tiga saluran komunikasi seperti itu.
Diagram dan Sambungan Litar
Sambungan Litar antara modul GPS & STM32F103C8
Modul GPS |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5V |
+ 5V |
GND |
GND |
Sambungan antara 16x2 LCD & STM32F103C8
No Pin LCD |
Nama Pin LCD |
Nama Pin STM32 |
1 |
Tanah (Gnd) |
Tanah (G) |
2 |
VCC |
5V |
3 |
VEE |
Pin dari Pusat Potensiometer |
4 |
Daftar Pilih (RS) |
PB11 |
5 |
Baca / Tulis (RW) |
Tanah (G) |
6 |
Aktifkan (EN) |
PB10 |
7 |
Bit Data 0 (DB0) |
Tiada Sambungan (NC) |
8 |
Bit Data 1 (DB1) |
Tiada Sambungan (NC) |
9 |
Bit Data 2 (DB2) |
Tiada Sambungan (NC) |
10 |
Bit Data 3 (DB3) |
Tiada Sambungan (NC) |
11 |
Bit Data 4 (DB4) |
PB0 |
12 |
Bit Data 5 (DB5) |
PB1 |
13 |
Bit Data 6 (DB6) |
PC13 |
14 |
Bit Data 7 (DB7) |
PC14 |
15 |
Positif LED |
5V |
16 |
Negatif LED |
Tanah (G) |
Keseluruhan persediaan akan kelihatan seperti di bawah:
Pengaturcaraan STM32F103C8 untuk Interface antara Modul GPS
Program lengkap untuk mencari lokasi menggunakan modul GPS menggunakan STM32 diberikan pada akhir projek ini. STM32F103C8 dapat diprogramkan menggunakan Arduino IDE dengan hanya menghubungkannya ke PC melalui port USB. Pastikan mengeluarkan pin TX dan RX semasa memuat naik kod dan sambungkannya selepas memuat naik.
Untuk menghubungkan GPS dengan STM32, pertama kita harus memuat turun perpustakaan dari pautan GitHub TinyGPSPlus. Setelah memuat turun perpustakaan, ia dapat dimasukkan ke dalam Arduino IDE ke Sketch -> Include Library -> Add.zip Library. Perpustakaan yang sama dapat digunakan untuk menghubungkan GPS dengan Arduino.
Oleh itu, sertakan terlebih dahulu fail perpustakaan yang diperlukan dan tentukan pin untuk LCD 16x2:
#sertakan
Kemudian buat objek bernama gps kelas TinyGPSPlus.
TinyGPSPlus gps;
Selanjutnya dalam penyediaan kekosongan , mulakan komunikasi bersiri dengan modul GPS menggunakan Serial1.begin (9600). Serial1 digunakan sebagai port Serial 1 (Pin-PA9, PA10) dari STM32F103C8.
Bersiri1.begin (9600);
Kemudian paparkan mesej selamat datang untuk beberapa lama.
lcd.begin (16,2); lcd.print ("Litar Digest"); lcd.setCursor (0,1); lcd.print ("STM32 dengan GPS"); kelewatan (4000); lcd.clear ();
Selanjutnya dalam gelung void (), kami menerima garis lintang dan garis bujur dari GPS dan memeriksa sama ada data yang diterima adalah sah atau tidak dan memaparkan maklumat di monitor bersiri dan LCD.
Memeriksa sama ada data lokasi yang ada sah atau tidak
loc_valid = gps.location.isValid ();
Menerima data lintang
lat_val = gps.location.lat ();
Menerima data garis bujur
lng_val = gps.location.lng ();
Sekiranya data tidak sah diterima, ia akan memaparkan "*****" di monitor bersiri dan memaparkan "menunggu" dalam LCD.
jika (! loc_valid) { lcd.print ("Menunggu"); Serial.print ("Latitud:"); Serial.println ("*****"); Serial.print ("Bujur:"); Serial.println ("*****"); kelewatan (4000); lcd.clear (); }
Sekiranya data yang sah diterima, garis lintang dan garis bujur dipaparkan pada monitor bersiri dan juga pada paparan LCD.
lcd.clear (); Serial.println ("GPS MEMBACA:"); Serial.print ("Latitud:"); 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); kelewatan (4000);
Fungsi berikut memberikan kelewatan untuk membaca data. Ia terus mencari data di port bersiri.
kelewatan statik GPSDelay (ms panjang tidak ditandatangani) { permulaan panjang tidak ditandatangani = milis (); lakukan { while (Serial1.available ()) gps.encode (Serial1.read ()); } sementara (milis () - mula <ms); }
Mencari Lintang dan Bujur dengan GPS dan STM32
Setelah membina penyediaan dan memuat naik kod, pastikan meletakkan modul GPS di kawasan terbuka untuk menerima isyarat dengan pantas. Kadang-kadang memerlukan beberapa minit untuk menerima isyarat jadi tunggu sebentar. LED akan mula berkedip di modul GPS apabila mula menerima isyarat dan koordinat lokasi akan dipaparkan pada paparan LCD.
Anda boleh mengesahkan garis lintang dan garis bujur lokasi dengan menggunakan peta Google. Cukup Pergi ke peta Google dengan GPS dihidupkan dan klik pada titik biru. Ia akan menunjukkan alamat dengan garis lintang dan garis bujur seperti yang ditunjukkan dalam gambar di bawah
The kod dan demonstrasi video lengkap diberikan di bawah.