基于物聯(lián)網(wǎng)的跌倒檢測,使用NodeMCU ESP8266和加速度計MPU6050
跌倒檢測系統(tǒng)對老年人非常有用。它可以在發(fā)現(xiàn)任何跌倒時通知有關(guān)人員或家庭成員,并可以減少延遲就醫(yī)的風(fēng)險。這導(dǎo)致了許多不同類型的自動跌倒檢測系統(tǒng)的發(fā)展。如今,你可以在智能手表、健身追蹤器和其他類型的可穿戴設(shè)備上找到跌倒探測器。
因此,在本教程中,我們將使用NodeMCU和MPU6050傳感器模塊構(gòu)建一個跌倒檢測設(shè)備。MPU6050傳感器模塊具有陀螺儀和加速度計。陀螺儀用于確定方向,加速度計提供有關(guān)角參數(shù)的信息,如三軸數(shù)據(jù)。為了檢測下降,我們將比較加速度大小和閾值。如果檢測到摔倒,該設(shè)備將向相關(guān)人員發(fā)送短信。這里使用NodeMCU作為微控制器和Wi-Fi模塊,連接IFTTT發(fā)送短信。
組件的要求
?NodeMCU ESP8266
?MPU6050加速度計
?蜂鳴器
?連接電線
線路圖
下面給出了使用NodeMCU的基于物聯(lián)網(wǎng)的跌倒檢測器的電路圖。
MPU6050工作在I2C協(xié)議上,所以我們只需要兩根線來連接NodeMCU和MPU6050。MPU6050的SCL和SDA引腳連接到NodeMCU的D1和D2引腳,MPU6050的VCC和GND引腳連接到NodeMCU的3.3V和GND。我們之前使用MPU6050構(gòu)建手勢控制機器人。
MPU6050傳感器模塊
MPU6050傳感器模塊是完整的6軸(3軸加速度計和3軸陀螺儀)微機電系統(tǒng)(MEMS),用于測量加速度、速度、方向、位移和許多其他運動相關(guān)參數(shù)。除此之外,它還有一個額外的芯片溫度傳感器。
MPU6050模塊具有體積小、功耗低、重復(fù)率高、耐沖擊、用戶價格低等特點。MPU6050帶有I2C總線和輔助I2C總線接口,可以很容易地干擾其他傳感器,如磁力計和微控制器。
IFTTT設(shè)置跌倒檢測器
IFTTT (If This Then That)是一個基于web的服務(wù),我們可以通過它創(chuàng)建條件語句鏈,稱為applet。使用這些小程序,我們可以發(fā)送電子郵件,Twitter, Facebook通知。在這個項目中,我們使用IFTTT在設(shè)備檢測到跌倒時發(fā)送消息通知。
要使用IFTTT,請登錄您的IFTTT帳戶(如果您已經(jīng)有一個帳戶)或創(chuàng)建一個帳戶。
現(xiàn)在搜索“Webhooks”并點擊“服務(wù)中的Webhooks”部分。
現(xiàn)在,在Webhooks窗口中,單擊右上角的“Documentation”以獲取私鑰。
復(fù)制這個密鑰。它將在程序中使用。
獲得私鑰后,現(xiàn)在使用Webhooks和Email服務(wù)創(chuàng)建一個applet。要創(chuàng)建applet,請單擊您的個人資料,然后單擊“創(chuàng)建”。
現(xiàn)在,在下一個窗口中,單擊“This”圖標。
現(xiàn)在在搜索欄中搜索Webhooks,然后點擊“Webhooks”。
現(xiàn)在選擇“Receive a Web Request”觸發(fā)器,在下一個窗口中,輸入事件名稱為fall_detect,然后單擊“create a trigger”。
現(xiàn)在要完成applet,單擊“That”為fall_detect事件創(chuàng)建一個響應(yīng)。
這里我們通過發(fā)送消息來響應(yīng)fall_detect事件。在搜索欄中搜索“Android device”,然后選擇“Android SMS”。
現(xiàn)在,它將要求您輸入電話號碼和消息正文。輸入手機號碼和消息正文,然后點擊“創(chuàng)建操作”完成流程。
現(xiàn)在,我們將創(chuàng)建另一個applet,在檢測到墜落時播放特定的歌曲。
為此,請遵循上述相同的程序,但不是“Android SMS”,而是單擊“Android設(shè)備”,然后單擊“播放特定歌曲”。
在下一步中,輸入歌曲名稱,然后單擊Create。
代碼的解釋
使用NodeMCU的跌倒檢測器的完整代碼在頁面末尾給出。這里我們將解釋一些重要的部分。
像往常一樣,通過包含所有必需的庫來開始代碼。Wire.h庫允許您與I2C / TWI設(shè)備通信,而ESP8266.h庫提供了NodeMCU特定的Wi-Fi例程,我們正在調(diào)用這些例程連接到網(wǎng)絡(luò)。
在接下來的幾行中,輸入Wi-Fi名稱和密碼以及IFTTT帳戶憑據(jù)。
在void setup()中,初始化波特率、線庫和通過電源管理寄存器傳輸?shù)臄?shù)據(jù)。
現(xiàn)在在void loop()中,讀取MPU6050傳感器數(shù)據(jù)。2050、77、1947是加速度計的校準值。陀螺儀相同,在原始值中添加校準值。
在得到加速度計和陀螺儀的值后,計算加速度計值的幅值矢量。
該程序首先檢查加速度計值是否超過較低的閾值,如果是,則等待0.5秒并檢查較高的閾值。如果加速度計的值超過更高的閾值,那么它檢查陀螺儀的值來計算方向的變化。如果方向突然改變,它會等待10秒,檢查方向是否保持不變。如果是,那么它會激活墜落探測器警報。
在mpu_read循環(huán)()中,讀取加速度計和陀螺儀的X、Y和Z軸的所有六個寄存器。
測試物聯(lián)網(wǎng)墜落探測器
一旦你的代碼和硬件準備好了,上傳代碼。為了測試這個項目,把MPU6050拿在手里,假裝慢慢走,然后突然絆倒在一個平臺上,如下面的視頻所示。如果幅度超過閾值,設(shè)備將激活跌倒檢測警報并向注冊號碼發(fā)送消息。
本文編譯自iotdesignpro