伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

電子發燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>使用ECG的心跳指示器

使用ECG的心跳指示器

2023-02-08 | zip | 0.56 MB | 次下載 | 免費

資料介紹

描述

多年來,我只是想用 LED 做一些能隨著我的心跳而閃爍的東西(不僅是當我完全靜止不動,但有時會時不時地跳一下)。事實證明這出奇地困難,我嘗試了很多年但都失敗了。但現在不是了!

實際上,所有繁重的工作都是由uECG完成的——一種小型可穿戴 ECG 設備,它是開源的,并且有一個 Arduino 友好的輸出引腳(該引腳隨著每次心跳而變高/變低)。處理這些引腳狀態比處理 ECG 信號要容易得多,而且我已經盡力從中獲得最大收益。
UPD:你可能想檢查這個項目的第二次迭代,它通過無線電鏈路接收數據。

1. 原理圖
由于我們這里只使用數字信號,所以非常簡單。但作為可穿戴設備,如果大多數連接都是焊接的,它會更可靠(也更小)——對于快速測試來說,沒有必要這樣做,但如果你打算在一些繁重的活動中佩戴它,我強烈建議這樣做。
示意圖如下所示:

?
pYYBAGPi-FWAdnl0AAFSlvJRmHM499.png
?
  • LED 環的 DI 引腳連接到引腳 D11(可在代碼中配置)
  • uECG 設備的 DRV 引腳連接到引腳 D3(也可配置)
  • 電池的 + 連接到 Arduino 5V 和 LED 環形 5V 輸入
  • 電池 - 連接到 Arduino GND、環形 GND 和 uECG 的 GND

我直接使用 LiPo 電池作為 5V 輸入 - 沒有錯誤,如果你將它連接到 Vin - 它不會可靠地工作(Vin 上的穩壓器會引入電壓降,我們在這里絕對買不起)。問題是,只要輸入電壓不低于 3.4 伏,Arduino 就是穩定的。LiPo 電池在充滿電時的起始電壓為 4.2 伏,僅當剩余電量少于 15% 時才達到 3.4 伏。因此,對于任何大于 ~200 mAh 的電池,您可以獲得不錯的運行時間。除此之外,請記住電池應該通過一些連接器連接 :) 因為你想將它從原理圖上斷開并偶爾充電一次。

2. 代碼
該程序以一種簡單的方式工作:它不斷讀取 D3 引腳,并在檢測到變化時 - 將該變化的時間推入 20 元素數組。第一個和最后一個元素之間的差值除以 20,即為每次節拍的平均時間(以毫秒為單位)。因此,將 1 分鐘(60000 毫秒)除以該數字即可得出 BPM 值。您可以調整數組中的元素數量。較少數量的元素會導致更快的響應,但結果不太穩定(節拍檢測中的任何問題都會導致計算出的 BPM 大幅跳躍)。更多的元素會提供更穩定的數據,但當 BPM 快速變化時響應更慢。

然后將 BPM 映射到顏色(當 BPM 從低到高時,藍色->綠色->黃色->粉紅色->紅色),并映射到 LED 的數量:80 BPM 八段亮起,110 - 11 等等(比例也可在代碼中調整)。

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
// DI pin of LED ring
#define PIN            11
// number of pixels in the ring
#define NUMPIXELS      16
// input pin for connecting uECG
int in_pin = 3;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin(); // This initializes the NeoPixel library.
pinMode(in_pin, INPUT); //set pin to input mode
digitalWrite(in_pin, 1); //enable PULLUP: this is critical, uECG doesn't have internal pull-up
}
//we store last 20 heartbeats to averge BPM over them
//with higher value, it will become more reliable,
//but it will take more time to see output change when BPM changes
#define BEAT_HIST 20
long beats[BEAT_HIST];
void push_beat(long ms) //shift all beats in array and insert current one
{
for(int x = 0; x < BEAT_HIST-1; x++)
{
beats[x] = beats[x+1];
}
beats[BEAT_HIST-1] = ms;
}
int get_bpm() //using time difference between first and last beats
{
long dt = beats[BEAT_HIST-1] - beats[0];
long bpm = BEAT_HIST * 60000 / dt;
return bpm;
}
long last_pix_upd = 0; //to keep track of when we updated pixels previous time
int prev_in_state = 0; //previous state of input pin: we want to process only changes of state
void loop()
{
long ms = millis();
int in_state = digitalRead(in_pin); //1 when no beat detected, 0 in beat
if(in_state == 1 && prev_in_state == 0) //react only to change
{
push_beat(ms);
}
prev_in_state = in_state;
if(ms - last_pix_upd > 10) //don't update pixels too often
{
int r, g, b;
last_pix_upd = ms;
int bpm = get_bpm();
int max_bright = 120; //value of maximum brightness, max 255. But you don't always want it at max :)
float dd = 20; //change in BPM between color tones (blue->green->yellow->pink->red)
float t1 = 90, t2, t3, t4; //t1 - "base" BPM, lower than t1 would be blue
t2 = t1 + dd;
t3 = t2 + dd;
t4 = t3 + dd;
//code for changing color depending in which t1...t4 range we are now
if(bpm < t1){ r = 0; g = 0; b = max_bright; }
else if(bpm < t2) { r = 0; g = max_bright * (bpm-t1)/dd; b = max_bright - g; }
else if(bpm < t3) { r = max_bright * (bpm-t2)/dd; g = max_bright - r; b = r/4; }
else if(bpm < t4) { r = max_bright; g = 0; b = max_bright/2 - max_bright * (bpm-t3)/(2*dd); }
else {r = max_bright; g = 0; b = 0; }
if(in_state) //when not in beat, 1/4 intensity, so only beats are highlighted
{
r *= 0.25;
g *= 0.25;
b *= 0.25;
}
int on_pixels = (bpm+5)/10; //number of used LEDs: for 60 BPM, 6 LEDs will be on, for 120 - 12 etc
for(int i=0;i<NUMPIXELS;i++)
{
if(i < on_pixels) pixels.setPixelColor(i, pixels.Color(r,g,b));
else pixels.setPixelColor(i, pixels.Color(0,0,0)); //turn off all other LEDs
}
pixels.show();
}
}

3. 組裝成可穿戴設備
將 Arduino 放在環內很方便 - 它的尺寸幾乎完美匹配。電池也適合附近。不要忘記 uECG 是放在胸部上的——因此您需要一根帶連接器的電線,首先放置它,然后穿上帶有其他組件的襯衫,然后插入連接器。否則戴上它真的很不方便-相信我,我試過了))

?
pYYBAGPi-ImAJ5blAAlxQ5SW6zs489.jpg
所有組件到位
?
?
poYBAGPi-I2AIfaqAAF3Ff8hFR4918.jpg
我只是從里面把所有東西都粘在襯衫上
?

基本上就是這樣 - 如果一切都正確完成,在您插入所有連接器后的 30 秒內,它將開始閃爍并指示 BPM。

4. 現場測試
我在步行和跑步時對其進行了測試 - 發現在跑步過程中,電池會在 ECG 傳感器上方反彈,從而扭曲其讀數。當我稍微移動它時,結果發現連接 uECG 和 Arduino 的電線太短,每一步都會拉動 ECG 傳感器,再次扭曲讀數。總的來說,我只有在行走和站立時才能獲得可靠的節拍,但在跑步時卻不行——但我認為我會改進這一點。傳感器本身,當我將它與不同的襯衫一起使用時,在運行期間也能正確顯示 BPM(通過其應用程序檢查)。

此外,事實證明,胸部上的 LED 看起來很酷,但實際上毫無用處。低頭看脈真的很不方便。我想在下一次迭代中,我會制作某種可以指示節拍的腕帶。

PS 如果你對 uECG 項目感興趣——你可以查看它的hackaday 頁面,那里有很多技術細節、PCB 設計、討論和項目日志


led Arduino 可穿戴設備
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1EMC PCB設計總結
  2. 0.33 MB   |  6次下載  |  免費
  3. 2LLC變換器的原理特點與應用領域
  4. 1.54 MB   |  1次下載  |  1 積分
  5. 3索尼14n 20n系列維修手冊
  6. 3.68 MB   |  次下載  |  1 積分
  7. 4晶益微 JY6166 音頻codec驅動資料分享
  8. 0.73 MB   |  次下載  |  免費
  9. 5晶益微 JY6311 音頻codec驅動資料分享
  10. 0.77 MB   |  次下載  |  免費
  11. 6英集芯 IP5518V 集成MCU 的TWS耳機充電倉管理SoC數據手冊
  12. 8.35 MB   |  次下載  |  免費
  13. 7英集芯 IP5518 集成MCU的TWS耳機充電倉管理SoC數據手冊
  14. 7.53 MB   |  次下載  |  免費
  15. 8英集芯 IP5518H 集成MCU的30V高耐壓TWs耳機充電倉管理S0C數據手冊
  16. 8.33 MB   |  次下載  |  免費

本月

  1. 1EMC PCB設計總結
  2. 0.33 MB   |  6次下載  |  免費
  3. 2耗盡型MOS FET產品目錄選型表
  4. 0.14 MB   |  4次下載  |  免費
  5. 3PD取電芯片 ECP5702規格書
  6. 0.88 MB   |  4次下載  |  免費
  7. 4氮化鎵GaN FET/GaN HEMT 功率驅動電路選型表
  8. 0.10 MB   |  2次下載  |  免費
  9. 52EDL05x06xx系列 600V半橋門驅動器帶集成自舉二極管(BSD)手冊
  10. 0.69 MB   |  1次下載  |  免費
  11. 6TI系列-米爾TI AM62L核心板開發板-高能效低功耗嵌入式平臺
  12. 1.51 MB  |  1次下載  |  免費
  13. 7PD取電芯片,可取5/9/12/15/20V電壓ECP5702數據手冊
  14. 0.88 MB   |  1次下載  |  免費
  15. 8飛騰FT2000-4 COM Express核心板技術手冊0603
  16. 1.22 MB  |  1次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233095次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191457次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183360次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81606次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73832次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分