תוכן עניינים:

Arduino Cradle Rocker: 19 שלבים (עם תמונות)
Arduino Cradle Rocker: 19 שלבים (עם תמונות)

וִידֵאוֹ: Arduino Cradle Rocker: 19 שלבים (עם תמונות)

וִידֵאוֹ: Arduino Cradle Rocker: 19 שלבים (עם תמונות)
וִידֵאוֹ: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, יולי
Anonim
Image
Image

מצטער, לא יכולתי להתאפק מהמוזיקה העזה והנדושת שהציע לי עריכת הווידיאו.

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

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

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

אספקה

אוקיי, זה היה פרויקט הארדואינו הראשון שלי אי פעם, אז עשיתי ניסויים וניסיונות וטעויות, ואני בטוח שיש מקום לשיפור בעיצוב שלי, אבל הנה רשימת החלקים שלי: Arduino Uno ($ 13) לשליטה על הכל קרש לחם ערכה (10 $) לחיבור חוטים

מנוע הצעדים ($ 14) זוהי היצירה המהנה ביותר, כי היא הדבר שעושה את כל העבודה. התחלתי עם נהג מומנט מעט נמוך יותר, אבל אז קיבלתי את זה וזה עובד די טוב. אל תהסס לקבל אחד אפילו יותר חזק. נהגי מנוע צעד (10-30 $) זה יושב בין הארדואינו והמנוע. הספציפי הזה מסוגל כנראה להניע את המנוע בשקט יותר מכמה אחרים, אז הלכתי עם זה מכיוון שהמנוע עומד להיות כמה מטרים מהראש (ושל הבן שלי) בזמן שאנחנו ישנים. במקור קניתי רק דרייבר אחד TMC2209 במחיר של $ 10, אבל בסופו של דבר קניתי חבילה של 4 כי היה לי קושי בהתחלה ורציתי לוודא שלא טיגנתי את הלוח בשלב כלשהו. בסופו של דבר הרגתי 3 לוחות, מה שמביא אותי לפריט הבא שלי … קבלים! ($ 10) אתה באמת צריך רק קבלים של 47 uF 50V, כך שהקופסה הזו של 240 הייתה מוגזמת למדי. ספק כוח של 36V ($ 17) קניתי במקור אספקת 12V חלשה, ואז גיליתי שזה המקור לכל הצרות שלי וקיבלתי אחד קרוב יותר למתח המרבי שמנוע הצעד שלי יכול להתמודד איתו. אם אתה משתמש במנוע או במניע אחר, ודא שהוא יכול להתמודד עם המתח (V) ושהספק (A) של המתח גבוה לפחות כמו שיא המגברים שמושך המנוע. 8 $) לזה מתחבר ספק הכוח. תצטרך להלחים את זה בכמה חוטים כדי להידבק ללוח הלחם שלך.חבילה גדולה של מגשרים ($ 9) כדי שאוכל לשים את הפקדים היכן שאני רוצה בחדר.

לחצנים (8 $) להפעלה/כיבוי וכו '

מגבר מיקרופון ($ 11) אה, לא ידעתם שגם זה מופעל על ידי צליל?

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

שלב 1: הכירו את עצמכם עם Pinout של נהג הצעדים שלכם

חבר את Arduino 5V/GND ללוח הלוח שלך
חבר את Arduino 5V/GND ללוח הלוח שלך

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

שלב 2: העבר את Arduino 5V/GND ללוח הלוח שלך

חבר חוט מה- Arduino 5V למעקה "+" בצד אחד של לוח הלחם שלך חבר כבל מאחד ממרכזי ה- GNU של Arduino למעקה "-" באותו צד של לוח הלחם.

(להתעלם מ

שלב 3: חבר את מסילות +/- ל- VIO/GND

חבר את מסילות +/- ל- VIO/GND
חבר את מסילות +/- ל- VIO/GND

חבר חוט מהמסילה "-" ל- GND בפינה השמאלית התחתונה של לוח הנהג הצעד. חבר כבל מהמסילה "+" ל- VIO

שלב 4: חבר DIR/STEP לסיכות דיגיטליות בארדואינו

חבר DIR/STEP לסיכות דיגיטליות בארדואינו
חבר DIR/STEP לסיכות דיגיטליות בארדואינו

חבר את סיכות DIR ו- STEP מלוח נהג הצעדים לשניים מהסיכות הדיגיטליות בארדואינו. השתמשתי בסיכות 2 ו -3 בהתאמה, אבל זה לא משנה כל עוד אתה מגדיר את הסיכות בקוד שלך בהמשך.

שלב 5: בואו קדימה והוסיפו את הקבל הזה …

בואו קדימה והוסיפו את הקבל הזה …
בואו קדימה והוסיפו את הקבל הזה …

שרפתי 2 לוחות נהג מדריכים מכיוון שלא היה לי קבל, אז קדימה והוסף את קבל 47uF 50V לסיכות VM/GND בלוח הנהג. וודא שהסיכה "-" בקבל נמצאת בסיכת ה- GND בלוח הלחם (יהיה "-" בצד המקביל של הקבל)

שלב 6: קדימה וחבר את ה- GND הזה

ולך קדימה וחבר את ה- GND הזה
ולך קדימה וחבר את ה- GND הזה

ב- GND שזה עתה הוספת את הקבל, קדימה וחבר אותו לאותה מסילה "-" כמו ה- GND האחר.

שלב 7: חבר את המנוע לנהג

חבר את המנוע לנהג
חבר את המנוע לנהג

איזו סיכה הולכת לאן תהיה תלויה במנוע שקנית, אך למי שמניתי יש את תרשים החיווט ברשימת אמזון.

עבור המנוע שלי -

חבר ירוק ושחור ל- M2B & M2A

חבר אדום וכחול ל- M1A & M1B הערה: אם מסיבה כלשהי למנוע שלך אין תרשים, תוכל להבין בקלות אילו חוטים יוצרים מעגל אם יש לך מולטימטר. הגדר את המולטימטר שלך להגדרת מגבר נמוך ונתק את המנוע שלך. גע באחד ממוליטי המולטימטר לאחד מחוטי המנוע ולאחר מכן נסה כל אחד מהחוטים האחרים בעזרת ההובלה השנייה. אם אתה מקבל קריאת התנגדות, אז שני החוטים יוצרים מעגל אחד, ושני האחרים יוצרים את השני.

שלב 8: חבר את EN, MS1 ו- MS2 ל- "-"

חבר את EN, MS1 ו- MS2 ל
חבר את EN, MS1 ו- MS2 ל

אני לא לגמרי בטוח שזה נחוץ, אבל אני מאמין שזה מגדיר את המנוע להגדרת מיקרו -צעד קטנה יותר במנהל ההתקן TMC2209. אתה יכול לחבר אותם למעקה "-" הקרוב אליהם, שכן נחבר אותו לצד השני בהמשך.

שלב 9: הלחמת מחבר מתח נקבי לשני חוטים

הלחמה מחבר חשמל נשי לשני חוטים
הלחמה מחבר חשמל נשי לשני חוטים

אני לא הכי טוב בעולם בהלחמה, אז תצטרך לחפש את זה במקומות אחרים, אבל את שלי עשיתי ככה. כיפפתי את קצות החוטים כך שהם ישכבו שטוח על מוליכי המחבר, ואז הלחמתי את החוט להוביל. לא היו לי שום חומרי כיווץ בחום כבל אז פשוט עטפתי אותם בצורה מופלאה בקלטת חשמל.

שלב 10: חבר את מחבר הנשי החדש שלך המולחם

חבר את מחבר הנקבה החדש שלך המולחם
חבר את מחבר הנקבה החדש שלך המולחם

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

שלב 11: חבר אותם ל- VM/GND

חבר אותם ל- VM/GND
חבר אותם ל- VM/GND

חבר את מסילות "+" ו- "-" אלה ל- VM ול- GND שלידו. אלה עם הקבל עליו.

שלב 12: התפעל מהעבודה שלך

להעריץ את עבודת היד שלך
להעריץ את עבודת היד שלך

בסדר, עכשיו המנוע והנהג הוגדרו לגמרי! מכאן והלאה פשוט נבצע בקרות. אגב, קדימה:

  • אם ניתקת את הנהג שלך מסיבה כלשהי, אל תנסה לחבר אותו בזמן שהחשמל שלך 36V מחובר. הרגתי את לוח הנהג השלישי שלי ככה.
  • חבר את המתח 36V לפני חיבור מתח Arduino. אני אישית לא טיגנתי ארדואינו, אבל בדרך ראיתי אזהרה רבה לגבי זה.

שלב 13: אופציונלי - בדוק את ה- VREF שלך

ל- TMC2209 יש פוטנציומטר השולט בזרם המנוע. אם קיבלת את אותו נהג כמוני, תוכל לקרוא על כך כאן. אם ברצונך לשנות את ההגדרה:

  • נתק את כל החשמל ונתק את חוטי המנוע מהנהג.
  • נתק את החוט לפין EN (הפעל) במנהל ההתקן. זהו הסיכה בפינה השמאלית העליונה.
  • חבר את ספק הכוח של המנוע (36V)
  • באמצעות מערכת מולטימטר על 20V, גע במוביל אחד למקור GND (השתמשתי בחיבור חוט למעקה "-" שלי) וגע במוביל השני לסיכת VREF. נא לא לגעת בלייד לשום דבר אחר, אתה יכול לקצר את הנהג שלך אם כן.
  • השתמש במברג קטן כדי להתאים בעדינות את בורג הפוטנציומטר. עבור הלוח שלי, נגד כיוון השעון = יותר כוח. ה- VREF שלי באופן אישי קורא ~ 0.6V.

שלב 14: כפתורים

כפתורים!
כפתורים!

לאחר מכן, חבר את הכפתורים שלך כך. הם לא צריכים כוח.

  • חבר מסילה "-" של לוח הלחצנים שלך לאחד ה- GND של הארדואינו. אתה יכול גם פשוט לשרשר אותו ממעקה "-" הלוח השני אם תרצה.
  • חבר סיכה אחת של כל כפתור למעקה "-"
  • חבר סיכה נוספת של כל כפתור לסיכה דיגיטלית על הארדואינו.

השתמשתי ב -4 כפתורים: מנוע הפעלה/כיבוי

המנוע ממשיך

מיקרופון מופעל

המיקרופון כבוי

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

שלב 15: הוסף את לוח המיקרופון

הוסף את לוח המיקרופון
הוסף את לוח המיקרופון

זה פשוט, ול Adafruit יש כאן הוראות טובות (ויסודות הלחמה!).

  • חבר "-" ל- GND
  • חבר את GND על לוח המיקרופון ל- "-" (אתה יכול לחבר GND ישירות ל- GND ולדלג על השלב הקודם, באמת)
  • חבר את VCC לחשמל 3.3V על הארדואינו. זה חשוב מכיוון שאספקת החשמל הזו פחות "רועשת" מה -5V, וכתוצאה מכך קריאות מיקרופונים טובות יותר
  • חבר OUT לסיכת ANALOG IN ב- Arduino. השתמשתי ב- A0.

שלב 16: זו אמורה להיות התוצאה הסופית

זו אמורה להיות התוצאה הסופית!
זו אמורה להיות התוצאה הסופית!
זו אמורה להיות התוצאה הסופית!
זו אמורה להיות התוצאה הסופית!

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

שלב 17: קוד

אוקיי בואו נסתכל על הקוד! זו לא העבודה הכי נקייה שלי, אבל היא עושה את העבודה. הוספתי הערות כדי להסביר הכל כאן, אבל תשאיר איתי. השתמשתי ב- Arduino IDE לכל זה (זמין ב- Windows וב- Mac בחינם) הנקודה היא זו: הגדר מהירות ומרחק מוטוריים לסיבוב.

הגדר מספר סלעים (נדנדות) לביצוע.

סובב את המרחק שנקבע לתנופה אחת. נדנדה מספר פעמים מוגדר.

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

#כלול // "סטנדרטית" ספריית מנועי צעד

//#הגדר DEBUG 1 // בטל את זה כשאתה רוצה להתאים את רמות המיקרופון // הגדרת לחצנים - אלה תואמים את המקום שבו הפינים הדיגיטליים שחיברת ללחצנים const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // הגדרת מיקרופון - A0 הנה האנלוגי של המיקרופון. חלון הדוגמה נמצא במיליס const int micPin = A0; const int sampleWindow = 1000; מדגם int לא חתום; bool micEnabled = false; מיקרופון כפול רגישות = 0.53; // סביר להניח שתצטרך לשנות את זה // בשבילי, בסביבות.5 היה מספיק טוב כדי לא לירות על חבטות קטנות // אבל יבעו לבכי קטן int stepsPerRevolution = 3200; // שנה את זה כך שיתאים למספר הצעדים לכל סיבוב של המנוע שלך // המנוע שלי הוא 200 צעדים/סיבוב // אבל הגדרתי את הנהג ל -1/16 מיקרו -צעדים // אז 200*16 = 3200 … האמת שאין לי מושג אם זה האם הדרך הנכונה // לעשות את זה Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 הם סיכות DIR & STEP int stepCount = 0; int motorSpeed = 95; // יהיה עליך להתאים זאת בהתאם לעריסה ולמשקל התינוק שלך int numSteps = 90; // המרחק שהמנוע ינוע. // יהיה עליך להתאים זאת בהתאם לרדיוס הגלגל שאתה מחבר // למנוע שלך. סביר להניח שזו ומהירות יהיו ניסוי וטעייה. // הערה - מהירות גבוהה יותר במנועי צעד = מומנט יעיל נמוך יותר // אם אין לך מספיק מומנט, המנוע שלך ידלג על שלבים (לא זז) int oldmotorButtonValue = HIGH; bool מופעל = שקר; // מנוע מופעל? int loopStartValue = 0; int maxRocks = 100; // כמה פעמים אתה רוצה שזה יתנדנד לפני שתכבה int rockCount = 0; הגדרת void () {#ifdef DEBUG Serial.begin (9600); // לרישום באגים #endif pinMode (motorEnablePin, INPUT_PULLUP); // זוהי הגדרה לכפתורים לעבודה ללא הפעלת pinMode (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // מגדיר את מהירות המנוע למה שציינת קודם} לולאת void () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead פשוט קורא את ערכי הכפתורים int continueValue = digitalRead (continuePin); // פעולה זו מזהה את לחיצת כפתור המנוע ומונעת ממנו לירות יותר מפעם אחת בלחיצה אם (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // אם המנוע כבוי והמיקרופון פועל, הקשיב לבכי התינוק אם (! מופעל && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } אם (מופעל) {stepsPerRevolution = stepsPerRevolution * -1; // כיוון הפוך // עם ההתקנה שלי יעיל יותר להפוך לאחור // הנדנדה הראשונה. אתה יכול לשים את זה אחרי הלולאה // אם זה לא המקרה שלך // ספין המנוע המרחק שצוין לעיל עבור (int i = loopStartValue; i <numSteps; i ++) {// בדוק אם תכבה int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // שתי השורות הבאות "שומרות" את מיקום המנוע, כך שבפעם הבאה שתפעיל אותו // הוא ימשיך בנסיעה כאילו לא כיבית אותו. זה מונע זריקה // מרחקי התנועה שלך loopStartValue = i; // שמור צעדים מיקוםPerRevolution = stepsPerRevolution * -1; // לשמור על כיוון oldmotorButtonValue = tempmotorButtonValue; לשבור; } checkContinue (continueValue); // לבדוק אם לחצו על כפתור המשך micCheck (); myStepper.step (stepsPerRevolution / 50); // כמה צעדים לנקוט בכל לולאה, // ייתכן שיהיה עליך להתאים זאת // לוודא שנמשיך מרחק לולאה מלא אם הלולאה תסתיים // הדבר ייכנס לפעולה אם כיבית את המנוע בעצמך וזה "הציל" את מיקום אם (i == numSteps - 1) {loopStartValue = 0; }}} עיכוב (100); // השהה 100 מיליס לפני ביצוע הסלע הבא. יהיה עליך להתאים זאת. אם (מופעל) checkComplete (); oldmotorButtonValue = motorButtonValue; // זה משמש למניעת קליקים כפולים} // קוד זה ישירות מ- Adafruit. getMicReading כפולה () {startMillis ארוך ללא סימן = millis (); int peakToPeak ללא חתום = 0; // רמת שיא לשיא int signalMax = 0; int signal signMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); אם (digitalRead (motorEnablePin) == LOW) מופעל = נכון; sample = analogRead (micPin); if (sample signalMax) {signalMax = sample; // שמור רק את הרמות המקסימליות} else if (sample = maxRocks) {enabled = false; rockCount = 0; // לחזור לפוזיו האמצעי

for (int i = loopStartValue; i <numSteps/2; i ++) {

myStepper.step (stepsPerRevolution * -1 / 50); // שלב 1/100 מהפכה:

}

} }

שלב 18: הרכבה והתקנת גלגלים

הרכבה והתקנת גלגלים
הרכבה והתקנת גלגלים

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

  • הנח מהדק כדי לשמש זרוע היורדת מהעריסה, כך שהגלגל שלי יוכל למשוך בקו ישר
  • הברגתי קופסה גסה להכנסת המנוע והברגתי אותה לצלחת בסיס אותה הדבקתי לרגל העריסה.
  • ייצר גלגלת גלגלת עץ מותאמת אישית עם חור שיתאים לגלגלת גלגלת הצעד הקטנה שבתוכה. עשיתי את החור המרכזי חזק מאוד ופשוט סחט בגלגלת גלגלת המדרגות. קידחתי חור דרך הגלגל עד לאמצע, כך שאוכל לגשת לבורג שבגלגל גלגלת המתכת כדי להדק אותו על מנוע הצעד.
  • רץ חוט מהעריסה "זרוע" אל ההגה. אבטחתי את החוט על ידי העברתי אותו דרך החור שקדחתי ופשוט הדבקתי אותו במקום.

הפתרון הטוב יותר לשלב השלישי הוא פשוט לקנות גלגלת גלגלת בקוטר גדול יותר מלכתחילה. שלי בקוטר קצת פחות מ -3 אינץ 'בתוך החריץ ועובד ממש טוב עבור העריסה המסוימת שלי.

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

שלב 19: התקנה סופית

התקנה סופית
התקנה סופית

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

מוּמלָץ: