Automatické čističe podlah nejsou nic nového, ale všechny mají společný problém. Všichni jsou příliš drahí na to, co dělají. Dnes vyrobíme Automatického domácího čisticího robota, který stojí jen malý zlomek těch, které jsou na trhu. Tento robot dokáže detekovat překážky a předměty před sebou a může pokračovat v pohybu a vyhýbat se překážkám, dokud nebude vyčištěna celá místnost. Je k němu připevněn malý kartáč na čištění podlahy.
Zkontrolujte také našeho inteligentního vysavače pomocí Arduina
Požadovaná součást:
- Arduino UNO R3.
- Ultrazvukový senzor.
- Štítek ovladače motoru Arduino.
- Robotický podvozek s pohonem kol.
- Počítač pro programování Arduina.
- Baterie pro motory.
- Power Bank pro napájení Arduina
- Kartáč na boty.
- Scotch Brite Scrub Pad.
Poznámka: Místo použití baterií můžete také použít dlouhý čtyřvláknový drát, jak jsme to udělali. Není to příliš elegantní nebo praktické řešení, ale můžete to udělat, pokud jej neplánujete používat ve skutečném světě každý den. Ujistěte se, že jsou délky kabelů dostatečné.
Než půjdeme do podrobností, pojďme nejprve diskutovat o ultrazvuku.
Ultrazvukový senzor HC-SR04:
Ultrazvukový senzor se používá k měření vzdálenosti s vysokou přesností a stabilním odečtem. Může měřit vzdálenost od 2 cm do 400 cm nebo od 1 palce do 13 stop. Vysílá do vzduchu ultrazvukovou vlnu o frekvenci 40 KHz a pokud mu objekt přijde do cesty, odrazí se zpět k senzoru. Pomocí času, který trvá úder na objekt a návrat, můžete vypočítat vzdálenost.
Ultrazvukový senzor používá techniku zvanou „ECHO“. „ECHO“ je jednoduše odražená zvuková vlna. Když se zvuk po dosažení slepé uličky odrazí zpět, budete mít ECHO.
Modul HCSR04 generuje zvukové vibrace v ultrazvukovém rozsahu, když uděláme kolík „Trigger“ vysoký na přibližně 10 us, který vyšle 8 cyklů sonického výbuchu rychlostí zvuku a po zasažení objektu jej přijme kolík Echo. V závislosti na době, kterou zvukové vibrace potřebují k návratu, poskytuje vhodný pulzní výstup. Pokud je objekt daleko, pak bude ECHO slyšet více času a šířka výstupního pulzu bude velká. A pokud je překážka blízko, pak bude ECHO slyšet rychleji a šířka výstupního pulzu bude menší.
Můžeme vypočítat vzdálenost objektu na základě času, který ultrazvuková vlna potřebuje k návratu zpět k senzoru. Protože je znám čas a rychlost zvuku, můžeme vzdálenost vypočítat podle následujících vzorců.
Vzdálenost = (čas x rychlost zvuku ve vzduchu (343 m / s)) / 2.
Hodnota se dělí dvěma, protože vlna se pohybuje vpřed a vzad a pokrývá stejnou vzdálenost. Čas potřebný k dosažení překážky je tedy pouze polovina celkového času
Takže vzdálenost v centimetrech = 17150 * T
Dříve jsme pomocí tohoto ultrazvukového senzoru a Arduina vytvořili mnoho užitečných projektů, zkontrolujte je níže:
- Arduino měření vzdálenosti pomocí ultrazvukového senzoru
- Dveřní alarm využívající Arduino a ultrazvukový senzor
- Monitorování kontejnerů na IOT pomocí Arduina
Montáž robota na čištění podlah:
Namontujte Arduino na šasi. Pokud je váš podvozek vyroben z kovu, nic nezkratujte. Je dobré si pořídit krabici pro Arduino a štít ovladače motoru. Zajistěte motory koly a podvozkem pomocí šroubů. Váš podvozek by měl mít možnosti, jak to udělat z výroby, ale pokud ne, můžete improvizovat jiné řešení. Epoxid není špatný nápad. Namontujte kartáč na boty na přední část šasi. Použili jsme k tomu kombinaci epoxidu M-Seal a vyvrtaných šroubů, i když můžete použít jakékoli jiné řešení, které by pro vás mohlo být jednodušší. Namontujte za kartáč čisticí podložku Scotch Brite. Použili jsme hřídel procházející přes podvozek, která ji drží ve hře, i když je to také improvizovatelné. K tomu lze použít odpruženou hřídel. Namontujte baterie (nebo kabely na zadní stranu šasi).Dobrým způsobem, jak toho dosáhnout, je epoxid nebo držák baterie. Horké lepidlo také není špatné.
Zapojení a připojení:
Obvod tohoto robota pro automatické čištění domů je velmi jednoduchý. Připojte ultrazvukový senzor k Arduinu, jak je uvedeno níže, a umístěte štít ovladače motoru na Arduino jako jakýkoli jiný štít.
Ultrazvukový kolík Trig je připojen k 12. kolíku na Arduinu, kolík Echo je připojen k 13. kolíku, kolík napětí na kolík 5 V a zemnící kolík na zemnící kolík. Pin Echo a Trig pin umožňují Arduinu komunikovat se senzorem. Napájení je do snímače dodáváno prostřednictvím kolíků napětí a uzemnění a kolíky Trig a Echo mu umožňují odesílat a přijímat data pomocí Arduina. Další informace o propojení ultrazvukového senzoru s Arduinem najdete zde.
Stínění motoru by mělo mít alespoň 2 výstupy a mělo by být připojeno k vašim 2 motorům. Normálně jsou tyto výstupy označeny „M1“ a „M2“ nebo „Motor 1“ a „Motor 2“. Připojte své baterie a napájecí banku až k štítu motoru a Arduinu. Nepřipojujte je křížem. Váš štít motoru by měl mít vstupní kanál. Pokud používáte vodiče, připojte je k síťovým adaptérům.
Vysvětlení programování:
Otevřete Arduino IDE. Vložte celý kód Arduino uvedený na konci tohoto tutoriálu do IDE. Připojte své Arduino k počítači. Vyberte port v nabídce Nástroje / Port. Klikněte na tlačítko nahrávání.
Vyzkoušejte robota. Pokud se to ukáže příliš málo nebo příliš, experimentujte se zpožděním, dokud nebude perfektní.
Před vstupem do kódu musíme nainstalovat Knihovnu štítů motoru Adafruit pro pohon stejnosměrných motorů. Protože používáme štít ovladače motoru L293D, musíme si odtud stáhnout knihovnu AFmotor. Poté jej přidejte do složky knihovny Arduino IDE. Ujistěte se, že jej přejmenujete na AFMotor . Další informace o instalaci této knihovny.
Kód je snadný a lze mu snadno porozumět, ale zde jsme vysvětlili několik jeho částí:
Níže uvedený kód nastavuje robota. Nejprve jsme zahrnuli knihovnu Adafruit pro řízení motorů se štítem ovladače motoru. Poté jsme definovali Trig pin a Echo pin. Rovněž nastavuje 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); }
Níže uvedený kód říká Arduinu, aby opakoval následující příkazy. Poté použije snímač k přenosu a příjmu ultrazvukových zvuků. Vypočítá vzdálenost, která je od objektu, jakmile se ultrazvukové vlny odrazí zpět, a poté, co si všimne, že je objekt v nastavené vzdálenosti, řekne Arduinu, aby odpovídajícím způsobem otáčel motory.
void loop () {dlouhé trvání, vzdálenost; digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration = pulseIn (echoPin, HIGH); vzdálenost = (doba / 2) / 29,1; if (vzdálenost <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (ZPĚT); motor2.run (ZPĚT); zpoždění (2000); // ZMĚNTE TOTO PODLE TOHO, JAK SE ROBOT OTOČÍ.
Díky tomu se robot otáčí otáčením jednoho motoru a druhým udržuje stagnaci.
Níže uvedený kód umožňuje robotovi otáčet oba motory ve stejném směru, aby se mohl pohybovat dopředu, dokud nezjistí objekt ve výše uvedené hranici.
else {motor1.setSpeed (160); // TOTO ZMĚNĚTE PODLE JAK RYCHLÉHO MŮŽETE ROBOT MÍT. motor2.setSpeed (160); // ZMĚNTE TOTO NA STEJNOU HODNOTU, JAKO VSTUPETE VÝŠE motor1.run (Vpřed); motor2.run (Vpřed); }