步驟1:
1)Arduino Mega 2560
Sainsmart mega也可以使用。
2)LCD鍵盤防護(hù)罩http://www.hobbytronics.co.uk/arduino-lcd-keypad-s.。。
sainsmart鍵盤防護(hù)罩也可以使用。
3)adafruit終極gps記錄器防護(hù)罩http://proto-pic.co.uk/adafruit-ultimate-gps-logge.。。
4)Arduino Stackable(Shield)接頭套件-R3 http://www.hobbytronics.co.uk/cables-connectors/p 。。.
將引腳從單排插頭連接器中拔出,并使用塑料為可堆疊的屏蔽插頭創(chuàng)建一定長(zhǎng)度的墊片
5)紅色/綠色雙色公共陰極,直徑為3/5mm
6)Micro SD存儲(chǔ)卡http://www.hobbytronics.co.uk/4gb-microsd?keyword = 。。.
如果LED在5V電壓下需要10 ma,則該電阻器為R = V/I = 5/0.010 = 500歐姆
8)塑料盒
我用15cm * 10cm * 5 cm,如果可以的話,它會(huì)變小
9)5.5mm Arduino直流電源插頭http://www.hobbytronics.co.uk/cables-connectors/dc.。。
9)單聲道3.5 mm唱頭插座
10)面板開關(guān)(開/關(guān)額定適用于5v 500mA)
11)帶有500mA快速熔斷器的面板保險(xiǎn)絲座
12)小橡膠腳墊(需要8個(gè))
13)內(nèi)徑為3.3mm的10mm尼龍墊片http://www.hobbytronics.co.uk/hardware/spacers-was 。。.
這些完全適合LCD按鈕以進(jìn)行擴(kuò)展。使用模型制作者超級(jí)膠水進(jìn)行附著。
14)2-2.5mm帶螺母和墊圈的螺栓(需要3個(gè))用作Arduino的支撐柱。一根窄螺釘,長(zhǎng)2厘米。
15)小長(zhǎng)5毫米的定位銷。小螺絲固定。 3-4小塊塑料洗滌液。
16)硬木以適合盒子的底部。木材使兩個(gè)底座支撐盒子的寬度。
17)電池-我使用了2節(jié)500 mAH LIPO。為此,您將需要 LIPO充電器 。
18)引線以匹配電池端子類型。
19)可選如果您計(jì)劃添加外部arial,則UFA到SMA arial適配器電纜。
gps非常敏感-我還沒有買過arial。
步驟2 :入門
閱讀有關(guān)最終gps的adafruit文章https://learn.adafruit.com/adafruit-ultimate-gps/
另一篇有用的文章https://learn.adafruit.com/adafruit -shield-compat 。。.
。
將4個(gè)小的橡膠腳安裝到Arduino Mega的基座上:
這將提供穩(wěn)定的安裝表面。
避免安裝孔。
。
將可堆疊連接器安裝到gps板上:
確保使用GPS板中最外面的孔。檢查所有東西的配合情況!
我將板子部分插入了arduino,然后將板子上下顛倒地焊接在每個(gè)部分的2個(gè)端針上。
必須小心不會(huì)使電路板過熱。其余的引腳都焊接好了,然后拆下了電路板。
使用一段直的單行接頭連接器,然后拉出引腳以制成隔離條。將隔板安裝到GPS板上現(xiàn)在可堆疊連接器的4個(gè)部分中的每個(gè)部分上。
假設(shè)您使用的是Mega,請(qǐng)將軌道切成7、8和10針 》如圖所示。用鋒利的手術(shù)刀仔細(xì)切開。
。
安裝GPS電池和SD卡:
插入電池,注意極性。
將預(yù)格式化的SD卡小心地滑入插槽,直至其固定到位。觀察正確的對(duì)齊方式。
。
將3條導(dǎo)線連接到CCS,TX和RX :
我將導(dǎo)線彎曲備用的六向可堆疊連接器可旋轉(zhuǎn)90度,并使用CSS/TX/RX將其焊接到該行中。
這使我可以根據(jù)需要輕松地移除引線。
直接導(dǎo)致。
。
添加雙色LED:
檢查雙色LED的數(shù)據(jù)表并選擇一個(gè)電阻提供正確的電流。確定線索的方向。 LED應(yīng)該是共陰極型。
暫時(shí)將LCD板安裝到GPS板上-小心地匹配孔!
使用尖頭鼻子鉗作為支撐來彎曲引線,以實(shí)現(xiàn)草圖中的輪廓。
led應(yīng)該將LCD屏幕的末端清除10-12mm,并在其上方到達(dá)4-5mm,以便從外殼中出來。
p》
建立引線輪廓和長(zhǎng)度后,卸下LCD。
將LED,電阻器和3根導(dǎo)線焊接到GPS板的底面。
紅色引到引腳2,綠色引到引腳3,陰極通過電阻0V。
。
將GPS板插入Arduino Mega:
如果您使用的是Sainsmart,則每側(cè)都有2條導(dǎo)線在插座孔中-組裝前,我將其略微向外彎曲,并將熱縮管放在裸露的引腳上。
將3根引線連接至Arduino- RX至TX1,TX至RX1,SSC至引腳32(可以
將GPS開關(guān)設(shè)置為“ SOFT SERIAL”。
。
將LCD板插入GPS板:
在LCD板上的按鈕旁邊找到安裝孔。小心地切一塊5mm的木銷,以將LCD的按鈕端支撐在安裝孔下方。它應(yīng)該放在長(zhǎng)凳上。按下按鈕時(shí),這將使LCD停止搖擺。
在插槽中放入足夠的塑料墊圈以防止其閉合。將木桿擰入到位-使用良好的導(dǎo)向孔。如有必要,用砂紙/洗滌液調(diào)節(jié)高度。桿只應(yīng)清除對(duì)Mega電源插座的訪問。
步驟3:制作盒子
1)切一塊硬質(zhì)板以適合盒子的底部-至少允許移動(dòng)2mm
2)將Mega放到底座上-小心地放置,以使距LCD屏幕的左邊緣到盒子左側(cè)的距離為15mm,距LCD的前邊緣到PC正面的距離為35mm。框。標(biāo)記并鉆一個(gè)安裝孔。 ink孔底座的底部。從底部安裝2mm的螺母和螺栓。
重新放置Arduino并安裝第二個(gè)孔-確保LCD與底座平行。
添加第三個(gè)螺母和螺栓。最終的安裝座是從頂部到右下安裝孔的螺釘。
剪切并適當(dāng)?shù)毓潭ò惭b螺栓的長(zhǎng)度。
3)將mega放在其安裝座上。仔細(xì)測(cè)量盒子頂部和LCD頂部之間的高度。檢查蓋子下側(cè)相對(duì)于LCD頂部的位置。
制作兩個(gè)矩形滑道正確的深度以將LCD頂部放置 1-2 mm 蓋子底部下方。
右手滑道必須位于螺絲孔的中心,以確保右下安裝位置。
穿過底座頂部,以固定滑道。避開安裝孔。
再次檢查L(zhǎng)CD相對(duì)于蓋子的高度-不要蓋上蓋子-LED會(huì)彎曲!
4)鉆出螺絲孔插入右手的滑槽中。在螺絲孔周圍稍微埋入孔。切下一個(gè)10mm的尼龍墊片,以支撐電路板的右下部分。
5)將Mega的LCD平行于盒子的正面放置。使用沉頭螺釘將底座從盒子的外部安裝到每個(gè)流道中。
6)測(cè)量LED的位置。在蓋子上鉆一個(gè)小導(dǎo)向孔。檢查L(zhǎng)ED的位置,并按照LED的間隙尺寸開孔。
7)測(cè)量并切掉LCD屏幕的孔-比LCD屏幕支架的外部尺寸小1-2 mm。
8)拆下底座,并切成兩條條狀的瓦楞紙板,以匹配流道的底座。將它們粘到跑步者身上。然后在卡上放2個(gè)孔,以匹配螺絲孔。重新安裝底座。調(diào)整螺釘壓力,直到蓋子完全適合LCD頂部(啊!1-2毫米的間隙!)
9)鉆五個(gè)按鈕孔:
小心地在按鈕頂部涂上白色尖頂。
測(cè)量左下按鈕的位置。在蓋子上鉆一個(gè)導(dǎo)向孔。檢查孔是否對(duì)準(zhǔn)-蓋上蓋子,從上方照亮火炬-白色按鈕頂部應(yīng)顯示。
如有需要,用圓形針頭銼調(diào)整導(dǎo)向孔-重新檢查位置并鉆出孔到10mm尼龍墊片的間隙直徑。
重復(fù)4個(gè)以上的按鈕。
10)在LCD板上添加“擴(kuò)展件”按鈕:
保護(hù)工作表面。
準(zhǔn)備一些紙布。移開所有分散注意力的孩子。
檢查10毫米尼龍墊片是否緊貼在按鈕上。如有必要,擴(kuò)大孔,直到實(shí)現(xiàn)緊密的過盈配合。您將需要無線電控制模型供應(yīng)商的無線電控制模型制造商氰基丙烯酸酯膠(中等至稀薄的粘度)和一些精細(xì)的膠嘴。垂直安裝第一個(gè)墊片。然后使用最細(xì)的噴嘴在管底部?jī)?nèi)側(cè)涂一點(diǎn)膠。倒置LCD板以防止?jié)B入交換機(jī)。等待一分鐘,然后按照相同的步驟操作其他按鈕。將液晶顯示屏倒置30分鐘以使膠水固化。在此期間,卸下并丟棄細(xì)噴嘴。
檢查盒子的蓋子是否合適!
11)鉆孔并安裝充電器插座,開關(guān)保險(xiǎn)絲和Arial導(dǎo)線(如果需要)
12)從5.5mm直流電源插頭上卸下塑料應(yīng)力消除盒上的螺釘。將一對(duì)導(dǎo)線焊接到端子的紅色-尖端。 在加熱前使用收縮管對(duì)電線進(jìn)行絕緣和彎曲處理。
13 按照包裝盒的內(nèi)部視圖所示連接電線。
唱頭插座尖端應(yīng)連接到電池正極。
唱頭插座上的開關(guān)連接為電路的其余部分提供了電源。
14)在USB插頭并重新組裝Arduino。
如果需要,將UFL連接包括到導(dǎo)線上-小心輕放。
輕輕擰緊最終的板上安裝螺釘。
仔細(xì)檢查接線。我不接受對(duì)此內(nèi)容或本文中包含的任何其他功能承擔(dān)責(zé)任!
15)連接電池并使用維可牢尼龍搭扣(strongcrock)
將4個(gè)小的橡膠腳固定在盒子的底部,即可完成。
步驟4:庫和軟件
您將需要安裝兩個(gè)庫:
1)下載并安裝adafruit gps庫https://github.com/adafruit/Adafruit-GPS-Library
2)安裝adafruit sd卡庫:
除非從Arduino libraries文件夾中刪除了任何現(xiàn)有的sd庫,否則默認(rèn)安裝將無法進(jìn)行。一定要這樣做,然后從https://github.com/adafruit/SD
安裝該庫,或者保留現(xiàn)有的sd庫并下載 SDADA.zip 已修改為接受對(duì)SDADA的呼叫。將其安裝在 Arduino libraries SDADA 中,這樣您仍然可以使用其他SD庫
如果您使用的是SDADA版本,則該文件將包含在gps2.ino草圖中。該行:
#include SDADA.h
如果沒有,請(qǐng)注釋掉該行并使用:#include SD.h
這兩個(gè)庫都提供了示例可以使用GPS進(jìn)行測(cè)試。
。
默認(rèn)情況下,以下庫應(yīng)已安裝:
LiquidCrystal.h
SoftwareSerial。 h
SPI.h
avr/sleep.h
。
下載gps2.zip
將gps2.ino和gps_card.ino保存到Arduino素描目錄中自己的文件夾中。
打開gps2.ino
Alter以下行:
#include SDADA.h
到#include SD.h(如果您不使用我修改的SD庫)
此更改也適用于gps_card.ino
檢查L(zhǎng)CD的設(shè)置:
在配置部分:
boolean sain = true;//如果使用sainsmart LCD屏蔽,則設(shè)置為true;對(duì)于其他屏蔽,例如DFROBOT屏蔽,則設(shè)置為false。
根據(jù)您選擇的LCD設(shè)置sain變量。
請(qǐng)注意,上述兩個(gè)LCD板均使用引腳10設(shè)置背光。向上按鈕可關(guān)閉背光,從而節(jié)省電池電量。
。
gps2.ino現(xiàn)在應(yīng)該運(yùn)行!
。
按鈕:
a)選擇更改LCD第一行上顯示的功能:
位置和海拔高度(十進(jìn)制經(jīng)度和緯度,隨高度交替變化)
位置(十進(jìn)制經(jīng)度和緯度)
軍械測(cè)量東,北向位置坐標(biāo)加上操作系統(tǒng)工作表編號(hào)
海拔高度
距原點(diǎn)的運(yùn)行距離
距原點(diǎn)的距離
時(shí)間
b)左切換公制/英制。
c)右切換日志記錄:
L顯示在登錄時(shí)右下角
An!此位置的標(biāo)記表示沒有sd卡,或者卡不可用
d)向上切換回顯示。 (有用的節(jié)能器。)
e)向下將距離重置為零:
這會(huì)將當(dāng)前位置設(shè)置為范圍的原點(diǎn)。 (烏鴉飛到原點(diǎn)的距離。)
。
要激活按鈕,請(qǐng)按住它直到LED停止閃爍。然后釋放。
步驟5:在Gps2.ino中使用SD卡
設(shè)置sd卡:
需要將默認(rèn)芯片選擇引腳和實(shí)際chipSelect引腳設(shè)置為輸出。
SD卡可以通過一個(gè)begin語句訪問該語句,該語句包括gps板上卡所使用的引腳。
卡速度設(shè)置為SPI_Full_SPEED。
如果發(fā)生錯(cuò)誤,指示燈會(huì)閃爍。
如果在配置中將debug設(shè)置為true,則還會(huì)發(fā)送串行監(jiān)視器消息。
如果卡初始化正常,則變量hascard為設(shè)置為true。
。
//確保即使不使用默認(rèn)芯片選擇引腳也設(shè)置為
//輸出:
pinMode(SS,OUTPUT);//默認(rèn)的mega select引腳
pinMode(chipSelect,OUTPUT);
digitalWrite(chipSelect,LOW);
//查看卡是否存在以及可以初始化:
if(!SD.begin(chipSelect,11,12,13)){
if(debug)Serial.println(F(“ Card init。failed !“))
error(1);
} else {
if(!card.init(SPI_FULL_SPEED,chipSelect,11,12,13 )){
error(2);
if(debug){
Serial.println(F(“初始化失敗。檢查事項(xiàng):”) );
Serial.println(F(“ *是否插入卡?”));
Serial.println(F(“ *您的接線正確嗎?”)) ;
Serial.println(F(“ *您是否更改了chipSelect引腳以匹配您的屏蔽或模塊?”));
}
}其他{
hascard = true;
if(debug)Serial.println(F(“ Card init。成功”));
}
}
選擇要記錄的SD文件:
按下右手按鈕會(huì)調(diào)用子例程openfile
這將檢查gps文件夾以查找未使用的文件名
如果找到文件,則將foundit設(shè)置為true。
如果(!hascard){return;}//,則從GPSLOGnn.TXT開始,其中nn = 0到99。如果卡不存在或不可用,則不要繼續(xù)
字節(jié)i;
字符文件名[18];
strcpy(filename,“/gps/GPSLOG00.TXT“);
文件名[17] = char(0);
布爾值foundit = false;
為(i = 0;我《100; i ++){
文件名[11] =‘0’+ i/10;
文件名[12] =‘0’+ i%10;
if(!SD.exists(filename)){
foundit = true; break;
}
}
如果所有文件名都在使用中,則Foundit為false,并且詢問用戶是否應(yīng)刪除前50個(gè)。如果不能接受,則將hascard設(shè)置為false,以便不再嘗試登錄。
if(!foundit){
int thisbutton = -1;
lcd.clear();
lcd.print(“ Dir full-Erase?”);
lcd.setCursor(0,1);
lcd.print(“Sel:Ok Right:No“);
執(zhí)行{
此按鈕= read_LCD_buttons();
} while(thisbutton == btnNONE);
lcd.clear();
if(thisbutton == btnSELECT){
lcd.print(“正在刪除” );
for(i = 0; i 《50; i ++){
文件名[11] =‘0’+ i/10;
文件名[12] =‘0’+ i%10;
如果(SD.exists(文件名))SD.remove(文件名);
}
i = 0;
文件名[11] =‘0’+ i/10;
文件名[12] =‘0’+ i%10;
}其他{
error(4);
hascard = false;
return;
}
}
可以打開文件:
發(fā)生錯(cuò)誤時(shí),將輸出串行信息,并通過狀態(tài)指示燈指示錯(cuò)誤代碼。
如果成功,則輸出文件的第一行。這是列標(biāo)題。
請(qǐng)注意使用logfile.flush()。
logfile = SD.open(filename,F(xiàn)ILE_WRITE);
if(!logfile){
if(調(diào)試){
Serial.print(“無法創(chuàng)建”);
Serial.println(文件名);
}
error(3);
hascard = false;
}其他{
logging = true;
myfile =文件名;
logfile.println(pad(”Time“,13)+ lpad(” Date“,9)+ lpad(” Longitude“,10)
+ lpad(” Latitude“,10)+ lpad (“ Altitude”,9)+“ m” + lpad(“ Geoid”,9)+“ m” + lpad(“ Speed”,7)+“ mph mph”);
logfile.flush ();
if(debug){Serial.print(“ Writing to”); Serial.println(filename);}
}
。
lpad 和 pad 是文本填充功能:
。
字符串lpad(字符串temp,字節(jié)L){
byte mylen = temp.length();
if(mylen》(L-1))return temp.substring(0,L-1);
for(字節(jié)i = 0; i 《(L-mylen); i ++)temp =“” + temp;
返回溫度;
}
String pad(String temp,byte L){
byt e mylen = temp.length();
if(mylen》(L-1))return
temp.substring(0,L-1);
for(字節(jié)i = 0; i 《(L-mylen); i ++)temp = temp +“”;
返回溫度;
}
。
寫入文件:
如果正在記錄日志,主循環(huán)將讀取gps并將其值輸出到文件。 (“ L”顯示在LCD屏幕的右下方。)
。
將值格式化為固定寬度的列。
。
函數(shù)dtostrf(float,w,dp,buf)是一個(gè)Arduino庫函數(shù),它接受一個(gè)float變量并將其轉(zhuǎn)換為寬度為w且?guī)p小數(shù)點(diǎn)的字符串。 buf是一個(gè)char緩沖區(qū),必須足夠大才能處理轉(zhuǎn)換。
我用“ char buf [20];”定義了buf。
在繼續(xù)之前先清空文件。
。
ogfile.print(pad(mytime,13));//包括毫秒數(shù)
logfile.print(pad(myyear,9));
logfile.print(dtostrf(longitude,10,5,buf));
logfile.print(dtostrf(latitude,10,5,buf));
logfile.print(dtostrf(altitudem,9,1,buf)); logfile.print(“ m”);
logfile.print(dtostrf(大地水準(zhǔn)面,9,1,BUF)); logfile.print(“ m”);
logfile.print(dtostrf(speedmph,7,2,buf)); logfile.print(“ mph”);
logfile.print(dtostrf(heading,6,1,buf)); logfile.println(“ deg”);
logfile.flush();
。
關(guān)閉文件:
如果該卡不可用,請(qǐng)返回,否則在關(guān)閉文件之前將所有剩余的輸出刷新到卡上。
void closefile(){
if(!hascard) return;
logfile.flush();
logfile.close();
logging = false;
if(debug) Serial.println(“ File” + myfile +“ closed”);
}
步驟6:讀取Gps
在腳本頭中設(shè)置庫:
#include Adafruit_GPS.h
#include SoftwareSerial。 h
HardwareSerial mySerial = Serial1;
Adafruit_GPS GPS(&mySerial);
在啟動(dòng)時(shí)選擇gps:
pinMode (chipSelect,OUTPUT);
digitalWrite(chipSelect,LOW);
GPS.begin(9600);
//設(shè)置更新速率//1Hz正常工作并留出時(shí)間來執(zhí)行記錄GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);//或者0.1Hz,5Hz和10Hz更新頻率
//RMC(建議最小值):GGA(固定數(shù)據(jù)),包括海拔GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
//如果固件允許,則關(guān)閉天線狀態(tài)更新
GPS.sendCommand(PGCMD_NOANTENNA);
。
通過中斷讀取GPS
請(qǐng)注意,實(shí)際上是在Adafruit_GPS.h庫代碼中而不是在此中斷例程中解釋數(shù)據(jù)。
//如果GPSECHO = true,則在Timer0上中斷1毫秒以促進(jìn)gps數(shù)據(jù)回波-
useInterrupt(true);//如果為true,則通過中斷讀取輸入。
。
就是這樣!循環(huán)讀取:
GPS.newNMEAreceived()如果到達(dá)了新的GPS信息,則設(shè)置為true。
GPS.parse(stringptr),如果設(shè)置為true,則設(shè)置為true已成功從原始GPS文本字符串中分離(解析)。
如果GPS報(bào)告其位置有固定值,則GPS.fix設(shè)置為true。
如果gps具有修復(fù)程序提取位置,高度,速度,方位角,時(shí)間,大地水準(zhǔn)面高度,衛(wèi)星和hdop的值。
以十進(jìn)制經(jīng)度和緯度返回位置,以節(jié)為單位返回速度,以米為單位返回距離。
。
if(GPS.newNMEAreceived()){
char * stringptr = GPS.lastNMEA();
。
if( !GPS.parse(stringptr))返回;//如果為假
。
if(GPS.fix){
digitalWrite(ledGreen,HIGH);
fixed = true;//記住狀態(tài),以防它在過程中發(fā)生變化
mymillis = GPS.milliseconds;
myseconds = GPS.seconds;
mytime = String(GPS.hour )+“:” + String(GPS.minute)+“:”;
logtime = mytime;
logtime + = String(int(myseconds + mymillis/1000 + 0.1) );//如果在0.1 S之內(nèi)取整
mytime + = String(myseconds + mymillis/1000);//完整的召回時(shí)間
myyear = String(GPS.day)+“/” + String(GPS.month)+“/”;
lcdyear = myyear; theyear = String(GPS.year);
myyear + = theyear;
mylen = theyear.length();
lcdyear + = theyear.substring( mylen-1,mylen);//僅適合以下位數(shù)的數(shù)字
緯度= GPS.latitudeDegrees;
經(jīng)度= GPS.longitudeDegrees;
altitudem = GPS.altitude;
altitudef = Heightm * fconvert;
速度結(jié)= GPS.speed;
speedmph =速度結(jié)* 1.15077945;
speedkph =速度結(jié)* 1.85200;
heading = GPS.angle;
satellites = GPS.satellites;
geoid = GPS.geoidheight;
hdop = 7-int (GPS.HDOP + 0.5);
步驟7:英國(guó)國(guó)家網(wǎng)格位置和行進(jìn)距離
1)將十進(jìn)制經(jīng)度和緯度的位置轉(zhuǎn)換為英國(guó)軍械測(cè)量?jī)x單位的詳細(xì)信息,請(qǐng)參見軍械測(cè)量提供的pdf文件:
http://www.ordnancesurvey.co.uk/docs/support/guide 。。.
第40頁不會(huì)使人眼花,亂,但確實(shí)提供了必要的數(shù)學(xué)。
我的子程序空彈藥(float phi,float lamda)實(shí)現(xiàn)了計(jì)算。
對(duì)于Easti,返回的值精確到+-0.1 ng和+-0.02(向北)。精度不足的原因是Arduino浮點(diǎn)運(yùn)算的精度有限。 Arduino僅支持“ 6-7”個(gè)有效小數(shù)位。
。
可以從經(jīng)度和緯度值的最高有效位中提取兵器測(cè)量圖紙編號(hào)。函數(shù)字符串NE2NGR(float&east,float&north)執(zhí)行提取,并歸功于:
Alex http://www.codeproject.com/Articles/13577/GPS-Der 。。.
。
2)可以通過兩個(gè)緯度和經(jīng)度值的差來計(jì)算出行進(jìn)距離。
對(duì)于小的差異,估計(jì)值必須是可疑的由于GPS定位固有的精度不足。 Arduino浮點(diǎn)小數(shù)位支持的限制也影響整體精度。盡管如此,累積的行進(jìn)距離估計(jì)還是合理的。到原點(diǎn)的范圍非常準(zhǔn)確,因?yàn)樗鼉H涉及兩個(gè)位置之間的差異。
可以使用下部按鈕重新設(shè)置距離計(jì)算的原點(diǎn)。
在低速時(shí)我在三秒鐘的時(shí)間內(nèi)對(duì)位置進(jìn)行了采樣,以增加位置差異大于GPS定位中不確定性距離的可能性。以較高的速度,我減少了采樣位置之間的時(shí)間。此時(shí)間由變量dlimit控制。
子例程float distance_between(float lat1,float long1,float lat2,float long2)之間返回該距離。
原始工作被歸功于Maarten Lamers。
步驟8:使用Gps_card.ino
此草圖假定您已連接串行監(jiān)視器,最好是具有復(fù)制文本功能的串行監(jiān)視器。
不幸的是,默認(rèn)的Arduino串行監(jiān)視器似乎不提供此功能。 (我寫了我自己的文章。)
Roger Meier的CoolTerm完成了http://freeware.the-meiers.org/
。
如果使用默認(rèn)的SD庫設(shè)置,請(qǐng)進(jìn)行以下更改:
#include SD.h代替#include SDADA.h
。
設(shè)置將串行監(jiān)視器設(shè)置為115200。
。
運(yùn)行草圖時(shí),它將測(cè)試SD卡并顯示卡的大小和gps目錄的詳細(xì)信息。/strong》
鍵入文件名,它將打開并顯示。
可以使用 #delete刪除單個(gè)文件文件名
數(shù)據(jù)以固定寬度的列顯示,并帶有空格分隔符。
假設(shè)您可以復(fù)制文本,使用excel中的值非常簡(jiǎn)單。
第9步:規(guī)格
LCD顯示屏有一個(gè)可選的頂行和一個(gè)下部行,由:
衛(wèi)星數(shù)
速度
HDOP-水平位置稀釋
軸承
記錄狀態(tài):
“ L”-記錄
“”-未記錄
“!” -SD卡不存在或不可用
頂行:
經(jīng)度和緯度位置,以度為單位
經(jīng)度(以度為單位)
英國(guó)國(guó)家地理參考
海拔
從原點(diǎn)出發(fā)的距離(可以重置原點(diǎn))
原點(diǎn)距
時(shí)間
注意:
公制或英制的LCD值。
對(duì)于LCD顯示屏,速度《=截止(0.65)mph的速度顯示為0
衛(wèi)星數(shù)目在左下角顯示為豎線。該欄已滿后,可以顯示的最大數(shù)字為8。
HDOP顯示在下部中央移動(dòng)欄中。 HDOP表示觀察到的衛(wèi)星的擴(kuò)展-擴(kuò)展的擴(kuò)展提高了準(zhǔn)確性,HDOP數(shù)量減少了。 HDOP值1很好!
HDOP精度《0.5用實(shí)線表示。
HDOP值為0.5到1.5(1)用7條表示。
HDOP為6時(shí)顯示為1條。
HDOP》 6時(shí)沒有顯示條。
按鈕:
a)選擇更改液晶屏第一行
高度/位置(經(jīng)度和緯度)
位置(經(jīng)度和緯度)
位置在軍械測(cè)量中,x,y坐標(biāo)
高度
時(shí)間
b)左切換公制/英制
c)右切換日志記錄
d)向上切換回顯示(有用的節(jié)電器)
e)向下將距離重置為零,并將當(dāng)前位置設(shè)置為范圍的原點(diǎn)(烏鴉將距離原點(diǎn)飛出) )
要激活按鈕,請(qǐng)按住直到LED停止閃爍。然后釋放。
1秒間隔閃爍紅色-不修復(fù)
1秒間隔閃爍綠色-修復(fù)
四個(gè)短綠色閃爍-已按下按鈕
1個(gè)紅色閃爍重復(fù)了5次-錯(cuò)誤1:SD卡初始化失敗
2個(gè)紅色閃爍重復(fù)了5次-錯(cuò)誤2:SD卡全速初始化失敗
3次紅色閃爍重復(fù)5次-錯(cuò)誤3:無法創(chuàng)建日志文件
4次紅色閃爍重復(fù)5次-錯(cuò)誤4:日志文件夾中有100個(gè)文件,并且不會(huì)刪除
累積距離估算值將在多個(gè)一秒鐘的間隔位置產(chǎn)生累積舍入誤差。
請(qǐng)注意,“軍械”測(cè)量值的精度是有限的-arduino浮點(diǎn)值保留6-7個(gè)有效的小數(shù)位。轉(zhuǎn)換公式涉及許多計(jì)算,并且舍入誤差具有累積影響。最終,精度受返回的sin,cos和tan值的限制。
東移值似乎精確到+-0.1
北移到+-0.02
通過比較,經(jīng)度/緯度值似乎精確到+-0.00001
將ufl連接到SMA引線不會(huì)影響性能。 GPS芯片只能識(shí)別活動(dòng)的ariar(1575.42MHz)。
-
led
+關(guān)注
關(guān)注
242文章
23700瀏覽量
670900 -
鍵盤
+關(guān)注
關(guān)注
4文章
864瀏覽量
40427 -
Arduino
+關(guān)注
關(guān)注
188文章
6491瀏覽量
190095
發(fā)布評(píng)論請(qǐng)先 登錄
基于STM32的衛(wèi)星GPS路徑記錄儀(附完整源代碼)實(shí)例項(xiàng)目下載
從人工記錄到智能巡檢:云翎智能單北斗記錄儀如何重塑電力巡檢

MT8390(Genio 700)_聯(lián)發(fā)科MTK8390核心板參數(shù)

從“事后追溯”到“事前預(yù)警”:云翎智能巡檢記錄儀風(fēng)險(xiǎn)管控升級(jí)

MTK8766(MT8766)MTK安卓核心板_聯(lián)發(fā)科核心板方案

6050 Ultimate Channel Strip介紹

6020 Ultimate EQ說明

MT6765安卓核心板參數(shù)_聯(lián)發(fā)科MTK模塊開發(fā)

MTK6761(MT6761)安卓核心板_聯(lián)發(fā)科MTK核心板模塊方案

安卓開發(fā)板_MTK開發(fā)板Demo板方案

MT8781_MTK8781_聯(lián)發(fā)科MTK安卓核心板模塊方案

揭秘PCB電路板抄板全過程:從元件記錄到完美復(fù)制
從記錄到管理:?jiǎn)伪倍饭ぷ?b class='flag-5'>記錄儀如何優(yōu)化工作流程

評(píng)論