- Gerekli Bileşenler:
- Ultrasonik Sensör Modülü:
- Devre Açıklaması:
- Nasıl çalışır:
- Programlama Açıklaması:
Robotlar, endüstrilerdeki, fabrikalardaki, hastanelerdeki vb. Görevleri otomatikleştirerek ağır işlerde insan çabasını azaltan makinelerdir. Robotların çoğu, bazı kontrol üniteleri veya bir düğme, uzaktan kumanda, joystick, PC, jestler gibi bileşenler kullanılarak çalıştırılır. denetleyici veya işlemci kullanarak bazı komutları yürütmek. Ama bugün, yolundaki tüm engellerden kaçınarak herhangi bir dış olay olmadan otonom hareket eden bir Otomatik Robot ile karşınızdayız, evet Engelden Kaçan Robot'tan bahsediyoruz. Bu projede robotu sürmek için Raspberry Pi ve Motor sürücüsü ve Robot yolunda bulunan nesneleri tespit etmek için Ultrasonik sensörü kullandık.
Daha önce birçok faydalı Robotu ele almıştık, bunları Robotik projeler bölümünde bulabilirsiniz.
Gerekli Bileşenler:
- Ahududu Pi
- Ultrasonik Sensör Modülü HC-SR04
- ROBOT Şasi, vida ile tamamlandı
- DC Motorlar
- L293D IC
- Tekerlekler
- Ekmek Tahtası
- Direnç (1k)
- Kondansatör (100nF)
- Bağlantı telleri
- Güç kaynağı veya Güç bankası
Ultrasonik Sensör Modülü:
Bir Engel Önleyici Robot, Otomatik bir Robottur ve herhangi bir uzaktan kumanda kullanılarak kontrol edilmesine gerek yoktur. Bu tür otomatik robotlar, engel dedektörleri, ses dedektörü, ısı dedektörü veya metal dedektörleri gibi bazı 'altıncı algılama' sensörlerine sahiptir. Burada Ultrason Sinyallerini kullanarak Engel Algılama yaptık. Bu amaçla Ultrasonik Sensör Modülünü kullandık.
Ultrasonik Sensörler, genellikle nesneleri algılamak ve engelin sensörden uzaklığını belirlemek için kullanılır. Bu, tankta Su Seviyesi Ölçümü, mesafe ölçümü, Engellerden kaçınma robotu vb. Gibi fiziksel temas olmadan mesafeyi ölçmek için harika bir araçtır. Bu yüzden burada nesneyi tespit ettik ve Ultrasonik Sensör ve Raspberry Pi kullanarak mesafeyi ölçtük.
HC-SR04 ultrasonik sensör, 2cm-400cm aralığındaki mesafeyi 3mm hassasiyetle ölçmek için kullanılır. Sensör modülü bir ultrasonik verici, alıcı ve kontrol devresinden oluşur. Ultrasonik Sensör, biri ultrasonik dalgayı iletmek ve diğeri onu almak için kullanılan iki dairesel gözden oluşur.
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 geçen toplam sürenin yarısı kadardır.
Böylece engele olan mesafeyi (santimetre olarak) aşağıdaki gibi hesapladık:
pulse_start = time.time () while GPIO.input (ECHO) == 1: # ECHO'nun YÜKSEK GPIO olup olmadığını kontrol edin. çıkış (led, Yanlış) pulse_end = time.time () pulse_duration = pulse_end - pulse_start mesafesi = pulse_duration * 17150 mesafe = yuvarlak (mesafe, 2) ortalamaMesafe = ortalamaMesafe + mesafe
Burada pulse_duration gönderme ve ultrasonik sinyalin alınması arasında geçen süredir.
Devre Açıklaması:
Raspberry Pi kullanan bu Engelden Kurtulma Robotu için devre çok basit. Raspberry Pi'nin GPIO pin 17 ve 27'sine nesneleri tespit etmek için kullanılan bir Ultrasonik Sensör modülü bağlanır. Raspberry Pi 3'e robot motorlarını sürmek için bir Motor Sürücü IC L293D bağlanır. Motor sürücüsünün 2, 7, 10 ve 15 numaralı giriş pinleri sırasıyla 12, 16, 20 ve 21 numaralı Raspberry Pi GPIO pinlerine bağlanır. Burada, bir motorun motor sürücüsü IC'nin çıkış pini 3 ve 6'ya bağlı olduğu ve başka bir motorun motor sürücüsü IC'nin Pin 11 ve 14'üne bağlandığı robotu sürmek için iki DC motor kullandık.
Nasıl çalışır:
Bu Otonom Robotun çalışması çok kolaydır. Robot çalıştırılıp çalışmaya başladığında Raspberry Pi, Ultrasonik Sensör Modülü kullanarak önündeki nesnelerin mesafelerini ölçer ve bir değişken içinde depolar. Ardından RPi bu değeri önceden tanımlanmış değerlerle karşılaştırır ve Robotu Sola, Sağa, İleri veya geri hareket ettirmek için buna göre kararlar alır.
İşte bu projede Raspberry Pi ile herhangi bir karar almak için 15cm mesafeyi seçtik. Artık Raspberry Pi herhangi bir nesneden 15 cm mesafeden daha az mesafeye geldiğinde, Raspberry Pi robotu durdurur ve geri hareket ettirir ve ardından sola veya sağa döndürür. Şimdi tekrar ilerletmeden önce, Raspberry Pi 15 cm mesafe içinde herhangi bir engel olup olmadığını tekrar kontrol eder, evet ise önceki işlemi tekrarlar, aksi takdirde robotu herhangi bir engel veya nesneyi tekrar algılayana kadar ileri doğru hareket ettirin.
Programlama Açıklaması:
Program için burada Python dilini kullanıyoruz. Kodlamadan önce, kullanıcının Raspberry Pi'yi yapılandırması gerekir. Raspberry Pi'ye Başlarken ve Raspbian Jessie OS'yi Pi'de Kurmak ve Yapılandırmak için önceki eğitimlerimizi inceleyebilirsiniz.
Bu projenin programlama kısmı, tüm işlemleri gerçekleştirmek için çok önemli bir rol oynamaktadır. Her şeyden önce, gerekli kitaplıkları dahil ediyoruz, değişkenleri başlatıyoruz ve ultrasonik sensör, motor ve bileşenler için pinler tanımlıyoruz.
RPi.GPIO'yu GPIO içe aktarma zamanı olarak içe aktar # Zaman kitaplığını içe aktar GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Bundan sonra, robotu sırasıyla ileri, geri, sola veya sağa hareket ettirmek için def forward (), def back (), def left (), def right () ve robotu durdurmak için def stop () gibi bazı fonksiyonlar oluşturduk, aşağıda verilen Kod'daki işlevleri kontrol edin.
Daha sonra ana programda Ultrasonik Sensörü başlattık ve sinyalin gönderilmesi ile alınması arasındaki süreyi okuduk ve mesafeyi hesapladık. Burada daha iyi doğruluk için bu işlemi 5 kez tekrarladık. Mesafe hesaplama sürecini Ultrasonik sensör kullanarak zaten açıkladık.
i = 0 avgDistance = 0 aralıktaki i için (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) GPIO.input (ECHO) == 0 iken: GPIO.output (led, False) pulse_start = time.time () GPIO.input (ECHO) == 1 iken: # ECHO'nun HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start mesafesi = pulse_duration * 17150 mesafe = yuvarlak (mesafe, 2) avgDistance = ortalamaDistance + distance
Son olarak Robot önünde bir engel bulursa engelden uzaklaştıktan sonra, Robotu farklı bir rota izlemesi için programladık.
eğer avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 else: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
Bu Raspberry Pi Engelden Kurtulma Robotu için tam kod aşağıda bir Tanıtım Videosu ile verilmiştir.