Përmbajtje:

Arduino Cradle Rocker: 19 hapa (me fotografi)
Arduino Cradle Rocker: 19 hapa (me fotografi)

Video: Arduino Cradle Rocker: 19 hapa (me fotografi)

Video: Arduino Cradle Rocker: 19 hapa (me fotografi)
Video: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, Nëntor
Anonim
Image
Image

Na falni, nuk i rezistova dot muzikës intensive, e cila më sugjeroi për redaktimin e videos.

Kohët e fundit kisha fëmijën tim të parë dhe tashmë kisha një djep druri që xhaxhai im (i cili është një punues druri i mrekullueshëm) i bëri nipit tim. Nipi im e kishte tejkaluar prej kohësh, kështu që unë isha i lumtur ta merrja dhe të shmangja shpenzimin e GJITH PARAVE në çfarëdo djepi/baze që blogerët e mamasë e kishin gruan time në kërkim. Djepi është një dizajn mjaft i thjeshtë, në thelb dy drejtues me bulona përmes tyre që mbështesin trupin e djepit. Ka një kunj të lëvizshëm për ta mbyllur në vend.

Brenda pak javësh ne zbuluam se ne shpesh mund të shuam shqetësimet e lehta duke tundur pak djepin derisa djali ynë u vendos. Natën kur e zbuluam këtë, kalova disa shtrirje prej 10 minutash natën vonë me krahun tim duke arritur nga poshtë kapakëve, duke e tronditur me gjumë, i lumtur që kisha gjetur një mënyrë për ta qetësuar atë pa u ngritur nga shtrati. në mëngjes bashkova një varg dhe një karabinë të vogël në mënyrë që të mund të lëkundja djepin pa pasur nevojë të zgjas krahun.

Mëngjes pas kësaj, fillova të krijoj ide për një mënyrë që thjesht të kem një robot që do ta ketë këtë fëmijë për mua. Hyni në Arduino…

Furnizimet

Ok, ky ishte projekti im i parë Arduino ndonjëherë, kështu që bëra disa eksperimente dhe prova dhe gabime, dhe jam i sigurt se ka vend për përmirësim në modelin tim, por këtu është lista ime e pjesëve: Arduino Uno (13 dollarë) për kontrollimin e gjithçkaje komplet (10 dollarë) për lidhjen e telave

Motori stepper (14 dollarë) Kjo është pjesa më argëtuese, sepse është gjëja që bën të gjithë punën. Fillova me një çift rrotullues pak më të ulët, por më pas e mora këtë dhe po funksionon mjaft mirë. Mos ngurroni të merrni një të tillë edhe më të fuqishëm. Drejtuesit e motorëve me hapa (10-30 dollarë) Kjo është midis Arduino dhe motorit. Ky specifik me sa duket është në gjendje të drejtojë motorin më të qetë se disa të tjerë, kështu që unë shkova me të pasi motori do të jetë disa metra nga koka ime (dhe djali im) ndërsa ne jemi duke fjetur. Fillimisht sapo bleva një shofer TMC2209 për 10 dollarë, por përfundova duke blerë një paketë prej 4 sepse kisha disa vështirësi në fillim dhe doja të sigurohesha që nuk e kisha skuqur dërrasën në një moment. Unë përfundova duke vrarë 3 dërrasa, gjë që më çon në artikullin tim të ardhshëm … Kondensatorët! (10 dollarë) Ju me të vërtetë keni nevojë vetëm për një kondensator 1 47 uF 50V, kështu që kjo kuti 240 ishte shumë e tepërt. Një furnizim me energji 36V (17 dollarë) Fillimisht bleva një furnizim të dobët 12V, pastaj zbulova se ky ishte burimi i të gjitha problemeve të mia dhe mora një që ishte më afër tensionit maksimal që mund të merrte stepper motori im. Nëse përdorni një motor të ndryshëm ose shofer stepper, sigurohuni që ai të mund të përballojë tensionin (V) dhe që Amperazhi (A) i furnizimit të jetë së paku aq i lartë sa Amperët e pikut të tërhequr nga motori. Folet e prizave të fuqisë femërore ($ 8) Kjo është ajo në të cilën lidhet furnizimi me energji elektrike. Ju do të duhet t'i lidhni këto tela me disa tela për t'u ngjitur në tryezën tuaj të bukës. Një paketë e madhe kërcyesish (9 dollarë) në mënyrë që të mund të vendos kontrollet kudo që doja në dhomë.

Butonat (8 dollarë) për ndezje/fikje, etj

Një përforcues mikrofoni (11 dollarë) Oh, nuk e dinit që edhe ky tingull ishte aktivizuar?

Disa rrota të vogla rrotull (8 dollarë) përfundova duke i përdorur këto, por mund të ketë alternativa më të mira. Më shumë për atë më vonë. Ju gjithashtu patjetër do t'ju duhet një hekur bashkues dhe gjithçka që dëshironi të përdorni për të montuar motorin. Unë personalisht sapo bëra një kuti të ashpër nga 4 copa druri të vidhosura së bashku, dhe pastaj i vidhos ato në një copë druri që është afërsisht gjerësia e këmbës sime të djepit. Tani për tani thjesht e kam shtrënguar sepse nuk e di nëse dua të dëmtoj djepin e xhaxhait tim.

Hapi 1: Njihuni me Pinoutin e Shoferit tuaj Stepper

Teli Arduino 5V/GND në tavolinën tuaj të bukës
Teli Arduino 5V/GND në tavolinën tuaj të bukës

Programi i modelimit që kam përdorur nuk kishte këtë tabelë të saktë drejtuesi, kështu që ju do të duhet t'i referoheni këtij imazhi. Unë kam rregulluar gjithçka në të njëjtin orientim si ky imazh.

Hapi 2: Lidhni Arduino 5V/GND në tabelën tuaj të bukës

Lidhni një tel nga Arduino 5V në hekurudhën "+" në njërën anë të bordit tuaj të bukës Lidhni një tel nga një prej Arduino GND në hekurudhën "-" në të njëjtën anë të pjatës

(injoroni

Hapi 3: Lidhni binarët +/- me VIO/GND

Lidhni binarët +/- me VIO/GND
Lidhni binarët +/- me VIO/GND

Lidhni një tel nga hekurudha "-" në GND në pjesën e poshtme të majtë të tabelës së shoferit stepper. Lidhni një tel nga hekurudha "+" në VIO

Hapi 4: Lidhni DIR/STEP me kunjat dixhitale në Arduino

Lidhni DIR/STEP me kunjat dixhitale në Arduino
Lidhni DIR/STEP me kunjat dixhitale në Arduino

Lidhni kunjat DIR dhe STEP nga bordi i shoferit stepper në dy nga kunjat dixhitale në Arduino. Përdora përkatësisht kunjat 2 dhe 3, por nuk ka rëndësi për aq kohë sa i vendosni kunjat në kodin tuaj më vonë.

Hapi 5: Le të shkojmë përpara dhe të shtojmë atë kondensator…

Le të shkojmë përpara dhe të shtojmë atë kondensator…
Le të shkojmë përpara dhe të shtojmë atë kondensator…

Kam djegur 2 dërrasa shoferësh stepper sepse nuk kisha një kondensator në vend, kështu që le të shkojmë përpara dhe të shtojmë kondensatorin 47uF 50V në kunjat e VM/GND në tabelën e shoferit. Sigurohuni që kunja "-" në kondensator është në kunjin GND në dërrasën e bukës (do të ketë një "-" në anën përkatëse të kondensatorit)

Hapi 6: Dhe shkoni përpara dhe lidheni atë GND

Dhe shkoni përpara dhe lidheni atë GND
Dhe shkoni përpara dhe lidheni atë GND

Në GND ku sapo keni shtuar kondensatorin, vazhdoni dhe lidheni atë me të njëjtën hekurudhë "-" si GND tjetër.

Hapi 7: Lidhni motorin me shoferin

Lidhni motorin me shoferin
Lidhni motorin me shoferin

Cila kunj shkon ku do të varet nga motori që keni blerë, por ai që kam renditur ka diagramin e instalimeve elektrike në listën e amazonit.

Për motorin tim -

Lidhni Green & Black me M2B & M2A

Lidhu Red & Blue me M1A & M1B Shënim: Nëse për çfarëdo arsye motori juaj nuk ka një diagram, ju lehtë mund të kuptoni se cilat tela formojnë një qark nëse keni një multimetër. Vendoseni multimetrin tuaj në një cilësim të ulët të amplifikatorit dhe mos e lidhni motorin. Prekni njërën nga prizat e multimetrit në njërën prej telave të motorit dhe më pas provoni secilën prej telave të tjerë me prizën tjetër. Nëse merrni një lexim rezistence, atëherë ato dy tela formojnë 1 qark, dhe dy të tjerat formojnë tjetrën.

Hapi 8: Lidhni EN, MS1 dhe MS2 me "-"

Lidhni EN, MS1 dhe MS2 me
Lidhni EN, MS1 dhe MS2 me

Nuk jam plotësisht i sigurt se kjo është e nevojshme, por besoj se e vendos motorin në një cilësim më të vogël të mikrostepit në drejtuesin TMC2209. Mund t'i lidhni me hekurudhën "-" më të afërt me ta, pasi më vonë do ta lidhim me anën tjetër.

Hapi 9: Lidhni një lidhës të energjisë Femërore në dy tela

Bashkoni një lidhës të energjisë Femërore në dy tela
Bashkoni një lidhës të energjisë Femërore në dy tela

Unë nuk jam më i miri në botë në saldim, kështu që ju duhet të kërkoni diku tjetër për këtë, por unë e kam bërë timen ashtu. I lakova skajet e telave në mënyrë që ata të ishin të shtrirë drejt lidhësve të lidhësit, pastaj e bashkova tela në plumb. Unë nuk kisha ndonjë gjë për tkurrjen e nxehtësisë së kordonit, kështu që thjesht i mbështolla me një shirit elektrik.

Hapi 10: Lidhni lidhësin tuaj të sapo bashkuar Femra

Lidhni lidhësin tuaj të sapo bashkuar Femra
Lidhni lidhësin tuaj të sapo bashkuar Femra

Ju lutemi mos e lidhni furnizimin tuaj aktual me energji elektrike. Teli i kuq në "+", i zi në "-"

Hapi 11: Lidhni ato me VM/GND

Lidhini ato me VM/GND
Lidhini ato me VM/GND

Lidhni ato binarët "+" dhe "-" me VM dhe GND ngjitur me të. Ato me kondensatorin mbi të.

Hapi 12: Admironi punën tuaj të dorës

Admironi punën tuaj të dorës
Admironi punën tuaj të dorës

Mirë, tani keni motorin dhe shoferin plotësisht të vendosur! Nga këtu e tutje ne do të bëjmë vetëm kontrolle. Nga rruga, duke shkuar përpara:

  • Nëse e keni shkëputur shoferin tuaj për çfarëdo arsye, mos u përpiqni ta lidhni atë ndërsa fuqia juaj 36V është e lidhur. Unë vrava bordin tim të tretë të shoferit ashtu.
  • Fikni energjinë 36V para se të lidhni fuqinë Arduino. Unë personalisht nuk kam skuqur një Arduino, por gjatë rrugës pashë shumë paralajmërime për këtë.

Hapi 13: Opsional - Kontrolloni VREF -in tuaj

TMC2209 ka një potenciometër që kontrollon rrymën në motor. Nëse keni të njëjtin shofer si unë, mund të lexoni për këtë këtu. Nëse dëshironi të rregulloni cilësimin:

  • Shkëputeni të gjithë fuqinë dhe shkëputni telat e motorit nga shoferi.
  • Shkëputeni tela me kunjin EN (aktivizoni) në drejtuesin. Kjo është kunja në këndin e sipërm të majtë.
  • Lidhni furnizimin me energji motorike (ai 36V)
  • Duke përdorur një multimetër të vendosur në 20V, prekni një prizë në një burim GND (kam përdorur një tel të lidhur me hekurudhën time "-") dhe prekni prizën tjetër në kunjin VREF. Ju lutemi mos prekni plumbin për asgjë tjetër, mund ta shkurtoni shoferin tuaj nëse e bëni.
  • Përdorni një kaçavidë të vogël për të rregulluar butësisht vidën e potenciometrit. Për tabelën time, në të djathtë = më shumë fuqi. VREF im personal lexon ~ 0.6V.

Hapi 14: Butonat

Butona!
Butona!

Tjetra, lidhni butonat tuaj kështu. Ata nuk kanë nevojë për fuqi.

  • Lidhni një hekurudhë të panelit të bukës me një buton me një nga GND-të e Arduino. Ju gjithashtu mund ta lidhni me zinxhir nga hekurudha e "-" tjetër e bukës nëse dëshironi.
  • Lidhni një kunj të secilit buton me hekurudhën "-"
  • Lidhni një kunj tjetër të secilit buton me një kunj dixhital në Arduino.

Kam përdorur 4 butona: Motori i ndezur/fikur

Motori vazhdon

Mikrofoni aktiv

Mikrofoni i fikur

Më shumë për këto kur arrijmë te kodi, por unë përdor butona të veçantë të mikrofonit thjesht sepse nuk kisha LED për të më treguar nëse mikrofoni ishte i ndezur ose i fikur, kështu që të kesh butona të veçantë ndezje/fikje e bëri atë të pagabueshëm.

Hapi 15: Shtoni tabelën e mikrofonit

Shtoni tabelën e mikrofonit
Shtoni tabelën e mikrofonit

Ky është i thjeshtë, dhe Adafruit ka udhëzime të mira (dhe bazat e bashkimit!) Këtu.

  • Lidheni "-" me një GND
  • Lidhni GND në tabelën e mikrofonit me "-" (mund ta lidhni drejtpërdrejt GND me GND dhe me të vërtetë të kaloni hapin e mëparshëm)
  • Lidhni VCC me fuqinë 3.3V në Arduino. Kjo është e rëndësishme pasi ky furnizim me energji është më pak "i zhurmshëm" sesa 5V, duke rezultuar në lexime më të mira të mikrofonit
  • Lidheni OUT me një pin ANALOG IN në Arduino. Kam përdorur A0.

Hapi 16: Ky duhet të jetë rezultati përfundimtar

Ky duhet të jetë rezultati përfundimtar!
Ky duhet të jetë rezultati përfundimtar!
Ky duhet të jetë rezultati përfundimtar!
Ky duhet të jetë rezultati përfundimtar!

Gjithçka duhet të jetë gati tani. Këtu keni një fotografi të diagramit përfundimtar dhe përzierjen time të telave në realitet. Le të shikojmë një kod!

Hapi 17: Kodi

Ok le të shikojmë kodin! Kjo nuk është puna ime më e pastër, por e përfundon punën. Unë kam shtuar komente për të shpjeguar gjithçka këtu, por duroni. Kam përdorur Arduino IDE për të gjitha këto (të disponueshme në Windows dhe Mac falas) Thelbi është ky: Vendosni shpejtësinë dhe distancën e motorit për t'u kthyer.

Vendosni një numër shkëmbinjsh (lëkundje) për të bërë.

Kthejeni distancën e caktuar për 1 rrotullim. Lëvizni një numër të caktuar herë.

Në mes të gjithë asaj, shikoni për shtypjet e butonave ose dëgjoni mikrofonin për të parë nëse motori duhet të ndizet. Ju do të keni nevojë të rregulloni shpejtësinë, distancën dhe vlerat e ndjeshmërisë së mikrofonit. Shpejtësia e motorit do të ndikojë në volumin dhe çift rrotullues. Sa më shpejt të ecë motori, aq më i fortë është dhe aq më pak çift rrotullues. I imi aktualisht është pothuajse i heshtur, kështu që është e mundur që ai të funksionojë pa bërë shumë zë.

#include // biblioteka "standarde" me motor stepper

//#define DEBUG 1 // mos e komentoni këtë kur doni të rregulloni nivelet e mikrofonit // Konfigurimi i butonave - këto korrespondojnë me atë se ku kunjat dixhitalë që keni lidhur me butonat përbëjnë int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Konfigurimi i mikrofonit - A0 këtu është analogu për mikrofonin. Mostra e dritares është në millis const int micPin = A0; const int sampleWindow = 1000; mostër int e panënshkruar; bool micEnabled = false; mikon i dyfishtë Ndjeshmëria = 0.53; // ju ndoshta do të keni nevojë ta ndryshoni këtë // Për mua, rreth.5 ishte mjaft e mirë për të mos ndezur zhurmë të vogël // por do të ndizet për klithma të vogla në hapa intPerRevolution = 3200; // ndryshoni këtë për të përshtatur numrin e hapave për revolucion për motorin tuaj // Motori im është 200 hapa/revolucion // Por unë e vendosa shoferin në 1/16 mikrosteps // kështu 200*16 = 3200 … sinqerisht nuk kam ide nëse kjo është mënyra e duhur // për ta bërë këtë Stepper myStepper (hapatPerRevolution, 2, 3); // 2 & 3 janë kunjat DIR & STEP int stepCount = 0; int motorSpeed = 95; // do t'ju duhet ta rregulloni këtë sipas djepit tuaj dhe peshës së foshnjës int numSteps = 90; // Distanca që motori do të lëvizë. // Ju do të duhet ta rregulloni këtë bazuar në rrezen e rrotës që lidhni // në motorin tuaj. Kjo dhe shpejtësia ka të ngjarë të jenë provë dhe gabim. // Shënim - shpejtësi më e madhe në motorët me hapa = çift rrotullues më i ulët efektiv // Nëse nuk keni çift rrotullues të mjaftueshëm, motori juaj do të kapërcejë hapat (nuk do të lëvizë) në oldmotorButtonValue = HIGH; bool aktivizuar = false; // motor i aktivizuar? int loopStartValue = 0; int maxRocks = 100; // sa herë dëshironi që ajo të lëkundet para se të fikni int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // për regjistrimin e korrigjimit #endif pinMode (motorEnablePin, INPUT_PULLUP); // Ky është një cilësim që butonat të punojnë pa pinMode të energjisë (vazhdoni Pin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // vendos shpejtësinë e motorit në atë që keni specifikuar më parë} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead thjesht lexon vlerat e butonit int continueValue = digitalRead (continuePin); // Kjo zbulon shtypjen e butonit të motorit dhe e pengon atë të shkrepë më shumë se një herë për klikim nëse (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {aktivizuar =! Aktivizuar; } micCheck (); // Nëse motori është i fikur, dhe mikrofoni është i ndezur, dëgjoni qarjen e foshnjës nëse (! Aktivizohet && micEnabled) {nëse (getMicReading ()> = ndjeshmëria e mikroskopit) aktivizohet = e vërtetë; } nëse (aktivizuar) {hapatPerRevolution = hapatPerRevolution * -1; // drejtimi i kundërt // Me konfigurimin tim, është më efektive të kthehesh mbrapa // lëkundja e parë. Mund ta vendosni këtë pas lakut // nëse nuk është kështu për tuajin // rrotulloni motorin distancën e specifikuar më sipër për (int i = loopStartValue; i <numSteps; i ++) {// kontrolloni për fikjen e int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Këto dy rreshta të ardhshëm "ruajnë" pozicionin e motorit, kështu që herën tjetër kur ta ndizni // do të vazhdojë të udhëtojë sikur të mos e kishit fikur. Kjo parandalon hedhjen // distancat e lëvizjes suaj loopStartValue = i; // ruani hapat e hapavePerRevolution = hapatPerRevolution * -1; // ruaj drejtimin oldmotorButtonValue = tempmotorButtonValue; pushim; } checkContinue (vazhdoVlera); // kontrolloni nëse butoni vazhdoi ishte shtypur micCheck (); myStepper.step (hapatPerRevolution / 50); // sa hapa të ndërmerrni për çdo lak, // mund t'ju duhet ta rregulloni këtë // sigurohuni që të vazhdojmë distancën e plotë të lakut nëse cikli përfundon // kjo hyn në lojë nëse e fikni motorin vetë dhe "ruani" pozicioni nëse (i == numSteps - 1) {loopStartValue = 0; }}} vonesa (100); // pauzoni 100 mililitra para se të bëni shkëmbin tjetër. Ju do të duhet ta rregulloni këtë. nëse (aktivizuar) kontrolloniKompleto (); oldmotorButtonValue = motorButtonValue; // kjo përdoret për parandalimin e dy klikimeve} // Ky kod është drejtpërdrejt nga Adafruit. getMicReading i dyfishtë () {pa shenjë fillimi i gjatëMillis = millis (); int pa shenjë int peakToPeak = 0; // niveli kulmin-kulmin i sinjalizuar int sinjalMax = 0; sinjal int i panënshkruar Min = 1024; ndërsa (millis () - startMillis <sampleWindow) {micCheck (); nëse (digitalRead (motorEnablePin) == LOW) aktivizuar = e vërtetë; mostër = analogRead (micPin); nëse (mostra signalMax) {signalMax = mostër; // ruani vetëm nivelet maksimale} tjetër nëse (mostër = maxRocks) {aktivizuar = false; rockCount = 0; // kthehu në pozitën e mesme

për (int i = loopStartValue; i <numSteps/2; i ++) {

myStepper.step (hapatPerRevolution * -1 / 50); // hapi 1/100 i një revolucioni:

}

} }

Hapi 18: Montimi dhe konfigurimi i rrotave

Montimi dhe konfigurimi i rrotave
Montimi dhe konfigurimi i rrotave

Ky është akoma një WIP për mua, sepse siç thashë nuk jam i sigurt që dua të vendos vida në djepin tim. Mënyra se si e kam manipuluar timen është si më poshtë:

  • Vendos një kapëse për të vepruar si një krah që del nga djepi në mënyrë që rrota ime të tërheqë në një vijë të drejtë
  • Vidhos së bashku një kuti të papërpunuar për të futur motorin dhe e vidhos atë në një pllakë bazë, të cilën e shtrëngova në këmbën e djepit
  • Bërë një rrotë rrotull druri me porosi me një vrimë për të përshtatur rrotën e vogël të rrotullës së rrotullës brenda. Unë e bëra vrimën qendrore shumë të shtrënguar dhe sapo u vra në rrotën e rrotullës. Unë shpova një vrimë përmes timonit në mes, në mënyrë që të mund të hyja në vidën në rrotën e rrotullës metalike për ta shtrënguar atë në motorin shkelës.
  • Kaloi një varg nga "krahu" i djepit në timon. Unë e sigurova vargun duke e kaluar nëpër vrimën që kisha shpuar dhe vetëm duke e ngjitur në vend.

Zgjidhja më e mirë për hapin e 3 -të është që së pari të blini një rrotë rrotull me diametër më të madh. I imi është pak më pak se 3 në diametër brenda brazdës dhe funksionon vërtet mirë për djepin tim të veçantë.

Versioni im i parë përdori një krah në vend të një rrote. Nuk funksionoi aq mirë sepse forca nuk po aplikohej në një drejtim të qëndrueshëm, dhe gjithashtu ishte vërtet e ndjeshme për t'u hedhur jashtë nëse pozicioni fillestar nuk ishte i saktë. Përdorimi i një rrote zgjidh ato çështje. Unë gjithashtu u argëtova duke përdorur një sistem të vogël rrotull, por përfundova pa pasur nevojë sepse rrota ime më dha çift rrotullues të mjaftueshëm.

Hapi 19: Konfigurimi përfundimtar

Konfigurimi përfundimtar
Konfigurimi përfundimtar

Montoni mikrofonin pranë fëmijës tuaj, por në një vend ku ata nuk do të godasin telat. Vendosni butonat kudo që dëshironi, për sa kohë që keni tela të mjaftueshëm për të drejtuar në destinacionin përfundimtar. Ju gjithashtu mund të zëvendësoni butonat me një konfigurim wifi në arduino, por unë ende nuk kam shkuar aq thellë. Fat i mirë atje!

Recommended: