- Bahan-bahan yang digunakan
- Modul GPS NEO6M
- Layar OLED I2C 1,3 inci
- Diagram Sirkuit
- Pemrograman Arduino untuk Arduino OLED Speedometer
Spedometer digunakan untuk mengukur kecepatan perjalanan kendaraan. Sebelumnya kami menggunakan sensor IR dan sensor hall untuk membuat speedometer Analog dan speedometer digital. Hari ini kita akan menggunakan GPS untuk mengukur kecepatan kendaraan yang bergerak. Spedometer GPS lebih akurat daripada spedometer standar karena dapat terus mencari lokasi kendaraan dan dapat menghitung kecepatan. Teknologi GPS banyak digunakan di smartphone dan kendaraan untuk navigasi dan peringatan lalu lintas.
Dalam proyek ini, kami akan membangun speedometer GPS Arduino menggunakan modul GPS NEO6M dengan tampilan OLED.
Bahan-bahan yang digunakan
- Arduino Nano
- Modul GPS NEO6M
- Layar OLED I2C 1,3 inci
- Papan tempat memotong roti
- Menghubungkan Jumper
Modul GPS NEO6M
Di sini kami menggunakan modul GPS NEO6M. Modul GPS NEO-6M adalah penerima GPS yang populer dengan antena keramik built-in, yang memberikan kemampuan pencarian satelit yang kuat. Penerima ini memiliki kemampuan untuk merasakan lokasi dan melacak hingga 22 satelit dan mengidentifikasi lokasi di mana pun di dunia. Dengan indikator sinyal on-board, kami dapat memantau status jaringan modul. Ini memiliki baterai cadangan data sehingga modul dapat menyimpan data ketika daya utama mati secara tidak sengaja.
Inti inti di dalam modul penerima GPS adalah chip GPS NEO-6M dari u-blox. Ini dapat melacak hingga 22 satelit di 50 saluran dan memiliki tingkat sensitivitas yang sangat mengesankan yaitu -161 dBm. Mesin pemosisian u-blox 6 50 saluran ini menawarkan Time-To-First-Fix (TTFF) di bawah 1 detik. Modul ini mendukung baud rate dari 4800-230400 bps dan memiliki baud default 9600.
Fitur:
- Tegangan operasi: (2,7-3,6) V DC
- Operasi Saat Ini: 67 mA
- Kecepatan baud: 4800-230400 bps (9600 Default)
- Protokol Komunikasi: NEMA
- Antarmuka: UART
- Antena eksternal dan EEPROM internal.
Pinout dari Modul GPS:
- VCC: Pin tegangan input Modul
- GND: Pin ground
- RX, TX: Pin komunikasi UART dengan Mikrokontroler
Kami sebelumnya telah menghubungkan GPS dengan Arduino dan membangun banyak proyek menggunakan modul GPS termasuk pelacakan kendaraan.
Layar OLED I2C 1,3 inci
Istilah OLED adalah singkatan dari " Organic Light emitting diode", ini menggunakan teknologi yang sama yang digunakan di sebagian besar televisi kami tetapi memiliki piksel lebih sedikit dibandingkan dengan mereka. Sangat menyenangkan memiliki modul tampilan yang tampak keren ini untuk dihubungkan dengan Arduino karena itu akan membuat proyek kita terlihat keren. Kami telah membahas Artikel lengkap tentang tampilan OLED dan tipenya di sini. Di sini, kami menggunakan layar OLED Monokrom 4-pin SH1106 OLED 1,28 ”. Tampilan ini hanya dapat bekerja dengan mode I2C.
Spesifikasi teknis:
- IC Driver: SH1106
- Tegangan Input: 3.3V-5V DC
- Resolusi: 128x64
- Antarmuka: I2C
- Konsumsi saat ini: 8 mA
- Warna piksel: Biru
- Sudut pandang:> 160 derajat
Deskripsi Pin:
VCC: Catu daya input 3.3-5V DC
GND: Pin referensi ground
SCL: Pin jam dari antarmuka I2C
SDA: Pin Data Serial dari antarmuka I2C
Komunitas Arduino telah memberi kami banyak Perpustakaan yang dapat langsung digunakan untuk membuat ini jauh lebih sederhana. Saya mencoba beberapa perpustakaan dan menemukan bahwa Perpustakaan Adafruit_SH1106.h sangat mudah digunakan dan memiliki beberapa opsi grafis, oleh karena itu kami akan menggunakan hal yang sama dalam tutorial ini.
OLED terlihat sangat keren dan dapat dengan mudah dihubungkan dengan mikrokontroler lain untuk membangun beberapa proyek menarik:
- Antarmuka Tampilan OLED SSD1306 dengan Raspberry Pi
- Menghubungkan Layar OLED SSD1306 dengan Arduino
- Jam Internet menggunakan ESP32 dan Layar OLED
- Pengatur Suhu AC Otomatis menggunakan Arduino, DHT11 dan IR Blaster
Diagram Sirkuit
Diagram sirkuit untuk speedometer GPS Arduino ini menggunakan OLED diberikan di bawah ini.
Penyiapan lengkapnya akan terlihat seperti di bawah ini:
Pemrograman Arduino untuk Arduino OLED Speedometer
Kode lengkap proyek diberikan di bagian bawah tutorial. Di sini kami menjelaskan kode lengkap baris demi baris.
Pertama-tama, sertakan semua perpustakaan. Di sini library TinyGPS ++. H digunakan untuk mendapatkan koordinat GPS menggunakan modul penerima GPS dan Adafruit_SH1106.h digunakan untuk OLED.
#include
Kemudian, alamat I2C OLED ditentukan, yang dapat berupa OX3C atau OX3D, ini dia OX3C dalam kasus saya. Selain itu, pin Setel ulang layar harus ditentukan. Dalam kasus saya, ini didefinisikan sebagai -1, karena tampilan membagikan pin Reset Arduino.
# Tentukan OLED_ADDRESS 0x3C # Tentukan OLED_RESET -1 Tampilan Adafruit_SH1106 (OLED_RESET);
Selanjutnya, objek untuk kelas TinyGPSPlus dan Softwareserial didefinisikan seperti yang ditunjukkan di bawah ini. Kelas serial software membutuhkan pin Arduino no. untuk komunikasi serial, yang didefinisikan sebagai 2 dan 3 di sini.
int RX = 2, TX = 3; GPS TinyGPSPlus; SoftwareSerial gpssoft (RX, TX);
Di dalam pengaturan () , inisialisasi dilakukan untuk komunikasi Serial dan OLED. Baud rate default untuk komunikasi serial Software didefinisikan sebagai 9600. Di sini SH1106_SWITCHCAPVCC digunakan untuk menghasilkan tegangan tampilan dari internal 3.3V dan fungsi display.begin digunakan untuk menginisialisasi tampilan.
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Di dalam while true loop, data serial yang diterima divalidasi, jika sinyal GPS yang diterima valid, maka displaypeed () dipanggil untuk menunjukkan nilai kecepatan pada OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displaypeed ();
Di dalam () displayspeed fungsi, data kecepatan dari modul GPS diperiksa menggunakan fungsi gps.speed.isValid () dan jika ia mengembalikan nilai benar, maka nilai kecepatan yang ditampilkan pada layar OLED. Di sini ukuran teks pada OLED ditentukan menggunakan fungsi display.setTextSize dan posisi kursor ditentukan menggunakan fungsi display.setCursor . Data kecepatan dari modul GPS didekodekan menggunakan fungsi gps.speed.kmph () dan terakhir ditampilkan menggunakan display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Terakhir, unggah kode di Arduino Uno dan letakkan sistem di kendaraan yang bergerak, dan Anda dapat melihat kecepatan pada tampilan OLED seperti yang ditunjukkan pada gambar di bawah ini.
Kode lengkap dengan video demo diberikan di bawah ini.