Sisällysluettelo:

Arduino Cradle Rocker: 19 vaihetta (kuvilla)
Arduino Cradle Rocker: 19 vaihetta (kuvilla)

Video: Arduino Cradle Rocker: 19 vaihetta (kuvilla)

Video: Arduino Cradle Rocker: 19 vaihetta (kuvilla)
Video: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, Heinäkuu
Anonim
Image
Image

Anteeksi, en voinut vastustaa kovaa intensiivistä musiikkia, jota videoni editointi ehdotti.

Sain äskettäin ensimmäisen lapseni ja minulla oli jo puinen kehto, jonka setäni (joka on mahtava puutyöläinen) teki veljenpojalleni. Veljenpoikani oli jo kauan kasvanut siitä, joten otin sen mielelläni ja vältin kuluttamasta KAIKKIA RAHOJA mihin tahansa kehtoon/vaunuun, jonka äiti -bloggaajat saivat vaimoni pyörtymään. Kehto on melko yksinkertainen muotoilu, pohjimmiltaan kaksi pylvästä, joiden läpi on kiinnitetty pultit, jotka tukevat telineen runkoa. Siinä on irrotettava tappi, joka lukitsee sen paikalleen.

Muutaman viikon kuluessa huomasimme, että voisimme usein tukahduttaa kevyen hämmennyksen keinuttamalla kehtoa hieman, kunnes poikamme asettui. Yöllä, kun saimme tämän selville, vietin muutaman kymmenen minuutin venytyksen myöhään illalla käsivarteni peiton alta, uneliaasti keinuttamalla häntä, onnellisena siitä, että löysin tavan rauhoittaa häntä nousematta sängystä. aamulla kiinnitin narun ja pienen karabiinin, jotta voisin keinuttaa kehtoa ilman, että tarvitsisin ojentaa kättäni.

Aamuna sen jälkeen aloin aivoriihiä tapaa saada robotti rokkaamaan tätä lasta minulle. Astu Arduinoon…

Tarvikkeet

Ok, tämä oli ensimmäinen Arduino -projektini koskaan, joten tein kokeiluja ja kokeiluja ja erehdyksiä, ja olen varma, että suunnittelussani on parantamisen varaa, mutta tässä on osaluetteloni: Arduino Uno (13 dollaria) kaiken hallitsemiseksi sarja (10 dollaria) johtojen liittämiseen

Askelmoottori (14 dollaria) Tämä on hauskin kappale, koska se tekee kaiken työn. Aloitin hieman pienemmällä vääntömomentilla, mutta sitten sain tämän ja se toimii melko hyvin. Voit saada vieläkin tehokkaamman. Askelmoottorin ohjaimet (10–30 dollaria) Tämä istuu Arduinon ja moottorin välissä. Tämä erityinen voi ilmeisesti ajaa moottoria hiljaisemmin kuin jotkut muut, joten menin siihen, koska moottori on muutaman metrin päässä (ja poikani) päästä, kun nukumme. Ostin alun perin vain yhden TMC2209 -ohjaimen ~ 10 dollarilla, mutta päädyin ostamaan 4 kpl: n pakkauksen, koska minulla oli aluksi vaikeuksia ja halusin varmistaa, etten ollut paistanut levyä jossain vaiheessa. Päädyin todella tappamaan 3 lautaa, mikä tuo minut seuraavaan kohteeseen… Kondensaattorit! (10 dollaria) Tarvitset todella vain 1 47 uF 50 V: n kondensaattoria, joten tämä 240: n laatikko oli ylimitoitettu. 36 V: n virtalähde (17 dollaria) Ostin alun perin heikon 12 V: n virtalähteen ja huomasin, että se oli kaikkien ongelmieni lähde ja sain sellaisen, joka oli lähempänä maksimijännitettä, jota askelmoottorini pystyi käsittelemään. Jos käytät eri moottoria tai askelmoottoria, varmista, että se kestää jännitettä (V) ja että virransyöttö (A) on vähintään yhtä suuri kuin moottorin vetämät huippuampeerit. 8 dollaria) Tähän virtalähde kytketään. Sinun on juotettava nämä joihinkin johtoihin kiinnittääksesi leipälautaasi. Iso pakkaus puseroita (9 dollaria), jotta voisin laittaa säätimet minne haluan huoneeseen.

Painikkeet (8 dollaria) päälle/pois, jne

Mikrofonivahvistin (11 dollaria) Voi, etkö tiennyt, että tämäkin ääni oli aktivoitu?

Jotkut pienet hihnapyörät (8 dollaria) päädyin käyttämään näitä, mutta saattaa olla parempia vaihtoehtoja. Lisää siitä myöhemmin. Tarvitset myös ehdottomasti juotosraudan ja mitä haluat käyttää moottorin kiinnittämiseen. Itse tein juuri karkean laatikon neljästä ruuvatusta puukappaleesta ja ruuvasin ne sitten toiseen puukappaleeseen, joka on suunnilleen kehtojalan leveys. Tällä hetkellä minulla on vain se kiinni, koska en tiedä haluanko solmia setäni kehtoa.

Vaihe 1: Tutustu Stepper Driver Pinoutiin

Johda Arduino 5V/GND leipälevyllesi
Johda Arduino 5V/GND leipälevyllesi

Käyttämässäni mallinnusohjelmassa ei ollut tätä ohjainkorttia, joten sinun on viitattava tähän kuvaan. Olen järjestänyt kaiken samaan suuntaan kuin tämä kuva.

Vaihe 2: Yhdistä Arduino 5V/GND leipälevyllesi

Liitä johto Arduino 5V: sta "+" -kiskoon leipälevyn toisella puolellaKytke johto yhdestä Arduino GND: stä "-" -kiskoon leipälaudan samalla puolella

(jätä huomiotta

Vaihe 3: Liitä +/- kiskot VIO/GND-liittimeen

Liitä +/- kiskot liittimeen VIO/GND
Liitä +/- kiskot liittimeen VIO/GND

Kytke johto "-" -kiskosta GND: hen askelmoottorin ohjaustaulun vasemmassa alakulmassa. Kytke johto "+" -kiskosta VIO

Vaihe 4: Yhdistä DIR/STEP digitaalisiin nastoihin Arduinossa

Liitä DIR/STEP digitaalisiin nastoihin Arduinossa
Liitä DIR/STEP digitaalisiin nastoihin Arduinossa

Yhdistä DIR- ja STEP -nastat askelmoottorilevystä kahteen Arduinon digitaaliseen nastaan. Käytin nastoja 2 ja 3, mutta sillä ei ole väliä, kunhan asetat nastat koodiin myöhemmin.

Vaihe 5: Mennään eteenpäin ja lisätään tämä kondensaattori…

Mennään eteenpäin ja lisätään se kondensaattori…
Mennään eteenpäin ja lisätään se kondensaattori…

Poltin 2 askelmoottorilevyä, koska minulla ei ollut kondensaattoria paikallaan, joten mennään eteenpäin ja lisätään 47uF 50 V: n kondensaattori ohjainkortin VM/GND -nastoihin. Varmista, että kondensaattorin "-" nasta on leipälevyn GND-nastassa (kondensaattorin vastaavalla puolella on "-")

Vaihe 6: Siirry eteenpäin ja yhdistä GND

Ja mene eteenpäin ja yhdistä GND
Ja mene eteenpäin ja yhdistä GND

GND: ssä, johon juuri lisäsit kondensaattorin, mene eteenpäin ja yhdistä se samaan "-" kiskoon kuin toinen GND.

Vaihe 7: Liitä moottori ohjaimeen

Liitä moottori kuljettajaan
Liitä moottori kuljettajaan

Mikä nasta menee minne tahansa, riippuu ostamastasi moottorista, mutta luettelossani on kytkentäkaavio amazon -luettelossa.

Moottorilleni -

Liitä vihreä ja musta liittimiin M2B ja M2A

Punaisen ja sinisen liittäminen laitteisiin M1A ja M1B Huomautus: Jos jostain syystä moottorissasi ei ole kaaviota, voit helposti selvittää, mitkä johdot muodostavat piirin, jos sinulla on yleismittari. Aseta yleismittari matalalle vahvistimelle ja irrota moottori. Kosketa yhtä yleismittarin johtimista yhteen moottorijohdoista ja kokeile sitten jokaista muuta johtoa toisella johdolla. Jos saat vastuslukeman, nämä kaksi johtoa muodostavat 1 piirin ja kaksi muuta muodostavat toisen.

Vaihe 8: Yhdistä EN, MS1 ja MS2 "-"

Yhdistä EN, MS1 ja MS2
Yhdistä EN, MS1 ja MS2

En ole täysin varma, että tämä on välttämätöntä, mutta uskon, että se asettaa moottorin pienemmälle mikrotason asetukselle TMC2209 -ohjaimessa. Voit liittää ne lähimpään kiskoon "-", koska liitämme ne myöhemmin toiselle puolelle.

Vaihe 9: Juottaa naarasvirtaliitin kahteen johtoon

Juottaa naarasvirtaliitin kahteen johtoon
Juottaa naarasvirtaliitin kahteen johtoon

En ole maailman paras juotos, joten sinun on etsittävä sitä muualta, mutta tein omani niin. Taivutin johtimien päät niin, että ne asettuivat tasaisesti liitinjohtoja vasten, ja sitten juotin langan johtimeen. Minulla ei ollut johdon lämpökutistumista, joten käärin ne vain ihmeellisesti sähköteipillä.

Vaihe 10: Liitä juuri juotettu naarasliitin

Liitä juuri juotettu naarasliitin
Liitä juuri juotettu naarasliitin

Älä vielä kytke virtalähdettä. Punainen johto "+"-, musta "-"

Vaihe 11: Yhdistä ne VM/GND: hen

Yhdistä ne VM/GND: hen
Yhdistä ne VM/GND: hen

Liitä nuo "+" ja "-" kiskot VM: ään ja sen vieressä olevaan GND: hen. Ne, joissa on kondensaattori.

Vaihe 12: Ihaile käsityötäsi

Ihaile käsityötäsi
Ihaile käsityötäsi

Okei, moottori ja kuljettaja on nyt asennettu täysin! Tästä eteenpäin me vain valvomme. Muuten, eteenpäin:

  • Jos olet irrottanut ohjaimesi jostain syystä, älä yritä kytkeä sitä, kun 36 V: n virtalähteesi on kytketty. Tapoin kolmannen ohjainkorttini näin.
  • Kytke 36 V: n virta ennen Arduino -virran kytkemistä. En itse paista Arduinoa, mutta näin matkan varrella monia varoituksia.

Vaihe 13: Valinnainen - Tarkista VREF

TMC2209: ssä on potentiometri, joka ohjaa moottorin virtaa. Jos sinulla on sama ohjain kuin minulla, voit lukea siitä täältä. Jos haluat säätää asetusta:

  • Katkaise virta ja irrota moottorin johdot ohjaimesta.
  • Irrota johto ohjaimen EN (käyttöön) -nastaan. Tämä on tappi vasemmassa yläkulmassa.
  • Kytke moottorin virtalähde (36V)
  • Käytä 20 V: n yleismittaria ja kosketa yhtä johtoa GND-lähteeseen (käytin johtoyhteyttä "-" -kiskooni) ja toista johtoa VREF-nastaan. Älä koske johtoon mihinkään muuhun, VOIT lyhentää kuljettajasi, jos teet niin.
  • Säädä potentiometrin ruuvi varovasti pienellä ruuvitaltalla. Oman levyn osalta vastapäivään = enemmän tehoa. VREF -laitteeni lukee henkilökohtaisesti ~ 0.6V.

Vaihe 14: Painikkeet

Painikkeet!
Painikkeet!

Yhdistä seuraavaksi painikkeet. He eivät tarvitse valtaa.

  • Liitä painikkeen leipälaudan "-" kisko johonkin Arduinon GND-kiskoon. Voit halutessasi myös ketjuttaa sen pois toisen leipälaudan "-" kiskosta.
  • Liitä yksi nasta jokaisesta painikkeesta "-" -kiskoon
  • Liitä jokaisen painikkeen toinen nasta Arduinon digitaaliseen nastaan.

Käytin 4 painiketta: Moottori päälle/pois

Moottori jatkuu

Mikrofoni päällä

Mikrofoni pois päältä

Lisää näistä, kun pääsemme koodiin, mutta käytin erillisiä mikrofonipainikkeita yksinkertaisesti siksi, että minulla ei ollut LED -valoja, jotka kertoisivat minulle, onko mikrofoni päällä vai pois päältä, joten erilliset päälle/pois -painikkeet tekivät sen idioottivarmaksi.

Vaihe 15: Lisää mikrofonilevy

Lisää mikrofonilevy
Lisää mikrofonilevy

Tämä on yksinkertainen, ja Adafruitilla on hyvät ohjeet (ja juottamisen perusteet!).

  • Yhdistä "-" GND: hen
  • Liitä GND mikrofonikortilla liittimeen "-" (voit yhdistää GND: n suoraan GND: hen ja ohittaa edellisen vaiheen)
  • Liitä VCC Arduinon 3,3 V: n virtalähteeseen. Tämä on tärkeää, koska tämä virtalähde on vähemmän "meluisa" kuin 5 V, mikä johtaa parempiin mikrofonilukemiin
  • Kytke OUT ANALOG IN -nastaan Arduinossa. Käytin A0: ta.

Vaihe 16: Tämän pitäisi olla lopputulos

Tämän pitäisi olla lopullinen tulos!
Tämän pitäisi olla lopullinen tulos!
Tämän pitäisi olla lopullinen tulos!
Tämän pitäisi olla lopullinen tulos!

Kaiken pitäisi olla nyt valmis. Tässä on kuva lopullisesta kaaviosta ja johtojen sekoituksesta todellisuudessa. Katsotaanpa jotain koodia!

Vaihe 17: Koodi

Ok, katsotaan koodi! Tämä ei ole puhtain työni, mutta se tekee työn. Olen lisännyt kommentteja selittääkseni kaiken täällä, mutta ole kanssani. Käytin Arduino IDE: tä tähän kaikkeen (saatavana Windowsille ja Macille ilmaiseksi) Häiriö on seuraava: Aseta moottorin nopeus ja etäisyys.

Aseta tehtävien kivien (keinujen) määrä.

Käännä asetettua etäisyyttä 1 heilahdusta varten. Käännä tietty määrä kertoja.

Kaiken tämän välissä odota painikkeiden painamista tai kuuntele mikrofonia nähdäksesi, tuleeko moottorin käynnistyä. Mitä nopeammin moottori käy, sitä kovempaa se on ja sitä vähemmän vääntöä saat. Omani on tällä hetkellä melkein hiljainen, joten on mahdollista saada se toimimaan ilman paljon ääntä.

#include // "tavallinen" askelmoottorikirjasto

//#define DEBUG 1 // poista tämä kommentti, kun haluat säätää mikrofonin tasoja // Painikkeiden asetukset - nämä vastaavat sitä, mihin painikkeisiin liitetyt digitaaliset nastat const int motorEnablePin = 10; const int jatkaPin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Mikrofonin asetukset - A0 tässä on mikrofonin analogitulo. Näyteikkuna on millisekunteina int micPin = A0; const int sampleWindow = 1000; allekirjoittamaton int näyte; bool micEnabled = false; kaksinkertainen mikrofoni Herkkyys = 0,53; // sinun on todennäköisesti muutettava tätä // Minulle noin.5 oli tarpeeksi hyvä, jotta se ei laukaisisi pienillä höpötyksillä // mutta laukaisee pienistä itkuista int stepsPerRevolution = 3200; // muuta tämä niin, että se vastaa moottorisi askelmäärää kierrosta kohden // Moottorini on 200 askelta/kierros // Mutta asetin ohjaimen 1/16 mikrotasolle // joten 200*16 = 3200 … rehellisesti sanottuna ei ole aavistustakaan, onko tämä on oikea tapa // tehdä tämä Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 ovat DIR & STEP -nastat int stepCount = 0; int moottorin nopeus = 95; // sinun on säädettävä tämä kehtosi ja vauvan painon mukaan int numSteps = 90; // Etäisyys, jonka moottori liikkuu. // Sinun on säädettävä tämä moottoriin kiinnitetyn pyörän säteen perusteella //. Tämä ja nopeus ovat todennäköisesti yrityksiä ja erehdyksiä. // Huomaa - suurempi nopeus askelmoottoreissa = pienempi tehollinen vääntömomentti // Jos vääntömomentti ei ole riittävä, moottori ohittaa vaiheet (ei liiku) int oldmotorButtonValue = HIGH; bool käytössä = epätosi; // moottori käytössä? int loopStartValue = 0; int maxRocks = 100; // kuinka monta kertaa haluat sen rokkaavan ennen int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // virheenkorjauksen kirjaamiseen #endif pinMode (motorEnablePin, INPUT_PULLUP); // Tämä on asetus, jonka mukaan painikkeet toimivat ilman virtaa pinMode (jatkaPin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // asettaa moottorin nopeudeksi aiemmin määrittämäsi} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead lukee vain painikkeiden arvot int jatkuuarvo = digitalRead (jatkaPin); // Tämä havaitsee moottoripainikkeen painamisen ja estää sitä laukaisemasta useammin kuin kerran napsautuksella, jos (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Päällä; } micCheck (); // Jos moottori on sammutettu ja mikrofoni on päällä, kuuntele vauvan itkua, jos (! Käytössä && micEnabled) {jos (getMicReading ()> = micSensitivity) enabled = true; } if (käytössä) {stepsPerRevolution = stepsPerRevolution * -1; // käänteinen suunta // Asetuksillani on tehokkaampaa peruuttaa // ensimmäisen heilahduksen aikana. Voit laittaa tämän silmukan jälkeen // jos näin ei ole sinun tapauksessa // pyöritä moottoria edellä määritetylle etäisyydelle (int i = loopStartValue; i <numSteps; i ++) {// tarkista sammutetaanko int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Nämä kaksi seuraavaa riviä "tallentavat" moottorin asennon, joten kun seuraavan kerran käynnistät sen // se jatkaa matkaansa kuin et olisi sammuttanut sitä. Tämä estää heittämisen // liikkeen etäisyydet loopStartValue = i; // tallenna sijainti stepsPerRevolution = stepsPerRevolution * -1; // ylläpitää suuntaa oldmotorButtonValue = tempmotorButtonValue; tauko; } checkContinue (jatkuarvo); // tarkista onko jatkopainiketta painettu micCheck (); myStepper.step (stepsPerRevolution / 50); // kuinka monta askelta on suoritettava silmukkaa kohden, // sinun on ehkä muutettava tätä // varmista, että jatkamme koko silmukkaetäisyyttä, jos silmukka on valmis // tämä tulee käyttöön, jos sammutat moottorin itse ja se "pelastaa" sijainti if (i == numSteps - 1) {loopStartValue = 0; }}} viive (100); // tauko 100 milliä ennen seuraavan rockin tekemistä. Sinun täytyy säätää tätä. jos (käytössä) checkComplete (); oldmotorButtonValue = motorButtonValue; // tätä käytetään kaksoisnapsautusten estämiseen} // Tämä koodi on suoraan Adafruitista. double getMicReading () {unsigned long startMillis = millis (); unsigned int peakToPeak = 0; // huippu-huippu-taso unsigned int signalMax = 0; unsigned int signalMin = 1024; while (millis () - startMillis <näyteikkuna) {micCheck (); if (digitalRead (motorEnablePin) == LOW) käytössä = true; näyte = analoginen luku (micPin); if (sample signalMax) {signalMax = näyte; // tallenna vain enimmäistasot} else if (näyte = maxRocks) {käytössä = false; rockCount = 0; // palata keskiasentoon

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

myStepper.step (stepsPerRevolution * -1 / 50); // vaihe 1/100 vallankumouksesta:

}

} }

Vaihe 18: Asennus ja pyörän asennus

Asennus ja pyörän asennus
Asennus ja pyörän asennus

Tämä on edelleen WIP minulle, koska kuten sanoin, en ole varma, haluanko laittaa ruuveja kehtooni vielä.

  • Laita puristin toimimaan käsivarresta, joka tulee ulos kehdosta, jotta pyöräni voi vetää suoraan
  • Kierrä raakarasia yhteen moottorin laittamiseksi ja ruuvaa sen pohjalevyyn, jonka kiinnitin telineen jalkaan
  • Valmistanut räätälöidyn puisen hihnapyörän, jossa oli reikä pienen askelpyörän pyörän sisään. Tein keskireiän erittäin tiukkaan ja vain häivytin askelpyörän pyörän. Porasin reiän pyörän läpi keskelle, jotta pääsin käsiksi metallisen hihnapyörän ruuviin ja kiristä se askelmoottoriin.
  • Vedä naru telakan "käsivarresta" pyörään. Kiinnitin narun viemällä sen poratun reiän läpi ja teippaamalla sen paikalleen.

Parempi ratkaisu kolmanteen vaiheeseen on ostaa ensin halkaisijaltaan suurempi hihnapyörä. Omani on halkaisijaltaan hieman alle 3 uran sisällä ja toimii todella hyvin omalle kehdolleni.

Ensimmäinen versio käytti käsivartta pyörän sijasta. Se ei toiminut lähes yhtä hyvin, koska voimaa ei kohdistettu johdonmukaiseen suuntaan, ja se oli myös todella altis heittäytymään pois, jos lähtöasento ei ollut oikea. Pyörän käyttö ratkaisee nämä ongelmat. Viihdyin myös pienellä hihnapyöräjärjestelmällä, mutta en lopulta tarvinnut, koska pyöräni antoi minulle tarpeeksi vääntöä.

Vaihe 19: Lopullinen asennus

Lopullinen asennus
Lopullinen asennus

Kiinnitä mikrofoni lapsesi lähelle, mutta paikkaan, jossa he eivät osu johtoihin. Voit myös korvata painikkeet wifi -asetuksilla arduinossa, mutta en ole vielä mennyt niin syvälle.

Suositeltava: