車輛測速裝置有機(jī)械式和電子式兩種,本項(xiàng)目利用GPS模塊、Arduino和OLED顯示屏測量并顯示車輛的即時(shí)速度,屬于智能儀表類別。
項(xiàng)目的核心是GPS接收器。目前最流行的GPS模塊是ublox NEO-6M,這里我們采用了Quectel L86 GPS模塊,因?yàn)槠浜唵吻?a target="_blank">天線非常小巧,只要與Arduino、0.96″ OLED顯示屏連接,與速度相關(guān)參數(shù)就顯示在OLED屏幕上。項(xiàng)目BOM清單如下:
Arduino Nano板 x1
L80/L86 GPS模塊 x1
OLED顯示屏 x1
杜邦線 x20
面包板 x1
Quectel L86/L80 GPS模塊
Quectel L86采用聯(lián)發(fā)科技GNSS MT3333芯片,是一款集成16mm×16mm×4.0mm貼片天線的超緊湊型GNSS模塊,使客戶能靈活地從GPS切換到GNSS。L86采用LCC封裝,內(nèi)置貼片天線使其擁有超強(qiáng)的捕獲和追蹤能力。
通過先進(jìn)的AGPS(EASY)軌道預(yù)測技術(shù)和省電模式(AlwaysLocate技術(shù)),L86模塊能自動(dòng)計(jì)算和預(yù)測長達(dá)三天的軌道信息,并將這些信息存儲到內(nèi)部RAM存儲器中,即使在室內(nèi)弱信號情況下也能實(shí)現(xiàn)低功耗快速定位。AlwaysLocate技術(shù)的運(yùn)用,使得L86可以根據(jù)不同的環(huán)境狀況和運(yùn)行模式,自動(dòng)調(diào)節(jié)定位時(shí)間,在確保定位精度的同時(shí)大大降低了模塊功耗。
![pYYBAGLrLNKAcOsWAAI7VTmtWa4269.png](https://file.elecfans.com/web2/M00/5A/E4/pYYBAGLrLNKAcOsWAAI7VTmtWa4269.png)
憑借超小尺寸,超高精度和靈敏度,L86幾乎能滿足M2M客戶所有應(yīng)用需求,尤其適用于車載、個(gè)人追蹤、工業(yè)級PDA及其他相關(guān)手持設(shè)備等領(lǐng)域,特別適合于GPS接收機(jī)和OBD應(yīng)用。主要優(yōu)勢包括:
支持多重衛(wèi)星系統(tǒng):GPS、GLONASS、QZSS
內(nèi)嵌貼片天線:16mm×16mm×4.0mm
超緊湊型封裝:18.4mm×18.4mm×6.45mm
支持內(nèi)外置天線自動(dòng)切換
支持短路保護(hù)和天線偵測
內(nèi)置低噪聲放大器,提高接收高靈敏度
支持自輔助AGPS(EASY技術(shù),無需外部存儲器)
極低的電流消耗:26mA@追蹤模式
多種省電模式:待機(jī)模式、備份模式、周期模式、AlwaysLocate模式
LOCUS技術(shù),支持日志信息自動(dòng)記錄保存
高靈敏度:-167dBm@追蹤模式,-149dBm@捕獲模式
99個(gè)捕獲信道,33個(gè)追蹤信道
支持Balloon模式,定位高度高達(dá)80km
支持DGPS和SBAS(WAAS/EGNOS/MSAS/GAGAN)
多頻主動(dòng)干擾消除技術(shù)增強(qiáng)抗干擾能力
授時(shí)服務(wù)支持PPS與NMEA同步功能
支持移遠(yuǎn)通信自主研發(fā)的SDK命令
UART接口:波特率范圍4800~115200bps,默認(rèn)波特率9600bps
更新速率:1Hz(默認(rèn)),最高10Hz
輸入/輸出電壓:2.7~2.9V
協(xié)議:NMEA 0183/PMTK
![poYBAGLrLQWAfAcbAACWWTKORho159.png](https://file.elecfans.com/web2/M00/5A/48/poYBAGLrLQWAfAcbAACWWTKORho159.png)
作為一個(gè)SMD形式的工業(yè)級模塊,項(xiàng)目制作時(shí)需要插入2.54間距排針,并焊接在底部PCB上。焊上所有12個(gè)針腳后,L86模塊就變得十分友好,可輕易插接在面包板上。
連接Arduino GPS測速儀
Arduino GPS測速儀電路非常簡潔,只要將三個(gè)組件按照電路圖連接起來即可。
![poYBAGLrLSaAKMsWAAJjLda8bLk606.png](https://file.elecfans.com/web2/M00/5A/48/poYBAGLrLSaAKMsWAAJjLda8bLk606.png)
Quectel L86 GPS模塊有12個(gè)引腳,本項(xiàng)目只用其中的5個(gè)。將VCC、GND連接到Arduino開發(fā)板的3.3V、GND引腳;V_BCKP引腳也要連接到3.3V,如果不連接的話模塊就不能工作。L86模塊的Rx、Tx引腳要分別連接到Arduino開發(fā)板的數(shù)字引腳2、3上。
![poYBAGLrLYGAKaaBAASrJD21h4M066.png](https://file.elecfans.com/web2/M00/5A/48/poYBAGLrLYGAKaaBAASrJD21h4M066.png)
OLED顯示屏是I2C總線,其VCC、GND引腳要連接到Arduino開發(fā)板的3.3V、GND引腳。同樣,SDA、SCL引腳則連接到Arduino板子的A4、A5引腳上。
編寫代碼
L80 GPS模塊支持Tiny GPS++ Library,下載庫文件并上傳到Arduino庫文件夾。除了Tiny GPS++ Library,代碼還需要稱作Adafruit SSD1306的SSD1306 Library文件。
以下是完整代碼,拷貝并上傳到Arduino Nano Board即可。
#include
#include
#include
#include
#define rxPin 2
#define txPin 3
SoftwareSerial mygps(rxPin, txPin);
#define SCREEN_WIDTH 128?????? // OLED display width, in pixels
#define SCREEN_HEIGHT 64?????? // OLED display height, in pixels
#define OLED_RESET -1??????????//Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C????//See datasheet for Address
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
TinyGPSPlus gps;
void setup()
{
Serial.begin(115200);
mygps.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
{
Serial.println(F("SSD1306 allocation failed"));
????for (;;); // Don't proceed, loop forever
}
display.clearDisplay();
display.display();
delay(2000);
}
void loop()
{
boolean newData = false;
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (mygps.available())
{
if (gps.encode(mygps.read()))
{
newData = true;
}
}
}
//If newData is true
if (newData == true)
{
newData = false;
display.setTextColor(SSD1306_WHITE);
if (gps.location.isValid() == 1)
{
//String gps_speed = String(gps.speed.kmph());
display.setCursor(0, 0);
display.setTextSize(3);
display.print(gps.speed.kmph());
display.setCursor(75, 20);
display.setTextSize(2);
display.print("km/h");
display.setTextSize(1);
display.setCursor(0, 50);
display.print("SAT:");
display.setCursor(25, 50);
display.print(gps.satellites.value());
display.setTextSize(1);
display.setCursor(70, 50);
display.print("ALT:");
display.setCursor(95, 50);
display.print(gps.altitude.meters(), 0);
display.display();
delay(1500);
display.clearDisplay();
}
}
else
{
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.setTextSize(3);
display.print("No Data");
display.display();
delay(1500);
display.clearDisplay();
}
}
Arduino GPS測速儀調(diào)試
把上述代碼上傳到Arduino Nano Board后,OLED顯示屏起初并不顯示數(shù)據(jù),因?yàn)長86 GPS接收器還沒有與衛(wèi)星系統(tǒng)同步。
稍微等一下,GPS就開始接收來自最近衛(wèi)星系統(tǒng)的數(shù)據(jù),信號的接收與同步情況設(shè)備駐地的內(nèi)外環(huán)境有關(guān)。與衛(wèi)星系統(tǒng)同步妥當(dāng)后,OLED顯示屏開始以每小時(shí)公里(kmph)為單位顯示速度。當(dāng)然,現(xiàn)在顯示的是0kmph,因?yàn)榘遄臃旁陟o止的桌上。
![pYYBAGLrLcaAS0iFAAUbEkNNHlo453.png](https://file.elecfans.com/web2/M00/5A/E5/pYYBAGLrLcaAS0iFAAUbEkNNHlo453.png)
如果將GPS測速儀放在運(yùn)動(dòng)的車輛上,就會顯示以kmph為單位的車速,連接的衛(wèi)星數(shù)量,以及以米為單位的海拔高度。
![poYBAGLrLdSAQbBYAAUf0EfZHJU527.png](https://file.elecfans.com/web2/M00/5A/48/poYBAGLrLdSAQbBYAAUf0EfZHJU527.png)
可見。這個(gè)測速儀不但簡單,功能還真不少,只要帶在身上你就能夠獲得汽車、自動(dòng)車、公交車、火車和飛機(jī)的速度和所在的海拔高度,以及比賽和訓(xùn)練時(shí)的運(yùn)動(dòng)速度,還可帶它取戶外一起融入大自然。
審核編輯:湯梓紅
-
gps
+關(guān)注
關(guān)注
22文章
2903瀏覽量
166789 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187883 -
測速儀
+關(guān)注
關(guān)注
0文章
22瀏覽量
4077
發(fā)布評論請先 登錄
相關(guān)推薦
測速儀的工作原理
基于51,DS12887、DS18B20多功能自行車測速儀
基于ARM920T內(nèi)核的24GHZ微波雷達(dá)測速儀設(shè)計(jì)與算法研究
LED白光測速儀
激光多普勒測速儀的原理是什么?
MCS-II微機(jī)測速儀應(yīng)用領(lǐng)域
智慧交通廣域雷達(dá)測速儀是什么
雷達(dá)測速儀在的應(yīng)用及如何加強(qiáng)管理
簡述光電式傳感器測速儀
雷達(dá)移動(dòng)式測速儀的特點(diǎn)是什么
公路上抓超速的雷達(dá)測速儀一般會裝在哪里
![公路上抓超速的雷達(dá)<b class='flag-5'>測速儀</b><b class='flag-5'>一</b>般會裝在哪里](https://file.elecfans.com//web2/M00/2F/B7/pYYBAGIEvPCAP3KsAABRChCM22I753.jpg)
InqSpeedRacer用于HotWheels基于網(wǎng)絡(luò)的電子測速儀
![InqSpeedRacer用于HotWheels基于網(wǎng)絡(luò)的電子<b class='flag-5'>測速儀</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
巍泰技術(shù)智能交通高速公路定點(diǎn)式測速儀雷達(dá)與移動(dòng)測速儀雷達(dá)原理與應(yīng)用
![巍泰技術(shù)智能交通高速公路定點(diǎn)式<b class='flag-5'>測速儀</b>雷達(dá)與移動(dòng)<b class='flag-5'>測速儀</b>雷達(dá)原理與應(yīng)用](https://file.elecfans.com/web2/M00/5D/BA/poYBAGL0Za2APVhHAADSb6AZmN4145.png)
評論