Sadržaj:

Arduino Cradle Rocker: 19 koraka (sa slikama)
Arduino Cradle Rocker: 19 koraka (sa slikama)

Video: Arduino Cradle Rocker: 19 koraka (sa slikama)

Video: Arduino Cradle Rocker: 19 koraka (sa slikama)
Video: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, Juli
Anonim
Image
Image

Žao mi je, nisam mogao odoljeti truloj intenzivnoj muzici koju mi je predložila stvar za uređivanje videa.

Nedavno sam dobio prvo dijete i već sam imao drvenu kolijevku koju je moj ujak (koji je sjajan drvosječa) napravio za svog nećaka. Moj nećak je to već odavno prerastao, pa sam bio sretan što sam to uzeo i izbjegao potrošiti SVI NOVAC na bilo koju kolijevku/kolijevku koju su mamice blogeri naterale da mi se supruga obasipa. Nosač je prilično jednostavan dizajn, u osnovi dva stupa sa vijcima kroz njih koji podržavaju tijelo postolja. Postoji uklonjivi klin koji ga zaključava na mjestu.

U roku od nekoliko tjedana otkrili smo da često možemo ugušiti laganu nervozu tako što ćemo malo ljuljati kolijevku dok se naš dječak ne smiri. Noć kad smo to saznali proveo sam nekoliko kašnjenja u trajanju od 10 minuta kasno noću, ispruživši ruku ispod pokrivača, pospano ga ljuljajući, sretan što sam pronašao način da ga umirim, a da i sam ne ustanem iz kreveta. ujutro sam pričvrstio uzicu i mali karabin kako bih mogao ljuljati kolijevku, a da ne moram ispružiti ruku.

Jutro nakon toga, počeo sam razmišljati o načinu na koji bih imao takvog klinca za robota. Uđite u Arduino…

Supplies

U redu, ovo je bio moj prvi Arduino projekt ikada, pa sam napravio neke eksperimente i pokušaje i greške, i siguran sam da ima prostora za poboljšanja u mom dizajnu, ali evo moje liste dijelova: Arduino Uno (13 USD) za kontrolu svega komplet (10 USD) za povezivanje žica

Koračni motor (14 USD) Ovo je najzabavniji komad, jer on obavlja sve poslove. Počeo sam s nešto manjim okretnim momentom, ali onda sam nabavio ovaj i radi prilično dobro. Slobodno nabavite još moćniji. Vozači koračnih motora (10-30 USD) Ovo se nalazi između Arduina i motora. Ovaj specifični motor očigledno je u stanju voziti motor tiše od nekih drugih, pa sam to i učinio jer će motor biti nekoliko stopa od moje (i sinovljeve) glave dok spavamo. Prvo sam kupio jedan upravljački program TMC2209 za ~ 10 USD, ali sam na kraju kupio paket od 4 jer sam u početku imao nekih poteškoća i htio sam se uvjeriti da u nekom trenutku nisam ispržio ploču. Na kraju sam zapravo ubio 3 ploče, što me dovodi do moje sljedeće stavke … Kondenzatori! (10 USD) Zaista vam je potreban samo 1 47 uF 50V kondenzator, pa je ova kutija od 240 bila pretjerana. Napajanje od 36 V (17 USD) Prvobitno sam kupio maleno napajanje od 12 V, a zatim sam saznao da je to izvor svih mojih problema i dobio jedan koji je bio bliži maksimalnom naponu koji je moj koračni motor mogao podnijeti. Ako koristite drugi motor ili pokretač koraka, pobrinite se da on može podnijeti napon (V) i da je amperaža (A) napajanja barem toliko visoka kao maksimalna ampera koja vuče motor. 8 USD) Ovo je izvor napajanja. Morat ćete ih lemiti na neke žice da se zalijepe u vašu matičnu ploču. Veliki paket kratkospojnika (9 USD) kako bih mogao staviti kontrole gdje god želim u prostoriju.

Dugmad (8 USD) za uključivanje/isključivanje itd

Pojačalo za mikrofon (11 USD) Oh, svi niste znali da je i ovo zvučno aktivirano?

