Obsah:

Zaznamenávajte vysokorýchlostné EKG alebo iné údaje nepretržite viac ako mesiac: 6 krokov
Zaznamenávajte vysokorýchlostné EKG alebo iné údaje nepretržite viac ako mesiac: 6 krokov

Video: Zaznamenávajte vysokorýchlostné EKG alebo iné údaje nepretržite viac ako mesiac: 6 krokov

Video: Zaznamenávajte vysokorýchlostné EKG alebo iné údaje nepretržite viac ako mesiac: 6 krokov
Video: Сравнение спортивных часов Garmin - что вам подходит? 2024, Júl
Anonim
Zaznamenávajte vysokorýchlostné EKG alebo iné údaje nepretržite viac ako mesiac
Zaznamenávajte vysokorýchlostné EKG alebo iné údaje nepretržite viac ako mesiac

Tento projekt bol vyvinutý na podporu tímu univerzitného lekárskeho výskumu, ktorý potreboval nositeľné zariadenie, ktoré by dokázalo zaznamenávať 2 x signály EKG pri 1 000 vzorkách za sekundu (každé 2 vzorky/s celkom) nepretržite počas 30 dní, aby sa zistili arytmie. Tu prezentovaný projekt zahŕňa diaľkové ovládanie a monitorovanie ťažby. Diaľkové ovládanie je prostredníctvom ponúk umiestnených na sériovom termináli, a to buď v počítači, alebo v mobilnom telefóne. Tento projekt nepokrýva meranie EKG alebo balenie alebo batériu potrebnú na konečné nosenie.

Táto vysokorýchlostná/dlhotrvajúca verzia používa na zaznamenávanie údajov Teensy 3.2, oddeľovací modul Adafruit Micro-SD, kvalitnú kartu SD 16G SDHC triedy 10 a na ovládanie a monitorovanie komunikačný modul Bluetooth. K dispozícii je aj menej rozvinutá a pomalšia verzia tohto projektu UNO/Mega2560. Aj keď tento projekt používa na ovládanie a monitorovanie protokolovania komunikačný modul Bluetooth, môžete tiež použiť moduly WiFi alebo BLE.

Táto verzia, založená na Teensy 3.2, je schopná oveľa vyšších vzorkovacích frekvencií ako verzia UNO/Mega2560. Pomocou tohto kódu môže Teensy 3.2 vzorkovať a zaznamenávať dve vzorky ADC s frekvenciou> 30 kHz s hardvérovým priemerom cez 4 vzorky, a tak ľahko spĺňa vyššie uvedenú požiadavku 1 000 vzoriek za sekundu. Kód podporuje uloženie 100.bin súborov po 128 kB. Pri 30 kHz, ktorý pokrýva 29 hodín 30 minút. Pri 1000 vzorkách/s pokrýva 37 dní. Kód je možné ľahko rozšíriť tak, aby spracovával viac ako 100 súborov, čím sa predĺži trvanie cyklu. Na konci behu budete mať> 10 gigabajtov údajov,.bin, súborov a.met súbor meta dát popisujúcich beh a výsledky. Dodaný súbor SDtoCSV.jar (zdrojový kód SDtoCSV_src.zip) je možné použiť na konverziu súborov.bin na súbory.csv vo vašom počítači na ďalšie spracovanie. Výsledné údaje sú> 60 Gig. Verzia UNO/Mega2560 má v náčrte Arduino zahrnutú konverziu.bin na.csv, ale vzhľadom na objem dát zaznamenaných vo verzii Teensy to nie je efektívny spôsob prevodu.

Zásoby

Teensy 3.2 od PJRC

Oddeľovacia doska karty Adafruit MicroSD+ alebo podobná.

16G karta microSD SDHC triedy 10 dobrej kvality, napr. SanDisk.

Napájanie 5V USB

LED v sérii s odporom 470R.

2 x 100R odpory (poskytuje ochranu pred poškodením v dôsledku chýb v zapojení Tx/Rx)

Bluetooth Mate Silver ALEBO jeden z modulov popísaných na Arduino UNO/Mega Starter, ovládaný systémom Android/pfodApp

Krok 1: Konštrukcia

Konštrukcia
Konštrukcia

Prevezmite a nainštalujte Arduino IDE V1.8.9+ z https://arduino.cc/en/Main/Software. Táto webová stránka obsahuje odkazy na rôzne operačné systémy a odkaz na stránku GettingStarted (https://arduino.cc/en/Guide/HomePage).

Stiahnite si a nainštalujte Teensyduino (podpora Teensy pre Arduino IDE). Pozorne si všimnite pokyny pre prvé použitie.

Ako dosku vyberte Teensy 3.2 a skontrolujte, či sa načítava a beží ukážkový program BLINK.

Stiahnite si a nainštalujte nasledujúce knižnice:- millisDelay a SdFat (Miestny prehľad knižnice SdFat použitej na tieto testy je tu.) A pfodParser.zip (pre triedu pfodBufferedStream a pfodNonBlockingInput)

Stiahnite si súbory zip knižnice a potom pomocou Arduino IDE → Sketch → Include Library → Add. ZIP library menu na nainštalovanie knižníc zo súborov zip.

Rozbaľte súbor Teensy32AnalogLogger.zip do adresára skic Arduino a naprogramujte dosku Teensy 3.2 pomocou programu Teensy32AnalogLogger.ino (verzia 0,01)

Pripojte modul Teensy 3.2, modul Bluetooth a modul karty SD tak, ako je to znázornené vyššie (verzia pdf)

Krok 2: Spustenie programu - testovanie

Najprv naformátujte kartu SD pomocou

Na spustenie protokolovania musí byť karta SD prázdna.

Na počiatočné testovanie nepotrebujete pripojiť komunikačný modul, stačí pripojiť modul Teensy 3.2 + SD (s nainštalovanou prázdnou kartou) k Arduino IDE pomocou sériového kábla USB. Ako je uvedené, skica Teensy32AnalogLogger.ino používa na ovládanie a monitorovanie pripojenie USB. Informácie o použití komunikačného zariadenia na ovládanie a monitorovanie nájdete v nižšie uvedenom kroku Protokolovanie skutočných údajov.

Upravte hornú časť náčrtu Teensy32AnalogLogger.ino a nastavte COM_SERIAL na Sériové, aby vychádzal na pripojenie USB Teensy.

#define COM_SERIAL Sériové

Potom nahrajte skicu na server Teensy 3.2

Otvorte sériový monitor Arduino IDE na 115 200 baudov (so sadou NL aj CR). Po niekoľkých sekundách Teensy 3.2 zobrazí ponuku príkazov

Ver: 0,01 zadajte jeden z nasledujúcich príkazov:? - aktuálny stav a metadáta - inicializácia súborov - zoznam súborov>

The? cmd zobrazuje podrobnosti o aktuálnych nastaveniach. (Ak chcete zmeniť tieto nastavenia, pozrite sa na hornú časť stránky Teensy32AnalogLogger.ino.) Cmds musí byť ukončené NL alebo CR alebo oboma.

0: 00: 00.000 z 720: 00: 00,000

Ukážky pinov: 16 17 bajtov poradia: Little-Endian bity ADC: 10 priemerov vzorky ADC nad: 4 vzorkovacia frekvencia: 1 000,00 vzorkovací interval: 1 000 us vzoriek na blok: 127 čas na vyplnenie bloku: 127 000 µs čas na vyplnenie súboru: 9:01: 52 000 Čas na vyplnenie VŠETKÝCH súborov: 894: 04: 48 000 Max. Latencia SD (zahŕňa zatvorenie/otvorenie súboru): 0uS Max. Latencia zatvorenia/otvorenia súboru: 0uS Počet blokov vyrovnávacej pamäte: 28 Čas na vyplnenie VŠETKÝCH blokových vyrovnávacích pamätí: 3556000uS maximálny počet vyrovnávacích pamätí uložené vo výzve na uloženieSampleBuffers (): 0 zmeškaných časovačov celkom: 0 doteraz celkom zmeškaných vzoriek: 0 zapísaných celkom blokov: 0 napísaných celkom vzoriek: 0 pokrývajúcich: 0: 00: 00 000 aktuálny súbor:

V tomto prípade je súčasná doba protokolovania 0 z požadovaných 720 hodín (30 dní), vzorkovanie D16/A2 a D17/A3 (nižšie uvedené obmedzenia týkajúce sa výberu vstupov ADC nižšie) 1 000 -krát za sekundu. Maximálna doba prevádzky môže byť až 894 hodín (37,25 dní). Hlavnú slučku () je možné obsadiť až 3,5 s (čas na naplnenie VŠETKÝCH blokových vyrovnávacích pamätí), než sa naplnia všetky dostupné vyrovnávacie pamäte a začnú sa strácať vzorky. Uložené vyrovnávacie pamäte atď. Sa aktualizujú v priebehu behu.

Vložte prázdnu kartu SD a pomocou „i“cmd inicializujte 99 súborov použitých na ukladanie údajov. Ich predinicializácia tu znižuje časové oneskorenie pri prechode z jedného súboru na druhý a umožňuje rýchlejšie vzorkovanie.

Inicializácia 99 súborov

Vytvorenie nového súboru: log00.bin Uplynutý čas: 368 mS Vytvorenie nového súboru: log01.bin Uplynutý čas: 520 mS… Vytvorenie nového súboru: log98.bin Uplynutý čas: 15660 mS Vytvorenie nového súboru: log99.bin Uplynutý čas: 15812 mS

Potom môžete použiť cmd na spustenie protokolovania. Beh bude trvať požadovaný čas alebo kým ho nepoužije s cmd. Môžete tiež použiť? cmd pri prihlasovaní, aby ste získali aktualizované časovanie a počty. Tu je krátky beh predčasne zastavený pomocou príkazu s cmd.

ZÁZNAMNÉ ÚDAJE … …

Ver: 0,01 zadajte jeden z nasledujúcich príkazov:? - aktuálny stav a metadáta s - zastaviť zaznamenávanie údajov

ZÁZNAMNÉ ÚDAJE … Chcete skontrolovať? príkaz

Uplynulý čas behu: 0: 00: 10 000 z 720: 00: 00 000 Uplynulý čas behu: 0: 00: 20 000 z 720: 00: 00 000…

Zastavenie protokolovania a odstraňovanie nepoužívaných súborov.

… Odstraňovanie nepoužitého súboru: log98.bin Odstraňovanie nepoužívaného súboru: log99.bin

0: 01: 04,976 z 720: 00: 00,000

Ukážky pinov: 16 17 bajtov poradia: Little-Endian bity ADC: 10 priemerov vzorky ADC nad: 4 vzorkovacia frekvencia: 1 000,00 vzorkovací interval: 1 000 us vzoriek na blok: 127 čas na vyplnenie bloku: 127 000 µs čas na vyplnenie súboru: 9:01: 52 000 Čas na vyplnenie VŠETKÝCH súborov: 894: 04: 48 000 Max. Latencia SD (zahŕňa zatvorenie/otvorenie súboru): 204uS Max. Latencia zatvorenia/otvorenia súboru: 0uS Počet blokov vyrovnávacej pamäte: 28 Čas na vyplnenie VŠETKÝCH blokových vyrovnávacích pamätí: 3556000uS maximálny počet vyrovnávacích pamätí uložené vo výzve na uloženieSampleBuffers (): 1 zmeškaných časovačov celkom: 0 celkom doteraz zmeškaných vzoriek: 0 celkom zapísaných blokov: 511 celkom napísaných vzoriek: 64832 zahŕňajúcich: 0: 01: 04,832 aktuálny súbor: log00.bin

ls:

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

ZÁZNAM ÚDAJOV JE DOKONČENÝ!

Ver: 0,01 zadajte jeden z nasledujúcich príkazov:? - aktuálny stav a metadáta ** r - zaznamenávať údaje ADC ** nie sú k dispozícii. Údaje už existujú ** i - inicializácia súborov ** nie je k dispozícii. Údaje už existujú. L - zoznam súborov

ÚDAJE UŽ BOLI ZAREGISTROVANÉ, overte si to?

LED displej

LED dióda pripojená k D3 (pričom D2 poskytuje pripojenie GND) sa nerozsvieti, ak zmeškáte akúkoľvek vzorku, a v prípade chyby začne blikať. Náčrt sa pokúša pokračovať po chybách, ale nemusí to urobiť úspešne.

Krok 3: Protokolovanie skutočných údajov

Pri dlhodobom protokolovaní skutočných údajov je pohodlnejšie pripojiť komunikačný modul k pinom D0/D1 a protokolovanie ovládať a monitorovať na diaľku. Tu bol použitý modul Bluetooth Mate Silver s predvolenými nastaveniami, 115 200 baudov, bez hardvérového podávania rúk (RTC, CTS), kód PIN 1234.

Poznámka: Keď je modul Mate Silver napájaný, prejde na 60 sekúnd do konfiguračného režimu, rýchlo bliká červenou diódou. Počas tejto doby môžete odoslať $$$ cez sériové pripojenie k modulu a nakonfigurovať ho, ale modul nemôžete pripojiť. Akonáhle červená dióda pomaly bliká, modul bluetooth akceptuje pripojenia.

Zmeňte definíciu COM_SERIAL v dokumente Teensy32AnalogLogger.ino na hardvérové sériové (D0/D1) pripojenie, Serial1

#define COM_SERIAL Sériové1

Po spárovaní s počítačom bol na počítači vytvorený nový port COM a CoolTerm je možné použiť na pripojenie a ovládanie a monitorovanie protokolovania. Použiť je možné aj ďalšie sériovo prepojené komunikačné moduly, napríklad WiFi alebo BLE, podrobnosti nájdete v Arduino UNO/Mega Starter, ovládanom systémom Android/pfodApp.

Protokolovanie môžete ovládať a monitorovať aj zo svojho mobilného telefónu s Androidom pomocou aplikácie bluetooth terminálu, ako je napríklad aplikácia Bluetooth Terminal, alebo pomocou aplikácie terminálu WiFi a TCP, napríklad TCP Telnet Terminal Pro, alebo Uart to BLE mdoule a aplikácie terminálu BLE, ako napr. nRF UART V2

Krok 4: Obmedzenia pri výbere vstupov ADC

Obmedzenia pri výbere vstupov ADC
Obmedzenia pri výbere vstupov ADC

Teensy 3.2 má vo svojom mikroprocesore dva samostatné hardvérové moduly ADC, ADC_0 a ADC_1, takže môže vzorkovať dva vstupy súčasne. Má tiež vstavaný priemer hardvéru, ktorý odoberie viac vzoriek ADC a spracuje ich pred otočením výsledku.

Existujú obmedzenia, ku ktorým je možné pripojiť vstupy k ADC_0, ADC_1. Obrázok Teensy3_1_AnalogCard-p.webp

V súhrne: -Pre jednostranné čítanie, tj. +Volty vzťahujúce sa na GND, ADC_0 dokáže čítať A0 až A9, A10, A11, A12, A14 ADC_1 môže čítať A2, A3, A10, A13, A15 až A20 Ak vyberiete pin, ktorý ADC nemôže čítať, vráti 0 (vždy)

Tento projekt používa A2, A3, ku ktorým je možné pristupovať pomocou ADC_0 alebo ADC_1.

Krok 5: Konvertovanie súborov.bin na súbory.csv

Server Teensy32AnalogLogger.ino uloží vzorky ako binárne v súboroch logxx.bin, tj. Log00.bin do log99.bin. Teensy32AnalogLogger.ino tiež uloží súbor log.met metadát o behu.

Na konverziu súborov.bin na.csv na ďalšie spracovanie môžete použiť SDtoCSV.jar (zdrojový kód SDtoCSV_src.zip). Skopírujte súbory z karty SD na pevný disk počítača s najmenej 70 GB voľného miesta a skopírujte súbor SDtoCSV.jar do rovnakého adresára. Otvorte príkazové okno v tomto adresári a spustite ho

protokol java -jar SDtoCSV.jar

Ak váš počítač nemá nainštalovanú aplikáciu Java, nainštalujte si ju z www.java.com

SDtoCSV spracuje súbor log.met a potom každý z dostupných súborov logxx.bin v adresári a vydá súbor.csv pre každý.bin. Súbor.csv má vzorové poradové číslo, za ktorým nasledujú dve čítania.

Tu je zobrazený vzorový výstup konzoly na čítanie 2 adc vzorkovaný 30303 krát za sekundu, output.txt. Ukazuje, ako sú nahlásené zmeškané vzorky. (Zdvojnásobenie počtu vyrovnávacích pamätí v konečnom náčrte opravilo tieto zmeškané vzorky)

SD_Prevod do formátu CSV. Skontrolujte priebeh a chybové hlásenia v SDtoCSV.log. Spracovanie log00 Spracované 256 000 blokov Spracovanie log01 Spracované 256 000 blokov… Processing log25 Processed 256000 blocks Processing log26 Processed 256000 blocks Processing log27 Processed 256000 blocks Missed Samples: 2715 Processing log28 Processed 256000 blocks… Processing log29 Spracovaných 256 000 blokov… Processing log47 Processed 256000 blocks Processing log48 Processed 35935 block --- Finished Processing

Pri každom spustení programu SDtoCSV je pripojený úplnejší súbor denníka SDtoCSV.log. Obsahuje výstup metadát a akékoľvek chybové správy. Tu je počet: 254 počet údajov uložených v tomto bloku, tj. 127 vzoriek x 2 adc čítania na blok. MissSamples je počet párov zmeškaných čítaní, tj. Riadkov vo formáte.csv.

=== Súbor denníka pre konverziu SD_Logovanie do CSV So 13. júla 13:19:51 AEST 2019 Na zobrazenie správ o priebehu v konzole použite java -jar SDtoCSV.jar Základný názov súboru „log“Verzia metadát: 0 (Little Endian) sampleInterval uS: 33 adcBits: 10 adcAvgs: 4 pinCount: 2 Pins: 16, 17 samplePerBlock: 127 noBufferBlocks: 28 duration mS: 51649820 requested runTime mS: 106216704 maxBuffersUsed: 32 Warning: Exceses number of buffers available (28). Niektoré vzorky môžu chýbať. maxLatency uS: 221476 Varovanie: Presahuje čas poskytovaný blokmi vyrovnávacej pamäte (117348uS). Niektoré vzorky budú chýbať. maxFileOpenTime uS: 20998 minulTimery: 0 minulSamplesCelkom: celkom 2715BlocksWritten: 12323935 totalSamplesWritten: 1565139665 Processing log00.bin Processed 256000 blocks Processing log01.bin Processed 256000 blocks… Spracovanie log26.bin Spracovaných 256 000 blokov Spracovanie log27.bin !!! Blok: 57696 počet: 254 zmeškanýchUkážky: 2339 !!! Blok: 57697 počet: 254 zmeškaných Ukážky: 376 spracovaných 256 000 blokov --- Celkový počet zmeškaných vzoriek: 2715

Spracovanie log28.bin Spracovaných 256 000 blokov

… Spracovanie log47.bin Spracovaných 256 000 blokov Spracovanie log48.bin Spracovaných 35935 blokov --- Dokončené spracovanie

Ukážka výstupného súboru log00.csv je

Počítadlo vzoriek (na 33uS), kolík 16, kolík 170, 248, 205 1, 273, 195 2, 228, 337 3, 360, 302 4, 355, 369 5, 220, 281…

Počítadlo vzoriek sa zvyšuje zo súboru na súbor, takže ho možno použiť ako časovú pečiatku. Ak chýbajú vzorky, počítadlo vzoriek sa pred odoslaním ďalšieho riadka zvýši o zmeškaný počet, aby počítadlo/časová pečiatka zostali pre zaznamenané vzorky presné.

Krok 6: Pripomienky ku kódu a rozšíreniam

Teensy32AnalogLogger je výrazne upravenou verziou príkladu Billa Greimana AnalogBinLogger v jeho knižnici SdFat Arduino. Tu bola knižnica prepísaná tak, aby fungovala na serveri Teensy 3.2.

Teensy32AnalogLogger používa Timer0 na nastavenie intervalu vzorkovania. Obsluha prerušenia časovača 0 spustí dve prevody ADC. Obslužný program prerušenia pre druhý modul ADC sa volá nepretržite, kým nie sú dokončené. Obvykle prvý spustený modul ADC ADC_0 skončí pred druhým zapnutím, takže obsluha prerušenia sa vyvolá iba raz. Obslužný program prerušenia ADC_1 uloží vzorky do vyrovnávacej pamäte údajov.

V hlavnej slučke () storeSampleBuffer () uloží všetky plné vyrovnávacie pamäte na kartu SD a recykluje vyrovnávacie pamäte do frontu prázdnych vyrovnávacích pamätí. Veľké množstvo pamäte RAM, ktoré je k dispozícii na serveri Teensy 3.2, znamená, že je možné prideliť veľký počet vyrovnávacích pamätí, a preto na server storeSampleBuffer () nie je potrebné často volať. Hlavná slučka () tak necháva čas na inú prácu, napríklad na spracovanie príkazov a odosielanie výstupu.

Rozšírenia

Aj keď je tento projekt funkčný ako vysokorýchlostný záznamník údajov, na úplné nosenie je potrebné ho zabaliť a dodať batériový systém a snímače EKG. Okrem toho je potrebné zvážiť niekoľko rozšírení.

  1. Pridajte ovládanie a monitorovanie vzorkovaného tvaru vlny v reálnom čase prostredníctvom programu pfodApp pomocou funkcie vykresľovania programu pfodApp na zobrazenie snímok tvaru vlny
  2. Predĺžte čísla súborov nad 99 pre dlhšie vzorkovacie cykly
  3. Ukážka viac ako 2 vstupov. Pretože má zariadenie Teensy 3.2 dva moduly ADC, môžete kód upraviť a pridať ďalšie vstupy do párov, aby ste maximalizovali vzorkovaciu frekvenciu.
  4. Pridajte sledovanie batérie a sledujte nabitie batérie. Teensy 3.2 používa približne 1100 mAh počas 24 hodín vrátane modulu bluetooth a SD, ale bez modulu senzora
  5. Pridajte obvod napájania dvoma batériami, ktorý umožní výmenu batérií bez prerušenia protokolovania.

Odporúča: