Sisukord:

Arduino Cradle Rocker: 19 sammu (piltidega)
Arduino Cradle Rocker: 19 sammu (piltidega)

Video: Arduino Cradle Rocker: 19 sammu (piltidega)

Video: Arduino Cradle Rocker: 19 sammu (piltidega)
Video: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, November
Anonim
Image
Image

Vabandust, ma ei suutnud vastu seista intensiivsele muusikale, mida minu videotöötlus soovitas.

Mul sündis hiljuti esimene laps ja mul oli juba puidust häll, mille onu (kes on vinge puutöömees) mu vennapojale tegi. Mu vennapoeg oli sellest juba ammu välja kasvanud, nii et võtsin selle hea meelega vastu ja väldisin kogu raha kulutamist ükskõik millisele hällile/lapsevankrile, mille peale emablogijad mu naise minestasid. Häll on üsna lihtne disain, põhimõtteliselt kaks püstikut, mille kaudu on poldid, mis toetavad hälli korpust. Selle kinnitamiseks on eemaldatav tihvt.

Mõne nädala jooksul leidsime, et suudame sageli kerget närvilisust summutada, lastes hälli pisut õõtsutada, kuni meie poiss end sisse seadis. Õhtul, kui me sellest teada saime, veetsin hilisõhtul paar 10 -minutilist venitust, käsi ulatub katte alt, õõtsutades teda uniselt, õnnelik, et leidsin viisi, kuidas teda rahustada ilma voodist välja tõusmata. hommikul kinnitasin nööri ja väikese karabiini, et saaksin hälli kõigutada, ilma et peaksin kätt sirutama.

Hommikul pärast seda hakkasin ma ajurünnakuid tegema, et lasta robotil see laps minu jaoks rokkida. Sisestage Arduino…

Tarvikud

Ok, see oli minu esimene Arduino projekt kunagi, nii et tegin mõningaid katseid ja katsetusi ning olen kindel, et minu kujunduses on arenguruumi, kuid siin on minu osade nimekiri: Arduino Uno (13 dollarit) kõige juhtimiseks komplekt (10 dollarit) juhtmete ühendamiseks

Sammumootor (14 dollarit) See on kõige lõbusam tükk, sest see on asi, mis teeb kogu töö. Alustasin pisut väiksema pöördemomendiga, kuid siis sain selle ja see töötab päris hästi. Võite vabalt hankida veelgi võimsama. Astmelised mootoridraiverid (10–30 dollarit) See asub Arduino ja mootori vahel. See konkreetne seade suudab ilmselt mootorit vaiksemalt juhtida kui mõned teised, nii et ma läksin sellega, kuna mootor jääb minu (ja mu poja) peast mõne jala kaugusele, kui me magame. Algselt ostsin ühe TMC2209 draiveri umbes 10 dollari eest, kuid lõpuks ostsin 4 -se paki, sest mul oli algul mõningaid raskusi ja tahtsin veenduda, et ma pole mingil hetkel tahvlit praadinud. Lõppkokkuvõttes tappisin tegelikult 3 lauda, mis viib mind järgmise punkti juurde … Kondensaatorid! ($ 10) Teil on tõesti vaja ainult 1 47 uF 50 V kondensaatorit, nii et see 240 -karp oli liiga suur. 36 V toiteallikas (17 dollarit) ostsin algselt nõrga 12 V toiteallika, seejärel sain teada, et see oli kõigi mu probleemide allikas ja sain sellise, mis oli lähemal maksimaalsele pingele, millega mu samm -mootor hakkama sai. Kui kasutate mõnda muud mootorit või astmelist juhti, veenduge, et see talub pinget (V) ja toite voolutugevus (A) on vähemalt sama kõrge kui mootori maksimaalne võimendus. Naissoost pistikupesad (8 dollarit) See on toiteploki pistikupesa. Leivalauale kleepimiseks peate need mõne juhtme külge jootma. Suur pakk džemprid (9 dollarit), et saaksin juhtnupud ruumis kuhu iganes soovida.

Nupud (8 dollarit) sisse/välja lülitamiseks jne

Mikrofonivõimendi (11 dollarit) Oh, yall ei teadnud, et ka see on heli aktiveeritud?

Mõned väikesed rihmarattad (8 dollarit) kasutasin neid, kuid võib olla paremaid alternatiive. Lisateavet hiljem. Teil on kindlasti vaja ka jootekolvi ja kõike, mida soovite mootori paigaldamiseks kasutada. Mina isiklikult tegin neljast kokku keeratud puutükist kareda kasti ja kruvisin need siis teise puutüki külge, mis on umbes minu hällijala laius. Praegu on mul see lihtsalt kinnitatud, sest ma ei tea, kas ma tahan onu hälli abielluda.

Samm: tutvuge Stepper Driver Pinoutiga

Ühendage Arduino 5V/GND oma leivalauaga
Ühendage Arduino 5V/GND oma leivalauaga

Minu kasutatud modelleerimisprogrammil ei olnud täpselt seda draiveritahvlit, nii et peate sellele pildile viitama. Olen kõik paigutanud samasse suunda nagu see pilt.

Samm: ühendage Arduino 5V/GND oma leivalauaga

Ühendage Arduino 5V juhe oma leivalaua ühel küljel asuva "+" rööpaga Ühendage ühe Arduino GND juhe leivaga samal küljel asuva rööpaga "-"

(ignoreeri

Samm: ühendage +/- rööpad VIO/GND-ga

Ühendage +/- rööpad VIO/GND-ga
Ühendage +/- rööpad VIO/GND-ga

Ühendage traat "-" rööbast astmelise juhtplaadi vasakus alanurgas asuva GND-ga. Ühendage traat "+" rööbast VIO-ga

Samm: ühendage DIR/STEP Arduino digitaalsete kontaktidega

Ühendage DIR/STEP Arduino digitaalsete kontaktidega
Ühendage DIR/STEP Arduino digitaalsete kontaktidega

Ühendage samm -juhtplaadi DIR- ja STEP -tihvtid kahe Arduino digitaalse tihvtiga. Ma kasutasin vastavalt tihvte 2 ja 3, kuid see pole oluline, kui määrate tihvtid hiljem oma koodi.

Samm: jätkake ja lisage see kondensaator…

Lähme edasi ja lisame selle kondensaatori…
Lähme edasi ja lisame selle kondensaatori…

Põlesin välja 2 astmelist draiveriplaati, kuna mul polnud kondensaatorit, nii et lähme edasi ja lisame 47uF 50V kondensaatori draiveriplaadi VM/GND tihvtidele. Veenduge, et "-" tihvt kondensaatoril on leivaplaadi GND tihvtis (kondensaatori vastaval küljel on "-")

6. samm: minge edasi ja ühendage see GND

Ja minge edasi ja ühendage see GND
Ja minge edasi ja ühendage see GND

GND-l, millele kondensaatori just lisasite, jätkake ja ühendage see sama "-" rööpaga nagu teine GND.

Samm: ühendage mootor draiveriga

Ühendage mootor juhiga
Ühendage mootor juhiga

Milline tihvt kuhu läheb, sõltub ostetud mootorist, kuid minu loetletud on ühendusskeem amazoni loendis.

Minu mootorile -

Ühendage roheline ja must ühendusega M2B ja M2A

Punase ja sinise ühendamine M1A ja M1B -ga Märkus. Kui teie mootoril pole mingil põhjusel diagrammi, saate multimeetri olemasolu korral hõlpsalt aru saada, millised juhtmed moodustavad vooluahela. Seadke oma multimeeter madalale võimendusele ja lülitage mootor välja. Puudutage ühte multimeetri juhtmest ühe mootorijuhtme juurde ja proovige seejärel kõiki teisi juhtmeid teise juhtmega. Kui saate takistuse näidu, moodustavad need kaks juhtmest 1 vooluahela ja ülejäänud kaks juhtmest teise.

8. toiming: ühendage EN, MS1 ja MS2 võrguga "-"

Ühendage EN, MS1 ja MS2
Ühendage EN, MS1 ja MS2

Ma ei ole täiesti kindel, kas see on vajalik, kuid usun, et see seab mootori TMC2209 draiveris väiksema mikrosammu sätte. Saate need ühendada rööpaga "-", mis on neile kõige lähemal, kuna ühendame selle hiljem teise küljega.

Samm: jootke naissoost toitepistik kahe juhtme külge

Jootke naissoost toitepistik kahe juhtmega
Jootke naissoost toitepistik kahe juhtmega

Ma ei ole jootmise osas maailma parim, nii et peate seda mujalt otsima, kuid ma tegin seda nii. Ma painutasin juhtmete otsad nii, et need asetseksid tasapinnaliste pistikute juhtmete vastas, ja jootsin juhtme juhtme külge. Mul ei olnud nööriga termokahanevat kraami, nii et mässisin need lihtsalt imeliselt elektrilindiga.

Samm: ühendage äsja joodetud naissoost pistik

Ühendage äsjajoodetud naissoost pistik
Ühendage äsjajoodetud naissoost pistik

Palun ärge ühendage oma tegelikku toiteallikat veel. Punane juhe "+", must "-"

Samm: ühendage need VM/GND -ga

Ühendage need VM/GND -ga
Ühendage need VM/GND -ga

Ühendage need "+" ja "-" rööpad VM-i ja selle kõrval asuva GND-ga. Need, millel kondensaator peal.

12. samm: imetlege oma kätetööd

Imetlege oma kätetööd
Imetlege oma kätetööd

Olgu, mootor ja juht on nüüd täielikult seadistatud! Siit edasi hakkame lihtsalt kontrollima. Muide, edasi minnes:

  • Kui olete oma draiveri mingil põhjusel lahti ühendanud, ärge proovige seda ühendada, kui teie 36 V toide on ühendatud. Ma tappisin oma kolmanda draiveriplaadi niimoodi.
  • Ühendage 36 V toide enne Arduino toite ühendamist. Ma isiklikult Arduinot ei praadinud, kuid nägin teel palju hoiatusi selle kohta.

13. samm: valikuline - kontrollige oma VREF -i

TMC2209 -l on potentsiomeeter, mis juhib mootori voolu. Kui teil on sama draiver, mis mul, saate selle kohta lugeda siit. Kui soovite seadet reguleerida:

  • Ühendage kogu toide lahti ja ühendage mootori juhtmed draiverist lahti.
  • Ühendage juht juhi EN (lubamise) tihvtiga lahti. See on nööpnõel vasakus ülanurgas.
  • Ühendage oma mootori toiteallikas (36V)
  • Kasutades 20 V pingega multimeetrit, puudutage ühte juhet GND allika juurde (ma kasutasin traati, mis ühendati minu rööpaga) ja puudutage teist juhet VREF-i tihvtiga. Palun ärge puudutage juhtmest midagi muud, kui te seda teete, saate juhi lühistada.
  • Potentsiomeetri kruvi õrnaks reguleerimiseks kasutage väikest kruvikeerajat. Minu pardal on vastupäeva = rohkem võimsust. Minu VREF loeb isiklikult ~ 0.6V.

14. samm: nupud

Nupud!
Nupud!

Järgmisena ühendage oma nupud nii. Nad ei vaja võimu.

  • Ühendage nuppude leivalaua "-" rööbas ühe Arduino GND-ga. Soovi korral saate selle ka lihtsalt teise leivalaua "-" rööbastelt aheldada.
  • Ühendage iga nupu üks tihvt "-" rööpaga
  • Ühendage iga nupu teine tihvt Arduino digitaalse tihvtiga.

Kasutasin 4 nuppu: mootor sisse/välja

Mootor jätkab

Mikrofon sisse lülitatud

Mikrofon välja lülitatud

Lisateavet selle kohta, kui jõuame koodi juurde, kuid ma kasutasin erinevaid mikrofoninuppe lihtsalt sellepärast, et mul polnud LED -e, mis annaksid mulle teada, kas mikrofon on sisse või välja lülitatud, nii et erinevate sisse- ja väljalülitusnuppude olemasolu muutis selle lollikindlaks.

Samm: lisage mikrofoniplaat

Lisage mikrofoniplaat
Lisage mikrofoniplaat

See on lihtne ja Adafruitil on siin head juhised (ja jootmise põhitõed!).

  • Ühendage "-" GND-ga
  • Ühendage GND mikrofoniplaadil "-" (saate GND otse GND-ga ühendada ja eelmise sammu vahele jätta)
  • Ühendage VCC Arduino 3.3V toitega. See on oluline, kuna see toiteallikas on vähem mürarikas kui 5 V, mille tulemuseks on paremad mikrofoninäidud
  • Ühendage OUT Arduino ANALOG IN pistikuga. Mina kasutasin A0.

16. samm: see peaks olema lõpptulemus

See peaks olema lõpptulemus!
See peaks olema lõpptulemus!
See peaks olema lõpptulemus!
See peaks olema lõpptulemus!

Kõik peaks nüüd valmis olema. Siin on pilt lõplikust skeemist ja minu juhtmete segadusest tegelikkuses. Vaatame mõnda koodi!

17. samm: kood

Ok, vaatame koodi! See pole küll minu kõige puhtam töö, aga saab töö tehtud. Olen lisanud kommentaare, et siin kõike selgitada, kuid olge minuga. Selle kõige jaoks kasutasin Arduino IDE -d (saadaval Windowsis ja Macis tasuta). Jist on järgmine: määrake pöörlemiskiirus ja vahemaa

Määrake mitu kivimit (kiiget), mida teha.

Pöörake seadistatud kaugust 1 hooga. Pöörake määratud arvu kordi.

Kõige selle vahel jälgige nupuvajutusi või kuulake mikrofoni, et näha, kas mootor peaks sisse lülitama. Peate reguleerima kiiruse, kauguse ja mikrofoni tundlikkuse väärtusi. Mootori kiirus mõjutab helitugevust ja pöördemomenti. Mida kiiremini mootor läheb, seda valjem on see ja seda väiksem on pöördemoment. Minu oma on praegu peaaegu vaikne, seega on võimalik see tööle panna ilma palju heli tegemata.

#include // "tavaline" samm -mootoriteek

//#define DEBUG 1 // tühista see kommentaar, kui soovid reguleerida mikrofoni taset // Nuppude seadistus - need vastavad kohtadele, kus nuppudega ühendatud digitaalsed tihvtid const int motorEnablePin = 10; const int jatkuPin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Mikrofoni seadistamine - A0 on siin mikrofoni analoog. Näidisaken on millisekundites int intPin = A0; const int sampleWindow = 1000; allkirjastamata int proov; bool micEnabled = vale; topeltmikTundlikkus = 0,53; // peate ilmselt seda muutma // Minu jaoks oli umbes.5 piisavalt hea, et mitte vägisi väriseda //, kuid süttib väikeste nutude korral int stepsPerRevolution = 3200; // muuda seda, et see vastaks teie mootori sammude arvule ühe pöörde kohta // Minu mootor on 200 sammu/pööre // Aga ma seadistasin draiveri 1/16 mikrosammuga // nii 200*16 = 3200 … ausalt öeldes pole aimugi, kas see on õige viis // seda teha Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 on DIR & STEP tihvtid int stepCount = 0; int mootorikiirus = 95; // peate seda kohandama vastavalt oma hällile ja beebi kaalule int numSteps = 90; // Kaugus, mille mootor liigub. // Peate seda kohandama vastavalt mootorile kinnitatava ratta raadiusele //. See ja kiirus on tõenäoliselt katse -eksituse meetod. // Märkus - samm -mootoritel suurem kiirus = väiksem efektiivne pöördemoment // Kui teil pole piisavalt pöördemomenti, jätab teie mootor sammud vahele (ei liigu) int oldmotorButtonValue = HIGH; bool lubatud = vale; // mootor lubatud? int loopStartValue = 0; int maxRocks = 100; // mitu korda sa tahad seda rokkida enne int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // silumislogimiseks #endif pinMode (motorEnablePin, INPUT_PULLUP); // See on säte, mille abil nupud töötavad ilma toite pinMode (jatkuPin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // määrab mootori kiiruseks eelnevalt määratud} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead loeb lihtsalt nuppude väärtusi int jatkuVäärtus = digitalRead (jatkuPin); // See tuvastab mootorinupu vajutamise ja takistab selle vallandumist rohkem kui üks kord klõpsu korral, kui (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {lubatud =! Lubatud; } micCheck (); // Kui mootor on välja lülitatud ja mikrofon sisse lülitatud, kuula, kas beebi nutab, kui (! Lubatud && micEnabled) {kui (getMicReading ()> = micSensitivity) lubatud = true; } if (lubatud) {stepsPerRevolution = stepsPerRevolution * -1; // vastupidine suund // Minu seadistusega on efektiivsem tagurdada // esimesel hoos. Saate selle panna pärast tsüklit // kui teie puhul see nii pole // pöörlege mootoriga ülalmääratud vahemaa (int i = loopStartValue; i <numSteps; i ++) {// kontrollige, kas välja lülitada int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Need kaks järgmist rida "salvestavad" mootori asendi, nii et järgmine kord, kui selle sisse lülitate // jätkab see reisimist nii, nagu te poleks seda välja lülitanud. See hoiab ära viskamise // teie liikumiskaugused loopStartValue = i; // salvestada positsiooni stepsPerRevolution = stepsPerRevolution * -1; // säilitada suund oldmotorButtonValue = tempmotorButtonValue; murda; } checkContinue (jatkuVäärtus); // kontrollige, kas jätkamisnuppu on vajutatud micCheck (); myStepper.step (stepsPerRevolution / 50); // kui palju samme tuleb teha ühe tsükli kohta, // peate võib -olla seda korrigeerima // veenduge, et jätkame silmuse täielikku kaugust, kui tsükkel on lõppenud // see tuleb mängu, kui lülitasite mootori ise välja ja see "salvestas" positsioon if (i == numSteps - 1) {loopStartValue = 0; }}} viivitus (100); // tehke 100 millise paus enne järgmise roki tegemist. Peate seda kohandama. if (lubatud) checkComplete (); oldmotorButtonValue = motorButtonValue; // seda kasutatakse topeltklõpsude vältimiseks} // See kood on otse Adafruitilt. double getMicReading () {unsigned long startMillis = millis (); unsigned int peakToPeak = 0; // tipust tippu allkirjastamata int signalMax = 0; allkirjastamata int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == LOW) lubatud = true; sample = analogRead (micPin); if (sample signalMax) {signalMax = proov; // salvesta ainult maksimaalsed tasemed} else if (sample = maxRocks) {lubatud = vale; rockCount = 0; // tagasi keskmise positsiooni juurde

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

myStepper.step (stepsPerRevolution * -1 / 50); // samm 1/100 revolutsioonist:

}

} }

18. samm: paigaldamine ja rataste seadistamine

Paigaldamine ja rataste seadistamine
Paigaldamine ja rataste seadistamine

See on minu jaoks endiselt WIP, sest nagu ma ütlesin, pole ma kindel, kas tahan kruvisid oma hälli veel panna. See, kuidas ma kaevanduse üles seadsin, on järgmine:

  • Pange klamber, mis toimib hällist väljuvana, nii et mu ratas saaks sirgjooneliselt tõmmata
  • Keerasin toorkasti kokku, et mootor sisse panna, ja kruvisin selle alusplaadi külge, mille kinnitasin hälli jala külge
  • Valmistas kohandatud puidust rihmaratta, millel oli auk, et see sobiks väikese astmelise rihmarattaga. Tegin keskaugu väga tihedaks ja lihvisin sammurattaratast. Puurisin läbi ratta augu keskele, et pääseda ligi metallist rihmaratta kruvile, et seda samm -mootorile pingutada.
  • Jooksis nööri hällist "käsivarrest" ratta külge. Kinnitasin nööri, lastes selle läbi puuritud augu ja teipides lihtsalt paika.

Parem lahendus kolmandale etapile on kõigepealt osta suurema läbimõõduga rihmaratas. Minu oma on soone sees veidi alla 3 läbimõõduga ja töötab minu konkreetse hälli jaoks tõesti hästi.

Minu esimene versioon kasutas ratta asemel kätt. See ei töötanud peaaegu sama hästi, sest jõudu ei rakendatud järjekindlalt ja see oli ka väga vastuvõtlik, kui algasend polnud õige. Ratta kasutamine lahendab need probleemid. Ma lõbustasin ka väikese rihmaratta süsteemi abil, kuid lõpuks ei olnud seda vaja, sest mu ratas andis mulle piisavalt pöördemomenti.

19. samm: lõplik seadistamine

Lõplik seadistus
Lõplik seadistus

Paigaldage mikrofon oma lapse lähedale, kuid kohta, kus nad ei kavatse juhtmeid lüüa. Pange nupud kuhu iganes soovite, kui teil on lõppsihtkohta jõudmiseks piisavalt juhtmeid. Samuti võite lihtsalt asendada nupud arduino wifi seadistusega, kuid ma pole veel nii sügavale läinud. Õnn kaasa!

Soovitan: