Kazalo:

Arduino Cradle Rocker: 19 korakov (s slikami)
Arduino Cradle Rocker: 19 korakov (s slikami)

Video: Arduino Cradle Rocker: 19 korakov (s slikami)

Video: Arduino Cradle Rocker: 19 korakov (s slikami)
Video: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, Julij
Anonim
Image
Image

Oprostite, nisem se mogel upreti močni glasbi, ki jo je predlagala moja ureditev videa.

Pred kratkim sem imela svojega prvega otroka in že sem imela leseno zibelko, ki jo je moj stric (ki je odličen lesar) naredil mojemu nečaku. Moj nečak je že dolgo prerasel, zato sem ga z veseljem vzel in se izognil porabi VSEGA DENARA za katero koli zibelko/otroško posteljico, ki so jo mamice blogerke spravile nad žensko. Zibelka je precej preprosta zasnova, v bistvu dve pokonci s sorniki skozi njih, ki podpirata telo zibelke. Za odstranitev ključavnic je na voljo odstranljiv čep.

V nekaj tednih smo ugotovili, da lahko lahko nemirnost pogosto potlačimo z rahlim zibanjem zibelke, dokler se naš fant ne ustali. V noči, ko smo to odkrili, sem pozno ponoči preživel nekaj 10 minutnih raztegov z roko, ki je segala izpod odeje, ga zaspano zibala, srečna, da sem našla način, da ga pomirim, ne da bi sama vstala iz postelje. zjutraj sem pritrdil vrvico in malo vponko, da sem lahko zibal zibelko, ne da bi moral iztegniti roko.

Zjutraj po tem sem začel razmišljati o tem, da bi imel tega fanta za robota. Vnesite Arduino …

Zaloge

V redu, to je bil moj prvi projekt Arduino doslej, zato sem naredil nekaj eksperimentov in poskusov in napak in prepričan sem, da je v moji zasnovi prostora za izboljšave, toda tukaj je moj seznam delov: Arduino Uno (13 USD) za nadzor nad vsem komplet (10 USD) za povezovanje žic

Koračni motor (14 USD) To je najbolj zabaven kos, saj vse to opravi. Začel sem z gonilnikom z nekoliko manjšim navorom, potem pa sem dobil tega in deluje zelo dobro. Pridobite še močnejšega gonilnika koračnega motorja (10-30 USD) Ta se nahaja med Arduinom in motorjem. Ta poseben motor očitno lahko poganja motor bolj tiho kot nekateri drugi, zato sem se odločil za to, saj bo motor med spanjem nekaj metrov od moje (in sinove glave) glave. Sprva sem pravkar kupil en gonilnik TMC2209 za ~ 10 USD, na koncu pa sem kupil paket 4, ker sem imel sprva nekaj težav in sem se želel prepričati, da na določeni točki plošče nisem ocvrt. Na koncu sem dejansko ubil 3 plošče, kar me pripelje do moje naslednje točke … Kondenzatorji! (10 USD) Resnično potrebujete le 1 47 uF 50V kondenzatorja, zato je bila ta škatla 240 precej pretirana. 36V napajalnik (17 USD) sem prvotno kupil šibko napajanje 12V, nato pa ugotovil, da je to vir vseh mojih težav in dobil takšnega, ki je bil bližje največji napetosti, ki bi jo zmogel moj koračni motor. Če uporabljate drug motor ali gonilnik koraka, se prepričajte, da lahko prenese napetost (V) in da je amperaža (A) napajanja vsaj tako visoka kot največji amperi, ki jih porabi motor. 8 USD) To je tisto, kar napajalnik priklopi. Spakirati jih boste morali na nekaj žic, da se prilepijo na vašo mizo. Velik paket skakalcev (9 USD), da bom lahko v prostoru postavil kontrolnike, kamor koli želim.

Gumbi (8 USD) za vklop/izklop itd

Ojačevalnik za mikrofon (11 USD) Oh, tudi vi niste vedeli, da je to zvočno aktivirano?

Na koncu sem uporabil nekaj majhnih kolesnih koles (8 USD), vendar so morda boljše alternative. Več o tem kasneje. Prav gotovo boste potrebovali spajkalnik in vse, kar želite uporabiti za namestitev motorja. Osebno sem pravkar naredil grobo škatlo iz 4 privijačenih lesenih kosov, nato pa jih privijal na drug kos lesa, ki je približno širine moje zibelke. Zaenkrat ga imam samo pritrjenega, ker ne vem, ali bi rad pokvaril strickovo zibelko.

1. korak: Seznanite se z izpisom vašega koračnega gonilnika

Priključite Arduino 5V/GND na vašo ploščo
Priključite Arduino 5V/GND na vašo ploščo

Program za modeliranje, ki sem ga uporabil, ni imel ravno te gonilne plošče, zato se boste morali sklicevati na to sliko. Vse sem uredil v isti orientaciji kot ta slika.

Korak: Priključite Arduino 5V/GND na vašo ploščo

Priključite žico iz Arduino 5V na tirnico "+" na eni strani vaše plošče Priključite žico z enega od Arduino GND na tirnico "-" na isti strani mize

(prezrite

Korak 3: Priključite +/- tirnice na VIO/GND

Priključite +/- tirnice na VIO/GND
Priključite +/- tirnice na VIO/GND

Priključite žico iz tirnice "-" na GND v spodnjem levem kotu koračne plošče. Povežite žico iz tirnice "+" v VIO

4. korak: Povežite DIR/STEP z digitalnimi zatiči na Arduinu

Povežite DIR/STEP z digitalnimi zatiči na Arduinu
Povežite DIR/STEP z digitalnimi zatiči na Arduinu

Zatiča DIR in STEP povežite z ploščo koračnega gonilnika na dva digitalna zatiča na Arduinu. Uporabil sem zatiča 2 in 3, vendar ni pomembno, če pozneje nastavite nožice v kodi.

5. korak: Gremo naprej in dodamo ta kondenzator …

Gremo naprej in dodamo ta kondenzator …
Gremo naprej in dodamo ta kondenzator …

Izgorela sem 2 koračni plošči gonilnikov, ker nisem imel nameščenega kondenzatorja, zato nadaljujmo in dodajmo kondenzator 47uF 50V na zatiče VM/GND na gonilniški plošči. Prepričajte se, da je zatič "-" na kondenzatorju v zatiču GND na plošči (na ustrezni strani kondenzatorja bo "-")

Korak 6: In pojdite naprej in povežite ta GND

In pojdi naprej in poveži GND
In pojdi naprej in poveži GND

Na GND, ki ste mu pravkar dodali kondenzator, ga priključite na isto "-" tirnico kot drugi GND.

7. korak: Motor priključite na gonilnik

Motor priključite na gonilnik
Motor priključite na gonilnik

Kateri pin bo šel, je odvisno od motorja, ki ste ga kupili, toda tisti, ki sem ga navedel, ima shemo ožičenja na seznamu Amazon.

Za moj motor -

Priključite zeleno in črno na M2B in M2A

Rdeče in modro povežite z M1A & M1BN Opomba: Če iz kakršnega koli razloga vaš motor nima diagrama, lahko preprosto ugotovite, katere žice tvorijo vezje, če imate multimeter. Multimeter nastavite na nizki ojačevalnik in odklopite motor. Dotaknite se enega od vodnikov multimetra do ene od žic motorja in nato poskusite vsako drugo žico z drugim kablom. Če dobite odpornost upora, ti dve žici tvorita 1 vezje, drugi dve pa drugo.

8. korak: Povežite EN, MS1 in MS2 z "-"

Povežite EN, MS1 in MS2 z
Povežite EN, MS1 in MS2 z

Nisem povsem prepričan, da je to potrebno, vendar menim, da motor nastavi na manjšo nastavitev mikrostopenj v gonilniku TMC2209. Lahko jih povežete s tirnico "-", ki jim je najbližja, saj jo bomo kasneje povezali z drugo stranjo.

9. korak: Spojite ženski napajalni konektor na dve žici

Spojite ženski napajalni konektor na dve žici
Spojite ženski napajalni konektor na dve žici

Nisem najboljši na svetu pri spajkanju, zato boste morali to iskati drugje, vendar sem svoje naredil tako. Konce žic sem upognil tako, da so ležali ravno ob vodih konektorja, nato pa žico spajkali na kabel. Nisem imel nobenih toplotno skrčljivih materialov, zato sem jih le zavil z električnim trakom.

10. korak: Priključite novo spajkani ženski konektor

Priključite novo spajkani ženski konektor
Priključite novo spajkani ženski konektor

Prosimo, da še ne priključite dejanskega napajalnika. Rdeča žica na "+", črna na "-"

Korak: Povežite jih z VM/GND

Povežite jih z VM/GND
Povežite jih z VM/GND

Ti tirnici "+" in "-" povežite z VM in GND poleg nje. Tiste s kondenzatorjem.

12. korak: Občudujte svoje ročno delo

Občudujte svoje ročno delo
Občudujte svoje ročno delo

V redu, motor in voznik sta popolnoma nastavljena! Od tu naprej bomo samo izvajali kontrole. Mimogrede, naprej:

  • Če ste iz kakršnega koli razloga odklopili gonilnik, ga ne poskušajte priključiti, medtem ko je napajanje 36V priključeno. Tako sem ubil svojo tretjo gonilniško ploščo.
  • Priključite napajanje 36V, preden priključite napajanje Arduino. Osebno nisem ocvrl Arduina, a sem ob tem videl marsikatero opozorilo o tem.

13. korak: Izbirno - preverite svoj VREF

TMC2209 ima potenciometer, ki nadzoruje tok motorja. Če imate istega gonilnika kot jaz, lahko o tem preberete tukaj. Če želite prilagoditi nastavitev:

  • Odklopite vse napajanje in odklopite žice motorja od gonilnika.
  • Odklopite žico na EN (omogočite) pin na gonilniku. To je zatič v zgornjem levem kotu.
  • Priključite napajanje motorja (36V)
  • Z multimetrom, nastavljenim na 20 V, se dotaknite enega kabla do vira GND (uporabil sem žico, priključeno na mojo "-" tirnico), drugega pa dotaknite do vtiča VREF. Prosim, da se ničesar ne dotikajte, lahko pa voznika skrajšate.
  • Z majhnim izvijačem nežno nastavite vijak potenciometra. Za mojo ploščo v nasprotni smeri urinega kazalca = več moči. Moj VREF osebno bere ~ 0,6 V.

14. korak: Gumbi

Gumbi!
Gumbi!

Nato povežite gumbe tako. Ne potrebujejo moči.

  • Priključite tirnico "-" na plošči gumbov na enega od GND-jev Arduina. Če želite, ga lahko tudi privežete z vodila druge plošče.
  • Priključite en zatič vsakega gumba na vodilo "-"
  • Priključite še en pin vsakega gumba na digitalni pin na Arduinu.

Uporabil sem 4 gumbe: Vklop/izklop motorja

Motor se nadaljuje

Mikrofon vklopljen

Mikrofon izklopljen

Več o tem, ko pridemo do kode, vendar sem uporabil ločene gumbe za mikrofon preprosto zato, ker nisem imel LED, ki bi mi sporočale, ali je mikrofon vklopljen ali izklopljen, zato je bilo zaradi različnih gumbov za vklop/izklop brezhibno.

Korak 15: Dodajte mikrofonsko ploščo

Dodajte mikrofonsko ploščo
Dodajte mikrofonsko ploščo

Ta je preprost in Adafruit ima tukaj dobra navodila (in osnove spajkanja!).

  • Priključite "-" na GND
  • GND na mikrofonski plošči povežite z "-" (GND lahko neposredno povežete z GND in res preskočite prejšnji korak)
  • VCC priključite na napajanje 3,3 V na Arduinu. To je pomembno, saj je to napajanje manj "hrupno" kot 5V, kar ima za posledico boljše odčitke mikrofona
  • Priključite OUT na pin ANALOG IN na Arduinu. Uporabil sem A0.

Korak 16: To bi moral biti končni rezultat

To bi moral biti končni rezultat!
To bi moral biti končni rezultat!
To bi moral biti končni rezultat!
To bi moral biti končni rezultat!

Zdaj bi moralo biti vse pripravljeno. Tukaj je slika končnega diagrama in moje zmešnjave žic v resnici. Poglejmo nekaj kode!

17. korak: Koda

Ok, poglejmo kodo! To ni moje najbolj čisto delo, vendar opravi delo. Tu sem dodal komentarje, da bi vse razložil, vendar potrpite z mano. Za vse to sem uporabil Arduino IDE (na voljo za Windows in Mac brezplačno). Slog je naslednji: nastavite hitrost motorja in razdaljo za obračanje.

Nastavite številne skale (gugalnice).

Obrnite nastavljeno razdaljo za 1 zamah. Zavrtite določeno število krat.

Med tem pazite na pritiske gumbov ali poslušajte mikrofon, da vidite, ali bi se motor moral vklopiti. Prilagoditi boste morali hitrost, razdaljo in občutljivost mikrofona. Hitrost motorja bo vplivala na glasnost in navor. Hitreje gre motor, glasnejši je in manjši je navor. Moj je trenutno skoraj tiho, zato ga je mogoče zagnati brez veliko zvoka.

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

//#define DEBUG 1 // razkomentirajte to, če želite prilagoditi ravni mikrofona // Nastavitev gumbov - ti ustrezajo mestu, kjer so digitalni zatiči, ki ste jih povezali z gumbi, const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Nastavitev mikrofona - A0 tukaj je analogni vhod za mikrofon. Vzorčno okno je v millis const int micPin = A0; const int sampleWindow = 1000; nepodpisan int vzorec; bool micEnabled = false; dvojni mikrofon Občutljivost = 0,53; // verjetno boste morali to spremeniti // Zame je bilo okoli.5 dovolj dobro, da se ni sprožilo pri majhnem kukanju // ampak se bo sprožilo za majhne krike int stepsPerRevolution = 3200; // spremenite to tako, da ustreza številu korakov na vrtljaj vašega motorja // Moj motor je 200 korakov/obratu // Toda voznika sem nastavil na 1/16 mikrokorakov // torej 200*16 = 3200 … pošteno ne vem, če je to je pravilen način //, da to naredite Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 sta zatiča DIR & STEP int stepCount = 0; int motorSpeed = 95; // to boste morali prilagoditi glede na težo zibelke in otroka int numSteps = 90; // Razdalja, do katere se bo motor premaknil. // To boste morali prilagoditi glede na polmer kolesa, ki ga // pritrdite na motor. To in hitrost bosta verjetno poskus in napaka. // Opomba - višja hitrost koračnih motorjev = manjši efektivni navor // Če nimate dovolj navora, bo vaš motor preskočil korake (ne premaknite se) int oldmotorButtonValue = HIGH; bool omogočen = false; // motor omogočen? int loopStartValue = 0; int maxRocks = 100; // kolikokrat želite, da se ziba, preden izklopite int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // za beleženje napak #endif pinMode (motorEnablePin, INPUT_PULLUP); // To je nastavitev, da gumbi delujejo brez napajanja pinMode (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorna hitrost); // nastavi hitrost motorja na tisto, kar ste določili prej} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead samo bere vrednosti gumbov int continueValue = digitalRead (continuePin); // Ta zazna pritisk gumba motorja in prepreči njegovo sprožitev več kot enkrat na klik, če je (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Če je motor izklopljen in je mikrofon vklopljen, poslušajte otroški jok, če (! Enabled && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } if (omogočeno) {stepsPerRevolution = stepsPerRevolution * -1; // obratna smer // Z mojimi nastavitvami je učinkovitejše vzvratno // prvi zamah. To lahko postavite po zanki // če to ne velja za vaš // vrtljivi motor zgoraj navedeno razdaljo za (int i = loopStartValue; i <numSteps; i ++) {// preverite, ali je izklopljen int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Ti naslednji dve vrstici "shranita" položaj motorja, tako da bo naslednjič, ko ga vklopite //, še naprej potoval, kot da ga niste izklopili. To preprečuje odmetavanje // vaših razdalj gibanja loopStartValue = i; // shranimo položaj stepsPerRevolution = stepsPerRevolution * -1; // vzdržujemo smer oldmotorButtonValue = tempmotorButtonValue; zlom; } checkContinue (continueValue); // preveri, če je bil pritisnjen gumb za nadaljevanje micCheck (); myStepper.step (stepsPerRevolution / 50); // koliko korakov morate narediti na zanko, // boste morda morali to prilagoditi // poskrbite, da nadaljujemo s polno razdaljo zanke, če je zanka končana // to pride v poštev, če ste sami izklopili motor in je to "shranilo" položaj if (i == numSteps - 1) {loopStartValue = 0; }}} zakasnitev (100); // zaustavitev 100 milis pred naslednjo izvedbo. To morate prilagoditi. if (omogočeno) checkComplete (); oldmotorButtonValue = motorButtonValue; // to se uporablja za preprečevanje dvojnih klikov} // Ta koda je neposredno iz podjetja Adafruit. double getMicReading () {unsigned long startMillis = millis (); brez podpisa int peakToPeak = 0; // nepodpisani int signalMax = 0; brez podpisa int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == LOW) enabled = true; vzorec = analogRead (micPin); if (vzorec signalMax) {signalMax = vzorec; // shranimo samo najvišje ravni} else if (sample = maxRocks) {omogočeno = napačno; rockCount = 0; // vrnitev na srednji položaj

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

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

}

} }

18. korak: Montaža in nastavitev koles

Montaža in nastavitev koles
Montaža in nastavitev koles

To je zame še vedno WIP, saj, kot sem rekel, nisem prepričan, da bi še rad vstavil vijake v zibelko.

  • Vpenjalo naj deluje kot roka, ki prihaja iz zibelke, tako da se moje kolo lahko potegne v ravno črto
  • Privijte skupaj surovo škatlo, da vstavite motor, in jo privijte na osnovno ploščo, ki sem jo pritrdila na nogo zibelke
  • Naredil je leseno jermenico po meri z luknjo, da se v notranjost prilega majhno koračno kolo. Sredinsko luknjo sem naredil zelo tesno in samo na kladivo v kolesu koračnega jermenica. Skozi kolo sem do sredine izvrtal luknjo, da sem lahko dobil dostop do vijaka na kovinskem kolescu, da ga privijem na koračni motor.
  • Potegnil je vrvico od zibelke "roke" do kolesa. Niz sem zavaroval tako, da sem ga spel skozi luknjo, ki sem jo izvrtal, in ga samo pritrdil na mesto.

Boljša rešitev za tretji korak je, da najprej kupite kolesce z večjim premerom. Moj ima v utoru premer nekaj manj kot 3 in se zelo dobro obnese na moji zibelki.

Moja prva različica je namesto kolesa uporabljala roko. Ni delovalo tako dobro, ker sila ni bila uporabljena v dosledni smeri, poleg tega pa je bila tudi res dovzetna za zavrnitev, če začetni položaj ni bil pravilen. Te težave rešuje uporaba kolesa. Zabaval sem se tudi z majhnim sistemom jermenic, vendar mi na koncu ni bilo treba, ker mi je kolo dalo dovolj navora.

Korak 19: Končna nastavitev

Končna nastavitev
Končna nastavitev

Mikrofon namestite blizu svojega otroka, vendar na mestu, kjer ne bo udaril v žice. Gumbe postavite kamor koli želite, če imate dovolj žic za tek do končnega cilja. Gumbe lahko zamenjate tudi z nastavitvijo wifi na arduinu, vendar še nisem tako globoko šel. Srečno!

Priporočena: