Otomatik zemin temizleyicileri yeni bir şey değildir, ancak hepsinin ortak bir sorunu vardır. Hepsi yaptıkları için çok pahalı. Bugün, piyasadakilerin sadece küçük bir kısmına mal olan bir Otomatik Ev Temizleme Robotu yapacağız. Bu Robot, önündeki engelleri ve nesneleri algılayabilir ve tüm oda temizlenene kadar engellerden kaçınarak hareket etmeye devam edebilir. Zemini temizlemek için üzerine küçük bir fırça takılmıştır.
Ayrıca Arduino kullanarak Akıllı Vakum Temizleme Robotumuzu kontrol edin
Bileşen Gerekli:
- Arduino UNO R3.
- Ultrasonik sensör.
- Arduino Motor Sürücü kalkanı.
- Wheel Drive Robot Şasi.
- Arduino'yu Programlamak için Bilgisayar.
- Motorlar için Akü.
- Arduino'ya Güç Sağlamak İçin Bir Güç Bankası
- Ayakkabı Fırçası.
- Scotch Brite Ovma Pedi.
Not: Pilleri kullanmak yerine bizim yaptığımız gibi 4 telli uzun bir tel de kullanabilirsiniz. Bu çok zarif veya pratik bir çözüm olmasa da, her gün gerçek dünyada kullanmayı planlamıyorsanız yapabilirsiniz. Kablo uzunluklarının yeterli olduğundan emin olun.
Ayrıntılara girmeden önce Ultrasonik hakkında konuşalım.
HC-SR04 Ultrasonik Sensör:
Ultrasonik Sensör, mesafeyi yüksek doğruluk ve kararlı okumalarla ölçmek için kullanılır. 2cm ile 400cm arası veya 1 inç ile 13 fit arası mesafeyi ölçebilir. Havada 40KHz frekansında bir ultrason dalgası yayar ve eğer nesne kendi yoluna çıkarsa sensöre geri döner. Nesneye çarpıp geri gelmek için geçen süreyi kullanarak mesafeyi hesaplayabilirsiniz.
Ultrasonik sensör, "ECHO" adı verilen bir teknik kullanır. "ECHO" sadece yansıyan bir ses dalgasıdır. Çıkmaz bir noktaya ulaştıktan sonra ses geri geldiğinde bir ECHO'ya sahip olacaksınız.
HCSR04 modülü, 'Trigger' pimini yaklaşık 10us için yüksek yaptığımızda, ses hızında 8 döngülü bir sonik patlama gönderecek ve nesneye vurulduktan sonra Echo pini tarafından alınacaktır. Ses titreşiminin geri dönme süresine bağlı olarak uygun darbe çıkışı sağlar. Nesne uzaktaysa, ECHO'nun duyulması daha fazla zaman alır ve çıkış darbe genişliği büyük olacaktır. Ve eğer engel yakınsa, ECHO daha hızlı duyulacak ve çıkış darbe genişliği daha küçük olacaktır.
Ultrasonik dalganın sensöre geri dönmesi için geçen süreye göre nesnenin mesafesini hesaplayabiliriz. Sesin zamanı ve hızı bilindiği için aşağıdaki formüllerle mesafeyi hesaplayabiliriz.
Mesafe = (Zaman x Havadaki Ses Hızı (343 m / s)) / 2.
Dalga aynı mesafeyi katederek ileri ve geri gittiği için değer ikiye bölünür. Böylece engele ulaşma süresi, harcanan toplam sürenin sadece yarısıdır
Yani santimetre cinsinden uzaklık = 17150 * T
Daha önce bu Ultrasonik sensörü ve Arduino'yu kullanarak birçok faydalı proje yaptık, bunları aşağıda kontrol edin:
- Ultrasonik Sensör kullanarak Arduino Tabanlı Mesafe Ölçümü
- Arduino ve Ultrasonik Sensör kullanarak Kapı Alarmı
- Arduino kullanarak IOT Tabanlı Dumpster İzleme
Zemin Temizleme Robotu Montajı:
Arduino'yu kasaya monte edin. Kasanızın metalden yapılmış olması durumunda hiçbir şeye kısa devre yaptırmadığınızdan emin olun. Arduino ve motor kontrolör kalkanı için bir kutu almak iyi bir fikirdir. Motorları vidalar kullanarak tekerleklere ve şasiye sabitleyin. Kasanız, bunu fabrikadan yapmak için seçeneklere sahip olmalıdır, ancak yoksa, farklı bir çözüm geliştirebilirsiniz. Epoksi kötü bir fikir değil. Ayakkabı fırçasını kasanın önüne takın. Bunun için M-Seal epoksi ve delikli vidaların bir kombinasyonunu kullandık, ancak sizin için daha kolay olabilecek başka herhangi bir çözümü de kullanabilirsiniz. Scotch Brite ovma pedini fırçanın arkasına monte edin. Doğaçlama olmasa da, kasayı oyunda tutan bir şaft kullandık. Buna eşlik etmek için yaylı bir şaft kullanılabilir. Pilleri (veya kabloları kasanın arkasına) takın.Epoksi veya pil tutucu, bunu yapmanın iyi yollarıdır. Sıcak tutkal da fena değil.
Kablolama ve Bağlantılar:
Bu Otomatik Ev Temizlik Robotu için devre çok basittir. Ultrasonik sensörü aşağıda belirtildiği gibi Arduino'ya bağlayın ve Motor Sürücü kalkanını diğer herhangi bir kalkan gibi Arduino'ya yerleştirin.
Ultrasonic'in Trig pini Arduino'daki 12. pime bağlanır, Echo pini 13. pime, voltaj pimi 5V pimine ve Ground pimi de toprak pimine bağlanır. Echo pini ve Trig pimi, Arduino'nun sensörle iletişim kurmasına izin verir. Güç, sensöre voltaj ve Ground pinleri aracılığıyla iletilir ve Trig ve Echo pinleri, Arduino ile veri gönderip almasına izin verir. Arduino ile Ultrasonik sensör Arayüzü hakkında daha fazla bilgiyi burada bulabilirsiniz.
Motor korumasının en az 2 çıkışı olmalı ve bunlar 2 motorunuza bağlanmalıdır. Normalde bu çıkışlar "M1" ve "M2" veya "Motor 1" ve "Motor 2" olarak etiketlenir. Pillerinizi ve güç bankanızı sırasıyla motor kalkanına ve Arduino'ya bağlayın. Bunları çapraz bağlamayın. Motor korumanızın bir giriş kanalı olmalıdır. Kablo kullanıyorsanız, bunları AC adaptörlerine bağlayın.
Programlama Açıklaması:
Arduino IDE'yi açın. Bu eğitimin sonunda verilen Arduino kodunu IDE'ye yapıştırın. Arduino'nuzu bilgisayara bağlayın. Araçlar / Bağlantı Noktası'nda bağlantı noktasını seçin. Yükle düğmesini tıklayın.
Robotu test edin. Çok az veya çok dönerse, mükemmel olana kadar gecikmeleri deneyin.
Koda girmeden önce, DC motorları sürmek için Adafruit Motor Shield Kitaplığını kurmamız gerekiyor. L293D motor sürücü kalkanını kullandığımız için AFmotor Kitaplığını buradan indirmemiz gerekiyor. Ardından Arduino IDE kitaplık klasörünüze ekleyin. AFMotor olarak yeniden adlandırdığınızdan emin olun. Bu kitaplığı yükleme hakkında daha fazla bilgi edinin.
Kod kolaydır ve kolayca anlaşılabilir, ancak burada birkaç bölümünü açıkladık:
Aşağıdaki kod robotu kurar. İlk olarak, motorları Motor sürücü kalkanı ile sürmek için Adafruit Kütüphanesini dahil ettik. Bundan sonra Trig pin ve Echo pin tanımladık. Aynı zamanda motorları da kurar. Trig pinini çıkışa ve Echo pinini girişe ayarlar.
#include #define trigPin 12 #define echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotor motoru2 (2, MOTOR12_8KHZ); geçersiz kurulum () {pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); }
Aşağıdaki kod, Arduino'ya aşağıdaki komutları döngüye almasını söyler. Bundan sonra, ultrasonik sesleri iletmek ve almak için sensörü kullanır. Ultrasonik dalgalar geri sıçradığında nesneden uzaklığını hesaplar, nesnenin belirlenen mesafe içinde olduğunu belirledikten sonra Arduino'ya motorları buna göre döndürmesini söyler.
boşluk döngüsü () {uzun süre, mesafe; digitalWrite (trigPin, DÜŞÜK); gecikme Mikrosaniye (2); digitalWrite (trigPin, YÜKSEK); gecikme Mikrosaniye (10); digitalWrite (trigPin, DÜŞÜK); süre = pulseIn (echoPin, HIGH); mesafe = (süre / 2) / 29.1; eğer (mesafe <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (GERİ); motor2.run (GERİ); gecikme (2000); // ROBOTUN NASIL DÖNÜŞECEĞİNE GÖRE DEĞİŞTİRİN.
Bu, robotun bir motoru döndürüp diğerini durağan tutarak dönmesini sağlar.
Aşağıdaki kod, robotun yukarıda belirtilen sınırda bir nesne algılayana kadar ileriye doğru hareket etmesini sağlamak için her iki motoru da aynı yönde döndürmesini sağlar.
başka {motor1.setSpeed (160); // ROBOTUNUZUN NE KADAR HIZLI GİTMESİNE GÖRE DEĞİŞTİRİN. motor2.setSpeed (160); // BUNU YUKARIDA BELİRTEN AYNI DEĞERE DEĞİŞTİRİN. motor1.run (FORWARD); motor2.run (FORWARD); }