- Požadovaný komponent:
- Montáž robota na čistenie podláh:
- Zapojenie a pripojenie:
- Vysvetlenie programovania:
Automatické čističe podláh nie sú žiadnou novinkou, všetky však spájajú spoločný problém. Všetci sú príliš drahí na to, čo robia. Dnes vyrobíme Automatického domáceho upratovacieho robota, ktorý stojí len malý zlomok tých, ktoré sú na trhu. Tento robot dokáže detekovať prekážky a predmety pred sebou a môže pokračovať v pohybe a vyhýbať sa prekážkam, kým nevyčistí celú miestnosť. Má pripevnenú malú kefku na čistenie podlahy.
Skontrolujte tiež nášho inteligentného vysávača pomocou Arduina
Požadovaný komponent:
- Arduino UNO R3.
- Ultrazvukový senzor.
- Štít Arduino Motor Driver.
- Robotický podvozok s pohonom kolies.
- Počítač na programovanie Arduina.
- Batéria pre motory.
- Power Bank na napájanie Arduina
- Kefa na topánky.
- Čistiaca podložka Scotch Brite.
Poznámka: Namiesto použitia batérií môžete tiež použiť dlhý 4-lankový drôt, ako sme to urobili. Nie je to veľmi elegantné ani praktické riešenie, ale môžete tak urobiť, ak ho neplánujete používať v skutočnom svete každý deň. Uistite sa, že sú dĺžky káblov dostatočné.
Predtým, ako sa pustíme do podrobností, najskôr si povieme niečo o ultrazvuku.
Ultrazvukový snímač HC-SR04:
Ultrazvukový senzor sa používa na meranie vzdialenosti s vysokou presnosťou a stabilnými údajmi. Môže merať vzdialenosť od 2 cm do 400 cm alebo od 1 palca do 13 stôp. Vysiela vo vzduchu ultrazvukovú vlnu s frekvenciou 40 KHz a ak mu objekt príde do cesty, odrazí sa späť k senzoru. Pomocou času, ktorý potrebujete na udrenie objektu a návrat späť, môžete vypočítať vzdialenosť.
Ultrazvukový senzor používa techniku zvanú „ECHO“. „ECHO“ je jednoducho odrazená zvuková vlna. Keď sa zvuk odrazí po dosiahnutí slepej uličky, budete mať ECHO.
Modul HCSR04 generuje zvukové vibrácie v ultrazvukovom rozsahu, keď urobíme kolík „Trigger“ vysoký na približne 10us, ktorý vyšle 8cyklový zvukový výbuch rýchlosťou zvuku a po zasiahnutí objektu bude prijatý kolíkom Echo. V závislosti od času potrebného na návrat zvukových vibrácií poskytuje vhodný impulzný výstup. Ak je objekt ďaleko, potom bude ECHO počuť viac času a šírka výstupného impulzu bude veľká. A ak je prekážka blízko, potom bude ECHO počuť rýchlejšie a šírka výstupného impulzu bude menšia.
Môžeme vypočítať vzdialenosť objektu na základe času potrebného na návrat späť k senzoru ultrazvukovou vlnou. Pretože čas a rýchlosť zvuku sú známe, môžeme vzdialenosť vypočítať podľa nasledujúcich vzorcov.
Vzdialenosť = (čas x rýchlosť zvuku vo vzduchu (343 m / s)) / 2.
Hodnota je vydelená dvoma, pretože vlna sa pohybuje dopredu a dozadu a pokrýva rovnakú vzdialenosť. Čas potrebný na dosiahnutie prekážky je teda iba polovičný oproti celkovému času
Takže vzdialenosť v centimetroch = 17150 * T
Predtým sme pomocou tohto ultrazvukového senzora a Arduina vytvorili veľa užitočných projektov, skontrolujte ich nižšie:
- Arduino meranie vzdialenosti pomocou ultrazvukového senzora
- Dverový alarm pomocou Arduina a ultrazvukového senzora
- Monitorovanie popolnice na báze IOT pomocou Arduina
Montáž robota na čistenie podláh:
Namontujte Arduino na šasi. Dajte pozor, aby ste neskratovali nič v prípade, že je váš podvozok vyrobený z kovu. Je dobré zaobstarať si skrinku pre Arduino a štít ovládača motora. Zaistite motory pomocou kolies a podvozku pomocou skrutiek. Váš podvozok by mal mať možnosti, ako to urobiť z výroby, ale ak nie, môžete improvizovať iné riešenie. Epoxid nie je zlý nápad. Namontujte kefu na topánky na prednú časť šasi. Použili sme na to kombináciu epoxidu M-Seal a vŕtaných skrutiek, môžete však použiť akékoľvek iné riešenie, ktoré by pre vás mohlo byť jednoduchšie. Namontujte čistiacu podložku Scotch Brite za kefu. Použili sme hriadeľ prechádzajúci cez podvozok, ktorý ho drží v hre, aj keď aj to je improvizovateľné. Môže byť doplnený pružinovým hriadeľom. Namontujte batérie (alebo káble na zadnú časť šasi).Dobrým spôsobom je epoxid alebo držiak batérie. Horúce lepidlo tiež nie je zlé.
Zapojenie a pripojenie:
Obvod tohto automatického robota na čistenie domu je veľmi jednoduchý. Pripojte ultrazvukový snímač k Arduinu, ako je uvedené nižšie, a štít Arduino umiestnite na Arduino ako každý iný štít.
Ultrazvukový kolík Trig je pripojený k 12. kolíku na Arduine, kolík Echo je pripojený k 13. kolíku, napäťový kolík na kolík 5 V a uzemňovací kolík na zemný kolík. Pin Echo a Trig pin umožňujú Arduinu komunikovať so senzorom. Napájanie sa dodáva do snímača prostredníctvom kolíkov napätia a uzemnenia a kolíky Trig a Echo mu umožňujú odosielať a prijímať údaje pomocou Arduina. Viac informácií o vzájomnom prepojení ultrazvukového snímača s Arduino sa dozviete tu.
Tienenie motora by malo mať najmenej 2 výstupy a malo by byť pripojené k vašim 2 motorom. Normálne sú tieto výstupy označené ako „M1“ a „M2“ alebo „Motor 1“ a „Motor 2“. Pripojte batérie a napájaciu banku až k štítu motora a Arduino. Nespájajte ich krížom. Váš štít motora by mal mať vstupný kanál. Ak používate vodiče, pripojte ich k sieťovým adaptérom.
Vysvetlenie programovania:
Otvorte Arduino IDE. Prilepte celý kód Arduino uvedený na konci tohto tutoriálu do IDE. Pripojte svoje Arduino k počítaču. Vyberte port v ponuke Nástroje / Port. Kliknite na tlačidlo nahrať.
Vyskúšajte robota. Ak sa to ukáže príliš málo alebo príliš veľa, experimentujte s oneskoreniami, kým nebudú dokonalé.
Predtým, ako vstúpime do kódu, musíme nainštalovať knižnicu štítov motorov Adafruit na pohon jednosmerných motorov. Pretože používame štít vodiča motora L293D, musíme si odtiaľto stiahnuť knižnicu AFmotor. Potom ho pridajte do priečinka knižnice Arduino IDE. Premenujte ho na AFMotor . Získajte viac informácií o inštalácii tejto knižnice.
Kód je jednoduchý a dá sa ľahko pochopiť, ale tu sme vysvetlili niekoľko jeho častí:
Nižšie uvedený kód nastavuje robota. Najskôr sme zahrnuli knižnicu Adafruit na pohon motorov pomocou štítu vodiča. Potom sme definovali Trig pin a Echo pin. Nastavuje tiež motory. Nastavuje Trig pin na výstup a Echo pin na vstup.
#include #define trigPin 12 #define echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotorový motor2 (2, MOTOR12_8KHZ); void setup () {pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); }
Nižšie uvedený kód hovorí Arduinu, aby vykonal slučku nasledujúcich príkazov. Potom použije snímač na vysielanie a príjem ultrazvukových zvukov. Vypočíta vzdialenosť, ktorá je od objektu, akonáhle sa ultrazvukové vlny odrazia späť. Po zistení, že sa objekt nachádza v nastavenej vzdialenosti, informuje Arduino, aby podľa toho otáčalo motory.
void loop () {dlhé trvanie, vzdialenosť; digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration = pulseIn (echoPin, HIGH); vzdialenosť = (trvanie / 2) / 29,1; if (vzdialenosť <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (BACKWARD); motor2.run (BACKWARD); meškanie (2000); // TOTO ZMEŇTE PODĽA AKO SA ROBOT OTOČÍ.
Robot sa tým otočí otáčaním jedného motora a druhým drží stagnáciu.
Nižšie uvedený kód núti robot otáčať obidva motory v rovnakom smere, aby sa posúval dopredu, kým nezistí objekt vo vyššie uvedenej hranici.
else {motor1.setSpeed (160); // TOTO ZMEŇTE PODĽA AKO RÝCHLE, ABY STE MALI ROBOT MÍŤ motor2.setSpeed (160); // ZMENTE TOTO NA ROVNAKÚ HODNOTU, AKO VYŠŠI UVEDETE. motor1.run (VPRED); motor2.run (VPRED); }