您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何使用micro:bit、XinaBox和IoT實現數據捕捉,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
在BBC micro:bit上遠程捕獲加速度計數據,然后使用XinaBox Wi-Fi網關將數據傳輸到IoT平臺。
需要的材料
XinaBox IP01 x 1
XinaBox CW01 x 1
XinaBox BM01 x 1
XinaBox XC10 x 1
BBC micro:bit x 1
軟件和在線服務
Ubidots,30天的免費IoT平臺。
故事
加速度是使物體改變其速度的原因:當對物體施加足夠強度的力并使其減速、加速或改變方向加速度已經發生。這是我們對這個世界的一個基本觀察。不僅體驗簡單直觀,而且分析也很有吸引力和教育性。能夠可視化與掉落或投擲球或加速火箭相關的力,或者看到當移動物體撞擊墻壁時發生的事情。
該項目將向您展示如何使用micro:bit和IoT來分析一段時間內的加速度。您可以使用此處描述的代碼和技術來測量適用于micro:bit的移動對象的加速度。
下面是加速度可視化的示例:該圖表顯示了在平面中移動的物體的實際數據。我現在不會對它說太多 - 我鼓勵你看一下加速度曲線并嘗試推斷出發生了什么(例如它是一個球彈跳,還是滾動,還是別的什么?)。本文的最后一部分揭示了下面所示的真實世界事件。
BBC micro的一個很棒的功能:它板載加速度計。許多年輕的學習者花了大量的時間從加速度計讀取數據并以各種創造性的方式使用它。我見過無數遙控車的遙控車,手套作為控制器,一些非常聰明的平衡機器人,甚至基于手勢的音樂'樂器'。
但是加速度計作為一種學習工具也具有巨大的潛力,可以支持速度/距離/時間三角函數,這種三角形非常重要,表面上是物理學中的知識領域。有什么更好的教授加速方法,而不是讓年輕的學習者見證一個事件,然后回顧那個事件背后的力量?
在這篇文章中,我將向您展示如何:
使用micro:bit來收集一堆加速度計讀數。這個micro:bit將“遠程”收集數據,這意味著它將在事件期間收集數據并將其存儲在micro:bit中,以便稍后共享(我將在稍后解釋原因)。
一旦我們測量的事件完成,我們將使用基于Wi-fi的micro:bit XinaBox IoT入門套件(我在這里稱為我們的micro:bit網關)來獲取數據并將其傳輸到物聯網平臺。
在這個例子中,我們將在兩個人之間扔一個球然后將數據傳到Ubidots IoT平臺上。
為什么要遠程收集原始加速度計數據?
micro:bit包括無線功能,使micro:bit能夠和另一個設備(不是另一個micro:bit)之間啟用藍牙連接。
在某些情況下,可以在收集數據時使用無線電或BT傳輸數據。這種方法不適合導致這個博客的情況。當我被要求查看在開始時生成圖表的現實世界問題時,需要考慮一些具體的挑戰:
數據不會丟失至關重要。我需要在運行期間存儲數據,然后再將其提取出來,我無法承受無線數據包丟失或BT連接丟失。在運行期間保存數據意味著我們可以在空閑時檢索它,如果數據檢索失敗,我們可以重新嘗試。
由于某些我將在后面解釋的原因,在加速事件期間(后面將稱之為運行)我想使用全部處理器時間來獲取加速度計讀數。如果我在運行期間傳輸數據,它會減少我們可以采樣的數據量,這會影響數據的質量。
我想存儲大量數據,因此我需要確保非必要進程使用最少的內存。生產級別的數據收集程序(此處未包含)確保將microbit的數據擴展到極限!
在運動中移動的物體可能移動了相當遠的距離,將接收器放在固定位置是有風險的。可以這樣想 - 這里的代碼可用于測量從高處掉落的身體的加速度。代碼可以適用于讀取數據10秒或更長時間,并且在那段時間內,它將從您丟棄的地方落下很長的距離。
我已經完成了以下工作流程:
進行測量
將附加的microPython代碼寫入到micro:bit。
連接到電池
在你的球上切一個足夠大的孔,以便將microbit和電池裝入。
用填充物填充球中的空間(我使用了氣泡膜)
完成后,請執行以下操作以激活它:
單擊復位按鈕以清除舊數據,然后單擊A按鍵
將從3開始倒計時 - 在倒計時結束時,LED上顯示停止,表示microbit正在進行測量。在此期間扔球。
測量階段完成后,LED上會顯示一個小方塊。示例代碼將記錄大約3秒鐘的數據,但您可以調整代碼以增加或減少數據。
單擊B按鈕時,它將啟動將數據傳輸到micro:bit網關。
有Simple和Advanced兩個版本程序,它們之間的區別在于數據收集方法。兩者都是以每25ms保存1次數據(相當于每秒40次),對于Simple版本,我們每25ms只讀取一次加速度計;而advance版將在25ms周期內讀取加速度計最多75次,然后我們保存一個值,即所有75個讀數的平均值,這樣可以“平滑”數據:它可以減少異常值并在整個25ms周期內提供加速度最大近似值。為了了解數據質量的差異,我建議您自己嘗試一下:使用兩個版本的代碼并查看數據圖表。您可以閱讀有關此方法的更多詳細信息,何時使用它以及為什么它有效。
如果你查看代碼,你會注意到我在y平面上記錄加速度。因為對于我開發這個程序的真實場景,micro:bit在該平面中移動。然而,當涉及投擲球時,作用在y平面上的力是投擲microbit方向的分量。可以調整代碼來記錄x和z讀數,以及你可以拋出球的方式,使加速度在你正在記錄的平面上。
您可能還注意到代碼需要提供120個讀數。每25ms讀取1次,這相當于3秒的數據收集,我發現以這種方式可以記錄多達400個數據點。我使用文件來存儲數據,而不是列表。兩種方式各有利弊,我在此不再贅述(但如果你感興趣可以提問)。
microbit網關+物聯網平臺
您需要執行以下操作:
構建并設置micro:bit網關。
連接到物聯網平臺
我建議您查看此博客,其中包含連接所需的所有信息。
在完成實驗之前,請確保您的網關已通電并連接到Ubidots。
請注意,此項目的網關中的microPython代碼幾乎與我編寫的其他博客中使用的代碼相同。針對每種情況進行調整相對容易,使用MakeCode圖形編程時(即將提供!),這個過程將大大簡化。
把它們放在一起
如上所述,設置并投擲球。
測量完成后,確保您的球中的microbit于網關的范圍內(應該有幾米)。
確保您的網關已準備好接收數據。
單擊球上的B按鈕
坐下來看看這個過程。觀看數據在Ubidots積累很有趣。
我的代碼大約需要一分鐘才能將所有數據傳輸到IoT平臺。這個時間可以顯著減少。花了這么長時間的原因是我一直非常謹慎 -- 我花了一些時間來調整延時,當我發現各種效果始終如一時,我就放棄了。我很樂意看到它的工作速度更快,所以如果你實現了這一點,請與我聯系,讓我知道如何做。
從頭開始分析圖表
讓我們再看一下博客開頭的圖表。這一次,我已經設置了一些線來標記有趣的“階段”:
階段0 :對象處于靜止狀態。
階段1 :快速加速(甚至可以說是爆炸性的)。它在標記的點處達到峰值,但在此期間物體會加速。在此期間結束時,物體已達到其最大速度
階段2 :在此期間開始時,物體的減速超過了加速的力,開始快速減速。
階段3 :此處的數據有點“嘈雜” -- 物體在大部分時間內正在減速,減速率的偶然變化很有意思。
階段4 :發生快速減速,速度同樣迅速減小,直到達到零。
階段5 :物體再次處于靜止狀態。
你有沒有猜到它是什么?
這是一輛火箭動力汽車。在第1階段,火箭發動機起火,然后停止發射,我們進入第2階段。這一階段看到阻力對車輛起作用。在第3階段,汽車反彈一點,有時可能會離開地面并短暫地進入自由落體(這可能解釋了那段時期內發現的輕微加速度)。在第4階段,它會撞上一個特別設計的緩沖系統,在大約1.5米的范圍內將其減速至停止。
以上就是如何使用micro:bit、XinaBox和IoT實現數據捕捉,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。