Menghubungkan Arduino Mega ke Modul GPS NEO‑6M: Panduan Langkah demi Langkah
Komponen dan Perlengkapan
- Arduino Mega 2560 – 1 unit
- Modul GPS u-blox NEO-6M – 1 unit
Aplikasi dan Layanan Online
Tentang Proyek Ini
Saya menemukan tidak ada tutorial untuk antarmuka Arduino Mega dengan modul GPS NEO-6M jadi saya memutuskan untuk membuat satu. Semoga Anda suka!
Komponen yang Diperlukan
Hardware
- Arduino Mega ==> $ 30
- Modul GPS Neo-6M ==> $ 30
Software
Total biaya proyek ini adalah $60.
Informasi tentang GPS
Apa itu GPS?
Sistem Posisi Global (GPS) adalah sistem navigasi berbasis satelit yang terdiri dari sekurang-kurangnya 24 satelit. GPS bekerja dalam setiap kondisi cuaca, di mana saja di dunia, 24 jam sehari, tanpa biaya langganan atau biaya instalasi.
Cara kerja GPS
Satelit GPS mengorbit Bumi dua kali sehari dalam orbit yang tepat. Setiap satelit transmits sinyal unik dan parameter orbital yang memungkinkan perangkat GPS untuk mendekode dan menghitung lokasi tepat satelit. Penerima GPS menggunakan informasi ini dan trilaterasi untuk menghitung lokasi tepat pengguna. Pada dasarnya, penerima GPS mengukur jarak ke setiap satelit berdasarkan waktu yang dibutuhkan untuk menerima sinyal yang ditransmisikan. Dengan pengukuran jarak dari beberapa satelit lainnya, penerima dapat menentukan posisi pengguna dan menampilkannya.
Untuk menghitung posisi 2-D Anda (lintasan dan bujur) dan melacak pergerakan, penerima GPS harus terkunci pada sinyal dari sekurang-kurangnya 3 satelit. Dengan 4 satelit atau lebih, penerima dapat menentukan posisi 3-D Anda (lintasan, bujur dan ketinggian). Secara umum, penerima GPS akan melacak 8 satelit atau lebih, tetapi itu tergantung pada waktu hari dan di mana Anda berada di bumi. Setelah posisi Anda telah ditentukan, unit GPS dapat menghitung informasi lain, seperti:
- Kecepatan
- Bearing
- Track
- Jarak perjalanan
- Jarak ke tujuan
Apa itu sinyal
Satelit GPS transmits setidaknya 2 sinyal radio daya rendah. Sinyal ini bejalan garis lurus, berarti mereka akan melewati awan, kaca dan plastik tetapi tidak akan melewati sebagian besar objek padat, seperti bangunan dan pegunungan. Namun, penerima modern lebih sensitif dan biasanya dapat melacak melalui rumah. Sinyal GPS berisi 3 tipe informasi yang berbeda
Ini adalah kode I.D. yang mengidentifikasi satelit mana yang mengirimkan informasi. Anda dapat melihat satelit mana yang Anda terima sinyalnya pada halaman satelit perangkat Anda.
Data Ephemeris diperlukan untuk menentukan posisi satelit dan memberikan informasi penting tentang kesehatan satelit, tanggal dan waktu saat ini.
Data Almanac memberi tahu penerima GPS di mana setiap satelit GPS harus berada setiap saat sepanjang hari dan menunjukkan informasi orbital untuk satelit itu dan setiap satelit lain dalam sistem.
Modul GPS Neo-6M
Modul GPS NEO-6M ditunjukkan dalam gambar di bawah ini. Ini datang dengan anten eksternal dan tidak datang dengan pin header. Jadi Anda akan perlu mematangnya.
Gambaran Umum Modul GPS NEO-6M
Jantung modul adalah chip GPS NEO-6M dari u-blox. Ini dapat melacak hingga 22 satelit pada 50 saluran dan mencapai tingkat sensitivitas tertinggi industri yaitu -161 dB tracking, sambil hanya mengonsumsi arus suplai 45mA. Mesin posisi u-blox 6 juga memiliki Time-To-First-Fix (TTFF) di bawah 1 detik. Salah satu fitur terbaik yang disediakan chip adalah Mode Hemat Daya (PSM). Ini memungkinkan pengurangan konsumsi daya sistem dengan secara selektif mematikan dan menyala bagian-bagian penerima. Ini secara dramatis mengurangi konsumsi daya modul hingga hanya 11mA membuatnya cocok untuk aplikasi sensitif daya seperti jam tangan GPS. Pin data yang diperlukan dari chip GPS NEO-6M dipecat ke "0.1″ pitch headers. Ini termasuk pin yang diperlukan untuk komunikasi dengan mikrokontroler melalui UART.
Catatan: Modul mendukung baud rate dari 4800bps hingga 230400bps dengan baud default 9600.
Indikator LED Posisi Fix
Ada LED pada Modul GPS NEO-6M yang menunjukkan status Posisi Fix. LED akan berkedip dengan tingkat yang berbeda tergantung pada keadaan yang dihadapinya
- Tidak Berkedip ==> berarti sedang mencari satelit
- Berkedip setiap 1 detik – berarti Posisi Fix ditemukan
Tegangan operasi chip NEO-6M adalah dari 2.7 hingga 3.6V. Namun, modul datang dengan regulator ultra-low dropout 3V3 MIC5205 dari MICREL. Pin logika juga tahan 5 volt, jadi kita dapat dengan mudah menghubungkannya ke Arduino atau mikrokontroler logika 5V lainnya tanpa menggunakan konverter level logika.
Baterai & EEPROM
Modul dilengkapi dengan EEPROM serial dua kawat HK24C32. Ukurannya 4KB dan terhubung ke chip NEO-6M melalui I2C. Modul juga berisi baterai tombol bisa charges yang bertindak sebagai super-kapasitor.
EEPROM bersama dengan baterai membantu mempertahankan RAM yang didukung baterai (BBR). BBR berisi data jam, data posisi terbaru (data GNSS atau bit) dan konfigurasi modul. Namun, itu tidak dimaksudkan untuk penyimpanan data permanen.
Karena baterai mempertahankan jam dan posisi terakhir, waktu ke fix pertama (TTFF) secara signifikan berkurang menjadi 1 detik. Ini memungkinkan kunci posisi yang jauh lebih cepat.
Tanpa baterai GPS selalu cold-start jadi kunci GPS awal membutuhkan lebih banyak waktu. Baterai secara otomatis diisi saat daya diterapkan dan mempertahankan data selama hingga dua minggu tanpa daya.
Pinout
- GND adalah Pin Ground dan perlu terhubung ke pin GND pada Arduino.
- TxD (Transmitter) pin digunakan untuk komunikasi serial.
- RxD (Receiver) pin digunakan untuk komunikasi serial.
- VCC menyuplai daya untuk modul. Anda dapat langsung menghubungkannya ke pin 5V pada Arduino.
Arduino Mega
Arduino adalah platform elektronik open-source berdasarkan perangkat keras dan lunak yang mudah digunakan. Papan Arduino dapat membaca input - cahaya pada sensor, jari pada tombol, atau pesan Twitter - dan mengubahnya menjadi output - mengaktifkan motor, menyalakan LED, mempublikasikan sesuatu online. Anda dapat memberitahu papan Anda apa yang harus dilakukan dengan mengirimkan sekumpulan instruksi ke mikrokontroler pada papan. Untuk melakukannya Anda menggunakan bahasa pemrograman Arduino (berdasarkan Wiring), dan Perangkat Lunak Arduino (IDE), berdasarkan Processing.
Arduino Mega 2560 adalah Papan Mikrokontroler berdasarkan Atmega2560.
- Ada 54 pin I/O digital dan 16 pin analog yang diintegrasikan pada papan yang membuat perangkat ini unik dan menonjol dari yang lain. Dari 54 I/O digital, 15 digunakan untuk PWM (modulasi lebar pulsa).
- Oscilator kristal dengan frekuensi 16MHz.
- Papan datang dengan port kabel USB yang digunakan untuk menghubungkan dan mentransfer kode dari komputer ke papan.
- Jack daya DC dikombinasikan dengan papan yang digunakan untuk menyala papan.
- Papan datang dengan dua regulator tegangan yaitu 5V dan 3.3V yang memberikan fleksibilitas untuk mengatur tegangan sesuai kebutuhan.
- Ada tombol reset dan 4 port serial hardware yang disebut USART yang menghasilkan kecepatan maksimum untuk menyiapkan komunikasi.
- Ada tiga cara untuk menyala papan. Anda dapat menggunakan kabel USB untuk menyala papan dan mentransfer kode ke papan atau Anda dapat menyala papan menggunakan Vin dari papan atau melalui Power jack atau baterai.
Spesifikasi
Pinout
Deskripsi Pin
- 5V & 3.3V ==> Pin ini digunakan untuk menyediakan output tegangan teratur sekitar 5V. Sumber daya teratur ini menyala kontroler dan komponen lain pada papan. Ini dapat diperoleh dari Vin dari papan atau kabel USB atau sumber daya tegangan teratur 5V lainnya. Sementara regulasi tegangan lain disediakan oleh pin 3.3V. Daya maksimum yang dapat ditarik adalah 50mA.
- GND ==> Ada 5 pin ground yang tersedia pada papan yang membuatnya berguna ketika lebih dari satu pin ground diperlukan untuk proyek.
- Reset ==> Pin ini digunakan untuk mereset papan. Mengatur pin ini ke LOW akan mereset papan.
- Vin ==> Ini adalah tegangan input yang disuplai ke papan yang bervariasi dari 7V hingga 20V. Tegangan yang disediakan oleh jack daya dapat diakses melalui pin ini. Namun, output tegangan melalui pin ini ke papan akan secara otomatis diatur hingga 5V.
- Komunikasi Serial ==> RXD dan TXD adalah pin serial yang digunakan untuk transmit dan menerima data serial yaitu Rx mewakili transmit data sementara Tx digunakan untuk menerima data. Ada empat kombinasi pin serial ini digunakan di mana Serial 0 berisi RX(0) dan TX(1), Serial 1 berisi TX(18) dan RX(19), Serial 2 berisi TX(16) dan RX(17), dan Serial 3 berisi TX(14) dan RX(15).
- Interupsi Eksternal ==> Enam pin digunakan untuk membuat interupsi eksternal yaitu interrupt 0(0), interrupt 1(3), interrupt 2(21), interrupt 3(20), interrupt 4(19), interrupt 5(18). Pin ini menghasilkan interupsi dengan beberapa cara yaitu memberikan nilai LOW, tepi naik atau jatuh atau mengubah nilai ke pin interupsi.
- LED ==> Papan ini datang dengan LED built-in yang terhubung ke pin digital 13. Nilai HIGH pada pin ini akan menyalakan LED dan nilai LOW akan mematikannya.
- AREF ==> AREF singkatan dari Analog Reference Voltage yang adalah tegangan referensi untuk input analog.
- Pin Analog ==> Ada 16 pin analog yang diintegrasikan pada papan yang dilabeli A0 hingga A15. Penting untuk dicatat bahwa semua pin analog ini dapat digunakan sebagai pin I/O digital. Setiap pin analog datang dengan resolusi 10-bit. Pin ini dapat mengukur dari ground hingga 5V. Namun, nilai atas dapat diubah menggunakan AREF dan fungsi analogReference().
- I2C ==> Dua pin 20 dan 21 mendukung komunikasi I2C di mana 20 mewakili SDA (Garis Data Serial terutama digunakan untuk memegang data) dan 21 mewakili SCL (Garis Jam Serial terutama digunakan untuk menyediakan sinkronisasi data antara perangkat)
- Komunikasi SPI ==> SPI singkatan dari Serial Peripheral Interface yang digunakan untuk transmisi data antara kontroler dan komponen periferal lainnya. Empat pin yaitu 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS) digunakan untuk komunikasi SPI.
Arduino IDE
Di sini saya mengasumsikan Anda sudah menginstal Arduino IDE.
- Unduh perpustakaan yang diperlukan di bawah ini
- TinyGPS lib
- Setelah mengunduhnya. Ekstrak dan pindahkan ke folder C:\Users\...\Documents\Arduino\libraries pastikan tidak ada (-).
- Buka Arduino IDE dan salin kode dari bagian program.
- Lalu pilih papan dengan pergi ke Tools ==> Boards ==> pilih papan di sini kami menggunakan Arduino Mega 2560.
- Setelah memilih papan pilih port dengan pergi ke Tools ==> Ports.
- Setelah memilih papan dan port klik upload.
Koneksi
Arduino MEGA ==> NEO-6M GPS
- 3.3V ==> VCC
- GND ==> GND
- Tx1 (18) ==> Rx
- Rx1 (19) ==> Tx
Anda juga dapat menggunakan Serial2 atau Serial3 sebagai gantinya Serial1
Pin Serial2
- Tx2 (16) ==> Rx
- Rx2 (17) ==> Tx
Pin Serial3
- Tx3 (14) ==> Rx
- Rx3 (15) ==> Tx
Hasil
Gambar hasil akan ditampilkan setelah pengunggahan kode berhasil.
Kode
Arduinomega_GPSArduino
//Connect with pin 18 and 19 #include <TinyGPS.h> //long lat,lon; // create variable for latitude and longitude object float lat,lon; TinyGPS gps; // create gps object void setup(){ Serial.begin(57600); // connect serial Serial.println("The GPS Received Signal:"); Serial1.begin(9600); // connect gps sensor } void loop(){ while(Serial1.available()){ // check for gps data if(gps.encode(Serial1.read()))// encode gps data { gps.f_get_position(&lat,&lon); // get latitude and longitude Serial.print("Position: "); //Latitude Serial.print("Latitude: "); Serial.print(lat,6); Serial.print(","); //Longitude Serial.print("Longitude: "); Serial.println(lon,6); } } }
Skematik