Neke male kotače s remenicama (8 USD) završio sam koristeći ove, ali možda postoje bolje alternative. Više o tome kasnije. Također će vam definitivno trebati lemilica i sve što želite koristiti za montažu motora. Ja sam lično upravo napravio grubu kutiju od 4 spojena komada drveta, a zatim sam ih pričvrstio na drugi komad drveta koji je otprilike širine noge moje kolijevke. Za sada ga samo pričvršćujem jer ne znam želim li pokvariti ujakovu kolijevku.

Korak 1: Upoznajte se sa ispisom upravljačkog programa koraka

Spojite Arduino 5V/GND na svoju pločicu
Spojite Arduino 5V/GND na svoju pločicu

Program za modeliranje koji sam koristio nije imao tačnu ploču upravljačkog programa, pa ćete morati referencirati ovu sliku. Sve sam uredio u istoj orijentaciji kao ova slika.

Korak 2: Spojite Arduino 5V/GND na vašu matičnu ploču

Spojite žicu s Arduino 5V na "+" šinu s jedne strane vaše matične ploče. Spojite žicu s jedne od Arduino GND-ova na "-" šinu s iste strane matične ploče.

(zanemarite

Korak 3: Povežite +/- Rails na VIO/GND

Spojite +/- Rails na VIO/GND
Spojite +/- Rails na VIO/GND

Spojite žicu sa "-" šine na GND u donjem lijevom kutu ploče koračnog vozača. Spojite žicu sa "+" šine na VIO

Korak 4: Spojite DIR/STEP na digitalne pinove na Arduinu

Spojite DIR/STEP na digitalne pinove na Arduinu
Spojite DIR/STEP na digitalne pinove na Arduinu

Spojite DIR i STEP pinove s ploče upravljačkog programa koraka na dva digitalna pina na Arduinu. Koristio sam pinove 2 i 3, ali nije važno sve dok kasnije postavite pinove u svoj kod.

Korak 5: Idemo naprijed i dodajte taj kondenzator …

Idemo naprijed i dodajmo taj kondenzator …
Idemo naprijed i dodajmo taj kondenzator …

Izgorio sam 2 koračne upravljačke ploče jer nisam imao kondenzator, pa idemo dalje i dodajmo kondenzator od 47uF 50V na VM/GND pinove na upravljačkoj ploči. Uvjerite se da je pin "-" na kondenzatoru u GND pinu na matičnoj ploči (na odgovarajućoj strani kondenzatora bit će "-")

Korak 6: Idite naprijed i povežite taj GND

Idite naprijed i povežite taj GND
Idite naprijed i povežite taj GND

Na GND-u kojem ste upravo dodali kondenzator, spojite ga na istu "-" šinu kao i drugi GND.

Korak 7: Priključite motor na upravljački program

Priključite motor na upravljački program
Priključite motor na upravljački program

Koji pin ide gdje će ovisiti o motoru koji ste kupili, ali onaj koji sam naveo ima dijagram ožičenja na popisu Amazon.

Za moj motor -

Povežite zeleno i crno na M2B i M2A

Spojite crveno i plavo na M1A & M1BN Napomena: Ako iz bilo kojeg razloga vaš motor nema dijagram, lako možete otkriti koje žice tvore krug ako imate multimetar. Postavite multimetar na nisko pojačalo i isključite motor. Dodirnite jednu od žica multimetra do jedne od žica motora, a zatim isprobajte svaku drugu žicu s drugom žicom. Ako dobijete očitanje otpora, tada te dvije žice tvore 1 krug, a ostale dvije tvore drugu.

Korak 8: Povežite EN, MS1 i MS2 na "-"

Povežite EN, MS1 i MS2 na
Povežite EN, MS1 i MS2 na

Nisam sasvim siguran da je to potrebno, ali vjerujem da motor postavlja na manju postavku mikrokoraka na upravljačkom programu TMC2209. Možete ih spojiti na šinu "-" koja im je najbliža, jer ćemo je kasnije spojiti na drugu stranu.

Korak 9: Lemite ženski priključak za napajanje na dvije žice

Lemite ženski priključak za napajanje na dvije žice
Lemite ženski priključak za napajanje na dvije žice

Nisam najbolji na svijetu u lemljenju, pa ćete to morati potražiti na drugom mjestu, ali ja sam svoje uradio tako. Savio sam krajeve žica tako da leže ravno uz kabele konektora, a zatim sam lemio žicu na elektrodu. Nisam imao nikakve termoskupljajuće stvari za kablove, pa sam ih jednostavno obmotao električnom trakom.

Korak 10: Spojite svoj novo lemljeni ženski konektor

Spojite svoj novo lemljeni ženski konektor
Spojite svoj novo lemljeni ženski konektor

Molimo vas da još ne priključujete svoje stvarno napajanje. Crvena žica na "+", crna na "-"

Korak 11: Spojite ih na VM/GND

Spojite ih na VM/GND
Spojite ih na VM/GND

Spojite te "+" i "-" šine na VM i GND pored njega. Oni sa kondenzatorom na sebi.

Korak 12: Divite se svom ručnom radu

Divite se svom ručnom radu
Divite se svom ručnom radu

U redu, sada ste motor i vozač potpuno namješteni! Od sada ćemo samo vršiti kontrole. Usput, napred:

  • Ako ste iz bilo kojeg razloga isključili upravljački program, nemojte ga pokušavati spojiti dok je napajanje na 36V priključeno. Ubio sam svoju treću ploču vozača tako.
  • Uključite napajanje od 36 V prije nego što priključite Arduino napajanje. Nisam lično pržio Arduino, ali usput sam vidio mnogo upozorenja o tome.

Korak 13: Izborno - provjerite svoj VREF

TMC2209 ima potenciometar koji kontrolira struju motora. Ako imate isti vozač kao ja, o tome možete pročitati ovdje. Ako želite prilagoditi postavku:

  • Isključite sve napajanje i odvojite žice motora od upravljačkog programa.
  • Odspojite žicu s EN (omogućavajućim) pinom na upravljačkom programu. Ovo je igla u gornjem lijevom kutu.
  • Priključite napajanje motora (36V)
  • Koristeći multimetar postavljen na 20V, dodirnite jedan kabel do izvora GND (koristio sam žicu spojenu na moju "-" šinu), a drugi dotaknite do VREF pina. Molimo vas da ništa ne dirate u trag. U tom slučaju možete kratiti vozača.
  • Malim odvijačem lagano namjestite vijak potenciometra. Za moju ploču, suprotno od kazaljke na satu = veća snaga. Moj VREF lično čita ~ 0.6V.

Korak 14: Dugmad

Dugmad!
Dugmad!

Sljedeće, povežite svoje tipke na takav način. Ne treba im snaga.

  • Spojite "-" šinu ploče s gumbima na jedan od GND-ova Arduina. Ako želite, možete ga i odvojiti od šine druge ploče.
  • Spojite jedan pin svakog dugmeta na šinu "-"
  • Spojite još jedan pin svakog dugmeta na digitalni pin na Arduinu.

Koristio sam 4 dugmeta: Uključivanje/isključivanje motora

Motor se nastavlja

Mikrofon uključen

Mikrofon isključen

Više o ovome kad dođemo do koda, ali koristio sam različite tipke za mikrofon jednostavno zato što nisam imao LED diode koje bi me obavještavale je li mikrofon uključen ili isključen, tako da je to što sam imao različite tipke za uključivanje/isključivanje bilo sigurnije.

Korak 15: Dodajte ploču za mikrofon

Dodajte ploču za mikrofon
Dodajte ploču za mikrofon

Ovaj je jednostavan, a Adafruit ovdje ima dobre upute (i osnove lemljenja!).

  • Spojite "-" na GND
  • Spojite GND na mikrofonskoj ploči na "-" (mogli biste direktno spojiti GND na GND i preskočiti prethodni korak, zaista)
  • Priključite VCC na napajanje od 3,3 V na Arduinu. Ovo je važno jer je ovo napajanje manje "bučno" od 5V, što rezultira boljim očitanjem mikrofona
  • Spojite OUT na ANALOG IN pin na Arduinu. Koristio sam A0.

Korak 16: Ovo bi trebao biti konačni rezultat

Ovo bi trebao biti konačni rezultat!
Ovo bi trebao biti konačni rezultat!
Ovo bi trebao biti konačni rezultat!
Ovo bi trebao biti konačni rezultat!

Sada bi sve trebalo biti spremno. Evo slike konačnog dijagrama i moje zbrke žica u stvarnosti. Pogledajmo neki kod!

Korak 17: Kodirajte

U redu, pogledajmo kod! Ovo nije moj najčišći posao, ali posao se završava. Dodao sam komentare da objasnim sve ovdje, ali podnesite me. Koristio sam Arduino IDE za sve ovo (besplatno dostupno na Windowsima i Mac -ima) Suština je sljedeća: Postavite brzinu motora i udaljenost za okretanje.

Odredite brojne stijene (ljuljačke) koje ćete učiniti.

Okrenite postavljenu udaljenost za 1 zamah. Zamahni određeni broj puta.

Između svega toga, pazite na pritiske tipki ili slušajte mikrofon da vidite da li bi se motor trebao uključiti. Morat ćete prilagoditi brzinu, udaljenost i osjetljivost mikrofona. Brzina motora će utjecati na glasnoću i okretni moment. Što motor brže ide, to je glasniji i manji obrtni moment dobijate. Moj je trenutno gotovo tih, pa ga je moguće pokrenuti bez stvaranja puno zvuka.

#include // "standardna" biblioteka koračnih motora

//#definirajte DEBUG 1 // raskomentirajte ovo ako želite prilagoditi razine mikrofona // Postavke gumba - oni odgovaraju mjestima gdje digitalni pinovi koje ste spojili na gumbe predstavljaju int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Postavljanje mikrofona - A0 je analogni ulaz za mikrofon. Uzorak prozora je u millis const int micPin = A0; const int sampleWindow = 1000; nepotpisani int uzorak; bool micEnabled = false; dvostruki mikrofonOsjetljivost = 0,53; // ovo ćete vjerojatno morati promijeniti // Za mene je oko.5 bilo dovoljno dobro da ne puca pri malom gugutanju // ali će se aktivirati za male krikove int stepsPerRevolution = 3200; // promijenite ovo tako da odgovara broju koraka po okretu za vaš motor // Moj motor ima 200 koraka/okretaj // Ali ja sam postavio upravljački program na 1/16 mikrokoraka // pa je 200*16 = 3200 … iskreno nemam pojma je li ovo je pravilan način // da to učinite Stepper myStepper (stepsPerRevolution, 2, 3); // 2 i 3 su DIR & STEP pinovi int stepCount = 0; int motorSpeed = 95; // ovo ćete morati prilagoditi prema težini kolijevke i bebe int numSteps = 90; // Udaljenost koju će motor premjestiti. // Morat ćete to prilagoditi na osnovu radijusa kotača koji pričvrstite // na vaš motor. Ovo i brzina će vjerovatno biti pokušaj i greška. // Napomena - veća brzina koračnih motora = manji efektivni moment // Ako nemate dovoljno zakretnog momenta, vaš motor će preskočiti korake (ne pomaknuti se) int oldmotorButtonValue = HIGH; bool omogućen = false; // motor uključen? int loopStartValue = 0; int maxRocks = 100; // koliko puta želite da se ljulja prije isključivanja int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // za evidentiranje grešaka #endif pinMode (motorEnablePin, INPUT_PULLUP); // Ovo je postavka za rad gumba bez napajanja pinMode (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // postavlja brzinu motora na ono što ste ranije naveli} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead samo čita vrijednosti gumba int continueValue = digitalRead (continuePin); // Ovo otkriva pritisak na tipku motora i sprječava njegovo aktiviranje više od jednom po kliku ako je (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Ako je motor isključen, a mikrofon uključen, osluškujte bebin plač ako (! Omogućeno && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } if (omogućeno) {stepsPerRevolution = stepsPerRevolution * -1; // obrnuti smjer // Sa mojim postavkama efikasnije je vratiti unatrag // prvi zamah. Ovo možete staviti nakon petlje // ako to nije slučaj s vašim // vrtite motor gore navedenu udaljenost za (int i = loopStartValue; i <numSteps; i ++) {// provjerite isključuje li se int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Sljedeća dva retka "spremaju" položaj motora, tako da će ga sljedeći put uključiti // nastaviti putovati kao da ga niste isključili. Ovo sprječava bacanje // vaše udaljenosti kretanja loopStartValue = i; // spremanje pozicije stepsPerRevolution = stepsPerRevolution * -1; // održava smjer oldmotorButtonValue = tempmotorButtonValue; break; } checkContinue (continueValue); // provjeravamo je li pritisnuto dugme nastavi micCheck (); myStepper.step (stepsPerRevolution / 50); // koliko koraka treba poduzeti po petlji, // možda ćete morati prilagoditi ovo // pobrinite se da nastavimo punu udaljenost petlje ako je petlja završena // ovo dolazi do izražaja ako ste sami isključili motor i to je "spasilo" pozicija if (i == numSteps - 1) {loopStartValue = 0; }}} kašnjenje (100); // pauzirajte 100 milisa prije nego što napravite sljedeći rock. Ovo ćete morati prilagoditi. if (omogućeno) checkComplete (); oldmotorButtonValue = motorButtonValue; // ovo se koristi za sprečavanje dvostrukih klikova} // Ovaj kôd je direktno iz Adafruit -a. double getMicReading () {unsigned long startMillis = millis (); unsigned int peakToPeak = 0; // nivo od vrha do vrha unsigned int signalMax = 0; nepotpisani int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == LOW) enabled = true; sample = analogRead (micPin); if (uzorak signalMax) {signalMax = uzorak; // sprema samo maksimalne nivoe} else if (sample = maxRocks) {omogućeno = netačno; rockCount = 0; // povratak na srednju poziciju

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

myStepper.step (stepsPerRevolution * -1 / 50); // korak 1/100 okretaja:

}

} }

Korak 18: Montiranje i podešavanje kotača

Montaža i podešavanje točka
Montaža i podešavanje točka

Ovo je za mene još uvijek WIP, jer kao što sam rekao, nisam siguran da još želim staviti vijke u podlogu. Način na koji sam montirao svoj je sljedeći:

  • Stavite stezaljku da djeluje kao ruka koja silazi s postolja tako da se moj kotač može povući u ravnoj liniji
  • Zašrafio sam sirovu kutiju da ubacim motor i pričvrstio je to na osnovnu ploču koju sam pričvrstio za nožicu postolja
  • Napravio je prilagođeni drveni kotač s rupom za umetanje unutrašnjeg kotačića malih koračnih remenica. Učinio sam središnju rupu vrlo tijesnom i samo je probušio u točkiću koračnih remenica. Izbušio sam rupu kroz kotač do sredine kako bih mogao pristupiti vijku na metalnom kotaču za pričvršćivanje na step motor.
  • Prešao je nizom od "ruke" kolijevke do kotača. Osigurao sam konac provlačeći ga kroz rupu koju sam izbušio i samo ga zalijepio na mjesto.

Bolje rješenje za 3. korak je da prije svega kupite kotač većeg promjera. Moj je promjera nešto ispod 3 unutar utora i radi jako dobro za moju konzolu.

Moja prva verzija koristila je ruku umjesto kotača. Nije djelovalo ni približno dobro jer se sila nije primjenjivala u dosljednom smjeru, a bila je i podložna odbacivanju ako početna pozicija nije bila ispravna. Korištenje kotača rješava te probleme. Zabavljao sam se i pomoću sistema malih remenica, ali na kraju to nije bilo potrebno jer mi je kotač davao dovoljan obrtni moment.

Korak 19: Konačno postavljanje

Final Setup
Final Setup

Postavite mikrofon blizu svog djeteta, ali na mjesto gdje neće pogoditi niti jednu žicu. Stavite dugmad gdje god želite, sve dok imate dovoljno žica za trčanje do krajnjeg odredišta. Mogli biste i samo zamijeniti gumbe s Wi -Fi postavkom na arduinu, ali još nisam tako duboko ušao. Sretno!

Preporučuje se: