תוכן עניינים:
- שלב 1: חומרים
- שלב 2: כלים
- שלב 3: הדפסה תלת מימדית
- שלב 4: בנה מעגל
- שלב 5: חיווט LCD
- שלב 6: חיווט מיקרופון/מגבר
- שלב 7: חיווט מתג רגעי
- שלב 8: חיווט פוטנציומטר
- שלב 9: חיווט שקע לאוזניות
- שלב 10: יציאת מיקרופון/מגבר
- שלב 11: המשך יציאת המיקרופון/מגבר
- שלב 12: רכיבים במארז
- שלב 13: הלחמה בתוך המארז
- שלב 14: +5V, חוטי GND מורחבים
- שלב 15: החלק החוטים הארוכים דרך חור המארז
- שלב 16: התכווץ בחום
- שלב 17: מעטפת חותם
- שלב 18: התחבר ל- Arduino
- שלב 19: Arduino IDE/ספריות
- שלב 20: סקיצה של ארדואינו
- שלב 21: בדוק את זה
- שלב 22: עבודה עתידית
וִידֵאוֹ: סטטוסקופ ספקטרלי מהיר של Hartley Transform: 22 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
במדריך זה תלמד כיצד ליצור סטטוסקופ ספקטרלי באמצעות הטרנספורמציה המהירה של הארטלי. זה יכול לשמש להדמיית קולות לב וריאה.
שלב 1: חומרים
מסך LCD בגודל 1.8 אינץ '($ 7.50 באמזון)
Arduino Uno או שווה ערך ($ 7.00 ב- Gearbest)
מגבר אלקטרט ($ 6.95 ב- Adafruit)
קבל 100 µF ($ 0.79)
חוט ומגשרים ($ 4.00)
שקע סטריאו 3.5 מ מ ($ 1.50)
פוטנציומטר 10 קאוהם ($ 2.00)
מתג רגעי ($ 1.50)
שלב 2: כלים
מלחם
אקדח דבק חם
מדפסת תלת מימד … או חבר עם מדפסת תלת מימד (אפשר לייצר גם עם קרטון)
קאטר
לוח לחם
שלב 3: הדפסה תלת מימדית
הראשון הוא להדפיס תלת -ממד את קבצי ה-.stl המצורפים לשלב זה. הדפסתי את שני הקבצים באמצעות החומר/ההגדרות הבאים:
חומר: PLA
גובה השכבה: 0.1 מ מ
עובי קיר/עליון/תחתון: 0.8 מ מ
טמפרטורת הדפסה: 200 ⁰
טמפרטורת המיטה: 60 ⁰
תמיכה מופעלת @ 10%
שלב 4: בנה מעגל
בנה את המעגל בעזרת הרכיבים בחלק החומרים. אני תמיד מרכיב את המעגל על לוח לחם קודם כל כדי לוודא שהוא פועל כראוי לפני שנוגע במגהץ.
שלב 5: חיווט LCD
באמצעות הדמות המצורפת לשלב זה, חוטי הלחמה לשבעה מתוך שמונה הפינים במסך ה- LCD. אורך חוטים אלה יהיה כ- 3 מטרים, למעט הקרקע וסיכות 5V (אלה צריכות להיות באורך של 2-3 אינץ 'בלבד)
שלב 6: חיווט מיקרופון/מגבר
באמצעות הדמות המצורפת להלחמה בשלב זה שלושה חוטים לסיכות +5V, הארקה ויציאה במיקרופון/מגבר Adafruit. אורך אלה צריך להיות באורך של כ 2-3 סנטימטרים בלבד.
שלב 7: חיווט מתג רגעי
חברו חוט אחד בגובה 2-3 אינץ 'לכל אחד משני הזיזים במתג הרגעי.
שלב 8: חיווט פוטנציומטר
בעזרת האיור בשלב 6, הלחמו שלושה חוטים באורך של כ- 2-3 סנטימטרים לשלושת הזיזים של הפוטנציומטר.
שלב 9: חיווט שקע לאוזניות
הלחם שלושה חוטים אל הטבעת, קצה ושרוולי השרוולים של שקע האוזניות. השתמשתי בשקע מתוך מטרונום שכבר היה קווי. אם אינך יודע מה הטבעת, קצה ושרוולי שרוולים, פשוט חפש בגוגל יש הרבה תמונות טובות על חיבורי חיבורי סטריאו.
שלב 10: יציאת מיקרופון/מגבר
לאחר הלחמת החוטים במיקרופון/מגבר, פוטנציומטר ושקע לאוזניות, הלחם חוט אחד באורך של כשלושה רגל לחוט "החוצה" של מגבר המיקרופון. חוט זה יתחבר מאוחר יותר לסיכה A0 של הארדואינו.
שלב 11: המשך יציאת המיקרופון/מגבר
הלחם חוט שני לחוט "החוצה" של המיקרופון/מגבר. חוט זה צריך להיות מולחם לקבל 100 microFarad. אם אתה משתמש בקבל אלקטרוליטי, ודא שהצד החיובי מחובר לחוט זה.
שלב 12: רכיבים במארז
לאחר שכל החוטים מולחמים על הרכיבים, הנח את הרכיבים במקומות המתאימים בהתאם לדמויות המצורפות לשלב זה. השתמשתי בדבק חם כדי לאבטח את מיקרופון ושקע האוזניות במקומן.
שלב 13: הלחמה בתוך המארז
לאחר שכל הרכיבים מאובטחים במארז, הלחם את כל חוטי הקרקע יחד. צריך להיות אחד מה- LCD, אחד מהמיקרופון/מגבר ואחד מהשרוול של שקע האוזניות. כמו כן, הלחם את חוטי ה -5 V יחד וחוט אחד מהמתג הרגעי. שוב צריך להיות אחד מה- LCD, אחד מהמיקרופון/מגבר, ואחד על המתג הרגעי.
שלב 14: +5V, חוטי GND מורחבים
כעת חותכים שתי חתיכות חוט באורך של כ -3 מטרים. הלחם אחד לאשכול חוטי הקרקע והלחם את השני לחוט הפתוח במתג הרגעי.
שלב 15: החלק החוטים הארוכים דרך חור המארז
כעת, אמורים להיות לך שמונה חוטים באורך של כ -3 מטרים. הנח אותם דרך החור הלא מילוי במארז. עיין באיור המצורף לשלב זה
שלב 16: התכווץ בחום
לאחר השלמת ההלחמה, ודא שהחוטים החשופים מכוסים. השתמשתי בצינורות כיווץ חום, אך גם סרט חשמלי עובד מצוין.
שלב 17: מעטפת חותם
קח את מחצית המארז המכיל את מסך ה- LCD והחלק אותו מעל החצי השני של המארז המכיל את שאר הרכיבים. תוך כדי דחיפת שני החלקים זה לזה, הדבק אותם חם כדי לאבטח את המארז יחד.
שלב 18: התחבר ל- Arduino
שמונה החוטים הארוכים שנותרו מחוברים ישירות לסיכות הארדואינו המתוארות שלהם בתרשימי המעגלים. וודא שבכל פעם שאתה מלחם את אחד החוטים הארוכים בגודל 3 רגל למעגל, הנחת חתיכת סרט בקצה השני המציין לאיזה סיכת ארדואינו היא הולכת!
שלב 19: Arduino IDE/ספריות
יהיה עליך להוריד את Arduino IDE. למערכון זה השתמשתי בשלוש ספריות שונות: FHT.h, SPI.h ו- TFT.h. אם אינך יודע כיצד להוריד ספריות ארדואינו, בקר בכתובת https://www.arduino.cc/en/Guide/Libraries. ספריית FHT.h הורדה מאתר openmusiclabs.com. השניים האחרים הורדו ב- GitHub.
שלב 20: סקיצה של ארדואינו
הקוד משתמש ב- Fast Hartley Transform (FHT) כדי לשנות את תחום הזמן לתחום תדרים. ניתן לעשות זאת גם באמצעות Transform Fast Fourier (FFT), אך ה- FHT מהיר הרבה יותר. ה- FFT וה- FHT הם רעיונות מאוד בסיסיים בעיבוד אותות ומאוד כיף ללמוד עליהם. אני מציע לקרוא קצת בעצמך, אם אתה מעוניין תראה. קוד הדוגמה של FHT שהעתקתי מאתר Open Music Labs הוציא בתחילה את המשרעת של כל סל תדרים כפלט לוגריתמי או דציבל. שיניתי את זה כדי להוציא את פחי התדרים בקנה מידה לינארי. הסיבה לכך היא שהסולם הליניארי הוא ייצוג חזותי טוב יותר של האופן שבו בני האדם שומעים צליל. הלולאה for () בסוף מיועדת לציור המשרעת של כל סל תדר במסך ה- LCD. ספקטרום ה- FHT המלא יכלול את כל פחי התדרים מ- i = 0 ל- i <128. תבחין כי לולאת ה- for () שלי היא מ- i = 5 ל- i <40, הסיבה לכך היא שהתדרים החשובים לאבחון מצבי ריאה הם בדרך כלל בין 150Hz ל- 3.5khz, החלטתי לעלות עד כ -4 kHz. ניתן להתאים זאת אם ברצונך להציג את ספקטרום התדרים המלא.
[קוד]
// קוד סטטוסקופ דיגיטלי
// הספרייה המהירה של Hartley Transform שהורדה מ- 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 לפין arduino 10
#define dc 9 // הגדר סיכת lcd dc לפין arduino 9
#define rst 8 // הגדר סיכת איפוס lcd לפין arduino 8
TFT myScreen = TFT (cs, dc, rst); // מצהירים על שם מסך TFT
הגדרת בטל () {
//Serial.begin(9600);// להגדיר קצב דגימה
myScreen.begin (); // לאתחל מסך TFT
myScreen.background (0, 0, 0); // הגדר את הרקע לשחור
ADCSRA = 0xe5; // הגדר את adc למצב ריצה חופשי
ADMUX = 0x40; // השתמש ב- adc0
}
לולאת חלל () {
בעוד (1) {// מפחית cli jitter (); // UDRE interrupt מאט בדרך זו ב- arduino1.0
עבור (int i = 0; i <FHT_N; i ++) {// שמור 256 דוגמאות
בעוד (! (ADCSRA & 0x10)); // המתן עד ש- adc יהיה מוכן
ADCSRA = 0xf5; // הפעל מחדש את adc byte
m = ADCL; // אחזר בתים של נתוני ADC
j = ADCH; int k = (j << 8) | M; // צור לתוך int
k -= 0x0200; // טופס לכניסה חתומה
k << = 6; // טופס ל- int. חתום 16b
fht_input = k; // הכניסו נתונים אמיתיים לפחים
}
fht_window (); // חלון הנתונים לתגובת תדר טובה יותר
סדר fht_reorder (); // סדר מחדש את הנתונים לפני ביצוע fht
fht_run (); // לעבד את הנתונים ב- fht
fht_mag_lin (); // קח את הפלט של ה- fht
sei ();
עבור (int i = 5; i <40; i ++) {
myScreen.stroke (255, 255, 255);
myScreen.fill (255, 255, 255);
int drawHeight = map (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, או אולי בלוטות '.
· הכנס כמה חישובי ניתוח סטטיסטי לקוד. לדוגמה, בדרך כלל לצפצופים יש תדר יסודי שווה או גדול מ- 400 הרץ ונמשך לפחות 250 אלפיות השנייה. רונצ'י מופיעים בתדר בסיסי של כ 200 הרץ או פחות ונמשך לפחות 250 מילישניות. צלילי ריאה רבים אחרים מוגדרים ומעידים על מצבים בריאותיים (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). אני חושב שזה משהו שניתן לבדוק בקוד על ידי השוואת האות של פחי התדרים לאחר מספר מחזורים מסוים באמצעות ה- FHT ולאחר מכן הפעלת הפונקציה millis () כדי לראות כמה זמן הוא היה קיים ולאחר מכן השווה אותו לרצפת הרעש של חישוב ה- FHT. אני בטוח שאפשר לעשות את הדברים האלה!
אני מקווה שכולכם נהנתם מהפרויקט הזה ואם יש לכם שאלות אנא הגיבו ואני אענה בהקדם האפשרי! אני מצפה לראות תגובות.
מוּמלָץ:
לוח ה- ThreadBoard (גרסה שאינה מודפסת בתלת-מימד): לוח אב טיפוס מהיר של טקסטיל: 4 שלבים (עם תמונות)
לוח ה- ThreadBoard (גרסה שאינה מודפסת בתלת-מימד): לוח אב טיפוס מהיר של טקסטיל E: ניתן למצוא כאן את גרסת ה- ThreadBoard V2 להדפסה תלת-ממדית. ניתן למצוא כאן גרסה 1 של ה- ThreadBoard. למרות מכשולי העלות, נסיעות, מגיפות ומחסומים אחרים, ייתכן שאין לך גישה למדפסת תלת מימד אך תרצה ש
לוח החוטים: לוח אב טיפוס מהיר של טקסטיל: 5 שלבים (עם תמונות)
ניתן למצוא כאן את ThreadBoard: לוח אב טיפוס מהיר של טקסטיל: לוח ה- ThreadBoard הוא לוח לחם מגנטי למחשוב מוטבע המאפשר לאב טיפוס מהיר של טקסטיל אלקטרוני
מחלף מהיר מתחת ל 50 $! Kazeshifter Arduino Shifter מהיר מתכוונן: 7 שלבים
מחלף מהיר מתחת ל 50 $! Kazeshifter Arduino Shifter Quick Shifter: היי אוהבי אופנועים או אופנועים! על ההנחיה הזו, אשתף כיצד להכין את Quick Shifter בעצמכם בזול! לאנשים שמתעצלים לקרוא את ההוראה הזו, צפו בסרטון שלי! הערה: לכמה אופניים כבר משתמש במערכת הזרקת דלק, לפעמים
צור ווידג'טים משלך בקלות - מונה BPM מהיר: 6 שלבים
צור בקלות ווידג'טים משלך - מונה BPM מהיר: יישומי אינטרנט הם מקום נפוץ, אבל אפליקציות אינטרנט שאינן דורשות גישה לאינטרנט אינן. במאמר זה אני מראה לך כיצד הכנתי מונה BPM בדף HTML פשוט יחד עם וניל ג'אווסקריפט ( ראה כאן). אם הורדתו, ניתן להשתמש ביישומון זה במצב לא מקוון
Tap Tap Rainbow - משחק תגובה מהיר ל -2 שחקנים: 4 שלבים (עם תמונות)
Tap Tap Rainbow - משחק תגובה מהיר ל -2 שחקנים: לפני שבועיים לבתי היה רעיון גאוני להכין משחק תגובה מהיר עם צבעי קשת (היא מומחית לקשת: D). אהבתי את הרעיון מיד והתחלנו לחשוב איך אפשר להפוך אותו למשחק אמיתי. יש לך קשת בענן