Obsah:

Kolískový kolískový reproduktor Arduino: 19 krokov (s obrázkami)
Kolískový kolískový reproduktor Arduino: 19 krokov (s obrázkami)

Video: Kolískový kolískový reproduktor Arduino: 19 krokov (s obrázkami)

Video: Kolískový kolískový reproduktor Arduino: 19 krokov (s obrázkami)
Video: Infinix hot 30 - распаковка и первое знакомство с крепким народным топом за смешные деньги 🔥😱 2024, Júl
Anonim
Image
Image

Ospravedlňujem sa, nemohol som odolať banálnej intenzívnej hudbe, ktorú navrhla moja vec na úpravu videa.

Nedávno som mal svoje prvé dieťa a už som mal drevenú kolísku, ktorú môj strýko (ktorý je úžasný drevorubač) vyrobil pre svojho synovca. Môj synovec to už dávno prerástol, takže som to rád vzal a vyhýbal som sa tomu, že VŠETKY PENIAZE vynaložím na akúkoľvek kolísku/kočík, na ktorý mamičkí blogeri zanevreli. Kolíska je vcelku jednoduchého dizajnu, v zásade ide o dva stĺpiky, cez ktoré sú pripevnené skrutky, ktoré podopierajú telo kolísky. K dispozícii je odnímateľný kolík, ktorý ho zaistí na svojom mieste.

Počas niekoľkých týždňov sme zistili, že často dokážeme utlmiť ľahkú rozmarnosť tým, že trochu kolískeme kolísku, kým sa náš chlapec neusadí. V noci, keď sme to zistili, som strávil niekoľko 10 minútových úsekov neskoro v noci s rukou siahajúcou pod prikrývku, ospalo ho kolísal, šťastný, že som našiel spôsob, ako ho upokojiť bez toho, aby som sám vstal z postele. ráno som pripevnil šnúrku a malú karabínku, aby som mohol kolísať bez toho, aby som musel natiahnuť ruku.

Ráno potom som začal brainstormingovať spôsob, akým by som robotovi rozkýval toto dieťa. Vstúpte do Arduina…

Zásoby

Ok, toto bol môj prvý projekt Arduino, takže som experimentoval a robil pokusy a chyby, a som si istý, že je v mojom návrhu priestor na zlepšenie, ale tu je môj zoznam súčiastok: Arduino Uno (13 dolárov) na ovládanie všetkého súprava (10 dolárov) na pripojenie drôtov

Krokový motor (14 dolárov) Toto je najzábavnejšie dielo, pretože je to vec, ktorá robí všetku prácu. Začal som s menším krútiacim momentom, ale potom som dostal tento a funguje celkom dobre. Neváhajte a kúpte si ešte výkonnejší. Ovládače krokových motorov (10-30 dolárov) Toto sa nachádza medzi Arduinom a motorom. Tento konkrétny je zjavne schopný poháňať motor tichšie ako niektoré iné, a tak som išiel s tým, pretože keď budeme spať, motor bude niekoľko stôp od mojej (a môjho syna) hlavy. Pôvodne som si kúpil jeden ovládač TMC2209 za ~ 10 dolárov, ale nakoniec som si kúpil balenie 4 kusov, pretože som mal spočiatku nejaké problémy a chcel som sa uistiť, že som dosku v určitom okamihu nepražil. Nakoniec som zabil 3 dosky, čo ma priviedlo k ďalšej položke … Kondenzátory! (10 dolárov) Skutočne potrebujete iba 1 47 uF 50 V kondenzátor, takže táto škatuľka 240 bola úplne zbytočná. Napájanie 36 V (17 dolárov) Pôvodne som kúpil slabé 12 V napájanie, potom som zistil, že to je zdroj všetkých mojich problémov a dostal taký, ktorý bol bližšie k maximálnemu napätiu, ktoré môj krokový motor zvládol. Ak používate iný motor alebo krokový ovládač, uistite sa, že dokáže zvládnuť napätie (V) a že prúd (A) zdroja je najmenej taký vysoký ako špičkové zosilňovače, ktoré motor odoberá. Zásuvky ženského napájacieho konektora (8 dolárov) Do toho sa napájací zdroj zapojí. Budete ich musieť spájkovať s niektorými drôtmi, aby ste ich prilepili na dosku. Veľký balík prepojok (9 dolárov), aby som mohol umiestniť ovládacie prvky kdekoľvek v miestnosti.

Tlačidlá (8 dolárov) na zapnutie/vypnutie atď

Zosilňovač mikrofónu (11 dolárov) Nevedeli ste, že aj toto bolo aktivované zvukom?

Niektoré malé kladky (8 dolárov) som ich nakoniec použil, ale môžu existovať lepšie alternatívy. O tom neskôr. Budete tiež určite potrebovať spájkovačku a čokoľvek, čo chcete použiť na montáž motora. Osobne som vyrobil hrubú škatuľu zo 4 naskrutkovaných kusov dreva a potom ich priskrutkoval k ďalšiemu kusu dreva, ktorý je zhruba široký ako kolíska. Zatiaľ to mám iba zapnuté, pretože neviem, či chcem strýkovi strieľať do kolísky.

Krok 1: Zoznámte sa s kolíkom ovládača krokového ovládača

Pripojte Arduino 5V/GND k vášmu nepájivému stolu
Pripojte Arduino 5V/GND k vášmu nepájivému stolu

Program na modelovanie, ktorý som použil, nemal túto presnú dosku ovládača, takže budete musieť odkázať na tento obrázok. Všetko som usporiadal v rovnakej orientácii ako tento obrázok.

Krok 2: Pripojte Arduino 5V/GND k vášmu nepájivému stolu

Pripojte drôt z Arduino 5V k lište „+“na jednej strane dosky, ako je to možné

(ignorovať

Krok 3: Pripojte +/- lišty k VIO/GND

Pripojte +/- lišty k VIO/GND
Pripojte +/- lišty k VIO/GND

Pripojte drôt z koľajnice „-“k GND v dolnom ľavom rohu dosky krokového ovládača. Pripojte vodič z koľajnice „+“k VIO

Krok 4: Pripojte DIR/STEP k digitálnym pinom na Arduine

Pripojte DIR/STEP k digitálnym pinom na Arduino
Pripojte DIR/STEP k digitálnym pinom na Arduino

Pripojte piny DIR a STEP z dosky krokového ovládača k dvom digitálnym kolíkom na Arduine. Použil som piny 2 a 3, v tomto poradí, ale to nevadí, pokiaľ si piny v kóde neskôr nastavíte.

Krok 5: Poďme dopredu a pridáme ten kondenzátor …

Poďme dopredu a pridáme ten kondenzátor …
Poďme dopredu a pridáme ten kondenzátor …

Vypálil som 2 dosky krokových ovládačov, pretože som nemal kondenzátor na svojom mieste, takže poďme ďalej a pridajte 47uF 50V kondenzátor na piny VM/GND na doske ovládača. Uistite sa, že pin „-“na kondenzátore je v kolíku GND na doske (na zodpovedajúcej strane kondenzátora bude „-“

Krok 6: Choďte dopredu a spojte ten GND

A choďte dopredu a spojte ten GND
A choďte dopredu a spojte ten GND

Na GND, ku ktorému ste práve pridali kondenzátor, pokračujte a pripojte ho k rovnakej koľajnici „-“ako ostatné GND.

Krok 7: Pripojte motor k ovládaču

Pripojte motor k ovládaču
Pripojte motor k ovládaču

Ktorý kolík pôjde kam, bude závisieť od motora, ktorý ste si kúpili, ale ten, ktorý som uviedol, má schému zapojenia v zozname Amazon.

Pre môj motor -

Pripojte zelenú a čiernu k M2B a M2A

Pripojte červenú a modrú k M1A a M1B Poznámka: Ak z akéhokoľvek dôvodu váš motor nemá diagram, môžete ľahko zistiť, ktoré vodiče tvoria obvod, ak máte multimetr. Nastavte multimeter na nízky zosilňovač a odpojte motor. Dotknite sa jedného z káblov multimetra jedného z vodičov motora a potom vyskúšajte každý ďalší kábel druhým vodičom. Ak dostanete odpor, potom tieto dva vodiče vytvoria 1 obvod a ostatné dva vodiče vytvoria druhý.

Krok 8: Pripojte EN, MS1 a MS2 k „-“

Pripojte EN, MS1 a MS2 k
Pripojte EN, MS1 a MS2 k

Nie som si úplne istý, či je to potrebné, ale domnievam sa, že motor nastaví na menšie krokové nastavenie v ovládači TMC2209. Môžete ich pripojiť k koľajnici „-“najbližšie k nim, pretože ju neskôr spojíme s druhou stranou.

Krok 9: Spájkujte ženský napájací konektor na dva vodiče

Spájajte ženský napájací konektor na dva vodiče
Spájajte ženský napájací konektor na dva vodiče

V spájkovaní nie som najlepší na svete, takže to budete musieť hľadať inde, ale ja som to tak urobil. Konce vodičov som ohnul tak, aby ležali naplocho na kábloch konektora, a potom som drôt spájkoval s elektródou. Nemal som žiadne veci zmršťujúce šnúru, takže som ich úžasne omotal elektrickou páskou.

Krok 10: Pripojte novo spájkovanú zásuvku

Pripojte novo spájkovanú zásuvku
Pripojte novo spájkovanú zásuvku

Zatiaľ prosím nepripájajte svoj skutočný napájací zdroj. Červený vodič na „+“, čierny na „-“

Krok 11: Pripojte ich k VM/GND

Pripojte ich k VM/GND
Pripojte ich k VM/GND

Pripojte tieto koľajnice „+“a „-“k VM a GND vedľa neho. Tie, na ktorých je kondenzátor.

Krok 12: Obdivujte svoju ručnú prácu

Obdivujte svoju ručnú prácu
Obdivujte svoju ručnú prácu

Dobre, teraz máte motor a ovládač úplne nastavený! Odteraz budeme vykonávať iba kontroly. Mimochodom, dopredu:

  • Ak ste z akéhokoľvek dôvodu odpojili ovládač, nepokúšajte sa ho pripojiť, keď je zapojené 36 V napájanie. Takto som zabil svoju tretiu dosku ovládača.
  • Pred zapojením napájania Arduino zapojte 36V napájanie. Osobne som nesmažil Arduino, ale po ceste som na to videl varovanie.

Krok 13: Voliteľné - skontrolujte svoj VREF

TMC2209 má potenciometer, ktorý riadi prúd do motora. Ak máte rovnaký ovládač ako ja, môžete si o tom prečítať tu. Ak chcete upraviť nastavenie:

  • Odpojte všetky napájania a odpojte káble motora od vodiča.
  • Odpojte vodič na kolíku EN (aktivácia) na ovládači. Toto je špendlík v ľavom hornom rohu.
  • Pripojte napájanie motora (36 V)
  • Pomocou multimetra nastaveného na 20 V sa dotknite jedného vodiča so zdrojom GND (na svoju "-" lištu som použil drôtové pripojenie) a druhého vodiča v kolíku VREF. Nedotýkajte sa elektródy ničím iným, v opačnom prípade môžete vodič skratovať.
  • Malým skrutkovačom jemne nastavte skrutku potenciometra. Pre moju dosku proti smeru hodinových ručičiek = viac energie. Môj VREF osobne číta ~ 0,6V.

Krok 14: Tlačidlá

Gombíky!
Gombíky!

Ďalej spojte svoje tlačidlá takto. Nepotrebujú silu.

  • Pripojte "-" lištu na paneli s tlačidlami k jednému z GND Arduina. Ak chcete, môžete ho tiež jednoducho reťaziť z koľajnice „-“na druhom paneli.
  • Pripojte jeden kolík každého tlačidla k koľajnici „-“
  • Pripojte ďalší kolík každého tlačidla k digitálnemu kolíku na Arduine.

Použil som 4 tlačidlá: Motor zap/vyp

Motor pokračuje

Zapnutý mikrofón

Mikrofón vypnutý

Podrobnejšie o týchto otázkach, keď sa dostaneme ku kódu, ale použil som zreteľné tlačidlá mikrofónu jednoducho preto, že som nemal diódy LED, ktoré by ma informovali, či je mikrofón zapnutý alebo vypnutý, takže výrazné tlačidlá zapnutia/vypnutia zaistili spoľahlivosť.

Krok 15: Pridajte dosku mikrofónu

Pridajte dosku mikrofónu
Pridajte dosku mikrofónu

Toto je jednoduché a Adafruit tu má dobré pokyny (a základy spájkovania!).

  • Pripojte „-“k GND
  • Pripojte GND na doske mikrofónu k „-“(môžete priamo pripojiť GND k GND a preskočiť predchádzajúci krok, skutočne)
  • Pripojte VCC k napájaniu 3,3 V na Arduine. To je dôležité, pretože tento zdroj napájania je menej „hlučný“ako 5 V, čo má za následok lepšie odčítanie mikrofónu
  • Pripojte OUT ku kolíku ANALOG IN na Arduine. Použil som A0.

Krok 16: Toto by mal byť konečný výsledok

Toto by mal byť konečný výsledok!
Toto by mal byť konečný výsledok!
Toto by mal byť konečný výsledok!
Toto by mal byť konečný výsledok!

Teraz by malo byť všetko pripravené. Tu je obrázok konečného diagramu a mojej spleti drôtov v skutočnosti. Pozrime sa na nejaký kód!

Krok 17: Kód

Dobre, pozrime sa na kód! Nie je to moja najčistejšia práca, ale prácu zvládne. Pridal som komentáre, aby som tu všetko vysvetlil, ale vydržte so mnou. Na to všetko som použil Arduino IDE (k dispozícii pre Windows a Mac zadarmo) Isté je toto: Nastavte rýchlosť motora a vzdialenosť, po ktorej sa budete otáčať.

Nastavte niekoľko skál (hojdačiek), ktoré musíte urobiť.

Otočte nastavenú vzdialenosť o 1 švih. Otočte nastavený počet opakovaní.

Medzi tým všetkým sledujte stláčanie tlačidiel alebo počúvajte mikrofón, aby ste zistili, či by sa motor mal zapnúť. Budete musieť upraviť hodnoty rýchlosti, vzdialenosti a citlivosti mikrofónu. Rýchlosť motora ovplyvní hlasitosť a krútiaci moment. Čím rýchlejšie motor ide, tým je hlasnejší a tým menší krútiaci moment získate. Ten môj je momentálne takmer tichý, takže je možné ho spustiť tak, aby nevydával veľa zvuku.

#include // "štandardná" knižnica krokových motorov

//#definujte DEBUG 1 // odkomentujte to, ak chcete upraviť úrovne mikrofónu // nastavenie tlačidiel - tieto zodpovedajú miestu, kde sú digitálne piny, ktoré ste pripojili k tlačidlám, konštantný motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Nastavenie mikrofónu - A0 tu je analógový vstup pre mikrofón. Okno vzorky je v milis konštante micPin = A0; const int sampleWindow = 1000; vzorka bez znamienka; bool micEnabled = false; dvojnásobná mikrosenzitivita = 0,53; // to asi budete musieť zmeniť // Pre mňa bolo asi 0,5 dosť dobrých na to, aby ste nevypálili na malé vrčanie //, ale spustili sa na malé výkriky v krokochPerRevolution = 3200; // zmeňte to tak, aby zodpovedalo počtu krokov na otáčku vášho motora // Môj motor je 200 krokov/otáčku // Ale nastavil som ovládač na 1/16 mikrokrokov // takže 200*16 = 3200 … úprimne neviem, či toto je správny spôsob // ako to urobiť Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 sú kolíky DIR & STEP int stepCount = 0; int motorSpeed = 95; // budete to musieť upraviť podľa svojej kolísky a hmotnosti dieťaťa int numSteps = 90; // Vzdialenosť, ktorou sa motor pohne. // Budete to musieť upraviť podľa polomeru kolesa, ktoré pripevníte // k motoru. Toto a rýchlosť budú pravdepodobne pokus - omyl. // Poznámka - vyššie rýchlosti na krokových motoroch = nižší efektívny krútiaci moment // Ak nemáte dostatok krútiaceho momentu, váš motor preskočí kroky (nepohybuje sa) int oldmotorButtonValue = HIGH; bool enabled = false; // motor zapnutý? int loopStartValue = 0; int maxRocks = 100; // koľkokrát chcete, aby sa spustil, než vypnete int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // na protokolovanie ladenia #endif pinMode (motorEnablePin, INPUT_PULLUP); // Toto je nastavenie, aby tlačidlá pracovali bez napájania pinMode (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // nastaví rýchlosť motora na to, čo ste zadali predtým} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead iba číta hodnoty tlačidiel int continueValue = digitalRead (continuePin); // Toto zistí stlačenie tlačidla motora a zabráni jeho spusteniu viac ako raz za kliknutie, ak (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Ak je motor vypnutý a mikrofón zapnutý, počúvajte detský plač, ak (! Enabled && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } if (enabled) {stepsPerRevolution = stepsPerRevolution * -1; // obrátený smer // Pri mojom nastavení je efektívnejšie cúvať pri // prvom švihu. Môžete to vložiť za slučku // ak to tak nie je pre váš // roztočte motor o vzdialenosť uvedenú vyššie pre (int i = loopStartValue; i <numSteps; i ++) {// skontrolujte vypnutie int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Tieto nasledujúce dva riadky „uložia“polohu motora, takže nabudúce, keď ho zapnete //, bude pokračovať v ceste, ako keby ste ho nevypli. To zabráni odhodeniu // vzdialenosti vášho pohybu loopStartValue = i; // uloženie pozície stepsPerRevolution = stepsPerRevolution * -1; // zachovanie smeru oldmotorButtonValue = tempmotorButtonValue; prestávka; } checkContinue (continueValue); // skontrolujte, či bolo stlačené tlačidlo pokračovať micCheck (); myStepper.step (stepsPerRevolution / 50); // koľko krokov je potrebné vykonať na jednu slučku, // možno budete musieť toto upraviť // uistite sa, že budeme pokračovať v úplnej vzdialenosti slučky, ak sa slučka skončí // to sa prejaví, ak ste sami vypli motor a „uložilo“sa pozícia if (i == numSteps - 1) {loopStartValue = 0; }}} oneskorenie (100); // pred ďalším rockom pozastavte 100 mil. Toto budete musieť upraviť. ak (povolené) checkComplete (); oldmotorButtonValue = motorButtonValue; // toto sa používa na zabránenie dvojitým kliknutiam} // Tento kód je priamo od Adafruit. double getMicReading () {unsigned long startMillis = millis (); nepodpísané int peakToPeak = 0; // hladina špička-špička bez znamienka int signalMax = 0; nepodpísaný int signálMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == LOW) enabled = true; vzorka = analogRead (micPin); if (sample signalMax) {signalMax = sample; // uložte iba maximálne úrovne} else if (ukážka = maxRocks) {enabled = false; rockCount = 0; // návrat do strednej polohy

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

myStepper.step (stepsPerRevolution * -1 / 50); // krok 1/100 revolúcie:

}

} }

Krok 18: Montáž a nastavenie kolesa

Montáž a nastavenie kolesa
Montáž a nastavenie kolesa

To je pre mňa stále WIP, pretože, ako som povedal, nie som si istý, či chcem do kolísky ešte vložiť skrutky. Spôsob, akým som svoje bane vybavil, je nasledujúci:

  • Dajte svorku, ktorá bude pôsobiť ako rameno vychádzajúce z kolísky, aby moje koleso mohlo ťahať v priamom smere
  • Zaskrutkovali ste surovú škatuľu, do ktorej ste vložili motor, a priskrutkovali ju k základnej doske, ktorú som pripevnil k nohe kolísky.
  • Vyrobené na mieru drevené remenice s dierou, do ktorej sa zmestí malé koliesko kladky. Stredný otvor som urobil veľmi tesným a v kolese krokovej kladky som len naklopil. Prostredníctvom kolesa som vyvŕtal otvor do stredu, aby som mal prístup k skrutke na kovovom kladkovom kolese a utiahol ju na krokový motor.
  • Viedol výplet z kolískového „ramena“na koleso. Zaistil som strunu tak, že som ju previedol otvorom, ktorý som vyvŕtal, a len som ju zalepil páskou.

Lepším riešením pre 3. krok je v prvom rade kúpiť remenice s väčším priemerom. Ten môj má vo vnútri drážky priemer menej ako 3 palce a funguje veľmi dobre pre moju konkrétnu kolísku.

Moja prvá verzia používala namiesto kolesa rameno. Nefungovalo to tak dobre, pretože sila nebola aplikovaná konzistentným smerom a bolo tiež veľmi náchylné na odhodenie, ak počiatočná pozícia nebola správna. Tieto problémy rieši používanie kolesa. Bavil som sa aj pomocou systému malých kladiek, ale nakoniec som to nepotreboval, pretože moje koleso mi poskytlo dostatočný krútiaci moment.

Krok 19: Konečné nastavenie

Konečné nastavenie
Konečné nastavenie

Mikrofón namontujte blízko dieťaťa, ale na miesto, kde sa netrafí do žiadnych káblov. Umiestnite tlačidlá kdekoľvek chcete, pokiaľ máte dostatok drôtov na to, aby ste mohli bežať do konečného cieľa. Môžete tiež jednoducho nahradiť tlačidlá nastavením wifi na arduine, ale ešte som tak hlboko nešiel. Veľa šťastia!

Odporúča: