Cuprins:

Arduino Cradle Rocker: 19 pași (cu imagini)
Arduino Cradle Rocker: 19 pași (cu imagini)

Video: Arduino Cradle Rocker: 19 pași (cu imagini)

Video: Arduino Cradle Rocker: 19 pași (cu imagini)
Video: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, Iulie
Anonim
Image
Image

Îmi pare rău, nu am putut rezista muzicii intense și sugestive pe care mi-a sugerat-o chestia de editare video.

De curând am avut primul meu copil și am avut deja un leagăn de lemn pe care unchiul meu (care este un lemnar minunat) l-a făcut pentru nepotul meu. Nepotul meu a depășit-o de mult, așa că am fost fericit să-l iau și să evit să cheltuiesc TOȚI BANII pe orice leagăn / coș pe care mama bloggerilor l-au lăsat nevasta pe soția mea. Leagănul este un design destul de simplu, practic doi montanți cu șuruburi prin ele care susțin corpul leagănului. Există un cuier detașabil pentru al bloca în poziție.

În câteva săptămâni am constatat că am putea de multe ori să înăbușim agitația ușoară, legănând puțin leagănul până când băiatul nostru s-a așezat. În noaptea în care am aflat acest lucru, am petrecut câteva 10 minute de întindere noaptea târziu, cu brațul întins de sub acoperitoare, legănându-l somnoros, fericit că am găsit o modalitate de a-l liniști fără să mă ridic singur din pat. dimineața am atașat un șnur și un mic carabin, așa că am putut să legăn leagănul fără să trebuiască să-mi întind brațul.

În dimineața de după aceea, am început să mă gândesc la o modalitate de a avea doar un robot care să-l pună pe copil pe mine. Introduceți Arduino …

Provizii

Ok, acesta a fost primul meu proiect Arduino vreodată, așa că am făcut câteva experimente, încercări și erori și sunt sigur că există loc de îmbunătățire în proiectarea mea, dar aici este lista mea de piese: Arduino Uno (13 USD) pentru controlul tuturor kit (10 dolari) pentru conectarea firelor

Motorul pas cu pas (14 USD) Aceasta este cea mai distractivă piesă, deoarece este lucrul care face toată munca. Am început cu un motor cuplu ușor mai mic, dar apoi l-am luat și funcționează destul de bine. Simțiți-vă liber să obțineți unul și mai puternic. Driverele de motor Stepper (10-30 USD) Acest lucru se află între Arduino și motor. Acest lucru specific este capabil să conducă motorul mai liniștit decât alții, așa că am mers cu asta, deoarece motorul va fi la câțiva metri de capul meu (și al fiului meu) în timp ce dormim. Inițial, tocmai am cumpărat un driver TMC2209 pentru ~ 10 USD, dar am ajuns să cumpăr un pachet de 4, deoarece am avut unele dificultăți la început și am vrut să mă asigur că nu am prăjit placa la un moment dat. Am ajuns să ucid de fapt 3 plăci, ceea ce mă aduce la următorul meu articol … Condensatoare! (10 dolari) Într-adevăr aveți nevoie doar de un condensator de 47 uF 50V, așa că această cutie de 240 a fost foarte exagerată. O sursă de alimentare de 36 V (17 dolari) Am cumpărat inițial o sursă de 12 V, apoi am aflat că asta a fost sursa tuturor problemelor mele și am primit una care era mai aproape de tensiunea maximă pe care mi-o putea suporta motorul meu pas cu pas. Dacă utilizați un motor diferit sau un șofer pas cu pas, asigurați-vă că poate gestiona tensiunea (V) și că Amperajul (A) al sursei este cel puțin la fel de mare ca Amperii de vârf trase de motor. 8 dolari) În acest caz se conectează sursa de alimentare. Va trebui să le lipiți cu niște fire pentru a le lipi în panoul dvs. Un pachet mare de jumperi (9 USD), astfel încât să pot pune comenzile oriunde am vrut în cameră.

Butoane (8 USD) pentru pornire / oprire etc.

Un amplificator pentru microfon (11 USD) Oh, nu știați că și acesta a fost activat sunetul?

Unele roți de scripete mici (8 USD) am ajuns să le folosesc, dar ar putea exista alternative mai bune. Mai multe despre asta mai târziu. De asemenea, veți avea nevoie cu siguranță de un fier de lipit și de orice doriți să utilizați pentru a monta motorul. Personal, tocmai am făcut o cutie aspră din 4 bucăți de lemn înșurubate, apoi le-am înșurubat pe o altă bucată de lemn care are aproximativ lățimea piciorului leagănului meu. Deocamdată, doar îl am prins, pentru că nu știu dacă vreau să mărunțesc leagănul unchiului meu.

Pasul 1: Familiarizați-vă cu Pinout-ul dvs. Driver Stepper

Conectați Arduino 5V / GND la placa dvs. de calcul
Conectați Arduino 5V / GND la placa dvs. de calcul

Programul de modelare pe care l-am folosit nu avea această placă de driver exactă, deci va trebui să faceți referire la această imagine. Am aranjat totul în aceeași orientare ca această imagine.

Pasul 2: conectați Arduino 5V / GND la placa dvs

Conectați un fir de la Arduino 5V la șina "+" de pe o parte a panoului dvs. Conectați un fir de la unul dintre dispozitivele Arduino GND la șina "-" de pe aceeași parte a panoului

(ignorați fișierul

Pasul 3: Conectați șinele +/- la VIO / GND

Conectați șinele +/- la VIO / GND
Conectați șinele +/- la VIO / GND

Conectați un fir de la șina "-" la GND în partea din stânga jos a plăcii șoferului pas cu pas. Conectați un fir de la șina "+" la VIO

Pasul 4: Conectați DIR / STEP la pinii digitali de pe Arduino

Conectați DIR / STEP la pinii digitali de pe Arduino
Conectați DIR / STEP la pinii digitali de pe Arduino

Conectați pinii DIR și STEP de pe placa driverului pas cu pas la doi dintre pinii digitali de pe Arduino. Am folosit pinii 2 și respectiv 3, dar nu contează atâta timp cât ai setat pinii în cod mai târziu.

Pasul 5: Să mergem înainte și să adăugăm acel condensator …

Să mergem înainte și să adăugăm acel condensator …
Să mergem înainte și să adăugăm acel condensator …

Am ars 2 plăci de șofer pas cu pas, deoarece nu aveam un condensator, așa că hai să mergem mai departe și să adăugăm condensatorul 47uF 50V la pinii VM / GND de pe placa șoferului. Asigurați-vă că pinul "-" de pe condensator este în pinul GND de pe panou (va exista un "-" pe partea corespunzătoare a condensatorului)

Pasul 6: Și mergeți mai departe și conectați acel GND

Și mergeți înainte și conectați GND
Și mergeți înainte și conectați GND

Pe GND la care tocmai ați adăugat condensatorul, continuați și conectați-l la aceeași șină "-" ca și cealaltă GND.

Pasul 7: Conectați motorul la driver

Conectați motorul la driver
Conectați motorul la driver

Care știft merge de unde va depinde de motorul pe care l-ați cumpărat, dar cel pe care l-am enumerat are schema de cablare pe lista Amazon.

Pentru motorul meu -

Conectați verde și negru la M2B și M2A

Conectați roșu și albastru la M1A și M1B Notă: Dacă din orice motiv motorul dvs. nu are o diagramă, puteți afla cu ușurință ce fire formează un circuit dacă aveți un multimetru. Setați multimetrul la o setare a amplificatorului scăzut și deconectați motorul. Atingeți unul dintre cablurile multimetrului către unul dintre firele motorului, apoi încercați fiecare dintre celelalte fire cu celălalt fir. Dacă obțineți o citire a rezistenței, atunci cele două fire formează 1 circuit, iar celelalte două formează celălalt.

Pasul 8: Conectați EN, MS1 și MS2 la „-”

Conectați EN, MS1 și MS2 la
Conectați EN, MS1 și MS2 la

Nu sunt pe deplin sigur că acest lucru este necesar, dar cred că setează motorul la o setare de microstep mai mică pe driverul TMC2209. Le puteți conecta la șina "-" feroviară cea mai apropiată de ele, deoarece o vom conecta la cealaltă parte mai târziu.

Pasul 9: lipiți un conector de alimentare feminin la două fire

Lipiți un conector de alimentare feminin la două fire
Lipiți un conector de alimentare feminin la două fire

Nu sunt cel mai bun din lume la lipit, așa că va trebui să căutați în altă parte pentru asta, dar eu am făcut-o așa. Am îndoit capetele firelor, astfel încât să se așeze plat de cablurile conectorului, apoi am lipit firul de cablu. Nu aveam nicio substanță termocontractibilă, așa că le-am înfășurat prodigios cu bandă electrică.

Pasul 10: Conectați-vă noul conector femelă lipit

Conectați-vă conectorul feminin nou lipit
Conectați-vă conectorul feminin nou lipit

Vă rugăm să nu conectați încă sursa de alimentare reală. Sârmă roșie la „+”, negru la „-”

Pasul 11: conectați-le la VM / GND

Conectați-le la VM / GND
Conectați-le la VM / GND

Conectați acele șine "+" și "-" la VM și GND de lângă acesta. Cele cu condensatorul pe el.

Pasul 12: Admirați-vă lucrările manuale

Admirați-vă lucrările manuale
Admirați-vă lucrările manuale

Bine, acum aveți motorul și șoferul complet configurate! De aici înainte vom face doar controale. Apropo, mergem înainte:

  • Dacă v-ați deconectat driverul din orice motiv, nu încercați să îl conectați în timp ce alimentarea dvs. de 36V este conectată. Am ucis a treia placă de driver așa.
  • Conectați alimentarea de 36V înainte de a conecta alimentarea Arduino. Nu am prăjit personal un Arduino, dar pe parcurs am văzut mulți avertismente despre asta.

Pasul 13: Opțional - Verificați VREF

TMC2209 are un potențiometru care controlează curentul la motor. Dacă ai același șofer ca și mine, poți citi despre asta aici. Dacă doriți să reglați setarea:

  • Deconectați toată alimentarea și deconectați firele motorului de la șofer.
  • Deconectați firul la pinul EN (enable) de pe driver. Acesta este pinul din colțul din stânga sus.
  • Conectați sursa de alimentare a motorului (cea de 36V)
  • Folosind un multimetru setat pe 20V, atingeți un cablu la o sursă de GND (am folosit un cablu conectat la șina mea "-") și atingeți celălalt cablu la pinul VREF. Vă rugăm să nu atingeți plumbul la nimic altceva, puteți să vă scurtați șoferul dacă faceți acest lucru.
  • Folosiți o șurubelniță mică pentru a regla ușor șurubul potențiometrului. Pentru placa mea, în sens invers acelor de ceasornic = mai multă putere. VREF-ul meu citește personal ~ 0,6V.

Pasul 14: Butoane

Butoane!
Butoane!

Apoi, conectați butoanele astfel. Nu au nevoie de putere.

  • Conectați o șină "-" a panoului de butoane la unul dintre GND-urile Arduino. Puteți, de asemenea, să îl înlănțuiți de pe șina "-" a celuilalt panou, dacă doriți.
  • Conectați câte un știft din fiecare buton la șina "-"
  • Conectați un alt pin al fiecărui buton la un pin digital de pe Arduino.

Am folosit 4 butoane: Motor pornit / oprit

Motorul continuă

Microfon activat

Microfon oprit

Mai multe despre acestea când ajungem la cod, dar am folosit butoane distincte pentru microfon pur și simplu pentru că nu aveam LED-uri care să mă anunțe dacă microfonul este pornit sau oprit, deci având butoane distincte de pornire / oprire îl făcea infailibil.

Pasul 15: Adăugați placa de microfon

Adăugați placa de microfon
Adăugați placa de microfon

Acesta este simplu, iar Adafruit are instrucțiuni bune (și elemente de bază pentru lipit!) Aici.

  • Conectați „-” la un GND
  • Conectați GND pe placa microfon la „-” (puteți conecta direct GND la GND și săriți pasul anterior, într-adevăr)
  • Conectați VCC la puterea de 3,3 V de pe Arduino. Acest lucru este important deoarece această sursă de alimentare este mai puțin „zgomotoasă” decât 5V, rezultând citiri mai bune ale microfonului
  • Conectați-vă la un pin ANALOG IN de pe Arduino. Am folosit A0.

Pasul 16: Acesta ar trebui să fie rezultatul final

Acesta ar trebui să fie rezultatul final!
Acesta ar trebui să fie rezultatul final!
Acesta ar trebui să fie rezultatul final!
Acesta ar trebui să fie rezultatul final!

Totul ar trebui să fie gata acum. Iată o imagine a diagramei finale și a amestecului meu de fire în realitate. Să ne uităm la un cod!

Pasul 17: Cod

Ok hai să ne uităm la cod! Aceasta nu este cea mai curată lucrare a mea, dar îmi face treaba. Am adăugat comentarii pentru a explica totul aici, dar țineți cont de mine. Am folosit Arduino IDE pentru toate acestea (disponibil gratuit pe Windows și Mac).

Setați un număr de roci (leagăne) de făcut.

Rotiți distanța setată pentru 1 leagăn. Swing de un număr stabilit de ori.

Între toate acestea, urmăriți apăsarea butoanelor sau ascultați microfonul pentru a vedea dacă motorul ar trebui să pornească. Va trebui să reglați valorile vitezei, distanței și sensibilității microfonului. Viteza motorului va afecta volumul și cuplul. Cu cât motorul merge mai repede, cu atât este mai tare și cuplul este mai mic. Al meu este în prezent aproape silențios, deci este posibil să-l faci să ruleze fără să scoată prea mult sunet.

#include // biblioteca cu motor pas cu pas "standard"

// # define DEBUG 1 // descommentați acest lucru când doriți să reglați nivelurile microfonului // Setarea butoanelor - acestea corespund unde pinii digitali pe care i-ați conectat la butoane const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Configurare microfon - A0 aici este analogul pentru microfon. Fereastra eșantionului este în milis const int micPin = A0; const int sampleWindow = 1000; eșantion int nesemnat; bool micEnabled = false; microfon dublu Sensibilitate = 0,53; // probabil va trebui să schimbați acest lucru // Pentru mine, în jurul valorii de.5 a fost suficient de bun pentru a nu trage pe mici cooing // dar va declanșa pentru strigăte mici int stepsPerRevolution = 3200; // schimbați acest lucru pentru a se potrivi cu numărul de pași pe rotație pentru motorul dvs. // Motorul meu are 200 de pași / rotație // Dar am setat driverul la 1/16 microstepi // deci 200 * 16 = 3200 … sincer nu am idee dacă acest lucru este modul corect // de a face acest Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 sunt pinii DIR & STEP int stepCount = 0; int motorSpeed = 95; // va trebui să ajustați acest lucru în funcție de greutatea leagănului și bebelușului int numSteps = 90; // Distanța de deplasare a motorului. // Va trebui să reglați acest lucru în funcție de raza roții pe care o atașați // la motor. Aceasta și viteza vor fi probabil încercări și erori. // Notă - viteză mai mare la motoarele pas cu pas = cuplu efectiv mai mic // Dacă nu aveți cuplu suficient, motorul dvs. va sări treptele (nu se mișcă) în vechiul motorButtonValue = HIGH; bool enabled = false; // motor activat? int loopStartValue = 0; int maxRocks = 100; // de câte ori doriți să se balanseze înainte de a opri int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // pentru jurnalul de depanare #endif pinMode (motorEnablePin, INPUT_PULLUP); // Aceasta este o setare pentru ca butoanele să funcționeze fără pin pinMode (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // setează viteza motorului la ceea ce ați specificat anterior} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead citeste doar valorile butoanelor int continueValue = digitalRead (continuePin); // Aceasta detectează apăsarea butonului motorului și îl împiedică să declanșeze mai multe ori pe clic dacă (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Dacă motorul este oprit și microfonul este pornit, ascultați cum plânge copilul dacă (! Activate && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } if (activat) {stepsPerRevolution = stepsPerRevolution * -1; // direcție inversă // Cu configurarea mea este mai eficient să inversați pe // primul leagăn. Puteți pune acest lucru după buclă // dacă nu este cazul dvs. // rotiți motorul distanța specificată mai sus pentru (int i = loopStartValue; i <numSteps; i ++) {// verificați dacă opriți int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {RockCount = 0; // Aceste două linii următoare „salvează” poziția motorului, astfel încât data viitoare când îl porniți // va continua să călătorească ca și când nu l-ați fi oprit. Aceasta previne aruncarea // distanțele de mișcare loopStartValue = i; // salvați poziția stepsPerRevolution = stepsPerRevolution * -1; // menține direcția oldmotorButtonValue = tempmotorButtonValue; pauză; } checkContinue (continueValue); // verifică dacă butonul Continuare a fost apăsat micCheck (); myStepper.step (stepsPerRevolution / 50); // câți pași să faceți pe buclă, // poate fi necesar să reglați acest lucru // asigurați-vă că continuăm distanța completă a buclei dacă bucla s-a terminat // aceasta intră în joc dacă opriți singur motorul și „a salvat” poziție if (i == numSteps - 1) {loopStartValue = 0; }}} întârziere (100); // întrerupeți 100 de milis înainte de a face următoarea rocă. Va trebui să ajustați acest lucru. dacă (activat) checkComplete (); oldmotorButtonValue = motorButtonValue; // aceasta este utilizată pentru prevenirea clicurilor duble} // Acest cod este direct de la Adafruit. getMicReading dublu () {unsigned long startMillis = millis (); unsigned int peakToPeak = 0; // nivelul vârf-la-vârf nesemnat int signalMax = 0; unsigned int signalMin = 1024; while (milis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == LOW) activat = true; eșantion = analogRead (micPin); if (sample signalMax) {signalMax = sample; // salvați doar nivelurile maxime} else if (eșantion = maxRocks) {activate = false; rockCount = 0; // reveniți la pozitia de mijloc

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

myStepper.step (stepsPerRevolution * -1 / 50); // pasul 1/100 al unei revoluții:

}

} }

Pasul 18: Montare și configurare roată

Montare și configurare roată
Montare și configurare roată

Acesta este încă un WIP pentru mine, deoarece, așa cum am spus, nu sunt sigur că vreau să pun șuruburi în leagănul meu.

  • Puneți o clemă pentru a acționa ca un braț care iese din leagăn, astfel încât roata mea să poată trage în linie dreaptă
  • Am înșurubat o cutie brută pentru a pune motorul și am înșurubat-o pe o placă de bază, pe care am prins-o de piciorul leagănului
  • Confecționat o roată de scripete din lemn personalizată cu o gaură pentru a se potrivi în interior cu roata de scripete mică. Am făcut gaura centrală foarte strânsă și tocmai am cioplit în roata scripetei pas cu pas. Am forat o gaură prin roată până la mijloc, astfel încât să pot accesa șurubul de pe roata metalică a fuliei pentru a o strânge pe motorul pas cu pas.
  • A alergat un șir de la „brațul” leagănului la roată. Am asigurat șirul trecându-l prin orificiul pe care l-am forat și doar lipindu-l în poziție.

Cea mai bună soluție pentru a treia etapă este să cumpărați mai întâi o roată de fulie cu diametru mai mare. Al meu are puțin sub 3 în diametru în interiorul canelurii și funcționează foarte bine pentru leagănul meu particular.

Prima mea versiune a folosit un braț în locul unei roți. Nu a funcționat aproape la fel de bine, deoarece forța nu era aplicată într-o direcție consecventă și era, de asemenea, foarte susceptibilă de a fi aruncată dacă poziția de plecare nu era corectă. Folosirea unei roți rezolvă aceste probleme. De asemenea, m-am distrat folosind un sistem de scripete mic, dar am ajuns să nu mai am nevoie, deoarece roata mea mi-a dat un cuplu suficient.

Pasul 19: Configurare finală

Configurare finală
Configurare finală

Montați microfonul aproape de copilul dvs., dar într-un loc în care nu vor lovi niciun fir. Puneți butoanele oriunde doriți, atâta timp cât aveți suficiente fire pentru a rula la destinația finală. De asemenea, ați putea înlocui butoanele cu o configurare wifi pe arduino, dar încă nu am mers atât de adânc. Noroc acolo!

Recomandat: