資料介紹
描述
該項(xiàng)目旨在緩解更年期常見的潮熱癥狀,它是一個(gè)由可穿戴設(shè)備制成的物聯(lián)網(wǎng)系統(tǒng),可跟蹤用戶在睡眠期間的皮膚溫度和運(yùn)動(dòng)。可穿戴設(shè)備通過藍(lán)牙 LE (BLE) 將溫度和運(yùn)動(dòng)數(shù)據(jù)發(fā)送到風(fēng)扇控制器,當(dāng)皮膚溫度升高時(shí)風(fēng)扇會(huì)被激活,并且數(shù)據(jù)會(huì)記錄在云服務(wù)中。用戶還可以使用谷歌助手來改變風(fēng)扇速度。
請(qǐng)記住,這個(gè)項(xiàng)目不會(huì)阻止您出現(xiàn)潮熱,但可以讓您感到放心,請(qǐng)務(wù)必咨詢您的醫(yī)生。我們認(rèn)為該項(xiàng)目不僅對(duì)更年期的女性有益,對(duì)盜汗患者也有益,從而改善睡眠質(zhì)量。
由于 COVID-19 隔離,我們想用已經(jīng)在家中的電路板/傳感器構(gòu)建一些東西,這使得獲得更多材料變得更加困難。我將嘗試描述亞伯拉罕和我如何開發(fā)這個(gè)正在進(jìn)行的項(xiàng)目,我們遇到的一些挑戰(zhàn)以及我們?nèi)绾螄L試解決它們。
可穿戴設(shè)備
該項(xiàng)目圍繞 STMicroelectronics STEVAL-BCN002V1B開發(fā)套件(又名 BlueTile)構(gòu)建。
STEVAL-BCN002V1B 支持藍(lán)牙 LE 的傳感器節(jié)點(diǎn)開發(fā)套件具有基于 BlueNRG-2 SoC 藍(lán)牙低功耗應(yīng)用處理器的 STEVAL-BCN002V1 多傳感器板。該傳感器板具有加速度計(jì)、陀螺儀、磁力計(jì)、壓力、濕度、飛行時(shí)間和麥克風(fēng)傳感器,并由通用 CR2032 紐扣電池[1]供電。
傳感器板上的BlueNRG-2 SoC 可以使用默認(rèn)程序使用適用于 Android 和 iOS 的STMicro Sensor Demo App連接到您的智能手機(jī)。
這些是您可以使用傳感器演示應(yīng)用程序執(zhí)行的一些功能,您甚至可以記錄數(shù)據(jù),此功能將 CSV 文件發(fā)送到您的電子郵件。
BlueTile 測(cè)試
為了對(duì)傳感器板進(jìn)行編程,我們使用了您獲得套件時(shí)提供的 STEVAL-BCN002V1D編程板。您可以通過多種方式對(duì)傳感器板進(jìn)行編程,這是用戶手冊(cè)。
我們使用 BlueNRG-2 Navigator 來熟悉傳感器板,您可以使用大量示例。這是一個(gè)數(shù)據(jù)簡(jiǎn)介。
BlueNRG -2 Navigator項(xiàng)目可用于Keil和Atollic 。在傳感器板上運(yùn)行的程序是Sensor Demo App
. 首先我們嘗試在 中更改設(shè)備本地名稱sensors.c
,以確保修改源代碼和編程板是可行的。
為此,我們?cè)谑褂?Keil 生成 hex 文件后使用了 BlueNRG-1_2 flasher實(shí)用程序。
值得一提的是,在刷新應(yīng)用程序之前,必須 Service Manager OTA
先使用 flasher 實(shí)用程序加載第一個(gè),然后為應(yīng)用程序生成生成的 hex 文件。
實(shí)際設(shè)備名稱是BCN-002,但不確定與本地名稱有什么區(qū)別。
在文件中的Sensor_DeviceInit()
函數(shù)中sensors.c
更改了aci_gap_set_authentication_requirement
刪除引腳配對(duì)。只需更改USE_FIXED_PIN_FOR_PAIRING
為DONOT_USE_FIXED_PIN_FOR_PAIRING
尋找服務(wù)和特點(diǎn)
要為傳感器板構(gòu)建 BLE 客戶端,您必須在此處獲取更多關(guān)于 BLE 的 Service UUID 和 Characteristic UUID 。
ST Micro 有關(guān)于如何對(duì) BlueNRG-2 進(jìn)行編程的文檔以及有關(guān)服務(wù)的詳細(xì)信息,但我們使用BLE 掃描儀來搜索可用的服務(wù)和特性。
BlueNRG-2有 3 項(xiàng)服務(wù),但傳感器數(shù)據(jù)正在服務(wù)00000000-0001-11E1-9AB4-0002A5D5C51B
中。服務(wù)00000000-000E
和00000000-000F
是調(diào)試和配置。更多關(guān)于第 3 節(jié)的內(nèi)容。
這些是服務(wù)下可用的特性00000000-0001-11E1-9AB4-0002A5D5C51B
-
001c0000-0001-11E1-AC36-0002A5D5C51B
- 環(huán)境的 -
00000100-0001-11E1-AC36-0002A5D5C51B
- 傳感器融合 -
40000000-0001-11E1-AC36-0002A5D5C51B
- ? -
00000400-0001-11E1-AC36-0002A5D5C51B
- 加速度計(jì)事件 -
00020000-0001-11E1-AC36-0002A5D5C51B
- 儀表(用于電池電量) -
00000040-0001-11E1-AC36-0002A5D5C51B
- 指南針 -
20000000-0001-11E1-AC36-0002A5D5C51B
- 引領(lǐng) -
08000000-0001-11E1-AC36-0002A5D5C51B
- 聲音的 -
00E00000-0001-11E1-AC36-0002A5D5C51B
- 運(yùn)動(dòng)傳感器 -
02000000-0001-11E1-AC36-0002A5D5C51B
- 接近
創(chuàng)建 BLE 客戶端
我們使用DOIT Esp32 DevKit v1嘗試連接到傳感器板,基于 ESP32 庫管理器中的 Arduino BLE 客戶端示例。
程序?qū)ふ曳?wù)00000000-0001-11E1-9AB4-0002A5D5C51B
和001c0000-0001-11E1-AC36-0002A5D5C51B
環(huán)境特性。
// The remote service we wish to connect to.
static BLEUUID serviceUUID("00000000-0001-11E1-9AB4-0002A5D5C51B");
// The characteristic of the remote service we are interested in.
static BLEUUID char1UUID("001c0000-0001-11E1-AC36-0002A5D5C51B"); //Env
在掃描 BLE 設(shè)備時(shí),ESP32 能夠看到傳感器板但無法連接到它。
為確保 ESP32 草圖正常工作,我們使用了健身手環(huán)(服務(wù)器)和 ESP32(客戶端),連接成功,但在創(chuàng)建客戶端時(shí)掛起。
我們遇到了 Neil Kolban 的ESP32 片段,似乎 Arduino 庫在信號(hào)量方面存在問題,因此我們構(gòu)建了新庫并重新編程了 ESP32。
但是 ESP32 仍然無法連接到傳感器板。我們嘗試使用 MAC 地址進(jìn)行連接,該地址是在 BLE 設(shè)備掃描時(shí)確定的。
std::string My_BLE_Address = "ec:4d:a6:01:a1:eb";
當(dāng)找到 MAC 地址而不是服務(wù) UUID 時(shí),將調(diào)用 BLE 通告設(shè)備函數(shù)。
// We have found a device, let us now see if it contains the service we are looking for.
if (advertisedDevice.getAddress().toString()== My_BLE_Address ) {
Serial.println("Found DEVICE!");
BLEDevice::getScan()->stop();
myDevice = new BLEAdvertisedDevice(advertisedDevice);
doConnect = true;
doScan = true;
然后 ESP32 能夠與傳感器板建立連接,連接沒有掛起。我們需要調(diào)查為什么在掃描時(shí)在傳感器板上看不到服務(wù)。
BLE 客戶端示例具有通知回調(diào)函數(shù),但數(shù)據(jù)未正確顯示。需要更新回調(diào)函數(shù)(由Andreas Spiess完成)以顯示原始數(shù)據(jù)。
讀取特征值
該gatt_db.c
文件包含更新特征值的函數(shù)。
/**
* @brief Update Environmental characteristic value
* @param int32_t Press Pressure in mbar
* @param uint16_t Hum humidity RH (Relative Humidity) in thenths of %
* @param int16_t Temp1 Temperature in tenths of degree
* @retval tBleStatus Status
*/
tBleStatus Environmental_Update(int32_t Press, uint16_t Hum, int16_t Temp) {
uint8_t BuffPos = 0;
我們使用 ST 傳感器演示應(yīng)用程序獲得了一些日志。
在溫度日志中,0x1B01
MSB 為 0x01 = 283 dec
,但以“十分之一度”表示,即為 28.3°C。
我們使用類似的方法來獲取濕度和壓力值。然后環(huán)境數(shù)據(jù)以易于理解的方式顯示在控制臺(tái)上。
僅包括另外兩個(gè)特征:
運(yùn)動(dòng)傳感器 (MotionFX)。這個(gè)特性在這里更多地使用了四元數(shù)。該數(shù)據(jù)將代表用戶在睡眠時(shí)間的運(yùn)動(dòng),也許這可以用來估計(jì)睡眠質(zhì)量。
MotionFX 是 X-CUBE-MEMS1 軟件的中間件庫組件,在 STM32 上運(yùn)行。它提供實(shí)時(shí)運(yùn)動(dòng)傳感器數(shù)據(jù)融合。它還執(zhí)行陀螺儀偏置和磁力計(jì)硬鐵校準(zhǔn)[2] 。
儀表。儀表特性以 mV 為單位發(fā)送電池電壓。
所有特征都有屬性:READ、NOTIFY、WRITE 等。更多信息請(qǐng)參見此處。 Arduino 上的 ESP32 BLE 客戶端有一個(gè) notify 和 read 回調(diào),主要區(qū)別是當(dāng)一個(gè)特征值改變時(shí)服務(wù)器會(huì)發(fā)送一個(gè)通知。
要獲取數(shù)據(jù),必須啟用和禁用通知,肯定有更好的方法可以做到這一點(diǎn),但似乎發(fā)送NULL
會(huì)禁用通知。
if(p1RemoteCharacteristic->canNotify())
p1RemoteCharacteristic->registerForNotify(NotifyCallback);
//Serial.println("Unregister for notifying!");
delay(100);
p1RemoteCharacteristic->registerForNotify(NULL);
此時(shí)我們已準(zhǔn)備好配置 ESP32 以連接到 Adafruit IO。
IFTTT 小程序
由于我們想控制 AC 風(fēng)扇的速度,我們認(rèn)為如果可以使用 Google Assistant 進(jìn)行語音控制會(huì)很好。
我們?cè)?IFTTT 上創(chuàng)建了以下小程序:高速、低速、關(guān)閉和 自動(dòng)模式來控制放置在床頭柜上的小風(fēng)扇。自動(dòng)模式旨在根據(jù)可能指示潮熱發(fā)作的皮膚溫度變化打開/關(guān)閉風(fēng)扇。
DOIT Esp32 DevKit v1 開發(fā)板只有 4MB 內(nèi)存,因此不適合合并 BLE 和 MQTT :(
電路
亞伯拉罕有備用的 16MB ESP32 WRover 模塊,他在另一個(gè)項(xiàng)目中使用了這些模塊。
我們使用 Abraham 的 ODOROID-GO 定制 PCB,他手工焊接了啟用 ESP32 WRover 模塊所需的最少組件:USB 轉(zhuǎn)串口、USB 連接器、3.3V LDO 等。
僅使用了幾個(gè) GPIO,因此左側(cè)的標(biāo)頭(安裝 SPI tft 屏幕的位置)有足夠的 GPIO 來控制繼電器板。
ESP32 GPIO 不能承受 5V 電壓,因此 Abraham 為 2 個(gè)繼電器、電源和復(fù)位按鈕制作了這個(gè)小屏蔽。
記錄數(shù)據(jù)
我們正在使用 Adafruit IO 記錄傳感器的數(shù)據(jù),這些是我們的提要:
- 溫度。
- 濕度。
- 壓力。
- 用戶隨時(shí)間的運(yùn)動(dòng)。
- 隨著時(shí)間的推移潮熱發(fā)作。
- 電池電量。
。
?
此功能仍需要改進(jìn),可能會(huì)在更長的時(shí)間內(nèi)平均溫度通知,而不僅僅是在發(fā)布之后。我們使用吹風(fēng)機(jī)來提高溫度,當(dāng)電路板通電時(shí),第一個(gè)脈沖是假潮熱,我們需要解決這個(gè)問題,但接下來的 2 個(gè)溫度峰值代表潮熱事件。
傳感器板放置在 3D 打印外殼內(nèi)。
外殼有一個(gè)用于溫度傳感器和復(fù)位按鈕的開口
溫度傳感器應(yīng)該與皮膚接觸,但我們需要收集更多信息,例如 HTS221 是否是皮膚溫度的正確傳感器。此外,我們需要確定傳感器的正確位置,可能在手腕內(nèi)或更靠近胸部。
未來的工作
傳感器板有許多傳感器,可用于收集更多信息,例如:
- MEMS麥克風(fēng)可用于監(jiān)測(cè)打鼾。
- Motion FX 傳感器甚至可以推斷出您的睡眠位置。
- BlueNRG-2 還具有自由落體檢測(cè)功能。
也許熱敏電阻或紅外溫度計(jì)可能是測(cè)量皮膚溫度的更好方法。此外,傳感器的位置也很重要,但它必須是非侵入性的,以便在睡覺時(shí)佩戴。
除了皮膚溫度升高外,潮熱還可能導(dǎo)致女性心率加快。當(dāng)身體試圖降低溫度時(shí),這會(huì)導(dǎo)致突然出汗。這種癥狀還可能伴有心悸和頭暈[3] 。
心率測(cè)量可以使這個(gè)項(xiàng)目更加穩(wěn)健,也許可以用來預(yù)測(cè)潮熱。
為簡(jiǎn)單起見,選擇使用小型交流風(fēng)扇,但生物特征數(shù)據(jù)可用于觸發(fā)更復(fù)雜的執(zhí)行器。
我們?nèi)匀恍枰迯?fù) Arduino 草圖的錯(cuò)誤并對(duì)其進(jìn)行優(yōu)化。
結(jié)論
在炎熱的一天隨時(shí)享受清新的微風(fēng)是很好的,但在潮熱時(shí)立即得到緩解就更好了!
通過這個(gè)項(xiàng)目,我們打算解決更年期最常見的癥狀之一。由于自動(dòng)模式是一種簡(jiǎn)單的開/關(guān)控制,因此不需要復(fù)雜的算法和電子設(shè)備。
大部分時(shí)間都花在弄清楚如何讓 BLE 設(shè)備按預(yù)期工作。我們利用 bluetile 小尺寸和低功耗的優(yōu)勢(shì)構(gòu)建了一個(gè)小型應(yīng)用程序,該應(yīng)用程序可以擴(kuò)展到我們目前提供的內(nèi)容之外。
希望你喜歡它!
- 構(gòu)建可以檢測(cè)潮熱并觸發(fā)動(dòng)作來緩解人的設(shè)備
- 智能設(shè)備開源項(xiàng)目
- 時(shí)鐘開源項(xiàng)目
- 致命事故風(fēng)險(xiǎn)緩解(FARM)開源分享
- 可檢查您打開門冰箱次數(shù)和時(shí)間的開源項(xiàng)目
- 可遠(yuǎn)程監(jiān)控蜂巢的開源項(xiàng)目
- 開源項(xiàng)目
- 開源項(xiàng)目,畢業(yè)設(shè)計(jì)
- 嵌入式開源項(xiàng)目
- 自動(dòng)售貨機(jī)項(xiàng)目教程及文件下載 0次下載
- 渾源軟件項(xiàng)目中的代碼結(jié)構(gòu)和開源組件綜述 5次下載
- 收藏!姿態(tài)估計(jì)開源項(xiàng)目匯總資料下載
- 基于癥狀構(gòu)成成分的上下位關(guān)系自動(dòng)抽取方法 0次下載
- VR模擬病和癥狀介紹以及緩解方法 2次下載
- Java最著名的開源項(xiàng)目 0次下載
- 關(guān)于FPGA的開源項(xiàng)目介紹 1161次閱讀
- 優(yōu)秀的IC/FPGA開源項(xiàng)目:偽紅外圖像處理 1949次閱讀
- 怎么上手 PR 流程?如何開始參與開源項(xiàng)目? 1470次閱讀
- 選擇開源項(xiàng)目的重要因素 2122次閱讀
- 全年開源項(xiàng)目的盤點(diǎn)和總結(jié) 3231次閱讀
- 一個(gè)名為“LeetCodeAnimation”的開源項(xiàng)目 4481次閱讀
- NASA的開源軟件是什么?NASA的開源軟件的詳細(xì)分析 7188次閱讀
- 基于Altium Designer的OSHw開源項(xiàng)目 3609次閱讀
- 利用以下八個(gè)開源AI技術(shù),你的機(jī)器學(xué)習(xí)項(xiàng)目可提升到新水平 1908次閱讀
- 2018 年 2 月份 GitHub 上最熱門的開源項(xiàng)目 4554次閱讀
- 開發(fā)者不可錯(cuò)過的開源項(xiàng)目—人工智能篇 6184次閱讀
- 展示Python機(jī)器學(xué)習(xí)開源項(xiàng)目以及在分析過程中發(fā)現(xiàn)的非常有趣的見解和趨勢(shì) 4080次閱讀
- Python機(jī)器學(xué)習(xí)開源項(xiàng)目分析過程中的見解和趨勢(shì) 703次閱讀
- FAST:基于FPGA的SDN交換機(jī)開源項(xiàng)目(一) 4531次閱讀
- 11個(gè)機(jī)器學(xué)習(xí)開源項(xiàng)目 2767次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多