Automatiniai grindų valikliai nėra naujiena, tačiau jie visi turi bendrą problemą. Jie visi yra per brangūs tam, ką daro. Šiandien mes pagaminsime automatinį namų valymo robotą, kuris kainuoja tik nedidelę dalį rinkoje esančių. Šis robotas gali aptikti priešais esančias kliūtis ir daiktus ir gali toliau judėti, išvengdamas kliūčių, kol visas kambarys bus išvalytas. Prie jo pritvirtintas nedidelis šepetėlis grindims valyti.
Taip pat patikrinkite mūsų išmanųjį dulkių valymo robotą naudodami „Arduino“
Būtinas komponentas:
- „Arduino UNO R3“.
- Ultragarsinis jutiklis.
- „Arduino“ variklio vairuotojo skydas.
- Pavarų roboto važiuoklė.
- Kompiuteris programuoti „Arduino“.
- Baterija varikliams.
- Elektros bankas „Arduino“ valdymui
- Batų teptukas.
- „Scotch Brite“ šveitimo padas.
Pastaba: Užuot naudoję baterijas, taip pat galite naudoti ilgą 4 gijų laidą, kaip mes. Nors tai nėra labai elegantiškas ar praktiškas sprendimas, tačiau galite tai padaryti, jei neketinate jo naudoti realiame pasaulyje kiekvieną dieną. Įsitikinkite, kad kabelio ilgis yra pakankamas.
Prieš pradėdami detaliau, pirmiausia aptarkite ultragarsą.
HC-SR04 ultragarso jutiklis:
Ultragarsinis jutiklis naudojamas matuoti atstumą labai tiksliai ir stabiliai rodant. Jis gali išmatuoti atstumą nuo 2 cm iki 400 cm arba nuo 1 colio iki 13 pėdų. Jis skleidžia 40KHz dažnio ultragarso bangą ore ir, jei objektas pasitaikys, jis vėl sugrįš į jutiklį. Naudodami laiką, kurio reikia smūgiui į objektą ir grįžtant, galite apskaičiuoti atstumą.
Ultragarsiniame jutiklyje naudojama technika, vadinama „ECHO“. „ECHO“ yra tiesiog atspindėta garso banga. Turėsite ECHO, kai garsas atsispindės, kai pasieksite aklavietę.
„HCSR04“ modulis generuoja garso vibraciją ultragarso diapazone, kai „Trigger“ kaištį padarome aukštą maždaug 10 us, kuris garso greičiu pasiųs 8 ciklų garsinį pliūpsnį ir po smūgio į objektą jį priims „Echo“ kaištis. Atsižvelgiant į tai, kiek laiko reikia vibracijai atkurti, ji suteikia tinkamą impulsą. Jei objektas yra toli, ECHO išgirsti reikia daugiau laiko, o išėjimo impulsų plotis bus didelis. Jei kliūtis yra šalia, ECHO bus girdima greičiau, o išėjimo impulsų plotis bus mažesnis.
Mes galime apskaičiuoti objekto atstumą pagal laiką, per kurį ultragarso banga grįžta atgal į jutiklį. Kadangi garso laikas ir greitis yra žinomi, atstumą galime apskaičiuoti pagal šias formules.
Atstumas = (laikas x garso greitis ore (343 m / s)) / 2.
Vertė padalijama iš dviejų, nes banga eina į priekį ir atgal, įveikdama tą patį atstumą. Taigi kliūčiai pasiekti reikia tik pusės viso laiko
Taigi atstumas centimetrais = 17150 * T.
Anksčiau mes sukūrėme daug naudingų projektų naudodami šį ultragarso jutiklį ir „Arduino“, patikrinkite juos žemiau:
- „Arduino“ atstumo matavimas naudojant ultragarso jutiklį
- Durų signalizacija naudojant „Arduino“ ir ultragarso jutiklį
- IOT pagrįstas savivartės stebėjimas naudojant „Arduino“
Grindų valymo roboto surinkimas:
Montuokite „Arduino“ ant važiuoklės. Įsitikinkite, kad nieko netrumpinate, jei jūsų važiuoklė pagaminta iš metalo. Patartina įsigyti „Arduino“ dėžę ir variklio valdiklio skydą. Varžtus pritvirtinkite ratais ir važiuokle varžtais. Jūsų važiuoklėje turėtų būti galimybės tai padaryti iš gamyklos, tačiau jei taip nėra, galite improvizuoti kitu sprendimu. Epoksidinė idėja nėra bloga. Batų šepetį pritvirtinkite prie važiuoklės priekio. Tam naudojome M-Seal epoksidinių ir išgręžtų varžtų derinį, nors galite naudoti bet kokį kitą sprendimą, kuris jums gali būti lengvesnis. Už šepetėlio pritvirtinkite „Scotch Brite“ šveitimo bloknotą. Mes naudojome ašį, einančią per važiuoklę, kuri ją laiko žaidime, nors tai taip pat yra improvizuojama. Kartu su juo gali būti naudojamas spyruoklinis velenas. Sumontuokite baterijas (arba kabelius ant važiuoklės galinės dalies).Geras būdas tai padaryti yra epoksidinė medžiaga arba akumuliatoriaus laikiklis. Karšti klijai taip pat nėra blogi.
Laidai ir jungtys:
Šio automatinio namų valymo roboto grandinė yra labai paprasta. Prijunkite ultragarso jutiklį prie „Arduino“, kaip nurodyta toliau, ir uždėkite variklio vairuotojo skydą ant „Arduino“, kaip ir bet kurį kitą skydą.
Ultragarsinis „Trig“ kaištis yra sujungtas su 12-uoju „Arduino“ kaiščiu, „Echo“ kaištis yra sujungtas su 13-uoju, įtampos kaiščiu - prie 5 V kaiščio, o „Ground“ - prie žemės kaiščiu. „Echo“ kaištis ir „Trig“ kaištis leidžia „Arduino“ bendrauti su jutikliu. Maitinimas jutikliui tiekiamas per įtampos ir įžeminimo kaiščius, o „Trig“ ir „Echo“ kaiščiai leidžia siųsti ir gauti duomenis naudojant „Arduino“. Sužinokite daugiau apie ultragarso jutiklio sąsają su „Arduino“ čia.
Variklio skyde turėtų būti bent 2 išėjimai, jie turėtų būti prijungti prie jūsų dviejų variklių. Paprastai šie išėjimai žymimi „M1“ ir „M2“ arba „Variklis 1“ ir „Variklis 2“. Prijunkite baterijas ir maitinimo banką iki atitinkamai variklio skydo ir „Arduino“. Negalima jų kryžminiai sujungti. Jūsų variklio skyde turėtų būti įvesties kanalas. Jei naudojate laidus, prijunkite juos prie kintamosios srovės adapterių.
Programavimo paaiškinimas:
Atidarykite „Arduino IDE“. Įklijuokite visą „Arduino“ kodą, pateiktą šios pamokos pabaigoje, į IDE. Prijunkite „Arduino“ prie kompiuterio. Pasirinkite prievadą meniu Įrankiai / prievadas. Spustelėkite įkėlimo mygtuką.
Išbandykite robotą. Jei tai per mažai arba per daug, eksperimentuokite su vėlavimais, kol jis bus tobulas.
Prieš eidami į kodą, turime įdiegti „ Adafruit Motor Shield Library“, kad galėtume valdyti nuolatinės srovės variklius. Kadangi naudojame variklio vairuotojo skydą L293D, turime atsisiųsti „AFmotor Library“ iš čia. Tada pridėkite jį prie „Arduino IDE“ bibliotekos aplanko. Įsitikinkite, kad pervadinote jį į „ AFMotor“ . Sužinokite daugiau apie šios bibliotekos įdiegimą.
Kodas yra lengvas ir lengvai suprantamas, tačiau čia mes paaiškinome keletą jo dalių:
Žemiau kodas nustato robotą. Pirmiausia įtraukėme „Adafruit“ biblioteką, skirtą varikliams vairuoti su variklio vairuotojo skydu. Po to mes apibrėžėme „Trig pin“ ir „Echo pin“. Jis taip pat nustato variklius. Tai nustato, kad „Trig“ kaištis būtų išvestas, o „Echo“ kaištis - įvesties.
#include #define trigPin 12 #define echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCvariklio variklis2 (2, MOTOR12_8KHZ); negaliojanti sąranka () {pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); }
Žemiau pateiktas kodas nurodo „Arduino“ kilpinti šias komandas. Po to jis naudoja jutiklį ultragarso garsams perduoti ir priimti. Jis apskaičiuoja atstumą nuo objekto, kai ultragarso bangos atšoka, pastebėjęs, kad objektas yra nustatytame atstume, jis liepia „Arduino“ atitinkamai pasukti variklius.
void loop () {ilga trukme, atstumas; „digitalWrite“ (trigPin, LOW); vėlavimasMikrosekundės (2); „digitalWrite“ (trigPin, HIGH); vėlavimasMikrosekundės (10); „digitalWrite“ (trigPin, LOW); trukmė = pulseIn (echoPin, HIGH); atstumas = (trukmė / 2) / 29,1; if (atstumas <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (BACKWARD); motor2.run (BACKWARD); vėlavimas (2000); // PAKEISKITE TAI PAGAL ROBOTO KAITĄ.
Dėl to robotas sukasi sukdamas vieną variklį, o kitas sustabdęs.
Žemiau kodas verčia robotą pasukti abu variklius ta pačia kryptimi, kad jis judėtų į priekį, kol aptiks daiktą minėtoje riboje.
else {motor1.setSpeed (160); // PAKEISKITE TAI PAGAL KAIP GREITAI JŪSŲ ŠAKINIAI TURĖTŲ DARYTI. motor2.setSpeed (160); // PAKEISKITE TĄ TĄ pačią vertę, kai įdėsite aukščiau. motor1.run (FORWARD); motor2.run (FORWARD); }