Мазмуну:

Жогорку ылдамдыктагы ЭКГ же башка маалыматтарды жазыңыз, бир айдан ашык үзгүлтүксүз: 6 кадам
Жогорку ылдамдыктагы ЭКГ же башка маалыматтарды жазыңыз, бир айдан ашык үзгүлтүксүз: 6 кадам

Video: Жогорку ылдамдыктагы ЭКГ же башка маалыматтарды жазыңыз, бир айдан ашык үзгүлтүксүз: 6 кадам

Video: Жогорку ылдамдыктагы ЭКГ же башка маалыматтарды жазыңыз, бир айдан ашык үзгүлтүксүз: 6 кадам
Video: Супер жогорку ылдамдыктагы жаңы поезд - BBC Kyrgyz 2024, Июль
Anonim
Жогорку ылдамдыктагы ЭКГ же башка маалыматтарды жазыңыз, бир айдан ашык үзгүлтүксүз
Жогорку ылдамдыктагы ЭКГ же башка маалыматтарды жазыңыз, бир айдан ашык үзгүлтүксүз

Бул долбоор университеттин медициналык изилдөө тобун колдоо үчүн иштелип чыккан, ал аритмияны аныктоо үчүн үзгүлтүксүз 30 күн бою 1000 үлгү/сек ар биринде (2K үлгүлөрү/сек) 2 х ЭКГ сигналын киргизе турган кийүүгө муктаж болгон. Бул жерде көрсөтүлгөн долбоор алыстан башкарууну жана карагайдын мониторингин камтыйт. Алыстан башкаруу сериялык терминалда, компьютерде же уюлдук телефондо көрсөтүлгөн меню аркылуу болот. Бул долбоор ЭКГ өлчөөсүн же пакеттөөнү же акыркы кийүүгө керектүү батареяны камтыбайт.

Бул жогорку ылдамдыктагы/узак мөөнөттүү версиясында Teensy 3.2, Adafruit Micro-SD үзүлүү модулу, сапат 16G SDHC классы 10 SD картасы жана көзөмөлдөө жана мониторинг үчүн Bluetooth байланыш модулу колдонулат. Бул долбоордун анча өнүкпөгөн жана жайыраак UNO/Mega2560 версиясы да бар. Бул проектте көзөмөлдөө жана көзөмөлдөө үчүн Bluetooth байланыш модулу колдонулса да, сиз WiFi же BLE модулдарын колдоно аласыз.

Teensy 3.2ге негизделген бул версия UNO/Mega2560 версиясынан алда канча жогору ылдамдыкка ээ. Бул кодду колдонуу менен Teensy 3.2> ADHнын эки үлгүсүн> 30КГцте 4 үлгү боюнча орточо алганда үлгү алышы жана каттай алат жана жогорудагы 1000 үлгү/сек талабын оңой канааттандырат. Код ар бири 128K болгон 100.bin файлын сактоону колдойт. 30КГцте 29 саат 30 мүнөт камтыйт. 1000 үлгүлөрүндө/сек 37 күндү камтыйт. Код 100дөн ашык файлды иштетүү үчүн оңой эле узартылышы мүмкүн, андыктан иштөө мөөнөтүн узартууга болот. Иштин аягында сизде> 10Gig маалыматтар,.bin, файлдар жана.met файлынын иштешин жана натыйжаларын сүрөттөгөн файлдары болот. Берилген SDtoCSV.jar (баштапкы коду SDtoCSV_src.zip).bin файлдарын компьютериңиздеги.csv файлдарына айландыруу үчүн колдонулушу мүмкүн. Натыйжада алынган маалыматтар> 60Gig. UNO/Mega2560 версиясында Arduino эскизине киргизилген.bin to.csv конверсиясы бар, бирок Teensy версиясы тарабынан катталган маалыматтардын көлөмү эске алынганда, бул конверсиялоонун эффективдүү жолу эмес.

Жабдуулар

Teensy 3.2 PJRC тарабынан

Adafruit MicroSD картасын бузуу тактасы+ же ушуга окшош.

16G SDHC класс 10 MicroSD жакшы сапаттагы карта ж. SanDisk.

5V USB менен камсыздоо

470R каршылыгы бар LED.

2 x 100R каршылыгы (Tx/Rx зым каталарынан улам бузулуудан коргоону камсыз кылат)

Bluetooth Mate Silver ЖЕ Android/pfodApp тарабынан башкарылган Arduino UNO/Mega Starterде сүрөттөлгөн модулдардын бири

1 -кадам: Курулуш

Курулуш
Курулуш

Http://arduino.cc/en/Main/Software'ден Arduino IDE V1.8.9+ жүктөп алып, орнотуңуз. Бул веб -баракчада ар кандай операциялык системалардын шилтемелери жана GettingStartedге шилтеме бар (https://arduino.cc/en/Guide/HomePage).

Teensyduino жүктөп алыңыз жана орнотуңуз (Arduino IDE үчүн Teensy колдоо). Биринчи Колдонуу көрсөтмөлөрүн кунт коюп угуңуз.

Такта катары Teensy 3.2 тандап, BLINK мисал программасынын жүктөлүп жана иштеп жатканын текшериңиз.

Төмөнкү китепканаларды жүктөп алып, орнотуңуз:- millisDelay жана SdFat (Бул тесттер үчүн колдонулган SdFat китепканасынын жергиликтүү сүрөтү бул жерде.) Жана pfodParser.zip (pfodBufferedStream жана pfodNonBlockingInput классы үчүн)

Китепкананын zip файлдарын жүктөп алып, андан кийин Arduino IDE → Эскиз → Китепкананы кошуу →. ZIP китепкана менюсун кошуп, zip файлдарынан китепканаларды орнотуңуз.

Teensy32AnalogLogger.zip файлын Arduino эскиздер каталогуна ачып, Teensy32AnalogLogger.ino менен Teensy 3.2 тактасын программалаңыз (Версия 0.01)

Teensy 3.2, Bluetooth модулун жана SD карта модулун жогоруда көрсөтүлгөндөй тартыңыз (pdf версиясы)

2 -кадам: Программаны иштетүү - Тестирлөө

Адегенде SD картаңызды https://www.sdcard.org/downloads/formatter/ аркылуу форматтаңыз

Журналды баштоо үчүн SD карта бош болушу керек.

Баштапкы тестирлөө үчүн коммуникация модулун туташтыруунун кажети жок, жөн эле Teensy 3.2 + SD модулун (бош карта орнотулган) USB сериялык кабели аркылуу Arduino IDEге туташтырыңыз. Берилгендей Teensy32AnalogLogger.ino эскизи көзөмөлдөө жана мониторинг үчүн USB туташуусун колдонот. Контролдоо жана мониторинг үчүн байланыш түзмөгүн колдонуу үчүн реалдуу маалыматтарды каттоо кадамын караңыз.

COM_SERIALди Serialге коюу үчүн Teensy32AnalogLogger.ino эскизинин үстүн түзөтүп, Teensy USB туташуусуна чыгарыңыз.

#аныктоо COM_SERIAL Serial

Андан кийин эскизди Teensy 3.2ге жүктөңүз

Arduino IDE сериялык мониторун 115200 baud ачыңыз (NL жана CR топтому менен). Бир нече секунддан кийин Teensy 3.2 буйруктардын менюну көрсөтөт

Ver: 0.01 төмөнкү буйруктардын бирин киргизиңиз:? - учурдагы абал жана метадатай - filesl - файлдарды тизмектөө>

? cmd учурдагы орнотуулардын чоо -жайын көрсөтөт. (Бул жөндөөлөрдү өзгөртүү үчүн Teensy32AnalogLogger.ino чокусун караңыз) Cmds NL же CR же экөө менен токтотулушу керек.

0: 00: 00.000 ичинен 720: 00: 00.000

Үлгү казыктары: 16 17 Байт тартиби: Литтл-Эндиан ADC биттери: 10 ADC үлгүсүнүн орточо көрсөткүчтөрү: 4 Үлгү ылдамдыгы: 1000.00 Үлгү аралыгы: 1000uS Бир блок үчүн үлгүлөр: 127 Блокту толтуруу убактысы: 127000uS Файлды толтуруу убактысы: 9:01: 52.000 БАРДЫК файлдарды толтуруу убактысы: 894: 04: 48.000 Максималдуу SD кечигүүсү (файлдын жабылышын/ачылышын камтыйт): 0uS Макс файлдын жабылышынын/ачылышынын кечигүүсүнүн: 0uS Буфердик блоктордун саны: 28 БАРДЫК блоктун буферин толтуруу убактысы: 3556000uS Максималдуу буфердиктердин саны storeSampleBuffers () боюнча чалууда сакталган

Бул учурда учурдагы журналдын иштөө убактысы D16/A2 жана D17/A3 үлгүлөрүн алуу үчүн талап кылынган 720 сааттын (30 күндүн) 0үн түзөт (төмөндө ADC жазууларын тандоо боюнча чектөөлөрдү караңыз) секундасына 1000 жолу. Максималдуу иштөө убактысы 894hrs (37.25days) чейин болушу мүмкүн. Негизги циклди () баардык буферлер толтурулганга чейин жана үлгүлөр жоголуп кете электе, 3.5 сек чейин (БАРДЫК блоктун буферин толтуруу убактысы) ээлей аласыз. Сакталган буферлер ж.б.уңгуроодо жаңыртылып турат.

Бош SD картаны салыңыз, маалыматты сактоо үчүн колдонулган 99 файлды инициализациялоо үчүн 'i' cmd колдонуңуз. Аларды бул жерде алдын ала инициализациялоо, бир файлдан экинчисине өтүү убакытын кечеңдетет жана ылдам тандоого мүмкүндүк берет.

99 файл башталууда

Жаңы файл түзүлүүдө: log00.bin Өткөн убакыт: 368mS Жаңы файл түзүү: log01.bin Өткөн убакыт: 520mS… Жаңы файл түзүлүүдө: log98.bin Өткөн убакыт: 15660mS Жаңы файл түзүү: log99.bin Өткөн убакыт: 15812mS

Сиз андан кийин журналды иштетүүнү баштоо үчүн r cmd колдоно аласыз. Чуркоо каалаган убакта же s cmd аны токтотуу үчүн колдонулат. Сиз ошондой эле колдоно аласызбы? cmd жаңыртылган убакытты жана эсепти алуу үчүн кирип жатканда. Бул жерде s cmd колдонуу менен эрте токтотулган кыска чуркоо.

МААЛЫМАТТАРДЫ КИРГИЗҮҮ ….

Ver: 0.01 төмөнкү буйруктардын бирин киргизиңиз:? - учурдагы статус жана метадайындар - маалыматтарды каттоону токтотуу

МААЛЫМАТТАРДЫ КИРГИЗҮҮ … Текшерүү керекпи? буйрук

Өткөн Иш убактысы: 0: 00: 10.000 720: 00: 00.000 Өткөн Иштөө убактысы: 0: 00: 20.000 720: 00: 00.000…

Киргизүүнү токтотуу жана колдонулбаган файлдарды алып салуу.

… Колдонулбаган файлды алып салуу: log98.bin Колдонулбаган файлды алып салуу: log99.bin

0: 01: 04.976 ичинен 720: 00: 00.000

Үлгү казыктары: 16 17 Байт тартиби: Литтл-Эндиан ADC биттери: 10 ADC үлгүсүнүн орточо көрсөткүчтөрү: 4 Үлгү ылдамдыгы: 1000.00 Үлгү аралыгы: 1000uS Бир блок үчүн үлгүлөр: 127 Блокту толтуруу убактысы: 127000uS Файлды толтуруу убактысы: 9:01: 52.000 БАРДЫК файлдарды толтуруу убактысы: 894: 04: 48.000 Максималдуу SD кечигүүсү (файлды жабуу/ачуу кирет): 204uS Макс файл жабуу/ачык күтүү: 0uS Буфердик блоктордун саны: 28 БАРДЫК блоктун буферин толтуруу убактысы: 3556000uS Максималдуу буфердик саны storeSampleBuffers (): 1 сагынылган таймерлердин жалпы саны: 0 ушул убакка чейин өткөрүлгөн бардык үлгүлөр: 0 жазылган жалпы блоктор: 511 жазылган бардык үлгүлөр: 64832 камтуу: 0: 01: 04.832 учурдагы файл: log00.bin

ls:

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

МААЛЫМАТТАРДЫ ЖҮРГҮЗҮҮ АЯКТАДЫ!

Ver: 0.01 төмөнкү буйруктардын бирин киргизиңиз:? - учурдагы статус жана метадайындар ** r - ADC маалыматтарын жазуу ** жеткиликтүү эмес. Маалыматтар мурунтан эле бар ** i - файлдарды инициализациялоо ** жеткиликтүү эмес. Маалыматтар l - тизме файлдары мурунтан эле бар

МААЛЫМАТ ЭЛЕ КИРГИЗИЛДИ, текшериңиз?

LED Display

D3кө туташкан LED (D2 менен GND байланышын камсыз кылат), эгерде кандайдыр бир үлгү өтпөсө, катуу күйөт жана ката болсо жарк этет. Эскиз каталардан кийин улантууга аракет кылат, бирок ийгиликтүү болбой калышы мүмкүн.

3 -кадам: Реалдуу маалыматтарды каттоо

Узак убакыт бою реалдуу маалыматтарды жазууда, байланыш модулун D0/D1 казыктарына туташтыруу жана алыстан журналды көзөмөлдөө жана көзөмөлдөө ыңгайлуу. Бул жерде Bluetooth Mate Silver модулу демейки жөндөөлөрү менен колдонулган, 115200 baud, аппараттык кол алышуу жок (RTC, CTS), пин код 1234.

Эскертүү: Mate Silver модулуна кубат колдонулганда, ал конфигурация режимине өтөт, кызыл кызыл түстө 60 сек. Бул убакыттын ичинде сиз модулга конфигурациялоо үчүн сериялык туташуу аркылуу $$$ жөнөтө аласыз, бирок модулду туташтыра албайсыз. Кызыл LED жай ирмелгенде, bluetooth модулу туташууларды кабыл алат.

Teensy32AnalogLogger.inoдогу COM_SERIAL аныктамасын аппараттык сериялык (D0/D1) туташууга, Serial1 өзгөртүү

#аныктоо COM_SERIAL Serial1

Компьютер менен жупташкандан кийин, компьютерде жаңы COM порту түзүлдү жана CoolTerm туташуу жана контролдоо жана журналды көзөмөлдөө үчүн колдонулушу мүмкүн. Башка сериялык байланыш модулдарын да колдонсо болот, мисалы, WiFi же BLE, чоо -жайын билүү үчүн Android/pfodApp тарабынан башкарылган Arduino UNO/Mega Starterди караңыз.

Сиз ошондой эле Bluetooth мобилдик терминалы сыяктуу bluetooth терминалы колдонмосун колдонуп, же TCP Telnet Terminal Pro, же Uart to BLE mdoule жана BLE терминалы колдонмосу сыяктуу bluetooth терминалы колдонмосун колдонуп, Android мобилдик телефонуңуздан журналды көзөмөлдөп жана көзөмөлдөй аласыз. nRF UART V2

4 -кадам: ADC Кириштерин Чектөө

ADC Кириштерин Тандоого Чектөөлөр
ADC Кириштерин Тандоого Чектөөлөр

Teensy 3.2дин чакан процессорунда ADC_0 жана ADC_1 деген эки өзүнчө ADC аппараттык модулдары бар, андыктан ал бир эле учурда эки киргизүүнү тандап алат. Ал ошондой эле бир нече ADC үлгүлөрүн алган жана жыйынтыкты буруудан мурун аларды орточо алган аппараттык орто эсепке ээ.

Киргизүүлөрдү ADC_0, ADC_1 менен туташтырууга чектөөлөр бар. Teensy3_1_AnalogCard-p.webp

Кыскача айтканда:-GND ADC_0ге таандык +Вольттор A0дон A9га чейин окуй алат, A10, A11, A12, A14 ADC_1 A2, A3, A10, A13, A15тен A20га чейин окуй алат, эгер сиз ADC деп эсептеген пинти тандасаңыз. окуй албайт, ал 0 кайтарат (ар дайым)

Бул долбоордо A2, A3 колдонулат, алардын ар бирине ADC_0 же ADC_1 кире алышат.

5 -кадам:.bin файлдарын.csv файлдарына айландыруу

Teensy32AnalogLogger.ino үлгүлөрдү logxx.bin файлдарында бинардык түрдө сактайт, башкача айтканда log00.bin log99.binге сактайт. Teensy32AnalogLogger.ino ошондой эле чуркоо жөнүндө мета маалыматтардын log.met файлын сактайт.

Сиз андан ары иштетүү үчүн.bin файлдарын.csvге айландыруу үчүн SDtoCSV.jar (SDtoCSV_src.zip коду) колдоно аласыз. Файлдарды кеминде 70Gig боштук менен SD картадан компьютериңиздин катуу дискине көчүрүңүз жана ошол эле каталогго SDtoCSV.jar көчүрүңүз. Ошол каталогдо буйрук терезесин ачыңыз жана иштетиңиз

java -jar SDtoCSV.jar журналы

Эгерде сиздин компьютерде Java орнотуу жок болсо, аны www.java.com сайтынан орнотуңуз

SDtoCSV log.met файлын иштетет, андан кийин каталогдогу logxx.bin файлдарынын ар бирин иштетет жана ар бир.bin үчүн.csv файлын чыгарат.. Csv файлында үлгү иретинин номери, андан кийин эки окуу бар.

Бул жерде 30303 жолу/сек үлгүлүү 2 ADC окуу үчүн үлгү консолунун чыгышы көрсөтүлөт, output.txt. Бул өткөрүп жиберилген үлгүлөр кантип билдирилгенин көрсөтөт. (Акыркы эскиздеги буферлердин санын эки эсе көбөйтүү, бул өткөрүлүп берилген үлгүлөрдү аныктады)

CS_ конверсиясына SD_Logging. SDtoCSV.log прогресси жана каталары үчүн текшериңиз. Log00 иштетилди 256000 блок иштетилди log01 иштетилди 256000 блок… Иштөө журналы25 Иштетилген 256000 блок Иштетүү журналы26 Иштетилгени 256000 блогу Иштетүү журналы27 Иштетилгени 256000 блогу Жетпей калган үлгүлөрү: 2715 Иштетүү журналы28 256000 блок иштетилген… Иштетүү журналы29 иштетилген 256000 блок… Иштетүү журналы47 256000 блок иштетилди Иштөө журналы48 Иштетилген 35935 блок --- Иштетилди

Толук журнал файлы, SDtoCSV.log, SDtoCSVдин ар бир чуркоосуна кошулат. Бул мета маалыматтын чыгышын жана ар кандай ката билдирүүлөрдү камтыйт. Бул жерде сан: 254 - бул блокто сакталган маалыматтардын саны, башкача айтканда 127 үлгү х 2 жарнак боюнча блоктор. MissSamples - бул.csv чыгарылышындагы өткөрүлүп берилген б.а. жуптардын саны.

=== CSV конверсиясына SD_Logging үчүн журналы Файл Июль 13 13:19:51 AEST 2019 Консолдогу прогресстерди көрүү үчүн java -jar SDtoCSV.jar Базалык Файлдын Аты 'журналынын' метадайындарынын Версиясы: 0 (Little Endian) sampleInterval uS: 33 adcBits: 10 adcAvgs: 4 pinCount: 2 Pins: 16, 17 samplePerBlock: 127 noBufferBlocks: 28 Duration mS: 51649820 run Run Time mS: 106216704 maxBuffersUsed: 32 Эскертүү: Буферлердин саны ашат (28). Кээ бир үлгүлөр жок болушу мүмкүн. maxLatency uS: 221476 Эскертүү: Буфердик блоктор (117348uS) тарабынан берилген убакыттан ашып кетти. Кээ бир үлгүлөр жок болот. maxFileOpenTime uS: 20998 missTimers: 0 missSamples Total: 2715 totalBlocksЖазылган: 12323935 totalSamplesWritten: 1565139665 Processing log00.bin 256000 блокту иштетүү log01.bin иштетилген 256000 блок… Иштетүү log26.bin 256000 блок иштетилди log27.bin иштетилүүдө !!! Блок: 57696 саны: 254 сагындым Үлгүлөрү: 2339 !!! Блок: 57697 саны: 254 жетпей калган Үлгүлөр: 376 256000 блоктору иштетилген

Иштетүү log28.bin иштетилген 256000 блок

… Иштетүү log47.bin иштетилди 256000 блок иштетилди log48.bin иштетилди 35935 блок --- иштетилди

Log00.csv чыгаруу файлынын үлгүсү болуп саналат

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

Үлгү эсептегич файлдан файлга көбөйөт, андыктан аны убакыт мөөрү катары колдонсо болот. Эгерде үлгүлөр жок болсо, анда эсептегич кийинки сызыкты чыгарардан мурун өткөрүлгөн эсепке көбөйтүлөт, ошондо эсептегич/убакыт штампы жазылган үлгүлөр үчүн так бойдон калат.

6 -кадам: Код жана Комментарийлер боюнча комментарийлер

Teensy32AnalogLogger - бул SdFat Arduino китепканасындагы Билл Греймандын AnalogBinLogger мисалынын өтө өзгөртүлгөн версиясы. Бул жерде китепкана Teensy 3.2де иштөө үчүн кайра жазылган.

Teensy32AnalogLogger үлгү интервалын коюу үчүн timer0 колдонот. Timer0 үчүн үзгүлтүк иштетүүчү эки ADC конверсиясын баштайт. Экинчи ADC модулунун үзгүлтүккө учуроочу иштетүүчүсү экөө тең бүткүчө дайыма чакырылып турат, адатта ADC_0 баштаган биринчи ADC модулу экинчисине чейин бүтөт, андыктан үзгүлтүк иштетүүчү бир гана жолу чакырылат. ADC_1 үзгүлтүк иштетүүчү үлгүлөрдү маалымат буферине сактайт.

Негизги циклда (), storeSampleBuffer () SD картага толук буферлерди сактайт жана буферлерди бош буфер кезегине кайра иштетет. Teensy 3.2де жеткиликтүү болгон RAMдин көп өлчөмү көп сандагы буферлерди бөлүүгө болот дегенди билдирет, ошондуктан storeSampleBuffer () тез -тез чалып туруунун кажети жок. Бул негизги циклге () процесстин буйруктары жана чыгарууну жөнөтүү сыяктуу башка иштерди аткарууга убакыт берет.

Кеңейтүүлөр

Бул долбоор жогорку ылдамдыктагы маалымат жазгыч катары функционалдуу болгону менен, аны толук тагынуу үчүн дагы эле пакеттеп, батарея системасын жана ЭКГ сенсорлорун берүү керек. Мындан тышкары, кээ бир кеңейтүүлөрдү эске алуу керек.

  1. Толкун формасынын сүрөттөрүн көрсөтүү үчүн pfodAppтын графикалык функциясын колдонуу менен pfodApp аркылуу тандалган толкун формасын реалдуу убакытта көзөмөлдөөнү жана мониторингди кошуңуз.
  2. Узунураак тандоо үчүн файл номерлерин 99дан бери узартыңыз
  3. Үлгү 2дөн ашык киргизүү. Teensy 3.2де кош ADC модулдары болгондуктан, үлгү ылдамдыгын жогорулатуу үчүн кодду эки -экиден кошуу үчүн өзгөртө аласыз.
  4. Батарейканын зарядын көзөмөлдөө үчүн батарея мониторингин кошуңуз. Teensy 3.2 24 саат бою болжол менен 1100 мАчты колдонот, анын ичинде Bluetooth жана SD модулу бар, бирок сенсор модулун эске албаганда
  5. Батареяны алмаштырууну кошпогондо, батарейканы алмаштырууну токтотуу үчүн кош батарея менен камсыз кылуу схемасын кошуңуз.

Сунушталууда: