Orodha ya maudhui:

Ingia kwa kasi ya juu ECG au Takwimu zingine, Kwa kuendelea kwa Zaidi ya Mwezi: Hatua 6
Ingia kwa kasi ya juu ECG au Takwimu zingine, Kwa kuendelea kwa Zaidi ya Mwezi: Hatua 6

Video: Ingia kwa kasi ya juu ECG au Takwimu zingine, Kwa kuendelea kwa Zaidi ya Mwezi: Hatua 6

Video: Ingia kwa kasi ya juu ECG au Takwimu zingine, Kwa kuendelea kwa Zaidi ya Mwezi: Hatua 6
Video: UKIONA DALILI HIZI 9 WIKI 2 BAADA YA KUJAMIIANA KAPIME UKIMWI HARAKA HUENDA UMEAMBUKIZWA 2024, Julai
Anonim
Ingia kwa kasi ya juu ECG au Takwimu zingine, Kwa kuendelea kwa Zaidi ya Mwezi
Ingia kwa kasi ya juu ECG au Takwimu zingine, Kwa kuendelea kwa Zaidi ya Mwezi

Mradi huu ulibuniwa kusaidia timu ya utafiti wa matibabu ya chuo kikuu, ambaye alihitaji kuvaa ambayo inaweza kuingiza ishara 2 x ECG kwa sampuli 1000 kwa kila sekunde (sampuli 2K / sec) kila siku kwa siku 30, ili kugundua arrhythmias. Mradi uliowasilishwa hapa ni pamoja na udhibiti wa kijijini na ufuatiliaji wa magogo. Udhibiti wa kijijini ni kupitia menyu iliyowasilishwa kwenye terminal ya serial, iwe kwenye kompyuta au simu ya rununu. Mradi huu hauhusishi kipimo cha ECG au ufungaji au betri inayohitajika kwa mavazi ya mwisho.

Toleo hili la kasi kubwa / la muda mrefu hutumia Teensy 3.2, moduli ya kuzuka ya Adafruit Micro-SD, kadi ya kiwango cha 16G SDHC darasa 10 SD kuingia data na moduli ya mawasiliano ya Bluetooth kwa udhibiti na ufuatiliaji. Toleo la chini la maendeleo na polepole la UNO / Mega2560 la mradi huu pia linapatikana. Wakati mradi huu unatumia moduli ya mawasiliano ya Bluetooth kudhibiti na ufuatiliaji wa magogo, unaweza pia kutumia moduli za WiFi au BLE.

Toleo hili, kulingana na Teensy 3.2, lina uwezo wa viwango vya juu zaidi vya sampuli kuliko toleo la UNO / Mega2560. Kutumia nambari hii Teensy 3.2 inaweza kuchukua na kuingiza sampuli mbili za ADC kwa> 30Khz na vifaa vinavyozidi sampuli 4 na kwa hivyo hutosheleza mahitaji ya sampuli 1000 / sec hapo juu. Nambari inasaidia kuokoa faili 100 za bini za 128K kila moja. Saa 30Khz ambayo inashughulikia 29hrs 30min. Kwa sampuli / sekunde 1000 inashughulikia siku 37. Nambari inaweza kupanuliwa kwa urahisi kushughulikia faili zaidi ya 100, kwa hivyo kupanua muda wa kukimbia. Mwisho wa kukimbia utakuwa na> 10Gig ya data,.bin, faili na faili ya.met ya data ya meta inayoelezea kukimbia na matokeo. SDtoCSV.jar (msimbo wa chanzo SDtoCSV_src.zip) inaweza kutumika kubadilisha faili za.bin kuwa faili za.csv kwenye kompyuta yako kwa usindikaji zaidi. Takwimu zinazosababishwa ni> 60Gig. Toleo la UNO / Mega2560 lina.bin kwa.csv ubadilishaji uliojumuishwa kwenye mchoro wa Arduino, lakini ikipewa ujazo wa data iliyoingia na toleo la Vijana, hiyo sio njia bora ya kufanya uongofu.

Vifaa

Vijana 3.2 na PJRC

Bodi ya kuzuka kwa kadi ya Adafruit MicroSD + au sawa.

16G SDHC darasa la 10 MicroSD kadi ya ubora mzuri n.k. SanDisk.

Usambazaji wa USB 5V

Iliyoongozwa na mpinzani wa 470R mfululizo.

Vipimo 2 x 100R (hutoa kinga kutokana na uharibifu kwa sababu ya makosa ya wx ya Tx / Rx)

Bluetooth Mate Fedha AU moja ya moduli zilizoelezewa kwenye Arduino UNO / Starter ya Mega, inayodhibitiwa na Android / pfodApp

Hatua ya 1: Ujenzi

Ujenzi
Ujenzi

Pakua na usakinishe Arduino IDE V1.8.9 + kutoka https://arduino.cc/en/Main/Software. Ukurasa huo wa wavuti una viungo vya mifumo anuwai ya kufanya kazi na kiunga cha KupataStart (https://arduino.cc/en/Guide/HomePage).

Pakua na usakinishe Teensyduino (Usaidizi wa Vijana kwa IDE ya Arduino). KUMBUKA kwa uangalifu maagizo ya Matumizi ya Kwanza.

Chagua Vijana 3.2 kama bodi na angalia kwamba mpango wa mfano wa BLINK unapakia na kukimbia.

Pakua na usakinishe maktaba zifuatazo: - millisDelay na SdFat (Picha ya ndani ya maktaba ya SdFat iliyotumika kwa majaribio haya iko hapa.) Na pfodParser.zip (kwa darasa la pfodBufferedStream na pfodNonBlockingInput)

Pakua faili za zip za maktaba kisha utumie Arduino IDE → Mchoro → Jumuisha Maktaba → Ongeza menyu ya maktaba ya ZIP kusanikisha maktaba kutoka kwa faili za zip.

Fungua faili ya Teensy32AnalogLogger.zip kwenye saraka yako ya michoro ya Arduino na upange bodi ya Teensy 3.2 na Teensy32AnalogLogger.ino (Toleo la 0.01)

Waya waya Vijana 3.2, moduli ya Bluetooth na moduli ya kadi ya SD kama inavyoonyeshwa hapo juu (toleo la pdf)

Hatua ya 2: Kuendesha Programu - Upimaji

Fomati kwanza kadi yako ya SD ukitumia

Kadi ya SD lazima iwe tupu ili kuanza magogo.

Kwa upimaji wa mwanzo hauitaji kuunganisha moduli ya Mawasiliano, inganisha tu moduli ya Vijana 3.2 + SD (na kadi tupu iliyosanikishwa) kwa Arduino IDE kupitia kebo ya serial ya USB. Kama inavyotolewa mchoro wa Teensy32AnalogLogger.ino hutumia unganisho la USB kwa udhibiti na ufuatiliaji. Tazama Uwekaji wa Takwimu Halisi hatua hapa chini kwa kutumia kifaa cha mawasiliano kwa udhibiti na ufuatiliaji.

Hariri juu ya mchoro wa Teensy32AnalogLogger.ino ili kuweka COM_SERIAL kwa Serial, ili kutoa kwa unganisho la USB la Vijana.

#fafanua MFUMO WA SIKU

Kisha pakia mchoro kwenye Teensy 3.2

Fungua Arduino IDE Serial Monitor saa 115200 baud (na seti zote za NL & CR). Baada ya sekunde chache Vijana 3.2 wataonyesha orodha ya amri

Ver: 0.01 ingiza moja ya amri zifuatazo:? - hali ya sasa na metadatai - anzisha faili - orodha za faili>

Je! cmd inaonyesha maelezo ya mipangilio ya sasa. (Tazama juu ya Teensy32AnalogLogger.ino kubadilisha mipangilio hii) Cmds lazima ikomeshwe na NL au CR au zote mbili.

0: 00: 00.000 ya 720: 00: 00.000

Pini za sampuli: 16 17 Agizo la Byte: Little-Endian ADC bits: wastani wa sampuli 10 ADC juu: 4 Sampuli Rate: 1000.00 Sampuli ya muda: 1000uS Sampuli kwa kila block: 127 Muda wa kujaza block: 127000uS Muda wa kujaza faili: 9:01: 52.000 Wakati wa kujaza faili ZOTE: 894: 04: 48.000 Max latency (inajumuisha faili karibu / wazi): 0uS Max file close / open latency: 0uS Idadi ya vitalu vya bafa: 28 Wakati wa kujaza vitufe VYOTE vya kuzuia: 3556000uS Idadi kubwa ya bafa. imehifadhiwa katika simu ya kuhifadhiSampuliBuffers (): 0 Vipimo vilivyokosa jumla: 0 Sampuli Zilizokosekana hadi sasa: 0 Jumla ya Vitalu vilivyoandikwa: 0 Sampuli Zote zilizoandikwa: 0 kifuniko: 0: 00: 00.000 Faili ya Sasa:

Katika kesi hii wakati wa kukimbia wa kukata magogo ni 0 ya 720hrs (30days) zilizoombwa, sampuli D16 / A2 na D17 / A3 (tazama hapa chini kwa Vizuizi kwenye Chaguo la Pembejeo za ADC hapa chini) mara 1000 kwa sekunde. Muda wa juu wa kukimbia unaweza kuwa hadi 894hrs (siku 37.25). Kitanzi kuu () kinaweza kukaliwa kwa hadi sekunde 3.5 (Muda wa kujaza vitufe VYOTE vya kuzuia) kabla ya bafa zote zilizopo kujazwa na sampuli kuanza kupotea. Bafa zilizohifadhiwa n.k zinasasishwa wakati mbio inaendelea.

Ingiza kadi tupu ya SD, tumia 'i' cmd kuanzisha faili 99 zilizotumika kuhifadhi data. Kuwazindua hapa kunapunguza ucheleweshaji wa wakati unapobadilisha kutoka faili moja kwenda nyingine na inaruhusu kuchukua sampuli haraka.

Inazindua faili 99

Kuunda faili mpya: log00.bin Muda uliopotea: 368mS Kuunda faili mpya: log01.bin Muda uliopotea: 520mS… Kuunda faili mpya: log98.bin Muda uliopotea: 15660mS Kuunda faili mpya: log99.bin Muda uliopotea: 15812mS

Basi unaweza kutumia r cmd kuanza kukimbia kwa magogo. Kukimbia kwa wakati ulioombwa au hadi s cmd itumiwe kuizuia. Unaweza pia kutumia? cmd wakati wa magogo ili kupata nyakati na hesabu zilizosasishwa. Hapa kuna mbio fupi iliyosimamishwa mapema kwa kutumia s cmd.

DATA YA UWEKEZAJI….

Ver: 0.01 ingiza moja ya amri zifuatazo:? - hadhi ya sasa na metadata s - acha magogo ya data

DATA YA UWEKEZAJI… Angalia na? amri

Muda wa Kukimbia uliyopita: 0: 00: 10.000 ya 720: 00: 00.000 Muda wa Kukimbia Uliopita: 0: 00: 20.000 ya 720: 00: 00.000…

Kuacha magogo na kuondoa faili ambazo hazijatumiwa.

… Kuondoa faili isiyotumika: log98.bin Kuondoa faili isiyotumika: log99.bin

0: 01: 04.976 ya 720: 00: 00.000

Pini za sampuli: 16 17 Agizo la Byte: Little-Endian ADC bits: wastani wa sampuli 10 ADC juu: 4 Sampuli Rate: 1000.00 Sampuli ya muda: 1000uS Sampuli kwa kila block: 127 Muda wa kujaza block: 127000uS Muda wa kujaza faili: 9:01: 52.000 Wakati wa kujaza faili ZOTE: 894: 04: 48.000 Ucheleweshaji wa Max SD (ni pamoja na faili karibu / wazi): 204uS Faili kubwa karibu / wazi latency: 0uS Idadi ya vizuizi vya bafa: 28 Wakati wa kujaza vizuizi VYOTE vya kuzuia: 3556000uS Idadi kubwa ya bafa imehifadhiwa katika simu ya kuhifadhi

ls:

2000-01-01 01:00:00 261632 log00.bin 2000-01-01 01:00:00 240 log.met

UWEKAJI WA DATA UMEKAMILIKA!

Ver: 0.01 ingiza moja ya amri zifuatazo:? - hali ya sasa na metadata ** r - rekodi data ya ADC ** haipatikani. Takwimu tayari zipo ** i - kuanzisha faili ** haipatikani. Takwimu tayari zipo l - orodha ya faili

TAYARI TAYARI IMEKUWA IKIWEKWA, Wasiliana na?

Kuonyesha LED

LED iliyounganishwa na D3 (na D2 inayotoa unganisho la GND) itawaka ikiwa dhabiti yoyote imekosa na itaangaza ikiwa kuna hitilafu. Mchoro unajaribu kuendelea baada ya makosa lakini hauwezi kufanya hivyo kwa mafanikio.

Hatua ya 3: Kuingia kwenye Takwimu halisi

Wakati wa kuweka data halisi kwa muda mrefu, ni rahisi zaidi kuunganisha moduli ya mawasiliano kwa pini za D0 / D1 na kudhibiti na kufuatilia ukataji miti kwa mbali. Hapa moduli ya Bluetooth Mate Silver ilitumiwa na mipangilio yake chaguomsingi, baud ya 115200, hakuna kupeana mikono kwa vifaa (RTC, CTS), msimbo wa siri 1234.

Kumbuka: Wakati nguvu inatumiwa kwa moduli ya Mate Silver inaingia kwenye hali ya usanidi, nyekundu inayoongoza kufifia, kwa 60sec. Wakati huu unaweza kutuma $$$ kupitia unganisho la serial kwa moduli ili kuisanidi lakini hauwezi kuunganisha moduli. Mara tu kuongozwa nyekundu kunapepesa polepole, moduli ya Bluetooth itakubali unganisho.

Badilisha ufafanuzi wa COM_SERIAL katika Teensy32AnalogLogger.ino kwa unganisho la vifaa (D0 / D1), Serial1

#fafanua MFANYAKAZI HURU MGENI

Baada ya kuunganishwa na kompyuta, bandari mpya ya COM iliundwa kwenye kompyuta na CoolTerm inaweza kutumika kuunganisha na kudhibiti na kufuatilia ukataji miti. Moduli zingine za mawasiliano zilizounganishwa zinaweza kutumiwa, kama vile WiFi au BLE, angalia Arduino UNO / Starter ya Mega, inayodhibitiwa na Android / pfodApp kwa maelezo.

Unaweza pia kudhibiti na ufuatiliaji wa magogo kutoka kwa simu yako ya Android ukitumia programu ya terminal ya Bluetooth kama programu ya Bluetooth Terminal, au kutumia programu ya terminal ya WiFi na TCP kama TCP Telnet Terminal Pro, au Uart to BLE mdoule na programu ya terminal ya BLE kama vile nRF UART V2

Hatua ya 4: Vizuizi juu ya Chaguo la Pembejeo za ADC

Vizuizi juu ya Chaguo la Pembejeo za ADC
Vizuizi juu ya Chaguo la Pembejeo za ADC

Teensy 3.2 ina moduli mbili tofauti za vifaa vya ADC, ADC_0 na ADC_1, katika processor yake ndogo ili iweze kupimia pembejeo mbili kwa wakati mmoja. Pia ina kujengwa kwa wastani wa vifaa ambavyo huchukua sampuli nyingi za ADC na kuzipima kabla ya kugeuza matokeo.

Kuna vikwazo ambavyo pembejeo zinaweza kushikamana na ADC_0, ADC_1. Picha ya Teensy3_1_AnalogCard-p.webp

Kwa muhtasari: -Kwa Kusoma Kumalizika kwa Moja yaani + Volts zilizorejelewa kwa GND ADC_0 zinaweza kusoma A0 hadi A9, A10, A11, A12, A14 ADC_1 inaweza kusoma A2, A3, A10, A13, A15 hadi A20 Ukichagua pini ambayo ADC haiwezi kusoma itarudi 0 (kila wakati)

Mradi huu unatumia A2, A3 ambayo kila mmoja anaweza kupatikana na ADC_0 au ADC_1.

Hatua ya 5: Kubadilisha faili za.bin kuwa faili za.csv

Teensy32AnalogLogger.ino inahifadhi sampuli kama binary katika faili za logxx.bin i.e. log00.bin to log99.bin. Teensy32AnalogLogger.ino pia ihifadhi faili ya log.met ya data ya meta kuhusu kukimbia.

Unaweza kutumia SDtoCSV.jar (nambari ya chanzo SDtoCSV_src.zip) kubadilisha faili za.bin kuwa.csv kwa usindikaji zaidi. Nakili faili kutoka kwa kadi ya SD hadi kwenye diski yako ngumu na angalau 70Gig ya nafasi ya bure na nakili SDtoCSV.jar kwenye saraka sawa. Fungua dirisha la amri katika saraka hiyo na uendesha

java -jar SDtoCSV.jar logi

Ikiwa kompyuta yako haina Java sakinisha basi isakinishe kutoka www.java.com

SDtoCSV itashughulikia faili ya log.met na kisha kila faili inayopatikana ya logxx.bin kwenye saraka na kutoa faili ya.csv kwa kila. Faili ya.csv ina nambari ya mlolongo wa sampuli ikifuatiwa na masomo mawili.

Pato la sampuli ya mfano wa kusoma kwa adc 2 sampuli mara 30303 / sec imeonyeshwa hapa, output.txt. Inaonyesha jinsi sampuli zilizokosa zinavyoripotiwa. (Kuongeza mara mbili idadi ya bafa kwenye mchoro wa mwisho kulirekebisha hizi sampuli zilizokosa)

Kuingia kwenye ubadilishaji wa CSV. Angalia SDtoCSV.log kwa ujumbe wa maendeleo na makosa. Inashughulikia log0000 Ilisindika vizuizi 256000 Inasindika log01 Kusindika vitalu 256000… Inasindika logi25 Inasindika vitalu 256000 Inasindika logi26 Inasindika 256000 vitalu Inasindika logi27 Inasindika vitalu 256000 Sampuli zilizokosekana: 2715 Inasindika logi28 Inasindika vitalu 256000… Usindikaji wa logi 29 Ilisindika vitalu 256000… Inasindika logi47 Inasindika vitalu 256000 Inasindika logi48 Inasindika vitalu 35935 --- Imekamilisha Usindikaji

Faili kamili ya kumbukumbu, SDtoCSV.log, imeongezwa kwa kila kukimbia kwa SDtoCSV. Inajumuisha utoaji wa data ya meta na ujumbe wowote wa hitilafu. Hapa hesabu: 254 ni hesabu ya data iliyohifadhiwa kwenye kizuizi hicho, yaani, sampuli 127 x usomaji wa adc kwa kila kitalu. Sampuli zilizokosekana ni idadi ya jozi za usomaji uliokosekana yaani mistari katika pato la.csv.

=== Ingia faili kwa SD_Logging kwa ubadilishaji wa CSV Sat Jul 13 13: 19: 51 AEST 2019 Kuona ujumbe wa maendeleo kwenye Console tumia java -jar SDtoCSV.jar Base File Name 'log' Metadata Version: 0 (Little Endian) sampuliInterval uS: 33 adcBits: 10 adcAvgs: 4 pinCount: 2 Pins: 16, 17 samplesPerBlock: 127 noBufferBlocks: 28 duration mS: 51649820 aliomba runTime mS: 106216704 maxBuffersUsed: 32 Onyo: Inazidi idadi ya bafa zinazopatikana (28). Sampuli zingine zinaweza kukosa. maxLatency uS: 221476 Onyo: Inazidi wakati uliotolewa na vizuizi vya bafa (117348uS). Sampuli zingine zitakosekana. maxFileOpenTime uS: 20998 ilikosa Muda: 0 Sampuli zilizokosa Jumla: 2715 jumlaBlocks Imeandikwa: 12323935 jumlaSampuli Imeandikwa: 1565139665 Inasindika log00.bin Iliyosindika vizuizi 256000 Inasindika log01.bin Iliyosindika vitalu 256000… Inasindika logi26.bin Iliyosindika vizuizi 256000 Inasindika logi27.bin !!! Kuzuia: 57696 hesabu: 254 zilizokosa Sampuli: 2339 !!! Kizuizi: hesabu 57697: 254 zilizokosa Sampuli: 376 Ilisindika vitalu 256000 --- Sampuli Zilizokosekana Jumla: 2715

Inasindika logi28.bin Iliyotengenezwa vitalu 256000

… Inasindika logi47.bin Inasindika vizuizi 256000 Inasindika logi48.bin Inasindika vitalu 35935 --- Imekamilisha Usindikaji

Sampuli ya faili ya pato la log00.csv ni

SampleCounter (kwa 33uS), Pin 16, Pin 170, 248, 205 1, 273, 195 2, 228, 337 3, 360, 302 4, 355, 369 5, 220, 281…

Kaunta ya sampuli huongezeka kutoka faili hadi faili ili iweze kutumiwa kama stempu ya wakati. Ikiwa kuna sampuli zinazokosekana basi kaunta ya sampuli imeongezwa na hesabu iliyokosa kabla ya kutoa laini inayofuata ili stempu ya kukabiliana / wakati ibaki sahihi kwa sampuli zilizorekodiwa.

Hatua ya 6: Maoni juu ya Kanuni na Viendelezi

Teensy32AnalogLogger ni toleo lililobadilishwa sana la mfano wa AnalogBinLogger wa Bill Greiman katika maktaba yake ya SdFat Arduino. Hapa maktaba imeandikwa tena ili kuendesha Vijana 3.2.

Teensy32AnalogLogger inatumia timer0 kuweka muda wa sampuli. Kizuizi cha kukatiza kwa timer0 huanza mabadiliko mawili ya ADC. Kizuizi cha kukatiza kwa moduli ya pili ya ADC inaitwa kila wakati hadi wote wamalize, kawaida moduli ya kwanza ya ADC iliyoanza ADC_0 itamalizika kabla ya pili kwa hivyo mshughulikiaji wa kukatiza huitwa mara moja tu. Kidhibiti cha kukatiza cha ADC_1 huhifadhi sampuli kwenye bafa ya data.

Katika kitanzi kuu (), dukaSampuliBuffer () huhifadhi viboreshaji vyovyote kwenye kadi ya SD na kurudisha bafa kwenye foleni ya bafa tupu. Kiasi kikubwa cha RAM inayopatikana kwenye Teensy 3.2 inamaanisha idadi kubwa ya bafa inaweza kugawanywa na kwa hivyo dukaSampuliBuffer () haiitaji kupigiwa simu mara nyingi. Hii inaacha wakati wa kitanzi kuu () kufanya kazi nyingine, kama amri za mchakato na kutuma pato.

Viendelezi

Wakati mradi huu unafanya kazi kama logger ya data ya kasi, kwa kuvaa kamili bado inahitaji kupakiwa na mfumo wa betri na sensorer za ECG hutolewa. Pamoja na kwamba kuna viendelezi ambavyo vinapaswa kuzingatiwa.

  1. Ongeza udhibiti wa wakati halisi na ufuatiliaji wa fomu ya wimbi la sampuli kupitia pfodApp ukitumia kazi ya kupanga njama ya pfodApp kuonyesha picha za fomu ya wimbi
  2. Panua nambari za faili zilizopita 99 kwa kukimbia kwa sampuli ndefu
  3. Sampuli ya pembejeo zaidi ya 2. Kwa kuwa Teensy 3.2 ina moduli mbili za ADC, unaweza kurekebisha nambari ili kuongeza pembejeo za ziada kwa jozi ili kuongeza kiwango cha sampuli.
  4. Ongeza ufuatiliaji wa betri kufuatilia malipo ya betri. Vijana 3.2 hutumia karibu 1100mAhrs zaidi ya masaa 24, pamoja na moduli ya Bluetooth na SD, lakini ukiondoa moduli ya sensorer
  5. Ongeza mzunguko wa usambazaji wa betri mbili ili kuruhusu mabadiliko ya betri na kukatiza kukata miti.

Ilipendekeza: