如何使用粒子B系列SoM構(gòu)建實(shí)時(shí)大象跟蹤系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
我們的物聯(lián)網(wǎng)項(xiàng)圈可以實(shí)時(shí)跟蹤大象,通過GPS、地理圍欄和即時(shí)警報(bào)確保安全。
本項(xiàng)目演示了如何使用粒子B系列SoM構(gòu)建實(shí)時(shí)大象跟蹤系統(tǒng)。該系統(tǒng)可以對(duì)大象進(jìn)行實(shí)時(shí)GPS跟蹤,并實(shí)施地理圍欄,如果大象離開了預(yù)定義的邊界,就通知護(hù)林員。數(shù)據(jù)顯示在與OpenStreetMap集成的web界面上,并存儲(chǔ)在Firebase中進(jìn)行分析。
動(dòng)機(jī)
我們當(dāng)?shù)匾幻?0歲的男子因一頭野象襲擊而不幸喪生,這一事件深深震撼了我們的社區(qū)。這一令人心碎的事件并不是孤立的;它反映了人象沖突日益嚴(yán)重的全球危機(jī),威脅著人類的生命和這些雄偉動(dòng)物的生存。這種沖突正變得越來越頻繁,突出表明迫切需要?jiǎng)?chuàng)新的解決辦法,以減輕這些沖突并促進(jìn)共存。
在世界上許多地區(qū),人象沖突已達(dá)到令人震驚的程度,往往造成毀滅性后果,如作物被毀、財(cái)產(chǎn)損失以及人和動(dòng)物的生命損失。例如:
?在斯里蘭卡,每年約有70人和300頭大象死于沖突。
?在肯尼亞,大象經(jīng)常誤入村莊尋找食物,導(dǎo)致財(cái)產(chǎn)損失和死亡。
?在泰國(guó),快速的城市化和棲息地的喪失加劇了人象沖突,危及社區(qū)和野生動(dòng)物。
這些事件突出表明,迫切需要以可持續(xù)和人道的方式解決人象沖突。該項(xiàng)目旨在通過開發(fā)以先進(jìn)物聯(lián)網(wǎng)技術(shù)為動(dòng)力的大象跟蹤和地理圍欄系統(tǒng),為實(shí)現(xiàn)這一目標(biāo)做出貢獻(xiàn)
關(guān)鍵特性
?實(shí)時(shí)跟蹤:從B系列SoM連續(xù)獲取GPS數(shù)據(jù)。
?地理圍欄:定義圓形邊界(緯度、經(jīng)度和半徑)。如果大象離開了這個(gè)邊界,通知它。
?可持續(xù)動(dòng)力:由太陽能電池板供電,可擴(kuò)展現(xiàn)場(chǎng)操作。
粒子B系列SoM的建立
B-SoM模塊是該項(xiàng)目的核心,為蜂窩物聯(lián)網(wǎng)應(yīng)用量身定制。它是Particle的旗艦物聯(lián)網(wǎng)模塊,旨在與Particle物聯(lián)網(wǎng)平臺(tái)即服務(wù)(Platform-as-a-Service)無縫協(xié)作,該服務(wù)可為多達(dá)100臺(tái)設(shè)備提供免費(fèi)使用。此外,它還包括全球嵌入式SIM卡和數(shù)據(jù)計(jì)劃,確保全球可靠的蜂窩連接。
我們特別為這個(gè)項(xiàng)目選擇了B524 SoM,因?yàn)樗哂袕?qiáng)大的蜂窩連接,因?yàn)閃i-Fi在偏遠(yuǎn)的野生動(dòng)物地區(qū)是不可行的選擇。蜂窩功能可確保不間斷通信,即使在其他連接選項(xiàng)不可用的室外環(huán)境中也是如此。
為了充分利用B524 SoM的能力,M.2評(píng)估板是一個(gè)必不可少的工具。該分?jǐn)喟搴?jiǎn)化了開發(fā)并簡(jiǎn)化了原型設(shè)計(jì),使無縫訪問模塊的全部潛力成為可能。該板包括用于nRF52840 MCU和蜂窩調(diào)制解調(diào)器的USB端口,SD卡連接器,以太網(wǎng)連接器,桶插孔電源連接器,按鈕,RGB LED,充電狀態(tài)LED和LiPo電池連接器(不包括電池)。
以下是我們?nèi)绾螌524 SoM連接到評(píng)估板。
?將蜂窩天線連接到SoM上標(biāo)有CELL的U.FL連接器上。這一步對(duì)于實(shí)現(xiàn)可靠的蜂窩連接至關(guān)重要。
?將B524 SoM與Eval板上的M.2 NGFF連接器對(duì)齊。
?小心地將模塊插入連接器,確保模塊正確插入。
?使用eval board套件中提供的螺釘固定模塊,以防止移動(dòng)或斷開。
要利用B524 SoM與粒子平臺(tái)的全部功能,您需要設(shè)置您的粒子。IO帳戶和配置您的設(shè)備。請(qǐng)遵循以下步驟:
1. 訪問粒子設(shè)置網(wǎng)站:
打開瀏覽器,進(jìn)入setup.particle.io。
2. 登錄您的粒子帳戶:
如果您已經(jīng)有一個(gè)帳戶,請(qǐng)輸入您的憑據(jù)并登錄。
如果你沒有帳戶,按照注冊(cè)過程創(chuàng)建一個(gè)。
3. 選擇您的設(shè)備:
在設(shè)置頁面上,通過將Eval板連接到計(jì)算機(jī),為您的設(shè)備選擇適當(dāng)?shù)倪x項(xiàng)。
然后,它會(huì)自動(dòng)將設(shè)備更新為最新的設(shè)備操作系統(tǒng)和固件。
4. 組織你的粒子裝置
選擇您的組織和產(chǎn)品,并為設(shè)備命名。
5. 完成安裝:
一旦設(shè)置過程完成,您的設(shè)備將顯示為注冊(cè)在您的粒子帳戶。
您將看到確認(rèn)消息,表明設(shè)備已準(zhǔn)備好進(jìn)行開發(fā)。
粒子工作臺(tái)
粒子工作臺(tái)是一個(gè)先進(jìn)的開發(fā)環(huán)境,集成了Visual Studio Code,使其易于編寫,編譯和調(diào)試固件的B524 SoM。你可以這樣設(shè)置它:
1. 安裝Visual Studio Code
從官方網(wǎng)站下載并安裝Visual Studio Code。
2. 安裝Particle Workbench擴(kuò)展
打開Visual Studio Code。
通過單擊左側(cè)欄上的Extensions圖標(biāo)進(jìn)入Extensions Marketplace。
搜索Particle Workbench并安裝擴(kuò)展。
3. 設(shè)置你的項(xiàng)目
?打開Visual Studio Code。
?按Ctrl+Shift+P(或在macOS上按Cmd+Shift+P)打開命令面板。
?輸入粒子:創(chuàng)建新項(xiàng)目并選擇它。
?根據(jù)提示選擇項(xiàng)目目錄,選擇B524 SoM,設(shè)置目標(biāo)固件版本。
準(zhǔn)備GPS模塊
在這個(gè)項(xiàng)目中,我們使用了RYS352A GPS模塊進(jìn)行精確的位置跟蹤。該模塊的規(guī)格如下。
RYS352A模塊具有3.3V UART連接,允許與微控制器無縫通信。支持GPS、GLONASS、Galileo、北斗、QZSS、SBAS等多種GNSS系統(tǒng),提供高精度定位數(shù)據(jù)。該模塊集成了12個(gè)多音有源干擾消除器,有效地降低了信號(hào)噪聲。
此外,它還包括增強(qiáng)的組件,如SAW濾波器,LNA(低噪聲放大器)和TCXO(溫度補(bǔ)償晶體振蕩器),用于卓越的信號(hào)處理。嵌入式GPS/GLONASS/北斗天線確保衛(wèi)星信號(hào)接收一致。通過RTC(實(shí)時(shí)時(shí)鐘)電池備份,該模塊即使在斷電時(shí)也可以保持時(shí)間。它還提供了10Hz的最大導(dǎo)航更新速率,使其適合高速跟蹤應(yīng)用。
連接Reyax GPS模塊到粒子B系列SoM:
?SoM上從GPS到RX的TX。
?在SoM上從GPS到TX的RX。
?3.3V從GPS到3.3V在SoM
?從GPS到SoM的GND
TinyGPS++庫用于解析來自模塊的NMEA句子。
下面是獲取經(jīng)緯度的示例代碼。
如果GPS獲得了一個(gè)定位,它將顯示如下。
設(shè)置Firebase實(shí)時(shí)數(shù)據(jù)庫
Firebase實(shí)時(shí)數(shù)據(jù)庫是一個(gè)NoSQL數(shù)據(jù)庫,它將數(shù)據(jù)存儲(chǔ)為JSON對(duì)象。它在所有連接的客戶端之間實(shí)時(shí)同步數(shù)據(jù),確保每個(gè)用戶同時(shí)看到相同的數(shù)據(jù)。主要特點(diǎn)包括:
實(shí)時(shí)同步:數(shù)據(jù)更改立即傳播到所有連接的設(shè)備。
離線支持:Firebase sdk在本地緩存數(shù)據(jù),允許應(yīng)用程序離線運(yùn)行并在重新連接時(shí)同步更改。
可伸縮性:Firebase RTDB可以處理擁有數(shù)百萬用戶的大型應(yīng)用程序。
設(shè)置Firebase項(xiàng)目
1. 創(chuàng)建一個(gè)Firebase項(xiàng)目:
進(jìn)入Firebase控制臺(tái)。
點(diǎn)擊“添加項(xiàng)目”。
輸入項(xiàng)目名稱并按照提示創(chuàng)建項(xiàng)目。
2. 將Firebase添加到您的應(yīng)用程序:
創(chuàng)建項(xiàng)目后,單擊(web)圖標(biāo)將Firebase添加到web應(yīng)用程序中。
通過提供昵稱來注冊(cè)應(yīng)用程序。
Firebase將生成一個(gè)包含API密鑰和其他設(shè)置的配置對(duì)象。在你的應(yīng)用程序中初始化Firebase時(shí),請(qǐng)保持這個(gè)方便。
啟用Firebase實(shí)時(shí)數(shù)據(jù)庫
1. 導(dǎo)航到實(shí)時(shí)數(shù)據(jù)庫:
在Firebase控制臺(tái)中,轉(zhuǎn)到左側(cè)欄的Build部分并選擇Realtime Database。
2. 創(chuàng)建數(shù)據(jù)庫:
點(diǎn)擊“創(chuàng)建數(shù)據(jù)庫”。
為您的數(shù)據(jù)庫選擇一個(gè)位置(最好靠近您的用戶,以獲得更好的性能)。
選擇“以測(cè)試模式啟動(dòng)”,暫時(shí)允許所有用戶讀寫訪問(您可以稍后配置安全規(guī)則)。
3. 數(shù)據(jù)庫URL
創(chuàng)建數(shù)據(jù)庫之后,F(xiàn)irebase將為您的數(shù)據(jù)庫提供一個(gè)格式為https://.firebaseio.com/的唯一URL。
這個(gè)URL用于在應(yīng)用程序中引用數(shù)據(jù)庫。
4. Firebase項(xiàng)目ID:
Firebase項(xiàng)目ID是Firebase項(xiàng)目的唯一標(biāo)識(shí)符。它將您的項(xiàng)目與其他項(xiàng)目區(qū)分開來,并且在進(jìn)行API調(diào)用或配置Firebase服務(wù)時(shí)是必需的。
從Firebase控制臺(tái):
?進(jìn)入Firebase控制臺(tái)。
?選擇您的項(xiàng)目。
?點(diǎn)擊側(cè)邊欄“項(xiàng)目概覽”旁邊的齒輪圖標(biāo)(??)。
?選擇“項(xiàng)目設(shè)置”。
?在General選項(xiàng)卡下,您將找到列出的Project ID。
來自Firebase配置對(duì)象:
當(dāng)你將Firebase添加到應(yīng)用程序時(shí),F(xiàn)irebase提供了一個(gè)配置對(duì)象。該對(duì)象包含projd字段。
5. Firebase認(rèn)證令牌(Firebase數(shù)據(jù)庫密鑰)
Firebase數(shù)據(jù)庫秘密是Firebase實(shí)時(shí)數(shù)據(jù)庫的遺留身份驗(yàn)證機(jī)制。它是一個(gè)隨機(jī)生成的長(zhǎng)字符串,授予對(duì)整個(gè)數(shù)據(jù)庫的完全讀寫訪問權(quán)限。它主要用于需要不受限制地訪問數(shù)據(jù)庫的服務(wù)器端應(yīng)用程序或工具。
進(jìn)入Firebase控制臺(tái):
?.登錄Firebase控制臺(tái)。
?選擇您的項(xiàng)目。
導(dǎo)航到項(xiàng)目設(shè)置:
?點(diǎn)擊側(cè)邊欄“項(xiàng)目概覽”旁邊的齒輪圖標(biāo)(??)。
?選擇“項(xiàng)目設(shè)置”。
訪問數(shù)據(jù)庫秘密:
?轉(zhuǎn)到Service Accounts選項(xiàng)卡。
?向下滾動(dòng)到數(shù)據(jù)庫秘密部分。
?點(diǎn)擊“顯示”顯示秘密。如果需要,您也可以點(diǎn)擊“Add secret”來生成一個(gè)新的secret。
?復(fù)制密鑰并安全地存儲(chǔ)。將其視為密碼,因?yàn)樗谟鑼?duì)數(shù)據(jù)庫的完全訪問權(quán)限。
數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)模型
Firebase實(shí)時(shí)數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)為JSON樹。樹中的每個(gè)節(jié)點(diǎn)都可以包含鍵值對(duì)或嵌套的子節(jié)點(diǎn)。
這是我們使用的數(shù)據(jù)庫結(jié)構(gòu):
設(shè)置粒子集成與Firebase
Particle為Firebase提供了一個(gè)內(nèi)置的集成,允許你直接向Firebase實(shí)時(shí)數(shù)據(jù)庫發(fā)送數(shù)據(jù)。
我們需要在Particle和Firebase之間進(jìn)行3種不同的整合
?從Firebase到Particle獲取地理圍欄數(shù)據(jù)
?把實(shí)時(shí)位置從粒子到火基
?后實(shí)時(shí)位置從粒子到火基
1. 從Firebase到Particle獲取地理圍欄數(shù)據(jù)
這個(gè)集成包括從Firebase獲取地理圍欄數(shù)據(jù)(例如,邊界坐標(biāo))并將其發(fā)送到Particle設(shè)備。
創(chuàng)建一個(gè)Firebase集成在粒子控制臺(tái):
?轉(zhuǎn)到粒子控制臺(tái)。
?導(dǎo)航到Integration并創(chuàng)建一個(gè)新的Firebase Integration。
?配置Firebase集成:
粒子固件代碼:
?使用Particle.subscribe()偵聽地理圍欄數(shù)據(jù)。
2. 把實(shí)時(shí)位置從粒子到火基
這種集成包括使用PUT請(qǐng)求將實(shí)時(shí)位置數(shù)據(jù)從Particle設(shè)備發(fā)送到Firebase。
創(chuàng)建一個(gè)Firebase集成在粒子控制臺(tái):
?導(dǎo)航到Integration并創(chuàng)建一個(gè)新的Firebase Integration。
?配置Firebase集成:
粒子固件代碼:
使用Particle.publish()發(fā)送位置數(shù)據(jù)。
3. 后實(shí)時(shí)位置從粒子到火基
這種集成包括使用POST請(qǐng)求將實(shí)時(shí)位置數(shù)據(jù)從Particle設(shè)備發(fā)送到Firebase以創(chuàng)建位置歷史記錄。
創(chuàng)建一個(gè)Firebase集成在粒子控制臺(tái):
?轉(zhuǎn)到粒子控制臺(tái)。
?導(dǎo)航到Integration并創(chuàng)建一個(gè)新的Firebase Integration。
?配置Firebase集成:
粒子固件代碼:
?使用Particle.publish()發(fā)送位置樣本位置數(shù)據(jù)。
整合Twilio的短信提醒
將Twilio與Particle設(shè)備集成在一起,您可以直接從BSoM發(fā)送SMS警報(bào),這對(duì)于即時(shí)通知至關(guān)重要的應(yīng)用程序(例如警報(bào)系統(tǒng))來說非常理想。按照以下步驟設(shè)置Twilio并將其集成到您的BSoM中以發(fā)送短信提醒。
設(shè)置一個(gè)Twilio帳戶,并獲得您的憑據(jù)
?如果你還沒有,在Twilio的網(wǎng)站上注冊(cè)一個(gè)Twilio賬戶。
?一旦您的帳戶設(shè)置,從Twilio控制臺(tái)獲取您的帳戶SID和認(rèn)證令牌,以及Twilio電話號(hào)碼。你需要這些來授權(quán)并通過Twilio發(fā)送短信。
在粒子控制臺(tái)設(shè)置Twilio集成
?登錄到粒子控制臺(tái)并導(dǎo)航到集成部分。
?點(diǎn)擊New Integration并選擇Twilio。
?事件名稱:選擇一個(gè)事件名稱,如twilio_sms_alert, BSoM將在需要發(fā)送短信時(shí)觸發(fā)該事件。
參數(shù):設(shè)置如下參數(shù)字段:
?用戶名:您的Twilio帳戶SID。
?密碼:您的Twilio認(rèn)證令牌。
?Twilio SID:您的Twilio帳戶SID。
表單數(shù)據(jù):設(shè)置表單數(shù)據(jù)字段如下:
?來自:你的Twilio電話號(hào)碼。
?收件人:收件人的電話號(hào)碼(短信提醒將發(fā)送到該號(hào)碼)。
?Body:消息文本,如果您想從BSoM代碼定制消息,則可以包含動(dòng)態(tài)值,例如{{PARTICLE_EVENT_VALUE}}。
網(wǎng)站
大象地理圍欄網(wǎng)頁提供了一個(gè)復(fù)雜且用戶友好的界面,用于監(jiān)控大象的運(yùn)動(dòng)、管理地理圍欄區(qū)域和分析位置數(shù)據(jù)。專為環(huán)保人士,研究人員和現(xiàn)場(chǎng)人員,它提供了一個(gè)無縫的融合功能和直觀的設(shè)計(jì)。主要功能包括
實(shí)時(shí)跟蹤
在地圖上顯示大象的實(shí)時(shí)位置,確保最新的監(jiān)測(cè)。
Geofence管理
?加載地理圍欄:快速加載以前保存的地理圍欄區(qū)域。
?Save Geofence:繪制自定義邊界并保存以供將來監(jiān)視。
位置的歷史
使用樣條路徑跟蹤和可視化選定大象的運(yùn)動(dòng)歷史,使用戶能夠研究模式或行為。
技術(shù)的使用
前端
?HTML5和CSS3:網(wǎng)頁的核心結(jié)構(gòu)和樣式。
?js:支持交互式地圖功能,包括地理圍欄繪圖和實(shí)時(shí)位置跟蹤。
?字體Awesome:提供高質(zhì)量的圖標(biāo),以增強(qiáng)用戶體驗(yàn)。
?谷歌字體:使用“Smooch Sans”字體,看起來干凈而現(xiàn)代。
后端集成
1. Firebase實(shí)時(shí)數(shù)據(jù)庫:
?存儲(chǔ)地理圍欄數(shù)據(jù)、大象跟蹤信息和歷史路徑。
?為前端提供實(shí)時(shí)更新,實(shí)現(xiàn)實(shí)時(shí)位置跟蹤。
2. JavaScript:處理地理圍欄創(chuàng)建、保存/加載功能和地圖交互。
太陽能發(fā)電裝置
該項(xiàng)目采用由兩塊6V太陽能電池板組成的太陽能發(fā)電系統(tǒng)。
這些面板將連接到太陽能電源管理器。
是專為5V太陽能板設(shè)計(jì)的高效太陽能電源管理模塊。采用先進(jìn)的MPPT(最大功率點(diǎn)跟蹤)技術(shù),最大限度地提高太陽能電池板效率,可通過USB或太陽能電池板輸入為3.7V鋰電池提供高達(dá)900mA的充電電流。該模塊包括具有5V 1A輸出的可控DC-DC轉(zhuǎn)換器,可用于各種太陽能和低功耗應(yīng)用。其全面的保護(hù)機(jī)制保護(hù)電池、太陽能電池板和輸出電路,顯著提高太陽能項(xiàng)目的穩(wěn)定性和安全性。
為了給評(píng)估板供電,我們使用了一塊1800mAh的鋰電池。
外殼
我們使用Fusion 360設(shè)計(jì)了一個(gè)定制的外殼,以有效地保護(hù)和容納設(shè)備的組件。外殼有兩部分:上半部分容納太陽能電池板,下半部分容納充電控制器、電池和其他電子設(shè)備。
這些部件是3d打印PLA+
組裝
首先,我們安全地安裝太陽能電池板,并聯(lián)連接以增強(qiáng)電流輸出。
接下來,我們定位GPS模塊并使用男對(duì)女跳線將其連接到評(píng)估板。
然后,我們將充電控制器連接到電池和評(píng)估板的VIN引腳,因?yàn)樗С?V到12V的輸入電壓范圍。
最后,我們將太陽能電池板的電線連接到充電控制器上,完成了整個(gè)組裝。
最終測(cè)試和部署
該項(xiàng)目展示了一種高效、可持續(xù)的野生動(dòng)物監(jiān)測(cè)解決方案,利用物聯(lián)網(wǎng)、GPS和可再生能源技術(shù)確保大象及其自然棲息地的安全。
本文編譯自hackster.io