Sisukord:

Kiire EKG või muude andmete pidev registreerimine kuu aja jooksul: 6 sammu
Kiire EKG või muude andmete pidev registreerimine kuu aja jooksul: 6 sammu

Video: Kiire EKG või muude andmete pidev registreerimine kuu aja jooksul: 6 sammu

Video: Kiire EKG või muude andmete pidev registreerimine kuu aja jooksul: 6 sammu
Video: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, Juuli
Anonim
Logige kiire EKG või muid andmeid pidevalt üle kuu aja
Logige kiire EKG või muid andmeid pidevalt üle kuu aja

See projekt töötati välja selleks, et toetada ülikooli meditsiiniuuringute meeskonda, kes vajas kantavat riietust, mis suudaks arütmia tuvastamiseks pidevalt 30 päeva jooksul 2 x EKG signaali registreerida kiirusel 1000 proovi sekundis (2K proovi sekundis) pidevalt. Siin esitatud projekt hõlmab raie kaugjuhtimist ja jälgimist. Kaugjuhtimine toimub jadaterminali menüüde kaudu, kas arvutis või mobiiltelefonis. See projekt ei hõlma EKG mõõtmist ega pakendit ega akut, mida on vaja lõplikult kanda.

See kiire/pikaajaline versioon kasutab andmete logimiseks Teensy 3.2, Adafruit Micro-SD katkemismoodulit, kvaliteetset 16G SDHC klassi 10 SD-kaarti ning juhtimiseks ja jälgimiseks Bluetooth-sidemoodulit. Selle projekti jaoks on saadaval ka vähem arenenud ja aeglasem UNO/Mega2560 versioon. Kuigi see projekt kasutab logimise juhtimiseks ja jälgimiseks Bluetooth -kommunikatsioonimoodulit, saate kasutada ka WiFi- või BLE -mooduleid.

See versioon, mis põhineb Teensy 3.2 -l, on võimeline võtma palju suuremaid proovivõtukiirusi kui UNO/Mega2560 versioon. Seda koodi kasutades saab Teensy 3.2 proovida ja logida kahte ADC proovi> 30Khz riistvaraga keskmiselt üle 4 proovi ja vastab seega hõlpsalt ülaltoodud 1000 proovi sekundis nõudele. Kood toetab 100.bin faili salvestamist 128K -ga. 30 kHz juures, mis hõlmab 29 tundi 30 minutit. 1000 proovi sekundis hõlmab see 37 päeva. Koodi saab hõlpsalt laiendada rohkem kui 100 faili käsitlemiseks, pikendades seega käitamise kestust. Jooksu lõpus on teil> 10Gig andmeid,.bin, failid ja.met fail metaandmeid, mis kirjeldavad jooksu ja tulemusi. Kaasasolevat SDtoCSV.jar (lähtekood SDtoCSV_src.zip) saab kasutada.bin -failide teisendamiseks teie arvutis.csv -failideks edasiseks töötlemiseks. Saadud andmed on> 60Gig. UNO/Mega2560 versioonis on Arduino visandisse lisatud.bin -teisendus.csv -ks, kuid arvestades Teensy versiooni logitud andmemahtu, ei ole see konversiooni jaoks tõhus viis.

Tarvikud

Teensy 3.2, autor PJRC

Adafruit MicroSD kaardi purunemisplaat+ või sarnane.

16G SDHC klass 10 MicroSD -kaart hea kvaliteediga, nt. SanDisk.

5V USB toide

Led 470R takistiga järjestikku.

2 x 100R takistid (kaitseb Tx/Rx juhtmestiku vigade põhjustatud kahjustuste eest)

Bluetooth Mate Silver VÕI üks Arduino UNO/Mega Starteris kirjeldatud moodulitest, mida juhib Android/pfodApp

Samm: ehitamine

Ehitus
Ehitus

Laadige alla ja installige Arduino IDE V1.8.9+ aadressilt https://arduino.cc/en/Main/Software. Sellel veebilehel on lingid erinevatele operatsioonisüsteemidele ja link saidile GettingStarted (https://arduino.cc/en/Guide/HomePage).

Laadige alla ja installige Teensyduino (Arduino IDE Teensy tugi). MÄRKUS hoolikalt esmase kasutamise juhiseid.

Valige lauana Teensy 3.2 ja kontrollige, kas näidisprogramm BLINK laaditakse ja käivitatakse.

Laadige alla ja installige järgmised teegid:- millisDelay ja SdFat (nende testide jaoks kasutatud SdFat raamatukogu kohalik ülevaade on siin.) Ja pfodParser.zip (klassi pfodBufferedStream ja pfodNonBlockingInput jaoks)

Laadige raamatukogu zip -failid alla ja seejärel kasutage teekide zip -failidest installimiseks menüüd Arduino IDE → Visand → Kaasa raamatukogu → Lisa. ZIP -raamatukogu menüü.

Pakkige Teensy32AnalogLogger.zip fail oma Arduino sketchide kataloogi lahti ja programmeerige Teensy 3.2 tahvel teenusega Teensy32AnalogLogger.ino (versioon 0.01)

Ühendage Teensy 3.2, Bluetooth -moodul ja SD -kaardi moodul, nagu ülal näidatud (pdf -versioon)

2. samm: programmi käivitamine - testimine

Esmalt vormindage oma SD -kaart, kasutades

Logimise alustamiseks peab SD -kaart olema tühi.

Esmaseks testimiseks ei pea te kommunikatsioonimoodulit ühendama, vaid lihtsalt ühendage Teensy 3.2 + SD moodul (tühja kaardi korral) USB -jadakaabli kaudu Arduino IDE -ga. Nagu ette nähtud, kasutab visand Teensy32AnalogLogger.ino juhtimiseks ja jälgimiseks USB -ühendust. Vaadake allolevast sammust Reaalsete andmete logimine, kuidas juhtimis- ja jälgimissideseadet kasutada.

Muutke Teensy32AnalogLogger.ino eskiisi ülaosa, et määrata COM_SERIAL -ile jadaväljund, et väljastada Teensy USB -ühendus.

#define COM_SERIAL Seriaal

Seejärel laadige visand üles teenusesse Teensy 3.2

Avage Arduino IDE jadamonitor 115200 baudiga (nii NL kui ka CR komplektis). Mõne sekundi pärast kuvab Teensy 3.2 käskude menüü

Ver: 0.01 sisestage üks järgmistest käskudest:? - praegune olek ja metadatai - failide initsialiseeriminel - failide loend>

Kas? cmd kuvab praeguste seadete üksikasjad. (Nende sätete muutmiseks vaadake Teensy32AnalogLogger.ino ülaosa) Cmds tuleb lõpetada NL või CR või mõlemaga.

0: 00: 00 000 720: 00: 00 000

Proovinõelad: 16 17 Baitide järjekord: Little-Endian ADC bitid: 10 ADC proovi keskmised: 4 Proovi kiirus: 1000.00 Proovide intervall: 1000uS Proove ploki kohta: 127 Ploki täitmise aeg: 127000uS Faili täitmise aeg: 9:01: 52.000 KÕIKIDE failide täitmise aeg: 894: 04: 48.000 Maksimaalne SD latentsusaeg (sisaldab faili sulgemist/avamist): 0uS Maksimaalne faili sulgemise/avamise latentsusaeg: 0uS Puhvriplokkide arv: 28 KÕIK plokkpuhvrite täitmise aeg: 3556000uS Maksimaalne puhvrite arv salvestatud kõnega poodiSampleBuffers (): 0 Vastamata taimerid kokku: 0 Siiani vastamata proove kokku: 0 Kirjutatud plokke kokku: 0 Kirjutatud näidiseid kokku: 0 hõlmab: 0: 00: 00.000 Praegune fail:

Sel juhul on praegune logimise käitusaeg 0 soovitud 720 tundi (30 päeva), proovide võtmine D16/A2 ja D17/A3 (vt allpool ADC sisendite valiku piirangud) 1000 korda sekundis. Maksimaalne tööaeg võib olla kuni 894 tundi (37,25 päeva). Põhisilmus () võib olla hõivatud kuni 3,5 sekundit (aeg täita kõik blokeerimispuhvrid), enne kui kõik saadaolevad puhvrid on täidetud ja proovid hakkavad kaduma. Salvestatud puhvreid jms uuendatakse jooksu edenedes.

Sisestage tühi SD -kaart ja kasutage andmete salvestamiseks kasutatud 99 faili lähtestamiseks cmd 'i'. Nende eelinitsialiseerimine siin lühendab ühelt faililt teisele ülemineku viivitust ja võimaldab kiiremat proovide võtmist.

99 faili lähtestamine

Uue faili loomine: log00.bin Kulunud aeg: 368 mS Uue faili loomine: log01.bin Kulunud aeg: 520 mS… Uue faili loomine: log98.bin Kulunud aeg: 15660 mS Uue faili loomine: log99.bin Kulunud aeg: 15812 mS

Seejärel saate logimisjooksu alustamiseks kasutada r cmd. Käivitus kestab soovitud aja või seni, kuni selle peatamiseks kasutatakse s cmd. Kas saate kasutada ka? cmd logimise ajal, et saada ajakohastatud ajakavasid ja loendusi. Siin on lühike jooks, mis peatati varakult s cmd abil.

LOGING ANDMED ….

Ver: 0.01 sisestage üks järgmistest käskudest:? - praegune olek ja metaandmed s - andmete logimise peatamine

LOGING ANDMED … Kas kontrollida? käsk

Kulunud jooksuaeg: 0: 00: 10.000 720: 00: 00.000 Kulunud tööaeg: 0: 00: 20.000 720: 00: 00.000…

Logimise peatamine ja kasutamata failide eemaldamine.

… Kasutamata faili eemaldamine: log98.bin Kasutamata faili eemaldamine: log99.bin

0: 01: 04.976 720: 00: 00.000

Proovinõelad: 16 17 Baitide järjekord: Little-Endiani ADC-bitid: 10 ADC-proovi keskmised: 4 Proovimäär: 1000.00 Proovide intervall: 1000uS Proove ploki kohta: 127 Ploki täitmise aeg: 127000uS Faili täitmise aeg: 9:01: 52.000 KÕIKIDE failide täitmise aeg: 894: 04: 48.000 Maksimaalne SD latentsusaeg (sisaldab faili sulgemist/avamist): 204uS Maksimaalne faili sulgemise/avamise latentsusaeg: 0uS Puhvriplokkide arv: 28 KÕIK plokkpuhvrite täitmise aeg: 3556000uS Maksimaalne puhvrite arv salvestatud kõnega poodiSampleBuffers (): 1 Vastamata taimerid kokku: 0 Siiani vastamata proove kokku: 0 Kirjutatud plokke kokku: 511 Kokku kirjutatud proove: 64832 hõlmab: 0: 01: 04.832 Praegune fail: log00.bin

ls:

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

ANDMETE LOGIMINE ON VALMIS!

Ver: 0.01 sisestage üks järgmistest käskudest:? - praegune olek ja metaandmed ** r - ADC andmete salvestamine ** pole saadaval. Andmed on juba olemas ** i - failide initsialiseerimine ** pole saadaval. Andmed on juba olemas l -nimekirja failid

ANDMED ON JUBA LOGINUD, kontrollige?

LED -ekraan

D3 -ga ühendatud LED (koos D2 -ga, mis tagab GND -ühenduse) süttib pidevalt, kui mõni proov on vahele jäänud, ja vilgub tõrke korral. Visand üritab pärast vigu jätkata, kuid ei pruugi seda edukalt teha.

3. samm: tegelike andmete logimine

Pikaajalisi tegelikke andmeid logides on mugavam sidemoodul D0/D1 kontaktidega ühendada ning logimist kaugjuhtida ja jälgida. Siin kasutati Bluetooth Mate Silver moodulit oma vaikeseadetega, 115200 baudi, ilma riistvara käepigistuseta (RTC, CTS), PIN -kood 1234.

Märkus: Kui Mate Silver moodulile antakse toide, läheb see konfiguratsioonirežiimi, vilgub kiiresti punane LED 60 sekundi jooksul. Selle aja jooksul saate mooduli seadistamiseks saata jadaühenduse kaudu $$$, kuid te ei saa moodulit ühendada. Kui punane LED hakkab aeglaselt vilkuma, võtab Bluetooth -moodul ühendust vastu.

Muutke Teensy32AnalogLogger.ino COM_SERIAL määratlus riistvara jadaühenduseks (D0/D1) Serial1

#define COM_SERIAL Serial1

Pärast arvutiga sidumist loodi arvutis uus COM -port ja CoolTermi saab kasutada logimise ühendamiseks, juhtimiseks ja jälgimiseks. Kasutada saab ka muid jadaühendusega kommunikatsioonimooduleid, näiteks WiFi või BLE, vt üksikasju Arduino UNO/Mega Starter, mida juhib Android/pfodApp.

Saate hallata ja jälgida ka logimist oma Android -mobiiltelefonist, kasutades Bluetoothi terminalirakendust, näiteks rakendust Bluetooth Terminal, või WiFi ja TCP terminalirakendust, nagu TCP Telnet Terminal Pro, või Uart to BLE mdoule ja BLE terminalirakendust, näiteks nRF UART V2

4. samm: ADC sisendite valiku piirangud

ADC sisendite valiku piirangud
ADC sisendite valiku piirangud

Teensy 3.2 mikroprotsessoris on kaks eraldi ADC riistvara moodulit ADC_0 ja ADC_1, nii et see saab korraga proovida kahte sisendit. Sellel on ka sisseehitatud riistvara keskmistamine, mis võtab mitu ADC proovi ja keskmistab need enne tulemuse muutmist.

Sisendite ühendamine ADC_0, ADC_1 -ga on piiratud. Teensy3_1_AnalogCard-p.webp

Kokkuvõtteks: -Ühe lõpuga lugemisel, st +volti, millele on viidatud GND ADC_0, saab lugeda A0 kuni A9, A10, A11, A12, A14 ADC_1 saab lugeda A2, A3, A10, A13, A15 kuni A20 Kui valite tihvti, mille ADC ei saa lugeda, tagastab 0 (alati)

See projekt kasutab A2, A3, millele igaüks pääseb juurde ADC_0 või ADC_1.

Samm:.bin -failide teisendamine.csv -failideks

Teensy32AnalogLogger.ino salvestab proovid kahendina failidesse logxx.bin, st log00.bin kuni log99.bin. Teensy32AnalogLogger.ino salvestab ka jooksu metaandmete faili log.met.

. Bin failide teisendamiseks edasiseks töötlemiseks saate kasutada SDtoCSV.jar (lähtekood SDtoCSV_src.zip). Kopeerige failid SD -kaardilt oma arvuti kõvakettale, millel on vähemalt 70 GB vaba ruumi, ja kopeerige SDtoCSV.jar samasse kataloogi. Avage selles kataloogis käsuaken ja käivitage

java -jar SDtoCSV.jar log

Kui teie arvutisse pole installitud Java, installige see saidilt www.java.com

SDtoCSV töötleb faili log.met ja seejärel kõiki kataloogis saadaolevaid logxx.bin faile ning väljastab iga.bin jaoks.csv -faili.. Csv -failil on näidise järjekorranumber, millele järgneb kaks näitu.

Siin on näidatud konsooli väljund 2 adc näidu jaoks, mille proov on 30303 korda sekundis, output.txt. See illustreerib, kuidas vahelejäänud proovidest teatatakse. (Puhvrite arvu kahekordistamine viimases visandis parandas need puuduvad proovid)

SD_Logimine CSV -konversiooni. Kontrollige SDtoCSV.log edusamme ja tõrketeateid… Logi töötlemine25 Töödeldud 256000 plokki Töötlemise log26Töödeldud 256000 plokkiTöötluslogi27Töödeldud 256000 plokki Vastamata proovid: 2715 Logi töötlemine28Töödeldud 256000 plokki… Töötluslogi29 Töödeldud 256000 plokki… Töötluslogi47 Töödeldud 256000 plokki Töötluslogi töötlemine48 Töödeldud 35935 plokki --- Lõpetatud töötlemine

Igale SDtoCSV käivitusele lisatakse täielikum logifail SDtoCSV.log. See sisaldab metaandmete väljundit ja veateateid. Siin loendamine: 254 on sellesse plokki salvestatud andmete arv, st 127 proovi x 2 adc näitu ploki kohta. MissSamples on vastamata lugemispaaride arv, st.csv -väljundi read.

=== Logifail SD_Logging'i CSV teisendamiseks La 13. juuli 13:19:51 AEST 2019 Konsooli edusammuteadete nägemiseks kasutage java -jar SDtoCSV.jar Baasfaili nime 'log' Metaandmete versioon: 0 (väike endiaanlane) sampleInterval uS: 33 adcBits: 10 adcAvgs: 4 pinCount: 2 tihvtid: 16, 17 prooviPerBlock: 127 noBufferBlocks: 28 kestusega mS: 51649820 soovitud käivitusaeg mS: 106216704 maxBuffersUsed: 32 Hoiatus: ületab saadaolevate puhvrite arvu (28). Mõned proovid võivad puududa. maxLatency uS: 221476 Hoiatus: ületab puhverplokkide antud aja (117348uS). Mõned proovid jäävad puudu. maxFileOpenTime uS: 20998 vastamata Taimerid: 0 vastamata proovid Kokku: kokku 2715 Blokid Kirjutatud: kokku 12323935ProovidKirjutatud: 1565139665 Log00.bin töötlemine Töödeldud 256000 plokki Logi 01.bin töötlemine 256000 plokki… Log26.bin töötlemine Töödeldud 256000 plokki Log27.bin töötlemine !!! Plokk: 57696 loend: 254 vastamata Näidised: 2339 !!! Plokk: 57697 loend: 254 vastamata Proovid: 376 Töödeldud 256000 plokki --- Vastamata proovid kokku: 2715

Töötlemine log28.bin Töödeldud 256000 plokki

… Töötlemine log47.bin Töödeldud 256000 plokki Töötlemine log48.bin Töödeldud 35935 plokki --- Lõpetatud töötlemine

Log00.csv väljundfaili näidis on

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

Näidiloendur suureneb failide kaupa, nii et seda saab kasutada ajatemplina. Kui proove on puudu, suurendatakse proovide loendurit enne järgmise rea väljastamist vahelejäänud loenduri võrra, nii et loendur/ajatempl jääks salvestatud proovide jaoks täpseks.

6. samm: kommentaarid koodeksi ja laienduste kohta

Teensy32AnalogLogger on Bill Greimani AnalogBinLoggeri näite tugevalt muudetud versioon tema SdFat Arduino raamatukogus. Siin on raamatukogu ümber kirjutatud nii, et see töötab Teensy 3.2 -s.

Teensy32AnalogLogger kasutab proovivälja määramiseks taimerit0. Taimeri 0 katkestuste käitleja käivitab kaks ADC teisendust. Teise ADC -mooduli katkestuste töötlejat kutsutakse pidevalt, kuni need mõlemad on lõpetatud, tavaliselt esimene käivitatud ADC -moodul lõpetab ADC_0 enne teist, nii et katkestuste käitlejat kutsutakse ainult üks kord. Katkestuste töötleja ADC_1 salvestab proovid andmepuhvrisse.

Põhiahelas () salvestab storeSampleBuffer () kõik täispuhvrid SD -kaardile ja suunab puhvrid tühja puhverjärjekorda. Teensy 3.2 -s saadaolev suur hulk RAM -i tähendab, et saab eraldada suure hulga puhvreid ja seega ei pea storeSampleBuffer () sageli helistama. See jätab põhisilmusel () aega muude tööde tegemiseks, näiteks protsessikäskluste ja väljundi saatmiseks.

Laiendused

Kuigi see projekt toimib kiire andmesalvestajana, on täielikuks kandmiseks vaja see siiski pakendada ning tarnida akusüsteem ja EKG -andurid. Lisaks sellele tuleb kaaluda mõningaid laiendusi.

  1. Lisage proovivõetud lainekuju reaalajas juhtimine ja jälgimine pfodAppi kaudu, kasutades pfodAppi joonistusfunktsiooni, et kuvada lainekuju hetktõmmised
  2. Pikema proovivõtmise jaoks pikendage failide numbreid üle 99
  3. Proovige rohkem kui 2 sisendit. Kuna Teensy 3.2 -l on kaks ADC -moodulit, saate koodi muuta, et lisada valimisageduse maksimeerimiseks paarisiseseid lisasisendeid.
  4. Aku laetuse jälgimiseks lisage aku jälgimine. Teensy 3.2 kasutab 24 tunni jooksul umbes 1100 mAh, sealhulgas bluetooth- ja SD -moodul, kuid ilma andurimoodulita
  5. Lisage kahekordne aku toiteahel, et võimaldada aku vahetamist ilma logimist katkestamata.

Soovitan: