Daftar Isi:
- Perlengkapan
- Langkah 1: Konstruksi
- Langkah 2: Menjalankan Program -- Pengujian
- Langkah 3: Mencatat Data Nyata
- Langkah 4: Pembatasan Pilihan Input ADC
- Langkah 5: Mengonversi File.bin ke File.csv
- Langkah 6: Komentar pada Kode dan Ekstensi
Video: Catat EKG Berkecepatan Tinggi atau Data Lainnya, Terus Menerus Selama Lebih dari Sebulan: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Proyek ini dikembangkan untuk mendukung tim peneliti medis universitas, yang membutuhkan perangkat yang dapat merekam 2 x sinyal EKG pada 1000 sampel/dtk masing-masing (total 2K sampel/dtk) selama 30 hari, untuk mendeteksi aritmia. Proyek yang disajikan di sini mencakup kendali jarak jauh dan pemantauan penebangan. Remote control adalah melalui menu yang disajikan pada terminal serial, baik di komputer atau ponsel. Proyek ini tidak mencakup pengukuran EKG atau pengemasan atau baterai yang diperlukan untuk perangkat yang dapat dikenakan akhir.
Versi kecepatan tinggi/durasi panjang ini menggunakan Teensy 3.2, modul breakout Micro-SD Adafruit, kartu SD 16G SDHC kelas 10 berkualitas untuk mencatat data dan modul komunikasi Bluetooth untuk kontrol dan pemantauan. Versi UNO/Mega2560 yang kurang berkembang dan lebih lambat dari proyek ini juga tersedia. Meskipun proyek ini menggunakan modul komunikasi Bluetooth untuk mengontrol dan memantau pencatatan, Anda juga dapat menggunakan modul WiFi atau BLE.
Versi ini, berdasarkan Teensy 3.2, mampu melakukan sampling rate yang jauh lebih tinggi daripada versi UNO/Mega2560. Dengan menggunakan kode ini, Teensy 3.2 dapat mengambil sampel dan mencatat dua sampel ADC pada >30Khz dengan rata-rata perangkat keras lebih dari 4 sampel dan dengan mudah memenuhi persyaratan 1000 sampel/detik di atas. Kode mendukung penyimpanan 100 file.bin masing-masing 128K. Pada 30Khz yang mencakup 29 jam 30 menit. Pada 1000 sampel/detik itu mencakup 37 hari. Kode dapat dengan mudah diperluas untuk menangani lebih dari 100 file, sehingga memperpanjang durasi proses. Di akhir proses, Anda akan memiliki >10Gig data,.bin, file, dan file.met dari meta data yang menjelaskan proses dan hasil. SDtoCSV.jar (kode sumber SDtoCSV_src.zip) yang disediakan dapat digunakan untuk mengonversi file.bin ke file.csv di komputer Anda untuk diproses lebih lanjut. Data yang dihasilkan adalah >60Gig. Versi UNO/Mega2560 memiliki konversi.bin ke.csv yang disertakan dalam sketsa Arduino, tetapi mengingat volume data yang dicatat oleh versi Teensy, itu bukan cara yang efisien untuk melakukan konversi.
Perlengkapan
Teensy 3.2 oleh PJRC
Papan breakout kartu MicroSD Adafruit+ atau sejenisnya.
Kartu MicroSD 16G SDHC kelas 10 berkualitas baik mis. SanDisk.
Pasokan USB 5V
Sebuah led dengan resistor 470R secara seri.
2 x 100R resistor (memberikan perlindungan dari kerusakan karena kesalahan kabel Tx/Rx)
Bluetooth Mate Silver ATAU salah satu modul yang dijelaskan pada Arduino UNO/Mega Starter, dikendalikan oleh Android/pfodApp
Langkah 1: Konstruksi
Unduh dan instal Arduino IDE V1.8.9+ dari https://arduino.cc/en/Main/Software. Halaman web tersebut memiliki tautan untuk berbagai sistem operasi dan tautan ke Memulai (https://arduino.cc/en/Guide/HomePage).
Unduh dan instal Teensyduino (Dukungan Teensy untuk Arduino IDE). PERHATIKAN dengan seksama petunjuk Penggunaan Pertama.
Pilih Teensy 3.2 sebagai papan dan periksa apakah program contoh BLINK dimuat dan berjalan.
Unduh dan instal pustaka berikut:- millisDelay dan SdFat (Snapshot lokal pustaka SdFat yang digunakan untuk pengujian ini ada di sini.) dan pfodParser.zip (untuk kelas pfodBufferedStream dan pfodNonBlockingInput)
Unduh file zip perpustakaan dan kemudian gunakan Arduino IDE → Sketsa → Sertakan Perpustakaan → Tambahkan menu perpustakaan. ZIP untuk menginstal perpustakaan dari file zip.
Buka zip file Teensy32AnalogLogger.zip ke direktori sketsa Arduino Anda dan program papan Teensy 3.2 dengan Teensy32AnalogLogger.ino (Versi 0.01)
Hubungkan Teensy 3.2, modul Bluetooth dan modul kartu SD seperti yang ditunjukkan di atas (versi pdf)
Langkah 2: Menjalankan Program -- Pengujian
Pertama format kartu SD Anda menggunakan
Kartu SD harus kosong untuk mulai masuk.
Untuk pengujian awal tidak perlu menghubungkan modul Communications, cukup sambungkan modul Teensy 3.2+ SD (dengan kartu kosong terpasang) ke Arduino IDE melalui kabel serial USB. Seperti yang disediakan, sketsa Teensy32AnalogLogger.ino menggunakan koneksi USB untuk kontrol dan pemantauan. Lihat Logging Real Data langkah di bawah ini untuk menggunakan perangkat komunikasi untuk kontrol dan pemantauan.
Edit bagian atas sketsa Teensy32AnalogLogger.ino untuk mengatur COM_SERIAL ke Serial, untuk menghasilkan koneksi USB Teensy.
#tentukan Serial COM_SERIAL
Kemudian unggah sketsa ke Teensy 3.2
Buka Serial Monitor Arduino IDE pada 115200 baud (dengan set NL & CR). Setelah beberapa detik, Teensy 3.2 akan menampilkan menu perintah
Ver:0.01 masukkan salah satu perintah berikut:? - status dan metadatai saat ini - inisialisasi filel - daftar file>
NS ? cmd menampilkan detail pengaturan saat ini. (Lihat bagian atas Teensy32AnalogLogger.ino untuk mengubah pengaturan ini) Cmds harus diakhiri dengan NL atau CR atau keduanya.
0:00:00.000 dari 720:00:00.000
Pin sampel: 16 17 Urutan byte: Bit ADC Little-Endian: 10 rata-rata sampel ADC lebih dari: 4 Kecepatan Sampel: 1000.00 Interval sampel: 1000uS Sampel per blok: 127 Waktu untuk mengisi blok: 127000uS Waktu untuk mengisi file: 9:01: 52.000 Waktu untuk mengisi SEMUA file: 894:04:48.000 Latensi maksimum SD (termasuk tutup/buka file): 0uS Latensi tutup/buka file maksimum: 0uS Jumlah blok buffer: 28 Waktu untuk mengisi SEMUA buffer blok: 3556000uS Jumlah maksimum buffer disimpan dalam panggilan ke storeSampleBuffers(): 0 Total Timer yang Terlewatkan: 0 Total Sampel yang Terlewatkan sejauh ini: 0 Total Blok yang ditulis: 0 Total Sampel yang ditulis: 0 meliputi: 0:00:00.000 File Saat Ini:
Dalam hal ini runtime logging saat ini adalah 0 dari 720 jam (30 hari) yang diminta, pengambilan sampel D16/A2 dan D17/A3 (lihat di bawah untuk Pembatasan Pilihan Input ADC di bawah) 1000 kali per detik. Waktu proses maksimum dapat mencapai 894 jam (37,25 hari). Loop utama() dapat ditempati hingga 3,5 detik (Waktu untuk mengisi SEMUA buffer blok) sebelum semua buffer yang tersedia terisi dan sampel mulai hilang. Buffer yang disimpan dll diperbarui saat proses berjalan.
Masukkan kartu SD kosong, gunakan cmd 'i' untuk menginisialisasi 99 file yang digunakan untuk menyimpan data. Pra-inisialisasi mereka di sini mengurangi waktu tunda saat beralih dari satu file ke file berikutnya dan memungkinkan pengambilan sampel yang lebih cepat.
Inisialisasi 99 file
Membuat file baru: log00.bin Waktu berlalu: 368mS Membuat file baru: log01.bin Waktu berlalu: 520mS… Membuat file baru: log98.bin Waktu berlalu: 15660mS Membuat file baru: log99.bin Waktu berlalu: 15812mS
Anda kemudian dapat menggunakan r cmd untuk memulai proses logging. Jalankan akan untuk waktu yang diminta atau sampai s cmd digunakan untuk menghentikannya. Anda juga dapat menggunakan ? cmd saat masuk untuk mendapatkan waktu dan jumlah yang diperbarui. Berikut adalah jangka pendek yang dihentikan lebih awal menggunakan s cmd.
PENDAFTARAN DATA…..
Ver:0.01 masukkan salah satu perintah berikut: ? - status dan metadata saat ini - hentikan pencatatan data
PENDAFTARAN DATA… Periksa dengan ? memerintah
Waktu berjalan yang telah berlalu: 0:00:10.000 dari 720:00:00.000 Waktu berjalan yang telah berlalu: 0:00:20.000 dari 720:00:00.000…
Menghentikan Logging dan menghapus file yang tidak digunakan.
… Menghapus file yang tidak digunakan: log98.bin Menghapus file yang tidak digunakan: log99.bin
0:01:04,976 dari 720:00:00.000
Pin sampel: 16 17 Urutan byte: Bit ADC Little-Endian: 10 rata-rata sampel ADC lebih dari: 4 Kecepatan Sampel: 1000.00 Interval sampel: 1000uS Sampel per blok: 127 Waktu untuk mengisi blok: 127000uS Waktu untuk mengisi file: 9:01: 52.000 Waktu untuk mengisi SEMUA file: 894:04:48.000 Latensi maksimum SD (termasuk tutup/buka file): 204uS Latensi tutup/buka file maksimum: 0uS Jumlah blok buffer: 28 Waktu untuk mengisi SEMUA buffer blok: 3556000uS Jumlah maksimum buffer disimpan dalam panggilan ke storeSampleBuffers(): 1 Total Timer yang Terlewatkan: 0 Total Sampel yang Terlewatkan sejauh ini: 0 Total Blok yang ditulis: 511 Total Sampel yang ditulis: 64832 meliputi: 0:01:04,832 File Saat Ini: log00.bin
ls:
2000-01-01 01:00:00 261632 log00.bin 2000-01-01 01:00:00 240 log.met
PENDAFTARAN DATA SELESAI!
Ver:0.01 masukkan salah satu perintah berikut: ? - status dan metadata saat ini ** r - merekam data ADC ** tidak tersedia. Data sudah ada ** i - inisialisasi file ** tidak tersedia. Data sudah ada l - daftar file
DATA SUDAH MASUK, periksa dengan ?
Display LED
LED yang terhubung ke D3 (dengan D2 menyediakan koneksi GND) akan menyala solid jika ada sampel yang terlewat dan akan berkedip jika ada kesalahan. Sketsa mencoba untuk melanjutkan setelah kesalahan tetapi mungkin tidak berhasil melakukannya.
Langkah 3: Mencatat Data Nyata
Saat mencatat data nyata dalam jangka waktu yang lama, akan lebih mudah untuk menghubungkan modul komunikasi ke pin D0/D1 dan mengontrol serta memantau pencatatan dari jarak jauh. Di sini modul Bluetooth Mate Silver digunakan dengan pengaturan default, 115200 baud, tanpa handshaking perangkat keras (RTC, CTS), kode pin 1234.
Catatan: Saat daya diterapkan ke modul Mate Silver, ia masuk ke mode konfigurasi, led merah cepat berkedip, selama 60 detik. Selama waktu ini Anda dapat mengirim $$$ melalui koneksi serial ke modul untuk mengonfigurasinya tetapi Anda tidak dapat menghubungkan modul tersebut. Setelah led merah berkedip lambat, modul bluetooth akan menerima koneksi.
Ubah definisi COM_SERIAL di Teensy32AnalogLogger.ino ke koneksi serial perangkat keras (D0/D1), Serial1
#define COM_SERIAL Serial1
Setelah memasangkan dengan komputer, port COM baru dibuat di komputer dan CoolTerm dapat digunakan untuk menghubungkan dan mengontrol serta memantau pencatatan. Modul komunikasi lain yang terhubung secara serial juga dapat digunakan, seperti WiFi atau BLE, lihat Arduino UNO/Mega Starter, dikendalikan oleh Android/pfodApp untuk detailnya.
Anda juga dapat mengontrol dan memantau pencatatan dari ponsel Android Anda menggunakan aplikasi terminal bluetooth seperti aplikasi Terminal Bluetooth, atau menggunakan aplikasi terminal WiFi dan TCP seperti TCP Telnet Terminal Pro, atau mdoule Uart ke BLE dan aplikasi terminal BLE seperti nRF UART V2
Langkah 4: Pembatasan Pilihan Input ADC
Teensy 3.2 memiliki dua modul perangkat keras ADC terpisah, ADC_0 dan ADC_1, dalam mikroprosesornya sehingga dapat mengambil sampel dua input pada saat yang bersamaan. Ini juga memiliki rata-rata perangkat keras bawaan yang mengambil beberapa sampel ADC dan meratakannya sebelum mengubah hasilnya.
Ada batasan input mana yang dapat dihubungkan ke ADC_0, ADC_1. Gambar Teensy3_1_AnalogCard-p.webp
Singkatnya:-Untuk Pembacaan Berakhir Tunggal yaitu +Volt yang dirujuk ke GND ADC_0 dapat membaca A0 hingga A9, A10, A11, A12, A14 ADC_1 dapat membaca A2, A3, A10, A13, A15 hingga A20 Jika Anda memilih pin yang ADC tidak bisa membacanya akan mengembalikan 0 (selalu)
Proyek ini menggunakan A2, A3 yang masing-masing dapat diakses oleh ADC_0 atau ADC_1.
Langkah 5: Mengonversi File.bin ke File.csv
Teensy32AnalogLogger.ino menyimpan sampel sebagai biner dalam file logxx.bin yaitu log00.bin ke log99.bin. Teensy32AnalogLogger.ino juga menyimpan file log.met tentang meta data yang dijalankan.
Anda dapat menggunakan SDtoCSV.jar (kode sumber SDtoCSV_src.zip) untuk mengonversi file.bin ke.csv untuk diproses lebih lanjut. Salin file dari kartu SD ke hard disk komputer Anda dengan setidaknya 70Gig ruang kosong dan salin SDtoCSV.jar ke direktori yang sama. Buka jendela perintah di direktori itu dan jalankan
java -jar SDtoCSV.jar log
Jika komputer Anda tidak menginstal Java, instal dari www.java.com
SDtoCSV akan memproses file log.met dan kemudian setiap file logxx.bin yang tersedia di direktori dan mengeluarkan file.csv untuk setiap.bin. File.csv memiliki nomor urut sampel yang diikuti oleh dua bacaan.
Contoh keluaran konsol untuk pembacaan 2 adc yang diambil sampelnya 30303 kali/dtk ditampilkan di sini, output.txt. Ini menggambarkan bagaimana sampel yang terlewat dilaporkan. (Menggandakan jumlah buffer dalam sketsa akhir memperbaiki sampel yang terlewat ini)
SD_Logging ke konversi CSV. Periksa SDtoCSV.log untuk kemajuan dan pesan kesalahan. Memproses log00 Diproses 256000 blok Memproses log01 Diproses 256000 blok… Memproses log25 Diproses 256000 blok Memproses log26 Diproses 256000 blok Memproses log27 Diproses 256000 blok Sampel yang terlewat: 2715 Memproses log28 Diproses 256000 blok… Memproses log29 Memproses 256000 blok… Memproses log47 Diproses 256000 blok Memproses log48 Diproses 35935 blok --- Selesai Diproses
File log yang lebih lengkap, SDtoCSV.log, ditambahkan ke setiap menjalankan SDtoCSV. Ini termasuk output meta data dan pesan kesalahan apa pun. Di sini count:254 adalah jumlah data yang disimpan di blok itu yaitu 127 sampel x 2 pembacaan adc per blok. MissedSamples adalah jumlah pasangan pembacaan yang terlewat, yaitu baris dalam output.csv.
=== File Log untuk konversi SD_Logging ke CSV Sab 13 Jul 13:19:51 AEST 2019 Untuk melihat pesan kemajuan di Konsol, gunakan java -jar SDtoCSV.jar Nama File Dasar 'log' Versi Metadata: 0 (Little Endian) sampleInterval uS: 33 adcBits:10 adcAvgs:4 pinCount:2 Pins: 16, 17 sampelPerBlock:127 noBufferBlocks:28 durasi mS:51649820 diminta runTime mS:106216704 maxBuffersUsed:32 Peringatan: Melebihi jumlah buffer yang tersedia (28). Beberapa sampel mungkin hilang. maxLatency uS:221476 Peringatan: Melebihi waktu yang disediakan oleh blok penyangga (117348uS). Beberapa sampel akan hilang. maxFileOpenTime uS:20998 missingTimer:0 missSamplesTotal:2715 totalBlocksDitulis: 12323935 totalSamplesWritten:1565139665 Memproses log00.bin Diproses 256000 blok Memproses log01.bin Diproses 256000 blok… Memproses log26.bin Diproses 256000 blok Memproses log27.bin !!! Blok:57696 hitungan:254 tidak terjawabSampel:2339 !!! Blok:57697 hitungan:254 tidak terjawabSampel:376 Diproses 256000 blok --- Total Sampel yang Terlewatkan: 2715
Memproses log28.bin Memproses 256000 blok
… Memproses log47.bin Diproses 256000 blok Memproses log48.bin Diproses 35935 blok --- Selesai Diproses
Contoh file keluaran log00.csv adalah
SampleCounter (per 33uS), Pin 16, Pin 170, 248, 205 1, 273, 195 2, 228, 337 3, 360, 302 4, 355, 369 5, 220, 281…
Penghitung sampel meningkat dari file ke file sehingga dapat digunakan sebagai cap waktu. Jika ada sampel yang hilang maka penghitung sampel ditambah dengan hitungan yang terlewat sebelum mengeluarkan baris berikutnya sehingga penghitung/cap waktu tetap akurat untuk sampel yang direkam.
Langkah 6: Komentar pada Kode dan Ekstensi
Teensy32AnalogLogger adalah versi yang sangat dimodifikasi dari contoh AnalogBinLogger Bill Greiman di perpustakaan SdFat Arduino-nya. Di sini perpustakaan telah ditulis ulang untuk berjalan di Teensy 3.2.
Teensy32AnalogLogger menggunakan timer0 untuk mengatur interval sampel. Handler interupsi untuk timer0 memulai dua konversi ADC. Handler interupsi untuk modul ADC kedua terus dipanggil sampai keduanya selesai, biasanya modul ADC pertama yang dimulai ADC_0 akan selesai sebelum yang kedua on sehingga handler interupsi hanya dipanggil sekali. Penangan interupsi ADC_1 menyimpan sampel ke buffer data.
Di loop utama(), storeSampleBuffer() menyimpan semua buffer penuh ke kartu SD dan mendaur ulang buffer ke antrian buffer kosong. Jumlah besar RAM yang tersedia pada Teensy 3.2 berarti sejumlah besar buffer dapat dialokasikan sehingga storeSampleBuffer() tidak perlu sering dipanggil. Ini menyisakan waktu untuk loop utama() untuk melakukan pekerjaan lain, seperti perintah proses dan mengirim output.
Ekstensi
Meskipun proyek ini berfungsi sebagai pencatat data berkecepatan tinggi, untuk perangkat yang dapat dikenakan secara lengkap, proyek ini masih perlu dikemas dan sistem baterai serta sensor EKG disediakan. Selain itu ada beberapa ekstensi yang harus dipertimbangkan.
- Tambahkan kontrol waktu nyata dan pemantauan bentuk gelombang sampel melalui pfodApp menggunakan fungsi plot pfodApp untuk menampilkan snapshot bentuk gelombang
- Perpanjang nomor file melewati 99 untuk pengambilan sampel yang lebih lama
- Sampel lebih dari 2 input. Karena Teensy 3.2 memiliki modul ADC ganda, Anda dapat memodifikasi kode untuk menambahkan input tambahan berpasangan untuk memaksimalkan laju sampel.
- Tambahkan pemantauan baterai untuk melacak pengisian baterai. Teensy 3.2 menggunakan sekitar 1100mAhrs selama 24 jam, termasuk modul bluetooth dan SD, tetapi tidak termasuk modul sensor
- Tambahkan sirkuit suplai baterai ganda untuk memungkinkan penggantian baterai tanpa mengganggu pencatatan.
Direkomendasikan:
Motor Surya Berputar Terus Menerus: 5 Langkah (dengan Gambar)
Motor Tenaga Surya Berputar Terus Menerus: Siapa yang tidak bermimpi membuat alat yang terus bergerak? Lari tanpa henti, siang dan malam, musim panas dan musim dingin, langit mendung, dan kondisi cahaya di dalam ruangan. Motor pulsa ini berjalan untuk waktu yang sangat lama, mungkin lebih lama dari umur saya.Light on t
Bola Berputar Terus Menerus dalam Toples Kaca: 4 Langkah (dengan Gambar)
Bola Berputar Terus Menerus dalam Toples Kaca: Tempat terbaik untuk bola berputar, yang digerakkan oleh energi matahari, adalah dalam toples kaca. Benda bergerak adalah mainan yang ideal untuk kucing atau hewan peliharaan lainnya dan toples memberi perlindungan, atau tidak? Proyek ini terlihat sederhana tetapi saya butuh beberapa minggu untuk menemukan
Menanam Lebih Banyak Selada di Ruang yang Lebih Sedikit Atau Menanam Selada di Luar Angkasa, (Lebih atau Kurang).: 10 Langkah
Menumbuhkan Lebih Banyak Selada di Ruang yang Lebih Sedikit Atau… Menanam Selada di Luar Angkasa, (Lebih atau Kurang).: Ini adalah pengajuan profesional untuk Kontes Pembuat Tumbuh Melampaui Bumi, yang dikirimkan melalui Instructables. Saya sangat bersemangat untuk merancang produksi tanaman ruang angkasa dan memposting Instruksi pertama saya. Untuk memulai, kontes meminta kami untuk
Bagaimana Cara Membuat Kipas Angin Berkecepatan Tinggi Dengan Motor DC?: 6 Langkah
Cara Membuat Kipas Angin Berkecepatan Tinggi Dengan Motor DC
Cara Memodifikasi Motor Servo Untuk Rotasi Terus Menerus (Robot One Motor Walker): 8 Langkah (Dengan Gambar)
Cara Memodifikasi Motor Servo untuk Rotasi Berkelanjutan (Robot Satu Motor Walker): Instruksi ini adalah bagian dari satu motor walker.https://www.instructables.com/id/How-to-build-the-one-motor- walker/Ada triliunan tutorial seperti ini, saya tahu :-)Mereka mengambil di sekolah saat istirahat makan siang dengan kamera Sony Mavica (gagal