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, Srpanj
Anonim
Image
Image

Nažalost, nisam mogao odoljeti banalnoj intenzivnoj glazbi koju je predložila moja montaža videa.

Nedavno sam dobila prvo dijete i već sam imala drvenu kolijevku koju je moj ujak (koji je sjajan drvosječa) napravio za svog nećaka. Moj je nećak to već odavno prerastao, pa sam ga rado uzeo i izbjegao potrošiti SVI NOVAC na bilo koju kolijevku/dječji krevetić na koji su mame blogeri navalili moju ženu. Nosač je prilično jednostavan dizajn, u osnovi dva stupa s vijcima kroz njih koji podupiru tijelo postolja. Postoji uklonjivi klin koji ga učvršćuje na mjestu.

U roku od nekoliko tjedana otkrili smo da bismo često mogli ugušiti laganu nervozu pomalo ljuljajući kolijevku dok se naš dječak nije smirio. 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 bez da moram ispružiti ruku.

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

Pribor

U redu, ovo je bio moj prvi Arduino projekt ikada, pa sam napravio malo eksperimentiranja i pokušaja i pogrešaka, i siguran sam da ima mjesta za poboljšanja u mom dizajnu, ali evo mog popisa dijelova: Arduino Uno (13 USD) za kontrolu svega komplet (10 USD) za spajanje žica

Koračni motor (14 USD) Ovo je najzabavniji komad, jer on obavlja sve poslove. Počeo sam s vozačem nešto nižeg okretnog momenta, 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čito je u stanju voziti motor tiše od nekih drugih, pa sam krenuo s tim jer će motor biti nekoliko stopa od moje (i sinovljeve) glave dok spavamo. Prvotno sam kupio jedan upravljački program TMC2209 za ~ 10 USD, ali na kraju sam kupio paket od 4 jer sam u početku imao nekih poteškoća i htio sam se uvjeriti da u jednom 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) Prvotno 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) To je ono što napajanje uključuje. Morat ćete ih lemiti na neke žice da se zalijepe u vašu ploču za kruh. Veliko pakiranje kratkospojnika (9 USD) kako bih mogao staviti kontrole gdje god želim u prostoriju.

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

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

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 ćete definitivno trebati lemilicu i sve što želite koristiti za montažu motora. Osobno sam upravo napravio grubu kutiju od 4 spojena komada drveta, a zatim sam ih pričvrstio na drugi komad drveta koji je otprilike širine moje noge kolijevke. Zasad ga samo pričvršćujem jer ne znam želim li pokvariti ujakovu kolijevku.

Korak 1: Upoznajte se s 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 točnu ploču upravljačkog programa, pa ćete se morati referencirati na ovu sliku. Rasporedio sam sve u istoj orijentaciji kao ova slika.

Korak 2: Priključite Arduino 5V/GND na svoju pločicu

Spojite žicu s Arduino 5V na "+" tračnicu s jedne strane vaše matične ploče. Spojite žicu s jedne od Arduino GND-ova na "-" vodilicu na istoj strani matične ploče.

(zanemarite

Korak 3: Spojite +/- Rails na VIO/GND

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

Spojite žicu s "-" tračnice na GND u donjem lijevom kutu ploče koračnog vozača. Spojite žicu s "+" tračnice 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 kôd.

Korak 5: Idemo naprijed i dodajte taj kondenzator …

Idemo naprijed i dodamo taj kondenzator …
Idemo naprijed i dodamo taj kondenzator …

Izgorio sam 2 upravljačke ploče koraka jer nisam imao postavljen kondenzator, pa idemo naprijed i dodajmo kondenzator od 47uF 50V na pinove VM/GND na upravljačkoj ploči. Provjerite je li pin "-" na kondenzatoru u GND pinu na 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 "-" tračnicu kao i drugi GND.

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

Spojite motor na upravljački program
Spojite 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 -

Spojite zeleno i crno na M2B i M2A

Spojite crveno i plavo na M1A i M1BN Napomena: Ako iz bilo kojeg razloga vaš motor nema dijagram, lako možete saznati 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: Spojite EN, MS1 i MS2 na "-"

Spojite EN, MS1 i MS2 na
Spojite EN, MS1 i MS2 na

Nisam posve siguran da je to potrebno, ali vjerujem da motor postavlja na manje postavke mikrokoraka na upravljačkom programu TMC2209. Možete ih spojiti na tračnicu "-" koja im je najbliža, jer ćemo je kasnije povezati s drugom stranom.

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 učinio tako. Savio sam krajeve žica tako da leže ravno uz kabele konektora, a zatim sam lemio žicu na kabel. Nisam imao nikakve termoskupljajuće stvari za kabel pa sam ih samo izuzetno omotao električnom trakom.

Korak 10: Spojite svoj novo lemljeni ženski priključak

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 "-" tračnice na VM i GND pored njega. One s 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 potpuno postavili motor i vozač! Od sada ćemo samo vršiti kontrole. Usput, naprijed:

  • Ako ste iz bilo kojeg razloga isključili upravljački program, nemojte ga pokušavati spojiti dok je napajanje na 36 V priključeno. Tako sam ubio svoju treću ploču upravljačkog programa.
  • Uključite 36V napajanje prije nego što priključite Arduino napajanje. Osobno nisam 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 upravljački program 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 pribadača u gornjem lijevom kutu.
  • Priključite napajanje motora (36V)
  • Pomoću multimetra postavljenog na 20 V dodirnite jedan kabel do izvora GND (koristio sam žicu spojenu na moju "-" tračnicu), 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 nježno namjestite vijak potenciometra. Za moju ploču, suprotno od kazaljke na satu = veća snaga. Moj VREF osobno čita ~ 0,6 V.

Korak 14: Gumbi

Gumbi!
Gumbi!

Zatim spojite svoje gumbe na takav način. Ne treba im moć.

  • Spojite "-" tračnicu 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 gumba na tračnicu "-"
  • Spojite još jedan pin svakog gumba s digitalnim pinom na Arduinu.

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

Motor se nastavlja

Mikrofon uključen

Mikrofon isključen

Više o tome kad dođemo do koda, ali koristio sam različite tipke mikrofona jednostavno zato što nisam imao LED diode koje bi me obavještavale je li mikrofon uključen ili isključen, pa je to što sam imao različite gumbe za uključivanje/isključivanje učinilo nesigurnim.

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 ploči mikrofona na "-" (mogli biste izravno spojiti GND na GND i preskočiti prethodni korak, zaista)
  • Spojite VCC na napajanje od 3,3 V na Arduinu. To 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!

Sad 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 obavi. Dodao sam komentare kako bih sve objasnio ovdje, ali podnesite me. Koristio sam Arduino IDE za sve ovo (dostupno na Windowsima i Mac -u besplatno) Suština je sljedeća: Postavite brzinu motora i udaljenost za okretanje.

Odredite brojne stijene (ljuljačke) za učiniti.

Okrenite zadanu udaljenost za 1 zamah. Zamahnite određeni broj puta.

Između svega toga, pazite da pritisnete tipke ili poslušajte mikrofon da vidite treba li se motor 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 dobivate manji okretni moment. Moj je trenutno gotovo tih, pa ga je moguće pokrenuti bez stvaranja puno zvuka.

#include // "standardna" knjižnica koračnih motora

//#definiraj DEBUG 1 // raskomentiraj ovo ako želiš prilagoditi razine mikrofona // Postavljanje gumba - oni odgovaraju mjestima gdje digitalni pinovi koje si spojio na gumbe const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Postavljanje mikrofona - A0 ovdje je analogni ulaz za mikrofon. Prozor uzorka je u millis const int micPin = A0; const int sampleWindow = 1000; nepotpisani int uzorak; bool micEnabled = false; dvostruki mikrofonOsjetljivost = 0,53; // vjerojatno ćete morati promijeniti ovo // 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 okretaju vašeg motora // 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 li pravi način // učiniti ovaj 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 djeteta int numSteps = 90; // Udaljenost koju će motor premjestiti. // Morat ćete to prilagoditi na temelju radijusa kotača koji pričvrstite // na vaš motor. Ovo i brzina vjerojatno će biti pokušaj i pogreška. // Napomena - veća brzina koračnih motora = manji efektivni okretni moment // Ako nemate dovoljno okretnog momenta, vaš motor će preskočiti korake (ne pomaknuti se) int oldmotorButtonValue = HIGH; bool omogućen = false; // motor omoguć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 pogreš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 gumba motora i sprječava njegovo aktiviranje više puta 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 // S mojim postavkama učinkovitije je vratiti unatrag // prvi zamah. Ovo možete postaviti 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 kad uključite // nastaviti putovati kao da ga niste isključili. Time se sprječava bacanje // vaše udaljenosti kretanja loopStartValue = i; // spremi poziciju stepsPerRevolution = stepsPerRevolution * -1; // održava smjer oldmotorButtonValue = tempmotorButtonValue; pauza; } checkContinue (continueValue); // provjeravamo je li pritisnuta tipka za nastavak 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; }}} odgoda (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 sprječavanje dvostrukih klikova} // Ovaj kôd je izravno s tvrtke Adafruit. double getMicReading () {unsigned long startMillis = millis (); unsigned int peakToPeak = 0; // razina vrha do vrha unsigned int signalMax = 0; bezznačni 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 razine} else if (uzorak = maxRocks) {omogućeno = false; rockCount = 0; // povratak na srednji položaj

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

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

}

} }

Korak 18: Montaža i postavljanje kotača

Montaža i podešavanje kotača
Montaža i podešavanje kotača

Ovo je za mene još uvijek WIP, jer kao što sam rekao, nisam siguran da još želim staviti vijke u kolijevku. Način na koji sam namjestio 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 stavim motor i pričvrstio je to na osnovnu ploču koju sam pričvrstio za nožicu postolja
  • Napravio je prilagođeni drveni kotačić s rupom za umetanje unutrašnjeg kotačića malih koračnih remenica. Učinio sam središnju rupu vrlo tijesnom i samo je nabio na kotaču koračne remenice. Izbušio sam rupu kroz kotač do sredine kako bih mogao pristupiti vijku na kotaču metalne remenice kako bih ga zategnuo na koračni 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 samo kupnja kotača s remenicama 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 također je bila doista osjetljiva na odbacivanje ako početni položaj nije bio ispravan. Korištenje kotača rješava ta pitanja. Zabavljao sam se i pomoću sustava malih remenica, ali na kraju to nije bilo potrebno jer mi je kotač davao dovoljan okretni moment.

Korak 19: Konačno postavljanje

Konačno postavljanje
Konačno postavljanje

Postavite mikrofon blizu svog djeteta, ali na mjesto gdje neće pogoditi niti jednu žicu. Gumbe postavite gdje god želite, sve dok imate dovoljno žica za pokretanje do konačnog odredišta. Također biste mogli jednostavno zamijeniti gumbe s wifi postavkom na arduinu, ali još nisam tako duboko zašao. Sretno!

Preporučeni: