Оглавление:
- Шаг 1: материалы
- Шаг 2: Инструменты
- Шаг 3: 3D-печать
- Шаг 4: построить схему
- Шаг 5: Подключение ЖК-дисплея
- Шаг 6: Подключение микрофона / усилителя
- Шаг 7: Подключение переключателя мгновенного действия
- Шаг 8: Подключение потенциометра
- Шаг 9: Подключение разъема для наушников
- Шаг 10: Выход микрофона / усилителя
- Шаг 11: выход микрофона / усилителя (продолжение)
- Шаг 12: Компоненты в корпусе
- Шаг 13: пайка в корпусе
- Шаг 14: +5 В, удлиненные провода GND
- Шаг 15: пропустите длинные провода через отверстие в корпусе
- Шаг 16: термоусадка
- Шаг 17: опломбируйте корпус
- Шаг 18: подключитесь к Arduino
- Шаг 19: IDE / библиотеки Arduino
- Шаг 20: эскиз Arduino
- Шаг 21: Проверьте это
- Шаг 22: Дальнейшая работа
Видео: Спектральный стетоскоп с быстрым преобразованием Хартли: 22 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
Из этого руководства вы узнаете, как создать спектральный стетоскоп с помощью быстрого преобразования Хартли. Это можно использовать для визуализации звуков сердца и легких.
Шаг 1: материалы
1,8-дюймовый ЖК-экран (7,50 долларов на Amazon)
Arduino Uno или эквивалент (7 долларов США на Gearbest)
Электретный усилитель (6,95 доллара на Adafruit)
Конденсатор 100 мкФ (0,79 $)
Проволока и перемычки (4 доллара США)
Стереоразъем 3,5 мм (1,50 доллара США)
Потенциометр 10 кОм (2,00 доллара США)
Мгновенный переключатель (1,50 доллара США)
Шаг 2: Инструменты
Паяльник
Пистолет для горячего клея
3D-принтер… или друг с 3D-принтером (можно сделать и из картона)
Кусачки
Макетная плата
Шаг 3: 3D-печать
Первый - это 3D-печать файлов.stl, прикрепленных к этому шагу. Я распечатал оба файла, используя следующие материалы / настройки:
Материал: PLA
Высота слоя: 0,1 мм
Толщина стенки / верха / низа: 0,8 мм
Температура печати: 200⁰C
Температура кровати: 60⁰C
Поддержка включена @ 10%
Шаг 4: построить схему
Используя компоненты из раздела материалов, постройте схему. Я всегда сначала собираю схему на макетной плате, чтобы убедиться, что она работает правильно, прежде чем прикасаться к паяльнику.
Шаг 5: Подключение ЖК-дисплея
Используя рисунок, прикрепленный к этому шагу, припаяйте провода к семи из восьми контактов на ЖК-экране. Эти провода должны быть около 3 футов в длину, за исключением заземления и контактов + 5 В (они должны быть только 2-3 дюйма).
Шаг 6: Подключение микрофона / усилителя
Используя рисунок, прикрепленный к этому шагу, припаяйте три провода к контактам + 5V, Ground и Out на микрофоне / усилителе Adafruit. Они должны быть всего около 2-3 дюймов в длину.
Шаг 7: Подключение переключателя мгновенного действия
Подсоедините по одному проводу длиной 2–3 дюйма к каждому из двух выступов переключателя без фиксации.
Шаг 8: Подключение потенциометра
Используя рисунок из шага 6, припаяйте три провода длиной около 2-3 дюймов к трем ушкам потенциометра.
Шаг 9: Подключение разъема для наушников
Припаяйте три провода к кольцу, наконечнику и наконечникам разъема для наушников. Я использовал разъем от метронома, который уже был подключен. Если вы не знаете, что такое кольцо, наконечник и наконечники гильзы, просто погуглите, там есть много хороших изображений о подключении стереоразъемов.
Шаг 10: Выход микрофона / усилителя
Припаяв провода к микрофону / усилителю, потенциометру и разъему для наушников, припаяйте один провод длиной около трех футов к выходному проводу микрофонного усилителя. Этот провод позже будет подключен к выводу A0 Arduino.
Шаг 11: выход микрофона / усилителя (продолжение)
Припаяйте второй провод к проводу «out» микрофона / усилителя. Этот провод нужно припаять к конденсатору 100 мкФ. Если вы используете электролитический конденсатор, убедитесь, что положительная сторона подключена к этому проводу.
Шаг 12: Компоненты в корпусе
После того, как все провода припаяны к компонентам, поместите компоненты в соответствующие места, как показано на рисунках, приложенных к этому шагу. Я использовал горячий клей, чтобы закрепить разъем для микрофона и наушников на месте.
Шаг 13: пайка в корпусе
После того, как все компоненты будут закреплены в корпусе, спаяйте все заземляющие провода вместе. Один должен быть от ЖК-дисплея, один от микрофона / усилителя и один от гнезда для наушников. Также спаяйте вместе провода + 5V и один провод от выключателя без фиксации. Опять же, должен быть один от ЖК-дисплея, один от микрофона / усилителя и один на переключателе мгновенного действия.
Шаг 14: +5 В, удлиненные провода GND
Теперь отрежьте два куска проволоки длиной около 3 футов. Припаяйте один к группе проводов заземления, а другой припаяйте к разомкнутому проводу на переключателе без фиксации.
Шаг 15: пропустите длинные провода через отверстие в корпусе
Теперь у вас должно получиться восемь проводов длиной около 3 футов. Вставьте их через незаполненное отверстие в корпусе. См. Рисунок, прикрепленный к этому шагу.
Шаг 16: термоусадка
После завершения пайки убедитесь, что оголенные провода закрыты. Я использовал термоусадочную трубку, но изолента тоже подойдет.
Шаг 17: опломбируйте корпус
Возьмите половину корпуса, содержащую ЖК-экран, и наденьте ее на другую половину корпуса, содержащую другие компоненты. Сдвигая две части вместе, склейте их горячим клеем, чтобы скрепить корпус вместе.
Шаг 18: подключитесь к Arduino
Остальные восемь длинных проводов подключаются непосредственно к соответствующим контактам Arduino, указанным на принципиальной схеме. Убедитесь, что каждый раз, когда вы впаиваете один из этих длинных 3-футовых проводов в схему, вы кладете кусок ленты на другой конец, указывая, к какому контакту Arduino он идет!
Шаг 19: IDE / библиотеки Arduino
Вам нужно будет загрузить Arduino IDE. Для этого скетча я использовал три разные библиотеки: FHT.h, SPI.h и TFT.h. Если вы не знаете, как загружать библиотеки Arduino, см. Https://www.arduino.cc/en/Guide/Libraries. Библиотека FHT.h была загружена с openmusiclabs.com. Два других были загружены на GitHub.
Шаг 20: эскиз Arduino
Код использует быстрое преобразование Хартли (FHT) для изменения временной области на частотную. Это также можно сделать с помощью быстрого преобразования Фурье (БПФ), но БПХ намного быстрее. БПФ и БПЧ - очень фундаментальные идеи в обработке сигналов, и их очень интересно изучать. Я предлагаю почитать самому, если вам интересно, посмотрите. Код примера FHT, который я скопировал с веб-сайта Open Music Labs, изначально выводил амплитуду каждого частотного бина в логарифмическом или децибельном формате. Я изменил это, чтобы выводить элементы разрешения по частоте в линейном масштабе. Это потому, что линейная шкала лучше визуально отображает то, как люди слышат звук. Цикл for () в конце предназначен для рисования амплитуды каждого частотного бина на ЖК-экране. Полный спектр БПА будет охватывать все элементы разрешения по частоте от i = 0 до i <128. Вы заметите, что мой цикл for () находится в диапазоне от i = 5 до i <40, это связано с тем, что частоты, важные для диагностики состояний легких, обычно находятся в диапазоне от 150 Гц до 3,5 кГц, я решил увеличить примерно до 4 кГц. Это можно отрегулировать, если вы хотите показать полный частотный спектр.
[код]
// Код цифрового стетоскопа
// Библиотека быстрого преобразования Хартли, загруженная с openmusiclabs
#define LIN_OUT 1 // установить FHT для линейного вывода
#define LOG_OUT 0 // выключить логарифмический вывод FHT
#define FHT_N 256 // Номер выборки FHT
#include // включить библиотеку FHT
#include // включить библиотеку TFT
#include // включить библиотеку SPI
#define cs 10 // установить вывод lcd cs на вывод 10 Arduino
#define dc 9 // установить вывод lcd dc на вывод 9 Arduino
#define rst 8 // установить вывод сброса ЖК-дисплея на вывод 8 Arduino
TFT myScreen = TFT (cs, dc, rst); // объявляем имя экрана TFT
void setup () {
//Serial.begin(9600);// установить частоту дискретизации
myScreen.begin (); // инициализируем экран TFT
myScreen.background (0, 0, 0); // установить черный фон
ADCSRA = 0xe5; // переводим adc в автономный режим
ADMUX = 0x40; // используем adc0
}
void loop () {
while (1) {// уменьшает дрожание cli (); // Прерывание UDRE замедляется таким образом на arduino1.0
for (int i = 0; i <FHT_N; i ++) {// сохраняем 256 сэмплов
в то время как (! (ADCSRA & 0x10)); // ждем, пока adc будет готов
ADCSRA = 0xf5; // перезапускаем байт adc
m = ADCL; // получаем байт данных ADC
j = ADCH; int k = (j << 8) | м; // преобразовать в int
k - = 0x0200; // преобразовать в подписанный int
k << = 6; // преобразовать в 16-битное целое число со знаком
fht_input = k; // помещаем реальные данные в бункеры
}
fht_window (); // окно данных для лучшей частотной характеристики
fht_reorder (); // переупорядочиваем данные перед выполнением fht
fht_run (); // обрабатываем данные в fht
fht_mag_lin (); // берем вывод fht
sei ();
for (int i = 5; i <40; i ++) {
myScreen.stroke (255, 255, 255);
myScreen.fill (255, 255, 255);
int drawHeight = карта (fht_lin_out [я], 10, 255, 10, myScreen.height ());
int ypos = myScreen.height () - drawHeight-8; myScreen.rect ((4 * i) +8, ypos, 3, drawHeight);
}
myScreen.background (0, 0, 0);
}
}
[/код]
Шаг 21: Проверьте это
Я использовал онлайн-генератор тонов (https://www.szynalski.com/tone-generator/), чтобы убедиться, что код работает правильно. Убедившись, что это работает, прижмите колокольчик стетоскопа к груди, сделайте глубокий вдох и посмотрите, какие частоты присутствуют !!
Шаг 22: Дальнейшая работа
** Примечание: я химик, а не инженер или компьютерный ученый **. Вероятно, будут ошибки и улучшения в дизайне и коде. При этом я думаю, что это хорошее начало для чего-то, что может оказаться очень полезным и недорогим. Следующие пункты - это будущие улучшения, которые я хотел бы внести, и я надеюсь, что некоторые из вас также попытаются улучшить это!
· Сделайте устройство мобильным. У меня нет большого опыта работы с процессорами или другими микроконтроллерами, но для хранения всей библиотеки FHT или, возможно, Bluetooth потребуется достаточно памяти.
· Ввести в код некоторые расчеты статистического анализа. Например, обычно хрип имеет основную частоту, равную или превышающую 400 Гц, и длится не менее 250 мс. Хрипы возникают на основной частоте около 200 Гц или меньше и длится не менее 250 мс. Многие другие легочные шумы определяются и указывают на состояние здоровья (https://commongiant.github.io/iSonea-PhysICAL/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Я думаю, что это то, что можно проверить в коде, сравнив сигнал частотных бинов после определенного количества циклов через FHT, а затем запустив функцию millis (), чтобы увидеть, как долго он присутствовал, а затем сравнив его. к минимальному уровню шума при расчете БПА. Я уверен, что это возможно!
Я надеюсь, что вам всем понравился этот проект, и если у вас есть какие-либо вопросы, прокомментируйте, и я отвечу, как только смогу! Жду комментариев.
Рекомендуемые:
Распознавание лиц на Raspberry Pi 4B за 3 шага: 3 шага
Обнаружение лиц на Raspberry Pi 4B за 3 шага: в этом руководстве мы собираемся выполнить обнаружение лиц на Raspberry Pi 4 с помощью Shunya O / S, используя библиотеку Shunyaface. Shunyaface - это библиотека распознавания / обнаружения лиц. Проект направлен на достижение максимальной скорости обнаружения и распознавания с помощью
Приемник с прямым преобразованием всех диапазонов: 6 ступеней
Приемник прямого преобразования всех диапазонов: a.articles {font-size: 110.0%; font-weight: жирный; стиль шрифта: курсив; текстовое оформление: нет; background-color: red;} a.articles: hover {background-color: black;} В этом руководстве описывается экспериментальное «прямое преобразование»; а
Генератор прямоугольных импульсов с быстрым фронтом: 4 шага
Генератор прямоугольных импульсов с быстрым фронтом: Генератор импульсов с быстрым фронтом - генератор прямоугольных импульсов с быстрым фронтом Эта простая схема, использующая 74HC14N (шесть инверторов TTL с низкой скоростью нарастания), способна генерировать прямоугольные сигналы с частотой до 10 МГц. Идеально подходит для тестирования электроники. С гнилью
Генератор прямоугольных волн с быстрым фронтом: 4 шага
Генератор прямоугольных импульсов с быстрым фронтом: если вы хотите измерить индуктивность, емкость любого компонента, вам понадобится прямоугольный сигнал с быстрым фронтом, в этой статье мы узнаем об этом
Портативный USB-аккумулятор для велосипедного фонаря (с преобразованием Luxeon III): 5 шагов
Портативный USB-аккумулятор для велосипеда (с преобразованием Luxeon III): вы, наверное, видели, насколько удобно иметь портативный USB-источник питания для зарядки iPod, PSP, мобильных телефонов и т. Д. Я решил сделать один, но он должен был быть универсальный, чтобы оправдать ношение лишнего веса. Я хотел сделать это максимально просто