Kazalo:

Zapisujte EKG visoke hitrosti ali druge podatke neprekinjeno več kot mesec: 6 korakov
Zapisujte EKG visoke hitrosti ali druge podatke neprekinjeno več kot mesec: 6 korakov

Video: Zapisujte EKG visoke hitrosti ali druge podatke neprekinjeno več kot mesec: 6 korakov

Video: Zapisujte EKG visoke hitrosti ali druge podatke neprekinjeno več kot mesec: 6 korakov
Video: Po mojemu: EKG cz. 1 2024, December
Anonim
Hitro posneti EKG ali druge podatke neprekinjeno beležite več kot mesec dni
Hitro posneti EKG ali druge podatke neprekinjeno beležite več kot mesec dni

Ta projekt je bil razvit v podporo univerzitetni medicinski raziskovalni skupini, ki je potrebovala nosljivo opremo, ki je lahko 30 dni neprekinjeno beležila 2 x signala EKG pri 1000 vzorcih/s (skupaj 2K vzorcev/sekundo), da bi odkrila aritmije. Tu predstavljeni projekt vključuje daljinsko upravljanje in spremljanje sečnje. Daljinski upravljalnik je prek menijev na serijskem terminalu, bodisi v računalniku ali mobilnem telefonu. Ta projekt ne zajema merjenja EKG ali embalaže ali baterije, potrebne za končno nošenje.

Ta hitra/dolgotrajna različica uporablja Teensy 3.2, Adafruit Micro-SD prekinitveni modul, kakovostno kartico SD 16G SDHC razreda 10 za beleženje podatkov in komunikacijski modul Bluetooth za nadzor in spremljanje. Na voljo je tudi manj razvita in počasnejša različica tega projekta UNO/Mega2560. Medtem ko ta projekt uporablja komunikacijski modul Bluetooth za nadzor in spremljanje beleženja, lahko uporabite tudi module WiFi ali BLE.

Ta različica, ki temelji na Teensy 3.2, je sposobna veliko višjih vzorčenj kot različica UNO/Mega2560. S to kodo lahko Teensy 3.2 vzorči in zabeleži dva vzorca ADC pri> 30Khz s strojno opremo v povprečju za 4 vzorce in tako zlahka izpolni zgornjo zahtevo 1000 vzorcev/s. Koda podpira shranjevanje 100.bin datotek po 128K vsaka. Pri 30Khz to pokriva 29 ur 30min. Pri 1000 vzorcih na sekundo pokriva 37 dni. Kodo je mogoče enostavno razširiti na več kot 100 datotek, s čimer se podaljša trajanje teka. Na koncu teka boste imeli> 10Gig podatkov,.bin, datotek in.met datoteko metapodatkov, ki opisujejo tek in rezultate. Priloženi SDtoCSV.jar (izvorna koda SDtoCSV_src.zip) lahko uporabite za pretvorbo datotek.bin v datoteke.csv na vašem računalniku za nadaljnjo obdelavo. Dobljeni podatki so> 60Gig. Različica UNO/Mega2560 ima pretvorbo.bin v.csv vključeno v skico Arduino, vendar glede na količino podatkov, zabeleženih v različici Teensy, to ni učinkovit način pretvorbe.

Zaloge

Teensy 3.2 avtorja PJRC

Odklopna plošča kartice Adafruit MicroSD+ ali podobna.

16G kartica SD SDHC razreda 10 dobre kakovosti, npr. SanDisk.

5V USB napajanje

LED z zaporo 470R v seriji.

2 upora 100R (zagotavlja zaščito pred poškodbami zaradi napak pri ožičenju Tx/Rx)

Bluetooth Mate Silver ALI eden od modulov, opisanih na Arduino UNO/Mega Starter, pod nadzorom Android/pfodApp

1. korak: Gradnja

Gradnja
Gradnja

Prenesite in namestite Arduino IDE V1.8.9+ s spletnega mesta https://arduino.cc/en/Main/Software. Ta spletna stran vsebuje povezave do različnih operacijskih sistemov in povezavo do GettingStarted (https://arduino.cc/en/Guide/HomePage).

Prenesite in namestite Teensyduino (Teensy podpora za Arduino IDE). Pazljivo upoštevajte navodila za prvo uporabo.

Za ploščo izberite Teensy 3.2 in preverite, ali se primer programa BLINK naloži in zažene.

Prenesite in namestite naslednje knjižnice:- millisDelay in SdFat (Tukaj je lokalni posnetek knjižnice SdFat, uporabljene za te teste.) In pfodParser.zip (za razred pfodBufferedStream in pfodNonBlockingInput)

Prenesite datoteke zip knjižnice in nato uporabite Arduino IDE → Skica → Vključi knjižnico → Dodaj meni knjižnice. ZIP, da namestite knjižnice iz datotek zip.

Razpakirajte datoteko Teensy32AnalogLogger.zip v svoj imenik skic Arduino in programirajte ploščo Teensy 3.2 s Teensy32AnalogLogger.ino (različica 0.01)

Priključite modul Teensy 3.2, modul Bluetooth in modul kartice SD, kot je prikazano zgoraj (različica pdf)

2. korak: Zagon programa - Testiranje

Najprej formatirajte kartico SD s pomočjo

Kartica SD mora biti prazna, če želite začeti beleženje.

Za začetno testiranje vam ni treba priključiti komunikacijskega modula, samo priključite modul Teensy 3.2 + SD (z vstavljeno prazno kartico) na Arduino IDE prek serijskega kabla USB. Kot je določeno, skica Teensy32AnalogLogger.ino uporablja povezavo USB za nadzor in spremljanje. Za uporabo komunikacijske naprave za nadzor in nadzor si oglejte spodnji korak beleženja realnih podatkov.

Uredite vrh skice Teensy32AnalogLogger.ino, da nastavite COM_SERIAL na Serijsko, za izhod na povezavo Teensy USB.

#define COM_SERIAL Serijski

Nato naložite skico v Teensy 3.2

Odprite serijski monitor Arduino IDE pri 115200 baud (nastavljena sta NL in CR). Po nekaj sekundah bo Teensy 3.2 prikazal meni ukazov

Ver: 0.01 vnesite enega od naslednjih ukazov:? - trenutno stanje in metapodatki - inicializiraj datotekel - seznam datotek>

The? cmd prikazuje podrobnosti trenutnih nastavitev. (Za spremembo teh nastavitev glejte vrh Teensy32AnalogLogger.ino) Cmds je treba končati z NL ali CR ali oboje.

0: 00: 00.000 od 720: 00: 00.000

Vzorčni zatiči: 16 17 Vrstni red bajtov: Little-Endian ADC bitovi: 10 povprečnih vzorcev ADC nad: 4 Sample Rate: 1000.00 Sample interval: 1000uS Vzorcev na blok: 127 Čas za polnjenje bloka: 127000uS Čas za izpolnitev datoteke: 9:01: 52.000 Čas za polnjenje VSIH datotek: 894: 04: 48.000 Največja zakasnitev SD (vključno z zapiranjem/odpiranjem datoteke): 0uS Največja zakasnitev zapiranja/odpiranja datoteke: 0uS Število vmesnih blokov: 28 Čas za polnjenje VSIH medpomnilnikov blokov: 3556000uS Največje število pufrov shranjeno v klicu v trgovinoSampleBuffers (): 0 Skupaj zgrešenih časovnikov: 0 Skupaj doslej zgrešenih vzorcev: 0 Skupaj zapisanih blokov: 0 Skupaj napisanih vzorcev: 0, ki pokrivajo: 0: 00: 00.000 Trenutna datoteka:

V tem primeru je trenutni čas beleženja 0 od zahtevanih 720 ur (30 dni), vzorčenje D16/A2 in D17/A3 (glejte spodaj omejitve pri izbiri vhodov ADC) 1000 -krat na sekundo. Najdaljši čas delovanja je lahko do 894 ur (37,25 dni). Glavna zanka () je lahko zasedena do 3,5 sekunde (čas za polnjenje VSIH blokovnih vmesnikov), preden se napolnijo vsi razpoložljivi vmesni pomnilniki in se vzorci začnejo izgubljati. Shranjeni medpomnilniki itd. Se posodabljajo med potekom izvajanja.

Vstavite prazno kartico SD, uporabite 'i' cmd za inicializacijo 99 datotek, ki se uporabljajo za shranjevanje podatkov. Predinicializacija jih tukaj skrajša časovni zamik pri prehodu iz ene datoteke v drugo in omogoča hitrejše vzorčenje.

Začetek 99 datotek

Ustvarjanje nove datoteke: log00.bin Pretekli čas: 368mS Ustvarjanje nove datoteke: log01.bin Pretekli čas: 520mS… Ustvarjanje nove datoteke: log98.bin Pretekli čas: 15660mS Ustvarjanje nove datoteke: log99.bin Pretekli čas: 15812mS

Nato lahko uporabite r cmd za začetek beleženja. Zagon bo zahtevan čas ali dokler se s cmd ne uporabi za njegovo ustavitev. Lahko uporabite tudi? cmd med prijavo, da dobite posodobljene časovne razporede in števila. Tukaj je kratek tek, ki se je zgodaj ustavil z uporabo s cmd.

PRIJAVA PODATKOV ……

Ver: 0.01 vnesite enega od naslednjih ukazov:? - trenutno stanje in metapodatki - ustavi beleženje podatkov

PRIJAVA PODATKOV … Preveriti pri? ukaz

Pretekli čas delovanja: 0: 00: 10.000 od 720: 00: 00.000 Pretekli čas delovanja: 0: 00: 20.000 od 720: 00: 00.000…

Ustavitev beleženja in odstranitev neuporabljenih datotek.

… Odstranjevanje neuporabljene datoteke: log98.bin Odstranjevanje neuporabljene datoteke: log99.bin

0: 01: 04.976 od 720: 00: 00.000

Vzorčni zatiči: 16 17 Vrstni red bajtov: Little-Endian ADC bitovi: 10 povprečnih vzorčnih vrednosti ADC: 4 Sample Rate: 1000.00 Interval vzorčenja: 1000uS Vzorcev na blok: 127 Čas za polnjenje bloka: 127000uS Čas za izpolnitev datoteke: 9:01: 52.000 Čas za polnjenje VSIH datotek: 894: 04: 48.000 Največja zakasnitev SD (vključno z zaprtjem/odpiranjem datoteke): 204uS Največja zakasnitev zapiranja/odpiranja datoteke: 0uS Število vmesnih blokov: 28 Čas za polnjenje VSIH medpomnilnikov blokov: 3556000uS Največje število pufrov shranjeno v klic do trgovineSampleBuffers (): 1 Skupaj zgrešenih časovnikov: 0 Skupaj doslej zgrešenih vzorcev: 0 Skupaj zapisanih blokov: 511 Skupaj napisanih vzorcev: 64832, ki pokrivajo: 0: 01: 04.832 Trenutna datoteka: log00.bin

ls:

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

DOPIS PODATKOV JE ZAKLJUČEN!

Ver: 0.01 vnesite enega od naslednjih ukazov:? - trenutno stanje in metapodatki ** r - zapis ADC podatkov ** ni na voljo. Podatki že obstajajo ** i - datoteke za inicializacijo ** niso na voljo. Podatki že obstajajo na l -seznamu datotek

PODATKI SO BILI VEČ ZAPISANI, preverite pri?

LED zaslon

LED, priključen na D3 (z D2, ki zagotavlja povezavo GND), bo svetel, če zamudite kateri koli vzorec, in utripal, če je prišlo do napake. Skica se poskuša nadaljevati po napakah, vendar morda ne uspe.

3. korak: Zapisovanje resničnih podatkov

Pri daljšem beleženju resničnih podatkov je bolj priročno, da komunikacijski modul povežete z zatiči D0/D1 ter na daljavo nadzirate in nadzirate beleženje. Tu je bil uporabljen modul Bluetooth Mate Silver s privzetimi nastavitvami, 115200 baud, brez rokovanja s strojno opremo (RTC, CTS), pin code 1234.

Opomba: Ko se modul Mate Silver napaja, preide v konfiguracijski način, hitro utripa rdeča LED, za 60 sekund. V tem času lahko modulu pošljete $$$ prek serijske povezave, da ga konfigurirate, vendar modula ne morete povezati. Ko rdeča lučka počasi utripa, modul Bluetooth sprejme povezave.

Spremenite definicijo COM_SERIAL v Teensy32AnalogLogger.ino v serijsko (D0/D1) povezavo strojne opreme, Serial1

#define COM_SERIAL Serial1

Po seznanitvi z računalnikom so bila na računalniku ustvarjena nova vrata COM in CoolTerm lahko uporabite za povezavo in nadzor ter spremljanje beleženja. Uporabite lahko tudi druge serijsko povezane komunikacijske module, na primer WiFi ali BLE, za podrobnosti glejte Arduino UNO/Mega Starter, ki ga upravlja Android/pfodApp.

Prav tako lahko nadzorujete in spremljate beleženje iz mobilnega telefona Android s pomočjo terminalske aplikacije bluetooth, kot je aplikacija Bluetooth Terminal, ali z uporabo terminalske aplikacije WiFi in TCP, kot je TCP Telnet Terminal Pro, ali mdoule Uart to BLE in terminalske aplikacije BLE, kot je nRF UART V2

4. korak: Omejitve pri izbiri vhodov ADC

Omejitve pri izbiri vhodov ADC
Omejitve pri izbiri vhodov ADC

Teensy 3.2 ima v svojem mikroprocesorju dva ločena strojna modula ADC, ADC_0 in ADC_1, tako da lahko hkrati vzorči dva vhoda. Ima tudi vgrajeno strojno povprečenje, ki vzame več vzorcev ADC in jih povpreči, preden rezultat obrne.

Obstajajo omejitve, pri katerih je mogoče vhode priključiti na ADC_0, ADC_1. Slika Teensy3_1_AnalogCard-p.webp

Če povzamemo: -Za enojne končane odčitke, tj. +Volti, omenjeni na GND ADC_0 lahko berejo A0 do A9, A10, A11, A12, A14 ADC_1 lahko bere A2, A3, A10, A13, A15 do A20 Če izberete pin, ki ga ADC ne more prebrati, vrne 0 (vedno)

Ta projekt uporablja A2, A3, do katerih lahko dostopa vsak ADC_0 ali ADC_1.

5. korak: Pretvorite datoteke.bin v datoteke.csv

Teensy32AnalogLogger.ino shrani vzorce kot binarne datoteke v datotekah logxx.bin, to je log00.bin v log99.bin. Teensy32AnalogLogger.ino shrani tudi datoteko log.met z meta podatki o teku.

Za pretvorbo datotek.bin v.csv za nadaljnjo obdelavo lahko uporabite SDtoCSV.jar (izvorna koda SDtoCSV_src.zip). Kopirajte datoteke s kartice SD na trdi disk računalnika z najmanj 70 GB prostega prostora in kopirajte datoteko SDtoCSV.jar v isti imenik. Odprite ukazno okno v tem imeniku in zaženite

java -jar dnevnik SDtoCSV.jar

Če v vašem računalniku ni nameščene Java, ga namestite s spletnega mesta www.java.com

SDtoCSV bo obdelal datoteko log.met in nato vsako od razpoložljivih datotek logxx.bin v imeniku ter za vsako datoteko.bin izpisal datoteko.csv. Datoteka.csv ima zaporedno številko vzorca, ki ji sledita dva odčitka.

Tukaj je prikazan izhod vzorčne konzole za branje 2 ADC, vzorčeno 30303 krat/s, output.txt. Prikazuje, kako poročajo o pogrešanih vzorcih. (Podvojitev števila pufrov v zadnji skici je popravila te zgrešene vzorce)

SD_Zapisovanje v pretvorbo CSV. V SDtoCSV.log preverite sporočila o napredku in napakah. Dnevnik obdelave00 Obdelanih 256000 blokov Obdelava dnevnika01 Obdelanih 256000 blokov… Dnevnik obdelave25 Obdelanih 256000 blokov Dnevnik obdelave26 Obdelanih 256000 blokov Dnevnik obdelave27 Obdelanih 256000 blokov Zgrešeni vzorci: 2715 Dnevnik obdelave28 Obdelanih 256000 blokov… Obdelava dnevnika29 Obdelanih 256000 blokov… Dnevnik obdelave47 Obdelano 256000 blokov Dnevnik obdelave48 Obdelano 35935 blokov --- Končana obdelava

Ob vsakem zagonu SDtoCSV je priložena popolnejša datoteka dnevnika, SDtoCSV.log. Vključuje izhod metapodatkov in vsa sporočila o napakah. Tukaj štetje: 254 je število podatkov, shranjenih v tem bloku, to je 127 vzorcev x 2 odčitka adc na blok. Zapuščeni vzorci so število parov branih zgrešenih, to je vrstic v izhodu.csv.

=== Datoteka dnevnika za pretvorbo SD_Logging v CSV Sat, 13. julij 13:19:51 AEST 2019 Če si želite ogledati sporočila o napredku v konzoli, uporabite java -jar SDtoCSV.jar Osnovna datoteka Ime 'dnevnik' Različica metapodatkov: 0 (Little Endian) vzorec Interval uS: 33 adcBits: 10 adcAvgs: 4 pinCount: 2 Pins: 16, 17 vzorcevPerBlock: 127 noBufferBlocks: 28 trajanje mS: 51649820 zahtevan čas delovanja Time mS: 106216704 maxBuffersUsed: 32 Opozorilo: Presega število razpoložljivih pufrov (28). Morda manjkajo nekateri vzorci. maxLatency uS: 221476 Opozorilo: Presega čas, ki ga zagotavljajo vmesni bloki (117348uS). Nekateri vzorci bodo manjkali. maxFileOpenTime uS: 20998 zamujenoTrimerji: 0 zamujeniVzorciSkupno: skupaj 2715BlokiZapisano: 12323935 skupajVzorci Napisano: 1565139665 Obdelava log00.bin Obdelana 256000 blokov Obdelava log01.bin Obdelanih 256000 blokov… Obdelava log26.bin Obdelano 256000 blokov Obdelava log27.bin !!! Blok: 57696 število: 254 zamujenihVzorcev: 2339 !!! Blok: 57697 count: 254 missed Vzorci: 376 Obdelano 256000 blokov --- Skupaj pogrešanih vzorcev: 2715

Obdelava log28.bin Obdelanih 256000 blokov

… Obdelava log47.bin Obdelana 256000 blokov Obdelava log48.bin Obdelana 35935 blokov --- Končana obdelava

Vzorec izhodne datoteke log00.csv je

Števec vzorcev (na 33uS), pin 16, pin 170, 248, 205 1, 273, 195 2, 228, 337 3, 360, 302 4, 355, 369 5, 220, 281…

Števec vzorcev se iz datoteke v datoteko povečuje, zato ga je mogoče uporabiti kot časovni žig. Če manjkajo vzorci, se števec vzorcev poveča za zamujeno štetje, preden se prikaže naslednja vrstica, tako da števec/časovni žig ostane natančen za posnete vzorce.

6. korak: Komentarji na kodo in razširitve

Teensy32AnalogLogger je močno spremenjena različica primera AnalogBinLoggerja Billa Greimana v njegovi knjižnici SdFat Arduino. Tu je bila knjižnica preoblikovana v Teensy 3.2.

Teensy32AnalogLogger uporablja timer0 za nastavitev vzorčnega intervala. Upravljavec prekinitev za timer0 zažene dve pretvorbi ADC. Vodnik prekinitev za drugi modul ADC se nenehno kliče, dokler nista oba dokončana, običajno se prvi zagnani modul ADC ADC_0 konča pred drugim, zato se upravljalnik prekinitev pokliče samo enkrat. Upravljavec prekinitev ADC_1 shrani vzorce v podatkovni vmesnik.

V glavni zanki () storeSampleBuffer () shrani vse polne medpomnilnike na kartico SD in jih reciklira v prazno čakalno vrsto medpomnilnika. Velika količina RAM -a, ki je na voljo v Teensy 3.2, pomeni, da je mogoče dodeliti veliko število vmesnih pomnilnikov, zato storeSampleBuffer () ni treba pogosto klicati. To pušča čas, da glavna zanka () opravi drugo delo, na primer ukaze procesa in pošlje izhod.

Razširitve

Čeprav je ta projekt funkcionalen kot zapisovalnik podatkov visoke hitrosti, ga je za popolno nošenje treba še zapakirati in dobaviti baterijski sistem in senzorje EKG. Pa tudi, da je treba upoštevati nekatere razširitve.

  1. Dodajte nadzor in spremljanje vzorčenega valovnega obrazca v realnem času s pomočjo pfodApp s funkcijo risanja pfodApp za prikaz posnetkov oblike valov
  2. Podaljšajte številke datotek nad 99 za daljše vzorčenje
  3. Vzorčite več kot 2 vhoda. Ker ima Teensy 3.2 dvojne ADC module, lahko kodo spremenite tako, da dodate dodatne vhode v parih, da povečate frekvenco vzorčenja.
  4. Za spremljanje napolnjenosti akumulatorja dodajte nadzor. Teensy 3.2 uporablja približno 1100 mAhrs v 24 urah, vključno z modulom bluetooth in SD, vendar brez senzorskega modula
  5. Dodajte dvojni napajalni tokokrog za baterije, da omogočite menjavo baterije brez prekinitve beleženja.

Priporočena: