Tartalomjegyzék:

Arduino Cradle Rocker: 19 lépés (képekkel)
Arduino Cradle Rocker: 19 lépés (képekkel)

Videó: Arduino Cradle Rocker: 19 lépés (képekkel)

Videó: Arduino Cradle Rocker: 19 lépés (képekkel)
Videó: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, Július
Anonim
Image
Image

Sajnálom, nem tudtam ellenállni annak a furcsa, intenzív zenének, amelyet a videószerkesztőm javasolt.

Nemrégiben született meg az első gyerekem, és már volt egy fa bölcsőm, amit a nagybátyám (aki fantasztikus faipari munkás) készített az unokaöcsémnek. Az unokaöcsém már régen kinőtte, ezért örömmel vettem, és elkerültem, hogy MINDEN PÉNZT bármilyen bölcsőre/bölcsőre költsek, amit a mamás bloggerek elájítottak. A bölcső meglehetősen egyszerű kialakítású, alapvetően két tartóoszlop, amelyeken keresztül csavarok tartják a bölcsőtestet. Van egy kivehető csap, amely rögzíti a helyén.

Néhány héten belül azt tapasztaltuk, hogy gyakran elfojthatjuk a könnyű nyűgösséget, ha egy kicsit ringatjuk a bölcsőt, amíg fiunk le nem telepedik. Azon az éjszakán, amikor ezt megtudtuk, néhány 10 perces húzást töltöttem késő este, miközben a karom a takaró alól ért, álmosan ringattam őt, és örültem, hogy megtaláltam a módját, hogy megnyugtassam anélkül, hogy én is felkelnék az ágyból. reggel egy madzagot és egy kis karabinert csatoltam, hogy ringathassam a bölcsőt anélkül, hogy kinyújtanám a karomat.

Másnap reggel elkezdtem ötletelni azon, hogy csak egy robot ringathatja meg ezt a gyereket. Lépjen be az Arduino -ba…

Kellékek

Rendben, ez volt az első Arduino -projektem, ezért kísérleteztem, próbáltam és tévedtem, és biztos vagyok benne, hogy van még hova fejlődnöm a tervezésemben, de itt van az alkatrészlistám: Arduino Uno (13 dollár) minden ellenőrzéséhez készlet (10 USD) a vezetékek csatlakoztatásához

A léptetőmotor (14 USD) Ez a legszórakoztatóbb darab, mert ez az, ami elvégzi az összes munkát. Kicsit alacsonyabb nyomatékú meghajtóval kezdtem, de aztán megkaptam ezt, és elég jól működik. Nyerjen egy még erősebbet. Léptetőmotor-meghajtók ($ 10-30) Ez az Arduino és a motor között helyezkedik el. Ez a fajta látszólag képes csendesebben vezetni a motort, mint mások, ezért így jártam el, mivel a motor néhány lábnyira lesz a fejemtől (és a fiamtól), miközben alszunk. Eredetileg csak vettem egy TMC2209 illesztőprogramot ~ 10 dollárért, de végül megvettem egy 4 darabos csomagot, mert először nehézségeim voltak, és biztos akartam lenni abban, hogy valamikor nem sütöttem ki a táblát. Végül 3 táblát öltem meg, ami elvezet a következő elememhez … Kondenzátorok! ($ 10) Valóban csak 1 47 uF 50 V -os kondenzátorra van szüksége, tehát ez a 240 -es doboz túlzás volt. Egy 36 V -os tápegység (17 USD) Eredetileg egy 12 V -os tápegységet vásároltam, majd rájöttem, hogy ez minden bajom forrása és kaptam olyat, amely közelebb volt a léptetőmotorom maximális feszültségéhez. Ha más motort vagy léptetőgépet használ, győződjön meg arról, hogy képes kezelni a feszültséget (V), és hogy a tápfeszültség áramerőssége (A) legalább olyan magas, mint a motor által felvett csúcsteljesítmény. $ 8) Erre csatlakozik a tápegység. Ezeket egyes vezetékekhez kell forrasztani, hogy beragaszthassák a kenyeretáblát. Egy nagy csomag jumper (9 dollár), hogy a vezérlőket bárhová elhelyezhessem a szobában.

Gombok (8 USD) be- és kikapcsoláshoz, stb

Egy mikrofonerősítő ($ 11) Ó, nem tudtad, hogy ez is hang aktivált?

Néhány kicsi szíjtárcsa kereket (8 USD) végül ezeket használtam, de lehet, hogy vannak jobb alternatívák. Bővebben erről később. Önnek feltétlenül szüksége lesz egy forrasztópákara és mindenre, amit használni szeretne a motor felszerelésére. Én személy szerint most készítettem egy durva dobozt 4 csavarozott fadarabból, majd ezeket egy másik fadarabhoz csavartam, ami nagyjából a bölcső lábam szélessége. Egyelőre csak rögzítettem, mert nem tudom, hogy el akarom -e venni a nagybátyám bölcsőjét.

1. lépés: Ismerje meg a Stepper Driver Pinout -ot

Csatlakoztassa az Arduino 5V/GND -t a kenyértáblájához
Csatlakoztassa az Arduino 5V/GND -t a kenyértáblájához

Az általam használt modellező programnak nem volt pontos illesztőprogramja, ezért hivatkoznia kell erre a képre. Mindent ugyanabba az irányba rendeztem, mint ez a kép.

2. lépés: Csatlakoztassa az Arduino 5V/GND -t a kenyértáblájához

Csatlakoztasson egy vezetéket az Arduino 5V-ról a "+" sínre a kenyértábla egyik oldalán Csatlakoztassa a vezetéket az egyik Arduino GND-ből a "-" sínhez a kenyértábla ugyanazon oldalán

(figyelmen kívül hagyja a

3. lépés: Csatlakoztassa a +/- síneket a VIO/GND-hez

Csatlakoztassa a +/- síneket a VIO/GND-hez
Csatlakoztassa a +/- síneket a VIO/GND-hez

Csatlakoztasson egy vezetéket a "-" sínről a GND-re a léptető meghajtó bal alsó sarkában. Csatlakoztasson egy vezetéket a "+" sínről a VIO-hoz

4. lépés: Csatlakoztassa a DIR/STEP -et az Arduino digitális tűihez

Csatlakoztassa a DIR/STEP -et az Arduino digitális tűihez
Csatlakoztassa a DIR/STEP -et az Arduino digitális tűihez

Csatlakoztassa a DIR és STEP csapokat a léptető vezérlőpanelről az Arduino két digitális csapjához. A 2 -es és a 3 -as csapokat használtam, de ez nem számít, ha később megadja a csapokat a kódjában.

5. lépés: Menjünk előre, és adjuk hozzá a kondenzátort…

Menjünk előre, és adjuk hozzá a kondenzátort…
Menjünk előre, és adjuk hozzá a kondenzátort…

Kiégettem 2 léptető meghajtó táblát, mert nem volt kondenzátorom a helyén, szóval menjünk tovább, és adjuk hozzá a 47uF 50V -os kondenzátort a vezérlőlap VM/GND csapjaihoz. Győződjön meg arról, hogy a kondenzátor "-" csapja a kenyérpanel GND csapjában van ("-" lesz a megfelelő oldalon)

6. lépés: Menjen előre, és csatlakoztassa a GND -t

És menjen előre, és csatlakoztassa azt a GND -t
És menjen előre, és csatlakoztassa azt a GND -t

Azon a GND-n, amelyhez most hozzáadta a kondenzátort, folytassa és csatlakoztassa ugyanahhoz a "-" sínhez, mint a másik GND.

Lépés: Csatlakoztassa a motort a meghajtóhoz

Csatlakoztassa a motort a meghajtóhoz
Csatlakoztassa a motort a meghajtóhoz

Az, hogy melyik csap hova kerül, a vásárolt motortól függ, de az általam felsorolt kapcsolási rajza az amazon listáján található.

A motoromhoz -

Csatlakoztassa a zöld és feketét az M2B és M2A csatlakozóhoz

Csatlakoztassa a Vörös és Kéket az M1A és M1B készülékhez Megjegyzés: Ha bármilyen oknál fogva a motornak nincs diagramja, akkor könnyen kitalálhatja, hogy mely vezetékek alkotnak áramkört, ha van multimétere. Állítsa a multimétert alacsony erősítőre, és kapcsolja le a motort. Érintse meg a multiméter egyik vezetékét a motor egyik vezetékéhez, majd próbálja ki a többi vezetéket a másik vezetékkel. Ha ellenállás értéket kap, akkor ez a két vezeték 1 áramkört képez, a másik kettő pedig a másikat.

8. lépés: Csatlakoztassa az EN, MS1 és MS2 "-"

Csatlakoztassa az EN, MS1 és MS2 csatlakozókat
Csatlakoztassa az EN, MS1 és MS2 csatlakozókat

Nem vagyok teljesen biztos abban, hogy erre szükség van, de úgy vélem, hogy ez a motort kisebb lépésekre állítja be a TMC2209 illesztőprogramban. Csatlakoztathatja őket a hozzájuk legközelebb eső "-" sínhez, mivel később a másik oldalra is összekötjük.

9. lépés: A női tápcsatlakozó forrasztása két vezetékhez

Forrasztjon egy női tápcsatlakozót két vezetékre
Forrasztjon egy női tápcsatlakozót két vezetékre

Nem vagyok a világ legjobbja a forrasztásban, ezért ezt máshol kell keresned, de az enyémet is így tettem. Hajlítottam a vezetékek végét úgy, hogy azok a csatlakozóvezetékekhez simuljanak, majd forrasztottam a vezetéket a vezetékhez. Nem volt nálam zsinór hőre zsugorodó cucc, úgyhogy csak becsomagoltam őket elektromos szalaggal.

10. lépés: Csatlakoztassa az újonnan forrasztott női csatlakozót

Csatlakoztassa az újonnan forrasztott női csatlakozót
Csatlakoztassa az újonnan forrasztott női csatlakozót

Kérjük, még ne csatlakoztassa a tényleges tápegységet. Piros vezeték "+", fekete "-"

11. lépés: Csatlakoztassa ezeket a VM/GND -hez

Csatlakoztassa ezeket a VM/GND -hez
Csatlakoztassa ezeket a VM/GND -hez

Csatlakoztassa ezeket a "+" és "-" síneket a VM-hez és a mellette lévő GND-hez. Akiken kondenzátor van.

12. lépés: Csodálja meg a keze munkáját

Csodálja meg a keze munkáját
Csodálja meg a keze munkáját

Rendben, most már teljesen be van állítva a motor és a meghajtó! Innentől kezdve csak ellenőrzést végzünk. Mellesleg, előre:

  • Ha bármilyen okból lekapcsolta az illesztőprogramot, ne próbálja meg csatlakoztatni, amíg a 36V -os tápellátása be van dugva. Így öltem meg a 3. illesztőprogramot.
  • Csatlakoztassa a 36 V -os tápfeszültséget, mielőtt az Arduino áramellátást csatlakoztatja. Én személy szerint nem sütöttem egy Arduino -t, de útközben sok figyelmeztetést láttam ezzel kapcsolatban.

13. lépés: Választható - Ellenőrizze a VREF -et

A TMC2209 rendelkezik egy potenciométerrel, amely szabályozza a motor áramát. Ha ugyanazt az illesztőprogramot kapja, mint én, itt olvashat erről. Ha módosítani szeretné a beállítást:

  • Húzza ki az összes áramellátást, és válassza le a motor vezetékét a meghajtóról.
  • Húzza ki a vezetéket az illesztőprogram EN (engedélyező) tűjéhez. Ez a csap a bal felső sarokban.
  • Csatlakoztassa a motor tápegységét (a 36V -os)
  • Egy 20 V-os multiméterrel érintse meg az egyik vezetéket a GND-forráshoz (én a "-" sínhez használt vezetéket használtam), a másik vezetéket pedig a VREF-tűhöz. Kérjük, ne érintse meg a vezetéket máshoz, rövidre zárhatja a vezetőjét.
  • Egy kis csavarhúzóval óvatosan állítsa be a potenciométer csavarját. Az én táblámnál az óramutató járásával ellentétes irányban = nagyobb teljesítmény. A VREF -em személyesen ~ 0.6V -ot mutat.

14. lépés: Gombok

Gombok!
Gombok!

Ezután kösse össze a gombokat. Nincs szükségük erőre.

  • Csatlakoztassa a gombja kenyértáblájának "-" sínjét az Arduino egyik GND-jéhez. Ha akarja, egyszerűen le is kötheti a másik kenyértábla "-" sínjéről.
  • Csatlakoztasson minden gomb egy tűjét a "-" sínhez
  • Csatlakoztasson minden gomb másik tűjét az Arduino digitális tűjéhez.

4 gombot használtam: Motor be/ki

Motor tovább

Mikrofon bekapcsolva

Mikrofon ki

Bővebben ezekről, amikor a kódhoz értünk, de azért használtam külön mikrofongombokat, mert nem rendelkeztem LED -ekkel, hogy tudjam, a mikrofon be vagy ki van kapcsolva, így a különálló be/ki gombok használata bolondbiztos lett.

15. lépés: Adja hozzá a mikrofontáblát

Adja hozzá a mikrofontáblát
Adja hozzá a mikrofontáblát

Ez egyszerű, és az Adafruit jó utasításokat tartalmaz (és a forrasztási alapokat!).

  • Csatlakoztassa a "-" egy GND-hez
  • Csatlakoztassa a GND-t a mikrofonlapon a "-" -hoz (közvetlenül csatlakoztathatja a GND-t a GND-hez, és kihagyhatja az előző lépést)
  • Csatlakoztassa a VCC -t az Arduino 3.3V -os tápellátásához. Ez fontos, mivel ez a tápegység kevésbé "zajos", mint az 5V, ami jobb mikrofon leolvasást eredményez
  • Csatlakoztassa az OUT -t az ANALOG IN tűhöz az Arduino -n. A0 -t használtam.

16. lépés: Ez legyen a végeredmény

Ez legyen a végeredmény!
Ez legyen a végeredmény!
Ez legyen a végeredmény!
Ez legyen a végeredmény!

Most mindennek készen kell állnia. Itt egy kép a végső diagramról és a vezetékek összezavarodásáról a valóságban. Nézzünk néhány kódot!

17. lépés: kód

Oké, nézzük a kódot! Ez nem a legtisztább munkám, de elvégzi a munkát. Hozzáadtam megjegyzéseket, hogy mindent elmagyarázzak itt, de tartson velem. Mindehhez az Arduino IDE -t használtam (Windows és Mac rendszeren ingyenesen elérhető) A lényeg a következő: Állítsa be a motor fordulatszámát és távolságát.

Állítson be több sziklát (hintát).

Fordítsa el a beállított távolságot 1 lengéshez. Swing egy meghatározott számú alkalommal.

Mindezek között figyeljen a gombnyomásra, vagy hallgassa meg a mikrofont, hogy lássa, be kell -e kapcsolnia a motornak. Be kell állítania a sebességet, a távolságot és a mikrofon érzékenységét. A motor sebessége befolyásolja a hangerőt és a nyomatékot. Minél gyorsabban megy a motor, annál hangosabb és kevesebb nyomatékot kap. Az enyém jelenleg szinte néma, így lehetséges, hogy működésbe hozza anélkül, hogy sok hangot adna ki.

#include // "standard" léptetőmotoros könyvtár

//#define DEBUG 1 // törölje ezt a megjegyzést, ha a mikrofon szintjét szeretné beállítani // Gomb beállítása - ezek megfelelnek azoknak a digitális tűknek, amelyekhez a gombokhoz csatlakoztatta const int motorEnablePin = 10; const int folytassaPin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Mikrofon beállítás - A0 itt a mikrofon analóg bemenete. A mintaablak millis konstansban van int micPin = A0; const int sampleWindow = 1000; előjel nélküli int minta; bool micEnabled = hamis; dupla mikrofonérzékenység = 0,53; // ezen valószínűleg változtatni kell // Számomra a.5 körül elég jó volt ahhoz, hogy ne lőjek kis károgásra //, de kis sírásokra int int lépésekPerRevolution = 3200; // módosítsa ezt úgy, hogy illeszkedjen a motor fordulatszámonkénti lépéseihez // A motorom 200 lépés/fordulat // De beállítottam az illesztőprogramot 1/16 mikrolépésre // tehát 200*16 = 3200 … őszintén szólva fogalmam sincs, hogy ez ez a megfelelő // módszer erre Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 a DIR & STEP csapok int stepCount = 0; int motorSpeed = 95; // ezt a bölcsődnek és a baba súlyának megfelelően kell beállítanod int numSteps = 90; // A motor által megtett távolság. // Ezt a motorhoz rögzített kerék sugara alapján kell módosítania. Ez és a sebesség valószínűleg próba és hiba. // Megjegyzés - nagyobb sebesség a léptetőmotorokon = alacsonyabb tényleges nyomaték // Ha nincs elegendő nyomatéka, akkor a motor kihagyja a lépéseket (nem mozog) int oldmotorButtonValue = HIGH; bool engedélyezve = hamis; // motor engedélyezve? int loopStartValue = 0; int maxRocks = 100; // hányszor akarja ringatni, mielőtt kikapcsolja az int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // hibakeresési naplózáshoz #endif pinMode (motorEnablePin, INPUT_PULLUP); // Ez a beállítás a gombok áramellátás nélküli működéséhez pinMode (folytassaPin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // a motor fordulatszámát a korábban megadottra állítja} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // a digitalRead csak beolvassa a gombok értékeit // Ez érzékeli a motorgomb megnyomását, és megakadályozza, hogy kattintásonként többször lőjön, ha (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Ha a motor ki van kapcsolva, és a mikrofon be van kapcsolva, hallgassa meg a baba sírását, ha (! Engedélyezett && micEnabled) {if (getMicReading ()> = micSensitivity) engedélyezve = true; } if (engedélyezett) {stepsPerRevolution = stepsPerRevolution * -1; // fordított irány // Az én beállításommal hatékonyabb a tolatás // az első lengésnél. Ezt beírhatja a ciklus után // ha a tiéd nem így van // forgasd meg a motort a fent megadott távolsághoz (int i = loopStartValue; i <numSteps; i ++) {// ellenőrizze a kikapcsolást int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Ez a következő két sor "megmenti" a motor helyzetét, így ha legközelebb bekapcsolja // akkor tovább fog utazni, mintha nem kapcsolta volna ki. Ez megakadályozza a dobást // a mozgási távolságokat loopStartValue = i; // pozíció mentése stepsPerRevolution = stepsPerRevolution * -1; // irány fenntartása oldmotorButtonValue = tempmotorButtonValue; szünet; } checkContinue (folytassaÉrték); // ellenőrizze, hogy megnyomta -e a folytatás gombot micCheck (); myStepper.step (stepsPerRevolution / 50); // hány lépést kell megtenni ciklusonként, // lehet, hogy ezt módosítania kell // győződjön meg arról, hogy a ciklus befejezése után a teljes ciklustávolságot folytatjuk // ez akkor jön szóba, ha maga kapcsolta ki a motort, és ez "mentette" pozíció if (i == számSteps - 1) {loopStartValue = 0; }}} késleltetés (100); // szünet 100 millis a következő rock előtt. Ezt módosítania kell. if (engedélyezve) checkComplete (); oldmotorButtonValue = motorButtonValue; // ezt használják a dupla kattintások megelőzésére} // Ez a kód közvetlenül az Adafruit -tól származik. double getMicReading () {unsigned long startMillis = millis (); unsigned int peakToPeak = 0; // csúcs-csúcs szint alá nem írt int signalMax = 0; unsigned int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == LOW) engedélyezve = true; minta = analogRead (micPin); if (minta jelMax) {signalMax = minta; // csak a maximális szinteket mentse} else if (minta = maxRocks) {engedélyezett = hamis; rockCount = 0; // visszatérés a középső pozícióhoz

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

myStepper.step (stepsPerRevolution * -1 / 50); // forradalom 1/100. lépése:

}

} }

18. lépés: Szerelés és kerék beállítása

Szerelés és kerék beállítása
Szerelés és kerék beállítása

Ez még mindig WIP számomra, mert mint mondtam, még nem vagyok biztos benne, hogy csavarokat akarok tenni a bölcsőmbe. Az enyém felépítése a következő:

  • Tegyen egy bilincset, amely a bölcsőből leszakadó karként működik, hogy a kerekem egyenes vonalban húzódjon
  • Csavarja össze a nyers dobozt a motor behelyezéséhez, és csavarja azt az alaplemezhez, amelyet a bölcső lábához rögzítettem
  • Egyedi, fából készült szíjtárcsa kereket készített, lyukkal, hogy illeszkedjen a kis léptetőgörgő belsejébe. A középső lyukat nagyon szorossá tettem, és csak a léptetőgörgő kerekében hibáztam. Furattam egy lyukat a kereken keresztül középre, hogy hozzáférhessek a fém szíjtárcsa kerék csavarjához, hogy meghúzzam a léptetőmotorhoz.
  • Fusson egy húrt a bölcső "karjától" a kerékig. A húrt úgy rögzítettem, hogy átfúrtam a fúrt lyukon, és csak a helyére ragasztottam.

A 3. lépés jobb megoldása, ha először csak nagyobb átmérőjű szíjtárcsát vásárol. Az enyém kissé 3 alatti átmérőjű a horonyban, és nagyon jól működik az én bölcsőmnél.

Az első verziómban kar helyett kereket használtam. Ez közel sem működött olyan jól, mert az erőt nem egységes irányban alkalmazták, és nagyon hajlamos volt arra is, hogy kidobják, ha a kiindulási helyzet nem megfelelő. A kerék használata megoldja ezeket a problémákat. Szórakoztam egy kis szíjtárcsa rendszer használatával is, de végül nem kellett, mert a kerekem elegendő nyomatékot adott.

19. lépés: Végső beállítás

Végső beállítás
Végső beállítás

Szerelje fel a mikrofont a gyermeke közelébe, de olyan helyre, ahol nem fog semmilyen vezetéket találni. Tegye a gombokat, ahová csak akarja, amíg elegendő vezetékkel rendelkezik a végső célállomás eléréséhez. Azt is csak lecserélheti a gombokat egy wifi beállításra az arduino -n, de még nem mentem ilyen mélyre. Sok szerencsét odakinn!

Ajánlott: