欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用ECG的心跳指示器

使用ECG的心跳指示器

2023-02-08 | zip | 0.56 MB | 次下載 | 免費(fèi)

資料介紹

描述

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

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

1. 原理圖
由于我們這里只使用數(shù)字信號(hào),所以非常簡單。但作為可穿戴設(shè)備,如果大多數(shù)連接都是焊接的,它會(huì)更可靠(也更?。獙?duì)于快速測試來說,沒有必要這樣做,但如果你打算在一些繁重的活動(dòng)中佩戴它,我強(qiáng)烈建議這樣做。
示意圖如下所示:

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

我直接使用 LiPo 電池作為 5V 輸入 - 沒有錯(cuò)誤,如果你將它連接到 Vin - 它不會(huì)可靠地工作(Vin 上的穩(wěn)壓器會(huì)引入電壓降,我們在這里絕對(duì)買不起)。問題是,只要輸入電壓不低于 3.4 伏,Arduino 就是穩(wěn)定的。LiPo 電池在充滿電時(shí)的起始電壓為 4.2 伏,僅當(dāng)剩余電量少于 15% 時(shí)才達(dá)到 3.4 伏。因此,對(duì)于任何大于 ~200 mAh 的電池,您可以獲得不錯(cuò)的運(yùn)行時(shí)間。除此之外,請記住電池應(yīng)該通過一些連接器連接 :) 因?yàn)槟阆雽⑺鼜脑韴D上斷開并偶爾充電一次。

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

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

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

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

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

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

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

PS 如果你對(duì) uECG 項(xiàng)目感興趣——你可以查看它的hackaday 頁面,那里有很多技術(shù)細(xì)節(jié)、PCB 設(shè)計(jì)、討論和項(xiàng)目日志


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

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)