פרויקט ארדואינו: נר אלקטרוני

כשהתחלתי לחשוב על פרויקט ארדואינו שיאזין לאותות בקוד מורס ויפענח אותם, ידעתי שהבעיה הקשה מבחינתי תהיה קליטת הצליל: אני לא מכיר את תחום המיקרופונים, והשרטוטים של מעגלי האודיו שמצאתי ברשת – גם אם היה בא לי להרכיב משהו שאינני מבין – הצריכו הזמנה של רכיבים והמתנה ממושכת…

עם זאת, במהלך החיפוש אחר חומרים לטור שלי ב-ynet, גיליתי התקן שעושה שימוש פרימיטיבי אך יעיל במיקרופון: נר אלקטרוני. בלי מגברים ובלי מעגלים אנלוגיים מסובכים, עם מיקרופון קטן ומיקרו-בקר בלבד (כך לפחות זה נראה), הנר מצליח להבחין בין שקט יחסי לבין נשיפה ישירה על המיקרופון, ולהדליק או לכבות את נורית ה-LED המובנית. בנוסף, בלי קשר למיקרופון, הנורית מהבהבת מדי פעם באקראי כדי לחקות את אפקט ההבהוב של להבת נר אמתי. מפה לשם, מצאתי את עצמי בתוך פרויקט קטן חדש: נר אלקטרוני משלי, שלא רק כבה ונדלק כשנושפים עליו חזק, אלא גם מהבהב חזק יותר בנשיפה חלשה, כפי שעושים נרות בעולם האמתי. הסרטון הבא הוא ללא סאונד, כדי לחסוך מכם את הרעש הנוראי של הנשיפות שנקלט במצלמה. במקום זה שמתי ליד ה"נר" דגל ניילון קטן שמציין את עוצמת הרוח.

הדרך הנוחה ביותר לקבוע את עוצמת ההארה של נורית ה-LED באמצעות הארדואינו היא להשתמש בפיני ה-PWM. זהו נושא מספיק חשוב ורחב כדי לקבל פוסט שלם – בינתיים רק נאמר שכאשר אנחנו שולחים את הפקודה analogWrite לפין דיגיטלי (כן, דווקא דיגיטלי) שתומך ב-PWM, עם מספר בין 0 ל-255, הפלט משם יתנודד במהירות בין 0 ל-5V לסירוגין, כאשר הקצאת הזמן לכל אחד מהמתחים תלויה במספר ששלחנו.

במילים אחרות, אם נכתוב

int LED_PWM_PIN = 3; // 3,5,6,9,10 or 11 in the Arduino Uno
// ...
pinMode(LED_PWM_PIN, OUTPUT);
analogWrite(LED_PWM_PIN, 55);

אז במשך 55 חלקי 255 מהזמן הפין יוציא 5V, ובשאר הזמן – 200 חלקי 255 – הוא יוציא 0V. כל מחזור שכזה נמשך, בארדואינו, כשתי אלפיות השניה ואינו נתפס כמובן בעין. לצופה מבחוץ זה ייראה פשוט כאילו הנורית מאירה בחמישית העוצמה בערך.

כדי ליצור את אפקט ההבהוב, אם כן, מוציאים לנורית ה-LED אות PWM של 255 רוב הזמן, ומדי פעם – למשך כמה עשרות אלפיות השניה, לא יותר – אות אקראי נמוך יותר. ככל שהאותות האקראיים יופיעו לעתים קרובות יותר, כך ההבהוב הנראה לעין יהיה משמעותי ו"חזק" יותר. ההגדרות הספציפיות בהן השתמשתי לנר שלי אינן חשובות – שחקו עם ההגדרות בעצמכם כדי להשיג את האפקט שהכי מוצא חן בעיניכם.

ועכשיו למיקרופון. הדגם שבו השתמשתי הוא מהפשוטים והזולים ביותר, דומה לזה שבנר האלקטרוני שהיה לי בבית. למיקרופונים כאלה יש הרבה פרמטרים שלא טרחתי בינתיים להתעמק בהם: בדרך של ניסוי וטעייה (הרבה טעייה) פשוט חיברתי למתח מהארדואינו – 3.3V, כי הדגם הזה מיועד לעבוד במתחים נמוכים – וניסיתי לקרוא ערכים דרך פין אנלוגי. לאט לאט הצלחתי להגיע למשהו בעל משמעות: אחרי שהעברתי את המתח דרך נגד (10K), וצירפתי קבל (22uF) בין רגלי המיקרופון, הצלחתי להבחין בתנודות בקלט כאשר נשפתי על המיקרופון.

התנודות היו חלשות ואקראיות, אך צבירה של מספר מדידות רצופות, חישוב ממוצע של הערכים שהתקבלו וחישוב גודל התנודות סביב הממוצע הזה (מה שמכונה בסטטיסטיקה "סטיית תקן") הניבו מדד ראשוני סביר ויציב יחסית לגודל ה"רעש" שהמיקרופון קולט. זה בהחלט לא היה משהו שאפשר להשתמש בו לעיבוד צלילים או לזיהוי יעיל של אותות מורס – למעשה, אפילו שינוי אות ה-PWM גרם להפרעות מסוימות בקלט המיקרופון – רק מספיק טוב בשביל נר אלקטרוני.

אחרי שהגעתי לתוצאות משביעות רצון על מטריצה, הלחמתי את הרכיבים לחתיכה צרה של Stripboard:

DIY Arduino controlled flameless candle
הרכיבים של הנר האלקטרוני, לא כולל הארדואינו (לחצו להגדלה)

את הספים להבהוב חזק ולכיבוי/הדלקה קבעתי גם כן בדרך של ניסוי וטעייה. התוצר הסופי הרבה פחות רגיש מהנר האלקטרוני הקנוי, ועם זאת הוא עושה את העבודה. הגיע הזמן ללמוד לעומק את נושא המיקרופונים, להבין מה בעצם קורה – ואיך להתקדם מכאן לזיהוי של צלילים ולפיענוח הנחשק של קוד מורס…

להרשמה
הודע לי על
18 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

אגב, עוד בעניין מיקרופונים- הבנתי שאפשר ליצור אינטרקום פשוט אפילו בלי בקר, רק עם חיבורים לסוללה. למישהו יש מושג איך?

מה עם משבש (כן משבש, לא משדר) אותות אלחוטיים זה יכול להיות נחמד כדי לחרפן מיקרופונים אלחוטיים וטלוויזיות (כתוב על זה בביוגרפיה של ג'ובס)

יופי של כתבה.
בהחלט עושה חשק להצית את הדמיון עם כמה כאלה.

השתלטות על לווין סובייטי?

מגניב לאללה. גם אני משתמש עכשיו במיקרופון לאיזה פרוייקט והשתמשתי במעגל הזה:
http://lowvoltage.wordpress.com/2011/05/21/lm358-mic-amp/

לא מאוד מסובך, קבל ו5 נגדים (חוץ מהמגבר)
בגדול מיקרופונים כמו שאתה מראה פה הם קבל משתנה (ככה אני הבנתי מוויקיפדיה לפחות).

אוריאל

איזה פרויקט מקסים ומצחיק 🙂
למי מאיתנו שבור הענייני אלקטרוניקה – האם תוכל להסביר מדוע בעזרת נגד וקבל הצלחת לזקק את האותות? אני מוצא את עצמי משתמש בצירוף הזה במעגלים שונים, פשוט כי כך הם אמורים להיבנות אבל אני לא באמת מבין מדוע. אשמח להסבר – אם זו לא דרישה מוגזמת.
תודה!

הסבר מצויין. תודה.

כרגיל תודה על הפוסט 🙂 וחוץ מזה יש לי שאלה לא קשורה לפוסט – שאין בבלוג איפה לרשום אז ארשום פה:
קניתי לייזר באיביי-http://www.ebay.com/itm/280883260732?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649#ht_3237wt_948

ולא קיבלתי איתו חוברת\דאטהשיט, האם המידע שרשום באיביי מספיק לי? 5V? או שאני צריך לדעת גם את הזרם? (שהוא ניראה לי 1 mA כי ההספק 5mW) האם צריך נגד? ואם אפשר הסבר כללי איך לגשת לרכיב "חדש", כי הזמנתי עוד דברים שצריכים להגיע בקרוב. תודה

יפה מאוד! אני חשבתי על רעיון מסויים- לאחר שאצבור מספיק (הרבה מאוד) ניסיון בשימוש בארדואינו ,בחשמל ובגלים, חשבתי על הרעיון ללחבר משדר ומקלט רדיו עוצמתיים לארדואינו, וגם מסך ומקלדת. שני מכשירים זהים כאלו יוכלו לתקשר זה עם זה ממרחק, ע"י שליחת הטקסט ביצוג בינארי, אותו יקודד הבקר הקולט. 2 שאלות: 1. זה יוכל לעבוד עם ארדואינו? כלומר זה לא מורכב מדי עבור מיקרו בקר פשוט כמו הATmega328? שאר קשיי הישום הם כבר עניין אחר. 2. זה חוקי? לא צריך אישור ממשרד התקשורת להשתמש בתדרים מסויימים? כמובן שהכל עוד רק רעיון, אין לי בינתיים אפילו חלקיק של הידע והציוד הדרושים, אבל… לקרוא עוד »

תודה. בדיקה קצרה העלתה שצריך רישיון רדיו חובבים… וזה אומר כל מיני מבחנים במורס ובנהלי קשר, וגם ביסודות החשמל… נו, עוד חזון למועד 🙂

כלומר?