- Kullanılan malzemeler
- NEO6M GPS Modülü
- 1.3 inç I2C OLED Ekran
- Devre şeması
- Arduino OLED Hız Ölçer için Arduino Programlama
Hızölçerler, bir aracın seyir hızını ölçmek için kullanılır. Daha önce sırasıyla Analog hız göstergesi ve dijital hız göstergesi oluşturmak için IR sensörünü ve salon sensörünü kullandık. Bugün hareket eden bir aracın hızını ölçmek için GPS kullanacağız. GPS hız ölçerler standart hız ölçerlerden daha doğrudur çünkü aracı sürekli olarak bulabilir ve hızı hesaplayabilir. GPS teknolojisi, akıllı telefonlarda ve araçlarda navigasyon ve trafik uyarıları için yaygın olarak kullanılmaktadır.
Bu projede, OLED ekranlı bir NEO6M GPS modülü kullanarak bir Arduino GPS hız göstergesi oluşturacağız.
Kullanılan malzemeler
- Arduino Nano
- NEO6M GPS Modülü
- 1,3 inç I2C OLED ekran
- Breadboard
- Jumper'ları Bağlama
NEO6M GPS Modülü
Burada NEO6M GPS modülünü kullanıyoruz. NEO-6M GPS modülü, güçlü bir uydu arama özelliği sağlayan yerleşik bir seramik antene sahip popüler bir GPS alıcısıdır. Bu alıcı, konumları algılama ve 22'ye kadar uyduyu izleme ve dünyanın herhangi bir yerindeki konumları belirleme yeteneğine sahiptir. Yerleşik sinyal göstergesi ile modülün ağ durumunu izleyebiliriz. Ana güç yanlışlıkla kapatıldığında modülün verileri kaydedebilmesi için bir veri yedekleme piline sahiptir.
GPS alıcı modülünün ana kalbi, u-blox'un NEO-6M GPS çipidir. 50 kanalda 22 uyduya kadar takip edebilir ve -161 dBm olan çok etkileyici bir hassasiyet seviyesine sahiptir. Bu 50 kanallı u-blox 6 konumlandırma motoru, 1 saniyenin altında İlk Düzeltme Süresi (TTFF) özelliğine sahiptir. Bu modül, 4800-230400 bps arasındaki baud hızını destekler ve varsayılan 9600 baud'a sahiptir.
Özellikleri:
- Çalışma gerilimi: (2.7-3.6) V DC
- Çalışma Akımı: 67 mA
- Baud hızı: 4800-230400 bps (9600 Varsayılan)
- İletişim Protokolü: NEMA
- Arayüz: UART
- Harici anten ve yerleşik EEPROM.
GPS Modülünün Pin Çıkışı:
- VCC: Modülün giriş voltaj pini
- GND: Toprak pimi
- RX, TX: Mikroişlemcili UART iletişim pinleri
Daha önce GPS'i Arduino ile arayüzledik ve araç takibi dahil GPS modüllerini kullanarak birçok proje inşa ettik.
1.3 inç I2C OLED Ekran
OLED terimi " Organik Işık yayan diyot" anlamına gelir , televizyonlarımızın çoğunda kullanılanla aynı teknolojiyi kullanır, ancak bunlara kıyasla daha az piksel içerir. Projelerimizi havalı göstereceğinden, bu harika görünümlü ekran modüllerinin Arduino ile arayüzlenmesi gerçekten eğlenceli. Burada OLED ekranlar ve türleri hakkında tam bir Makaleyi ele aldık. Burada Tek Renkli 4 pinli SH1106 OLED 1,28 ”OLED ekran kullanıyoruz. Bu Ekran yalnızca I2C modu ile çalışabilir.
Teknik özellikler:
- Sürücü IC: SH1106
- Giriş Voltajı: 3.3V-5V DC
- Çözünürlük: 128x64
- Arayüz: I2C
- Akım tüketimi: 8 mA
- Piksel rengi: Mavi
- Görüş açısı:> 160 derece
Pin Açıklaması:
VCC: Giriş güç kaynağı 3.3-5V DC
GND: Toprak referans pini
SCL: I2C arayüzünün saat pimi
SDA: I2C arayüzünün Seri Veri pini
Arduino topluluğu bize zaten bunu çok daha basit hale getirmek için doğrudan kullanılabilecek birçok Kitaplık verdi. Birkaç kitaplığı denedim ve Adafruit_SH1106.h Kitaplığının kullanımının çok kolay olduğunu ve bir avuç grafik seçeneğe sahip olduğunu, dolayısıyla bu eğitimde de aynısını kullanacağımızı öğrendim .
OLED çok havalı görünüyor ve bazı ilginç projeler oluşturmak için diğer mikrodenetleyicilerle kolayca arayüzlenebilir:
- Raspberry Pi ile SSD1306 OLED Ekranı Arayüz
- Arduino ile SSD1306 OLED Ekranı Arayüz
- ESP32 ve OLED Ekran kullanan İnternet Saati
- Arduino, DHT11 ve IR Blaster kullanan Otomatik AC Sıcaklık Kontrol Cihazı
Devre şeması
OLED kullanan bu Arduino GPS hız göstergesinin devre şeması aşağıda verilmiştir.
Tam kurulum aşağıdaki gibi görünecektir:
Arduino OLED Hız Ölçer için Arduino Programlama
Projenin tam kodu eğitimin altında verilmiştir. Burada kodun tamamını satır satır açıklıyoruz.
Öncelikle tüm kütüphaneleri dahil edin. Burada TinyGPS ++. H kütüphanesi GPS alıcı modülünü kullanarak GPS koordinatlarını almak için kullanılır ve OLED için Adafruit_SH1106.h kullanılır.
#Dahil etmek
Ardından, OX3C veya OX3D olabilen OLED I2C adresi tanımlanır, işte benim durumumda OX3C. Ayrıca, ekranın Reset pini tanımlanmalıdır. Benim durumumda, ekran Arduino'nun Reset pinini paylaştığı için -1 olarak tanımlandı.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 ekranı (OLED_RESET);
Daha sonra TinyGPSPlus ve Softwareserial sınıfı nesneleri aşağıda gösterildiği gibi tanımlanır. Yazılım seri sınıfı, Arduino pin no. burada 2 ve 3 olarak tanımlanan seri iletişim için.
int RX = 2, TX = 3; TinyGPSPlus gps; Yazılım Seri gpssoft (RX, TX);
İçinde setup () , başlatma seri iletişim için yapılır ve OLED edilir. Yazılım seri iletişimi için varsayılan baud hızı 9600 olarak tanımlanmıştır. Burada SH1106_SWITCHCAPVCC dahili olarak 3.3V'den ekran voltajı oluşturmak için kullanılır ve display.begin işlevi ekranı başlatmak için kullanılır.
geçersiz kurulum () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
İçinde ise doğru döngü, alınan seri veri doğrulanır geçerli bir GPS sinyalleri alınması halinde, o zaman () displayspeed OLED hız değeri göstermek için çağrılır.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displayspeed ();
İçinde displayspeed () fonksiyonu, GPS modülünden hızlı veri işlevi kullanılarak kontrol edilir gps.speed.isValid () ve gerçek bir değeri verirse, o zaman hız değeri OLED ekranda görüntülenir. Burada OLED üzerindeki metin boyutu display.setTextSize işlevi kullanılarak tanımlanır ve imleç konumu display.setCursor işlevi kullanılarak tanımlanır. GPS modülünden alınan hız verilerinin kodu, gps.speed.kmph () işlevi kullanılarak çözülür ve son olarak display.display () kullanılarak görüntülenir.
eğer (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Son olarak kodu Arduino Uno'ya yükleyin ve sistemi hareketli araca koyun ve aşağıdaki görselde gösterildiği gibi OLED ekran üzerinde hızı görebilirsiniz.
Demo video ile eksiksiz kod aşağıda verilmiştir.