步驟1:這是工作原理
GPS衛(wèi)星每天在非常精確的軌道上繞地球兩次并將信號信息傳輸?shù)降厍颉?GPS接收器獲取此信息,并使用三邊測量法計(jì)算用戶的確切位置。本質(zhì)上,GPS接收器將衛(wèi)星發(fā)送信號的時間與接收信號的時間進(jìn)行比較。時間差告訴GPS接收器衛(wèi)星有多遠(yuǎn)。現(xiàn)在,通過再測量幾顆衛(wèi)星的距離,接收器就可以確定用戶的位置并將其顯示在設(shè)備的電子地圖上。
GPS接收器必須鎖定至少3顆衛(wèi)星的信號才能計(jì)算二維位置(經(jīng)度和緯度)并跟蹤運(yùn)動。在看到四個或更多衛(wèi)星的情況下,接收器可以確定用戶的3-D位置(緯度,經(jīng)度和高度)。一旦確定了用戶的位置,GPS單元就可以計(jì)算其他信息,例如速度,方位,軌道,行進(jìn)距離,到目的地的距離,日出和日落時間等等。
GPS衛(wèi)星系統(tǒng):
* *構(gòu)成GPS空間部分的24顆衛(wèi)星在環(huán)繞我們12,000英里的地球上運(yùn)行。它們不斷移動,在不到24小時的時間內(nèi)完成了兩個完整的軌道。這些衛(wèi)星以每小時約7,000英里的速度飛行。
* GPS衛(wèi)星由太陽能提供動力。他們在船上配有備用電池,可以在沒有太陽能的情況下在日食發(fā)生時保持運(yùn)行。每個衛(wèi)星上的小型火箭助推器都能使它們沿正確的路徑飛行。
什么是信號?
GPS衛(wèi)星發(fā)送兩個稱為L1和L2的低功率無線電信號。民用GPS在UHF頻帶中使用1575.42 MHz的L1頻率。信號通過視線傳播,這意味著它們將穿過云層,玻璃和塑料,但不會穿過大多數(shù)固體物體,例如建筑物和山脈。GPS信號包含3個不同的信息位-偽隨機(jī)碼,星歷表數(shù)據(jù)和年歷數(shù)據(jù)。偽隨機(jī)碼只是一個I.D.標(biāo)識哪個衛(wèi)星正在發(fā)送信息的代碼。每個衛(wèi)星不斷發(fā)送的星歷數(shù)據(jù)包含有關(guān)衛(wèi)星狀態(tài)(健康或不健康),當(dāng)前日期和時間的重要信息。信號的這一部分對于確定位置至關(guān)重要。年歷數(shù)據(jù)會告訴GPS接收器一天中任何時候都應(yīng)將每顆GPS衛(wèi)星放在哪里。每顆衛(wèi)星發(fā)送的年歷數(shù)據(jù)均顯示該衛(wèi)星以及系統(tǒng)中其他所有衛(wèi)星的軌道信息。
步驟2:硬件
鏈接到部件:
Arduino Uno(克隆正常)
Adafruit FONA 808分支板
跳線
面包板
SMA或uFl天線(取決于您的板版本,一切工作都很好)
LED(綠色/紅色)
330歐姆電阻器
壓電蜂鳴器
3.7V鋰電池
2G Sim (重要)
工具:
FONA的烙鐵
松香芯
板上,您將需要一組附加組件:GSM天線,以及GPS天線。您還需要一個工作的GPRS SIM卡,上面帶有一些數(shù)據(jù)信用,需要將其放置在FONA 808分支板上。您還需要一個3.7V的LiPo電池為分支板供電。您可以得到1200 mAh的電池。
FONA有兩種版本,一種是SMA版本,另一種是uFl版本。具有相同功能的唯一區(qū)別是它們的天線。但是對于今天的項(xiàng)目,我將使用SMA版本。
對于“警報”部分,您將需要一個簡單的紅色或綠色LED(330歐姆)電阻和壓電蜂鳴器。
如果您想要附加版本,可以購買FONA 808,該模塊可以堆疊在UNO的頂部,而無需進(jìn)行任何布線,只需焊接接頭即可固定并連接天線和SIM卡。然后上傳代碼。但是由于我沒有該版本,所以我打算將其800版本用于今天的項(xiàng)目。
步驟3:Fona庫
以下是FONA的庫。如果要測試FONA,請
轉(zhuǎn)到:
Arduino IDE》 File》 SketchBook》 Libraries》 Fona Lib 。.》 Fona Test
以下連接是不同的,并且已在代碼中進(jìn)行了編輯。
從電池電壓到查詢,GPS定位,呼叫有多種選項(xiàng)可供選擇和短信。
第4步:組裝
如果使用FONA 808屏蔽,只需將其插入即可。對于分線,需要少量布線。首先,將電源連接到實(shí)驗(yàn)板上:
將 5V 引腳從 Arduino 板上連接至紅色電源線/面包板上的正極
GND 引腳到藍(lán)色電源線/負(fù)極。
您可能必須將排針正確焊接到分支板上,或者可能沒有適當(dāng)?shù)膶?dǎo)電性。
焊接后,將FONA 808分支放在面包板上。
將 VIO 引腳連接到紅色電源線
GND &鍵引腳連接到藍(lán)色電源線。
然后,
將FONA的 RST 引腳連接到Arduino引腳 4 ,
FONA TX 至Arduino引腳 3
RX 到Arduino引腳 2
,還將3.7V LiPo電池,GPS天線和GSM天線連接到FONA 8 08屏蔽或突破。
還要將LED與330-1K歐姆電阻串聯(lián)在面包板上。將其連接到Arduino板的引腳編號 6 ,并將另一端連接到地面。
這是完全組裝的項(xiàng)目的外觀(在上方查看圖片)
第5步:Adafruit IO
使用相同的硬件并將其與Adafruit IO集成。我們將使用Adafruit IO在地圖上實(shí)時顯示項(xiàng)目的位置,并在圍欄被破壞的情況下顯示警報。
要使用Adafruit IO,您應(yīng)該擁有一個Adafruit帳戶a,您必須注冊邀請名稱,然后才能使用Adafruit IO。完成所有這些之后,可能需要一兩個星期才能獲得Adafruit IO。
步驟6:跟蹤和警報
在此第一個項(xiàng)目中,我們將連續(xù)檢查項(xiàng)目的位置,并查看如果超出了我們在草圖中設(shè)置的給定距離。
如果是這樣,我們將使LED閃爍,并使蜂鳴器發(fā)出聲音。
我們首先為警報聲明一些常量和變量:
// LED & Buzzer pins
const int ledPin = 6;
const int buzzerPin = 9; // Alarm
int counter = 0;
bool alarm = false;
然后,我們設(shè)置項(xiàng)目在不提高報警范圍的情況下可以走的最大距離。報警。請注意,像這樣的民用GPS的精度約為10米,因此我真的建議您設(shè)置一個優(yōu)于20米左右的值:
const float maxDistance = 100;
兩個變量將包含項(xiàng)目的初始位置:
float initialLatitude;
float initialLongitude;
默認(rèn)情況下,我們將警報設(shè)置為false:
alarm = false;
在草圖的setup()函數(shù)中,我們獲得了GPS修復(fù)程序來設(shè)置項(xiàng)目的初始位置:
bool gpsFix = fona.getGPS(&latitude, &longitude, &speed_kph, &heading, &altitude);
initialLatitude = latitude; initialLongitude = longitude; In the loop() function of the sketch, we constantly get the current GPS location, and then calculate the difference between this & the initial location: float distance = distanceCoordinates(latitude, longitude, initialLatitude, initialLongitude); we also print this distance inside the Serial monitor: Serial.print(“Distance: ”);
printFloat(distance, 5);
Serial.println(“”); If the measured distance exceeded the maximum distance we allowed, we also set the alarm on: if (distance 》 maxDistance) {
alarm = true;
}
之后,我們檢查是否是否處于警報模式,并相應(yīng)地對LED和壓電蜂鳴器進(jìn)行操作:
if (alarm == false) {
if (millis() - counter 》 5000) {
digitalWrite(ledPin, HIGH);
} if (millis() - counter 》 5100) {
digitalWrite(ledPin, LOW);
counter = millis();
} noTone(buzzerPin);
現(xiàn)在是時候測試項(xiàng)目了!將代碼上傳到Arduino開發(fā)板,然后打開串行監(jiān)視器。您應(yīng)該看到,最初的距離等于零,或者是一個很小的值。
實(shí)際上,請注意GPS的精度約為10米,因此兩次測量之間的位置會略有變化。您也可以走出設(shè)置的邊界,然后步行片刻,看看它是否會發(fā)出警報!
最好的事情是它留下了點(diǎn),換句話說,它是最后找到的點(diǎn)
第7步:資源
您可以參考以下鏈接,獲取有關(guān)以下方面的任何信息:對于您的疑問或下一個項(xiàng)目,請使用SIM800。
SIM800命令手冊
SIM800 FM應(yīng)用說明
SIM800 IP應(yīng)用說明
SIM800 GSM位置應(yīng)用筆記
SIM800嵌入式AT應(yīng)用筆記
步驟8:電池消耗
我們還沒有談到的其他方面這是功耗。可以肯定地假設(shè),如果您正在構(gòu)建蜂窩跟蹤器,則需要將其放在可移動的物體上,這意味著它將需要偏離我們世界的電源插座/USB端口。這意味著電池電量,這意味著測量功率消耗并計(jì)算電池壽命等。
蜂窩式設(shè)備因耗電量大而享有盛譽(yù)。 Adafruit說,此模塊可在短時間內(nèi)產(chǎn)生2安培(!!)的電流。但是,按照我們的使用方式,它會花費(fèi)大部分時間關(guān)閉電源,消耗很少。
我測量了正常使用期間電池的功耗。
上電:?25mA
獲取請求:峰值持續(xù)時間在150-200mA
一個完整的位置請求和發(fā)送GET請求的周期消耗約7.47焦耳
53.4 mA的平均電流持續(xù)35秒
關(guān)閉電源:約150μA靜態(tài)功耗
如果我們使用容量為1200mAH的電池,則在發(fā)出電池之前,我們可以在15分鐘的間隔內(nèi)獲得約12天的發(fā)送位置。 (從理論上講,沒有考慮Arduino的功耗)。
責(zé)任編輯:wv
-
Arduino
+關(guān)注
關(guān)注
188文章
6478瀏覽量
188287
發(fā)布評論請先 登錄
相關(guān)推薦
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-本地倉庫管理之當(dāng)前分支內(nèi)的操作
飛凌嵌入式ElfBoard ELF 1板卡-本地倉庫管理之當(dāng)前分支內(nèi)的操作
開源項(xiàng)目!打造一款FPV頭部追蹤相機(jī),讓你仿佛置身遙控車之中!
開源項(xiàng)目!基于 Arduino 的 MIDI 架子鼓
基于Arduino的串口通信項(xiàng)目
三格電子新品上市—EtherCAT分支器

開源項(xiàng)目!基于Arduino做的“魷魚游戲”BOSS面具,支持動作檢測
抖動跟蹤不丟失 慧視圖像跟蹤板和自研算法強(qiáng)勢升級

評論