Mündəricat:

Arduino Cradle Rocker: 19 addım (şəkillərlə birlikdə)
Arduino Cradle Rocker: 19 addım (şəkillərlə birlikdə)

Video: Arduino Cradle Rocker: 19 addım (şəkillərlə birlikdə)

Video: Arduino Cradle Rocker: 19 addım (şəkillərlə birlikdə)
Video: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, Iyul
Anonim
Image
Image

Bağışlayın, video redaktə etdiyim şeyin səsləndirdiyi sıx musiqiyə müqavimət göstərə bilmədim.

Bu yaxınlarda ilk uşağım oldu və artıq dayımın (zəhmli bir ağac emalıçı) qardaşı oğlum üçün hazırladığı taxta beşik vardı. Qardaşım oğlunu çoxdan böyütmüşdü, buna görə də götürüb məmnuniyyətlə anam bloqqerlərin həyat yoldaşımın yellədiyi hər beşik/bassinetə BÜTÜN PUL xərcləməməkdən çəkindim. Beşik olduqca sadə bir dizayndır, əsasən beşik gövdəsini dəstəkləyən boltları olan iki dik. Yerində kilidləmək üçün çıxarıla bilən bir mıx var.

Bir neçə həftə ərzində oğlumuz oturana qədər beşiyi bir az yelləyərək tez -tez yüngül təlaşları yatıra biləcəyimizi gördük. Bunu öyrəndiyimiz gecə, gecələr bir neçə 10 dəqiqə uzandım, qollarım örtüklərin altından uzandı, yuxusuzca onu silkələdim, özümü yataqdan qalxmadan sakitləşdirmək üçün bir yol tapdığım üçün xoşbəxt oldum. Səhər qolumu uzatmadan beşiyi yelləyə biləcəyim üçün bir ip və bir az karabin əlavə etdim.

Bundan sonra səhər, bu uşağı robotlaşdırmaq üçün beyin fırtınasına başladım. Arduinoya daxil olun …

Təchizat

Tamam, bu mənim ilk Arduino layihəm idi, buna görə də bir az sınaq və sınaq və səhv etdim və əminəm ki, dizaynımda təkmilləşdirmə üçün yer var, amma burada mənim hissə siyahım var: hər şeyi idarə etmək üçün Arduino Uno (13 dollar) telləri bağlamaq üçün dəst (10 dollar)

Step motoru (14 dollar) Bu, ən əyləncəli parçadır, çünki bütün işləri görür. Bir az aşağı tork sürücüsü ilə başladım, amma sonra bunu aldım və olduqca yaxşı işləyir. Daha da güclüsünü əldə etməkdən çəkinməyin. Step motor sürücüləri (10-30 dollar) Bu Arduino ilə motor arasında yerləşir. Göründüyü kimi, bu motor mühərriki başqalarından daha sakit idarə edə bilir, buna görə də onunla getdim ki, yatarkən motor mənim (və oğlumun) başından bir neçə fut uzaqda olacaq. Əvvəlcə ~ 10 dollara bir TMC2209 sürücüsü aldım, amma əvvəlcə bir az çətinlik çəkdiyim və bir anda lövhəni qızartmadığımdan əmin olmaq istədiyim üçün 4 paketlik bir paket aldım. Əslində 3 lövhəni öldürdüm ki, bu da məni növbəti maddəmə gətirir … Kondansatörler! (10 dollar) Həqiqətən yalnız 1 47 uF 50V kondansatörə ehtiyacınız var, buna görə də bu 240 qutu həddindən artıq çox idi. 36V enerji təchizatı (17 dollar) Əvvəlcə cılız bir 12V təchizatı aldım, sonra bütün çətinliklərimin mənbəyi olduğunu öyrəndim. və step motorumun idarə edə biləcəyi maksimum gərginliyə yaxın olan birini aldım. Fərqli bir motor və ya step sürücüsü istifadə edirsinizsə, onun gərginliyi (V) idarə edə biləcəyinə və təchizatın Amperajının (A) ən azı motorun çəkdiyi pik Amper qədər yüksək olduğuna əmin olun. $ 8) Enerji təchizatının daxil olduğu budur. Çörək taxtanıza yapışmaq üçün bunları bəzi tellərə lehimləməlisiniz. Böyük bir atlama dəsti (9 dollar) ki, idarəetmələri otaqda istədiyim yerə qoya bilərəm.

Açmaq/söndürmək üçün düymələr (8 dollar) və s

Mikrofon gücləndiricisi ($ 11) Oh, yall bunun da səsin aktivləşdirildiyini bilmirdi?

Bəzi kiçik kasnaq təkərləri (8 dollar) bunları istifadə edərək bitirdim, amma daha yaxşı alternativlər ola bilər. Bu barədə daha sonra, mütləq bir lehimləmə dəmirinə və motoru quraşdırmaq üçün istifadə etmək istədiyiniz hər şeyə ehtiyacınız olacaq. Şəxsən mən 4 taxta parçadan kobud bir qutu düzəltdim və sonra təxminən beşiyimin ayağının enində olan başqa bir taxta parçasına vidaladım. Hələlik dayağımın beşiyinə toy etmək istəməyimi bilmirəm, çünki onu bağladım.

Addım 1: Stepper Sürücü Pinoutunuzla tanış olun

Arduino 5V/GND -ni Breadboard -a bağlayın
Arduino 5V/GND -ni Breadboard -a bağlayın

İstifadə etdiyim modelləşdirmə proqramında bu dəqiq sürücü lövhəsi yox idi, buna görə də bu görüntüyə istinad etməlisiniz. Hər şeyi bu görüntü ilə eyni istiqamətdə qurdum.

Addım 2: Arduino 5V/GND -ni Breadboard -a bağlayın

Arduino 5V-dən bir çörək taxtanızın bir tərəfindəki "+" relsinə bir tel bağlayın Arduino GND-dən birindən çörək taxtasının eyni tərəfindəki "-" rayına bir tel bağlayın.

(nəzərdən qaçırmayın

Addım 3: +/- Rayları VIO/GND-ə qoşun

+/- Rayları VIO/GND-ə qoşun
+/- Rayları VIO/GND-ə qoşun

Step sürücüsü lövhəsinin sol alt hissəsindəki "-" relsindən GND-yə tel bağlayın. "+" Relsindən VIO-ya bir tel bağlayın.

Addım 4: DIR/STEP -i Arduino üzərindəki Rəqəmsal Pinlərə qoşun

DIR/STEP -i Arduino -dakı rəqəmsal pinlərə qoşun
DIR/STEP -i Arduino -dakı rəqəmsal pinlərə qoşun

DIR və STEP pinlərini step sürücü kartından Arduino üzərindəki iki rəqəmsal pinə bağlayın. Mən sırasıyla 2 və 3 sancaqlar istifadə etdim, amma sonradan kodunuza sancaqlar qoyduğunuz müddətdə heç bir əhəmiyyəti yoxdur.

Addım 5: İrəli gedək və o kondansatörü əlavə edək …

İrəli gedək və o kondansatörü əlavə edək …
İrəli gedək və o kondansatörü əlavə edək …

Yerində bir kondansatör olmadığından 2 pilləli sürücü lövhəsini yandırdım, buna görə də davam edək və sürücü lövhəsindəki VM/GND pinlərinə 47uF 50V kondansatör əlavə edək. Kondansatörün "-" pininin çörək taxtasındakı GND pinində olduğundan əmin olun (kondansatörün müvafiq tərəfində "-" olacaq)

Addım 6: İrəli gedin və GND -ni bağlayın

İrəli gedin və GND -ni bağlayın
İrəli gedin və GND -ni bağlayın

Kondansatörü yeni əlavə etdiyiniz GND-də, davam edin və digər GND ilə eyni "-" rayına qoşun.

Addım 7: Motoru Sürücüyə qoşun

Motoru Sürücüyə qoşun
Motoru Sürücüyə qoşun

Hansı pin hara gedəcək, satın aldığınız motordan asılı olacaq, amma sadaladığımda amazon siyahısındakı əlaqə diaqramı var.

Motorum üçün -

Yaşıl və Qara rəngləri M2B və M2A -ya qoşun

Qırmızı və Göyü M1A və M1B -ə qoşun Qeyd: Hər hansı bir səbəbdən motorunuzun diaqramı yoxdursa, multimetriniz varsa hansı tellərin bir dövrə meydana gətirdiyini asanlıqla anlaya bilərsiniz. Multimetrinizi aşağı amperə qoyun və motorunuzu ayırın. Mühərrik tellərindən birinə gedən multimetr uclarından birinə toxunun və digər tellərin hər birini digər qurğuşunla sınayın. Bir müqavimət göstəricisi alsanız, o iki tel 1 dövrə, digər ikisi isə digərini təşkil edir.

Addım 8: EN, MS1 və MS2-ni "-" -ə qoşun

EN, MS1 və MS2 -ni qoşun
EN, MS1 və MS2 -ni qoşun

Bunun lazım olduğuna tam əmin deyiləm, amma inanıram ki, bu motoru TMC2209 sürücüsündə daha kiçik bir mikro addım səviyyəsinə qoyur. Onları ən yaxın olan "-" relsinə bağlaya bilərsiniz, çünki biz bunu digər tərəfə bağlayacağıq.

Addım 9: Bir Qadın Güc Konnektorunu İki Telə Lehimləyin

Bir Qadın Güc Konnektorunu İki Telə Lehimləyin
Bir Qadın Güc Konnektorunu İki Telə Lehimləyin

Mən lehimləmə sahəsində dünyanın ən yaxşısı deyiləm, buna görə başqa yerdə axtarmalısan, amma mən də öz işimi belə etmişəm. Tellərin uclarını bağlayıcı tellərə düz bir şəkildə qoyacaq şəkildə əydim, sonra teli qurğuşuna lehimlədim. Şnurdan büzülən bir şeyim yox idi, buna görə də onları möhtəşəm şəkildə elektrik lenti ilə bükdüm.

Addım 10: Yeni Lehimlənmiş Qadın Bağlayıcınızı qoşun

Yeni Lehimlənmiş Qadın Bağlayıcınızı Bağlayın
Yeni Lehimlənmiş Qadın Bağlayıcınızı Bağlayın

Zəhmət olmasa, hələ də faktiki enerji təchizatını qoşmayın. Qırmızı tel "+", qara "-"

Addım 11: Onları VM/GND -ə qoşun

Bunları VM/GND -ə qoşun
Bunları VM/GND -ə qoşun

Bu "+" və "-" raylarını VM-ə və yanındakı GND-yə bağlayın. Üzərində kondansatör olanları.

Addım 12: Əl işlərinizə heyran olun

Əl işlərinizə heyran olun
Əl işlərinizə heyran olun

Yaxşı, indi motoru və sürücünü tam hazır vəziyyətə gətirdiniz! Buradan etibarən yalnız nəzarət edəcəyik. Yeri gəlmişkən, irəli:

  • Sürücünüzü hər hansı bir səbəbdən ayırdınızsa, 36V gücünüzə qoşulduqda onu bağlamağa çalışmayın. 3 -cü sürücü lövhəmi belə öldürdüm.
  • Arduino gücünü bağlamadan əvvəl 36V gücə qoşun. Mən şəxsən bir Arduino qovurmadım, amma yol boyu bu barədə bir çox xəbərdarlıq gördüm.

Addım 13: İsteğe bağlı - VREF -ni yoxlayın

TMC2209, mühərrikə olan cərəyanı idarə edən bir potansiyometrə malikdir. Mənim etdiyim sürücüyə sahibsinizsə, burada oxuya bilərsiniz. Ayarı tənzimləmək istəyirsinizsə:

  • Bütün elektrik enerjisini ayırın və motor tellərini sürücüdən ayırın.
  • Sürücüdəki EN (aktivləşdirmə) pinindəki telləri ayırın. Sol üst küncdəki pin budur.
  • Motorunuzun enerji təchizatını qoşun (36V)
  • 20V-də bir multimetr qurğusundan istifadə edərək GND mənbəyinə bir telə ("-" relsimə bir tel bağladım) və digər ucuna VREF pininə toxunun. Zəhmət olmasa, başqa bir şeyə aparıcıya toxunmayın, belə etsəniz sürücünüzü qısalda bilərsiniz.
  • Kiçik bir tornavida istifadə edərək potansiyometr vidasını yumşaq bir şəkildə tənzimləyin. Lövhəm üçün saat yönünün əksinə = daha çox güc. Mənim VREF şəxsən ~ 0.6V oxuyur.

Addım 14: Düymələr

Düymələr!
Düymələr!

Sonra düymələrinizi bu şəkildə bağlayın. Onların gücə ehtiyacı yoxdur.

  • Düyməli çörək lövhənizin "-" rayını Arduinonun GND-lərindən birinə bağlayın. İstəyirsinizsə, onu digər çörək taxtasının "-" relsindən də bağlaya bilərsiniz.
  • Hər düymənin bir pinini "-" rayına bağlayın
  • Hər düymənin başqa bir pinini Arduino üzərindəki rəqəmsal bir pinə bağlayın.

4 düymə istifadə etdim: Motoru aç/söndür

Motor davam edir

Mikrofon aktivdir

Mikrofon söndürüldü

Kodu əldə etdikdə bunlar haqqında daha çox məlumat verdim, ancaq mikrofonun açılıb -sönmədiyini bildirmək üçün LED -lərim olmadığı üçün fərqli mikrofon düymələrindən istifadə etdim, buna görə fərqli açma/söndürmə düymələrinə malik olmaq onu ağlasığmaz hala gətirdi.

Addım 15: Mikrofon Kartını əlavə edin

Mikrofon lövhəsini əlavə edin
Mikrofon lövhəsini əlavə edin

Bu sadədir və Adafruit burada yaxşı təlimatlara malikdir (və lehimləmə əsasları!).

  • GND-ə "-" qoşun
  • Mikrofon lövhəsindəki GND-ni "-" ilə bağlayın (GND-ni birbaşa GND-yə bağlaya və əvvəlki addımı ata bilərsiniz, həqiqətən)
  • VCC -ni Arduino -dakı 3.3V gücünə qoşun. Bu vacibdir, çünki bu enerji təchizatı 5V -dən daha az "səs -küylü" olduğundan mikrofonun daha yaxşı oxunması ilə nəticələnir
  • Arduino üzərindəki ANALOG IN pininə qoşun. A0 istifadə etdim.

Addım 16: Bu son nəticə olmalıdır

Bu son nəticə olmalıdır!
Bu son nəticə olmalıdır!
Bu son nəticə olmalıdır!
Bu son nəticə olmalıdır!

İndi hər şey hazır olmalıdır. İşdə son diaqramın bir şəkli və əslində tellərin qarışması. Bəzi kodlara baxaq!

Addım 17: Kod

Yaxşı koda baxaq! Bu, mənim ən təmiz işim deyil, amma işi tamamlayır. Buradakı hər şeyi izah etmək üçün şərhlər əlavə etdim, amma səbr edin. Bunların hamısı üçün Arduino IDE -dən istifadə etdim (Windows və Mac -da pulsuz olaraq mövcuddur) Sükut budur: Dönmək üçün bir motor sürəti və məsafə təyin edin.

Etmək üçün bir sıra qayalar (yelləncəklər) təyin edin.

1 yelləncək üçün müəyyən edilmiş məsafəni çevirin. Müəyyən bir neçə dəfə yelləyin.

Bütün bunlar arasında, motorun açılıb -açılmayacağını görmək üçün düymə basmalarını izləyin və ya mikrofonu dinləyin. Sürəti, məsafəni və mikrofonun həssaslıq dəyərlərini tənzimləməli olacaqsınız. Motor sürəti səs və torka təsir edəcək. Mühərrik nə qədər sürətlə gedirsə, o qədər güclü olur və torku da azaldır. Mina hazırda demək olar ki, səssizdir, buna görə çox səs çıxarmadan onu işə salmaq mümkündür.

#include // "standart" step motor kitabxanası

//#DEBUG 1 müəyyən edin // mikrofon səviyyələrini tənzimləmək istədiyiniz zaman bunu qeyd etməyin // Düymə qurğusu - bunlar rəqəmsal sancaqların const int motorEnablePin = 10 düymələrinə bağladığınız yerə uyğundur; const int ContinuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Mikrofon qurğusu - A0 burada mikrofon üçün analoqdur. Nümunə pəncərəsi millis const int micPin = A0; const int sampleWindow = 1000; imzasız int nümunəsi; bool micEnabled = yanlış; ikiqat mikrofon Həssaslıq = 0.53; // yəqin ki, bunu dəyişməlisiniz // Mənim üçün.5 ətrafında kiçik cooingə atəş etməmək üçün kifayət qədər yaxşı idi // lakin kiçik addımlar üçün atəş açar int stepsPerRevolution = 3200; // bunu motorunuz üçün bir inqilab başına düşən addım sayına uyğun olaraq dəyişdirin // Motorum 200 addım/inqilabdır // Amma sürücünü 1/16 mikrosteps olaraq təyin etdim // buna görə də 200*16 = 3200 … vicdanla bunun heç bir fikri yoxdur bunu etmək üçün düzgün yoldur // Step Step myStepper (stepsPerRevolution, 2, 3); // 2 & 3 DIR & STEP pinləridir int stepCount = 0; int motor Sürəti = 95; // bunu beşiyinizə və körpə çəkinizə görə tənzimləməlisiniz int numSteps = 90; // Motorun hərəkət edəcəyi məsafə. // Bunu motorunuza qoşduğunuz təkərin radiusuna // uyğun olaraq tənzimləməlisiniz. Bu və sürət çox güman ki, sınaq və səhv olacaq. // Qeyd - pilləli mühərriklərdə daha yüksək sürət = daha aşağı effektiv tork // Əgər kifayət qədər fırlanma anınız yoxdursa, motorunuz addımları atlayacaq (hərəkət etməyəcək) int oldmotorButtonValue = HIGH; bool effektiv = yalan; // motor aktivdir? int loopStartValue = 0; int maxRocks = 100; // int rockCount = 0 sönməzdən əvvəl neçə dəfə çalmasını istəyirsən; void setup () {#ifdef DEBUG Serial.begin (9600); // ayıklama girişi üçün #endif pinMode (motorEnablePin, INPUT_PULLUP); // Bu düymələrin güc pinMode olmadan işləməsi üçün bir parametrdir (ContinPin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motor Sürəti); // motor sürətini əvvəllər göstərdiyiniz kimi təyin edir} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead yalnız düymənin dəyərlərini oxuyur int ContinValue = digitalRead (ContinPin); // Bu, motor düyməsini basmasını aşkar edir və (motorButtonValue == YÜKSEK && oldmotorButtonValue == DÜŞÜK) {effektiv =! Aktivdirsə, klik başına bir dəfədən çox atəş açmasının qarşısını alır; } micCheck (); // Motor sönərsə və mikrofon açıqdırsa, (! Effektiv && micEnabled) {if (getMicReading ()> = micSensitivity) effektiv = doğru olduqda körpənin ağlamasına qulaq asın; } əgər (aktivdir) {stepsPerRevolution = stepsPerRevolution * -1; // tərs istiqamət // qurduğum zaman // ilk yelləncəyi geri çevirmək daha təsirli olur. Bunu döngədən sonra qoya bilərsiniz // əgər sizinki belə deyilsə // motoru yuxarıda göstərilən məsafəni (int i = loopStartValue; i <numSteps; i ++) {// söndürməyi yoxlayın int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Bu növbəti iki sətir motorun mövqeyini "saxlayır", belə ki, növbəti dəfə açdığınızda // sanki söndürməmiş kimi səyahətə davam edəcək. Bu atılmasının qarşısını alır // hərəkət məsafələriniz loopStartValue = i; // mövqeyi saxla stepsPerRevolution = stepsPerRevolution * -1; // istiqamətini saxlamaq oldmotorButtonValue = tempmotorButtonValue; fasilə; } checkContinue (ContinueValue); // davam düyməsinə basıldığını yoxlayın micCheck (); myStepper.step (stepsPerRevolution / 50); // bir döngə üçün neçə addım atmaq olar, // bunu tənzimləməyiniz lazım ola bilər // döngə bitərsə tam döngə məsafəsinə davam etdiyimizdən əmin olun // motoru özünüz söndürsəniz bu işə düşür və mövqe if (i == numSteps - 1) {loopStartValue = 0; }}} gecikmə (100); // növbəti roku etməzdən əvvəl 100 milis ara verin. Bunu tənzimləməlisiniz. if (effektiv) checkComplete (); oldmotorButtonValue = motorButtonValue; // bu ikiqat kliklərin qarşısını almaq üçün istifadə olunur} // Bu kod birbaşa Adafruit -dəndir. ikiqat getMicReading () {işarəsiz uzun startMillis = millis (); işarəsiz int pikToPeak = 0; // zirvədən zirvəyə işarəsiz int signalMax = 0; işarəsiz int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); əgər (digitalRead (motorEnablePin) == LOW) effektiv = doğru; nümunə = analogRead (micPin); if (nümunə signalMax) {signalMax = nümunə; // yalnız maksimum səviyyələri saxla} else if (nümunə = maxRocks) {effektiv = yanlış; rockCount = 0; // orta mövqeyə qayıdın

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

myStepper.step (stepsPerRevolution * -1 / 50); // inqilabın 1/100 addımı:

}

} }

Addım 18: Montaj və Təkər Quraşdırması

Montaj və Təkər Quraşdırması
Montaj və Təkər Quraşdırması

Bu mənim üçün hələ də bir WIP -dir, çünki dediyim kimi hələ beşiyimə vintlər taxmaq istəmədiyimə əmin deyiləm.

  • Beşikdən çıxan bir qol kimi hərəkət etmək üçün bir sıxac qoyun ki, təkərim düz bir xətt çəksin
  • Motoru qoymaq üçün xam bir qutu vidaladım və onu beşik ayağına bağladığım bir lövhəyə vidaladım.
  • İçərisindəki kiçik pilləli kasnak çarxına uyğun bir çuxur olan xüsusi bir taxta kasnaq çarxı hazırladı. Orta çuxuru çox sıxdım və yalnız addım kasnağının çarxına vurdum. Təkərdən ortasına qədər bir delik açdım ki, metal kasnağın təkərindəki vidaya girib step motoruna bərkidim.
  • Beşik "qolundan" sükana qədər bir tel keçirdi. Qazdığım çuxurdan keçirərək yerində bantlayaraq ipi təmin etdim.

Üçüncü addıma daha yaxşı bir həll, ilk növbədə daha böyük bir diametrli kasnak təkəri almaqdır. Mənimki, yivin içərisində 3 diametrindən bir qədər aşağıdır və xüsusi beşiyim üçün həqiqətən yaxşı işləyir.

İlk versiyam təkər əvəzinə qol istifadə etdi. Güc ardıcıl bir istiqamətdə tətbiq olunmadığı üçün yaxşı işləmədi və başlanğıc mövqeyi düzgün olmadıqda atılmağa da həssas idi. Təkərdən istifadə etmək bu problemləri həll edir. Kiçik bir kasnaq sistemi ilə də əyləndim, amma ehtiyacım olmadı, çünki təkərim mənə kifayət qədər fırlanma anı verdi.

Addım 19: Son Quraşdırma

Son Quraşdırma
Son Quraşdırma

Mikrofonu uşağınızın yanına yaxınlaşdırın, ancaq heç bir telə dəyməyəcəyi bir yerə qoyun. Son nöqtəyə çatmaq üçün kifayət qədər teliniz olduğu müddətdə düymələri istədiyiniz yerə qoyun. Düymələri arduino üzərindəki wifi qurğusu ilə əvəz edə bilərsiniz, amma hələ o qədər dərinə getməmişəm. Uğurlar orda!

Tövsiyə: