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