Herkese merhabalar ! Bu yazımızda sizlere şu ana kadar yaptığımız tüm robotlardan çok daha farklı bir proje yapmaya karar verdik. Eğer “ben robot yapmayı biliyorum”, “Raspberry Pi konusunda da kendime güveniyorum” diyorsanız veya “ben bunları öğrenirim” diye düşünüyorsanız (eğer öyleyse sizi blog sayfamızdaki ve kanalımızdaki derslere davet ediyoruz) gelin beraber bu sağlam projenin nasıl yapıldığını öğrenelim.

Raspberry Pi hakkında eksiklerim var diyorsan hemen öğrenmeye başla 🙂 >>>>Raspberry Pi Derslerimize Bekliyoruz
Ayrıca Arduino ile uzaktan kumandalı araç yapımına da göz atabilirsiniz. >>>>Bluetooth Kontrollü Araç Yapın !

Raspberry Pi Robot Yapımı

Öncelikle projeden kısaca bahsetmek istiyorum. Daha önce yaptığımız robot projelerinde olduğu gibi bir robot hazırlayacağız. Bu robotu Arduino ile değil, Raspberry Pi ile kontrol edeceğiz. Bunun sebebi, robotu WEB üzerinden kontrol etmek istememiz. Yani robot ile aynı internet ağına bağlanabildiğimiz her yerde kontrol etmeyi amaçlıyoruz. Peki bizden çok uzak, göremediğimiz bir alanda bunu nasıl başaracağız? Tabi ki kamera yardımı ile 🙂 Hadi kullanacağımız malzemeleri inceleyelim.

Malzeme Listesi

Raspberry Pi Robot Malzemeleri
Raspberry Pi Robot Malzemeleri

Robotun Montajı

Raspberry Pi ile işlerimiz tamamlandığında robotu hemen kontrol edebilmemiz için öncelikle robotumuzun gövde montajını ve devre elemanlarının bağlantılarını tamamlayalım. Daha önce Bluetooth Kontrollü Araç ve Kızılötesi Kumanda Kontrollü Robot projelerimizde kullandığımız robot gövdesinin aynı şekilde montajını yapıyoruz.

Montaj işlemine başlamadan önce motorların kablolarını lehimliyoruz. Lehimleme işlemi tamamlandıktan sonra aşağıdaki gibi montaj yapıyoruz. Motorların kablolarını karışıklık olmaması için aynı renkte ve renkleri aynı taraflarda lehimledik. Motorları gövdeye monte ettikten sonra aynı karşılıklı motorların aynı renkteki kablolarını birbirleriyle lehimliyoruz. (Sağ ön motor kırmızı-sağ arka motor kırmızı, sağ ön motor siyah-sağ arka motor siyah gibi)

Raspberry Pi Robot Montajı
Alt gövdeye motorlar monte edilir.

Alt gövdede şimdilik işimiz tamamlandı. Robotun üst gövdesine geçmeden önce pan/tilt sistemini 2 servo ile birleştiriyoruz. Pan/tilt sistemi hazır ise kamera modülünü sisteme sabitleyebiliriz. Bu işlem de tamamlandıktan sonra motor sürücü kartını sabitlediğimiz Raspberry Pi, Li-Po pil ve pan/tilt sistemini üst gövdeye yerleştirebiliriz.

Raspberry Pi Robot Montajı
Üst gövdeye kamera en önde duracak şekilde pan/tilt sistemi, Raspberry Pi ve Li-Po pil monte edilir.

Robotun son hali aşağıdaki gibi olacaktır.

Raspberry Pi Robot Montajı
Robotun son hali

Raspberry Pi Motor Sürücü Shield

Sitemizde özelliklerinden detaylı olarak bahsettiğimiz bu shield sayesinde motor kontrol işlemimiz fazlasıyla kolaylaşmış oluyor. Yapısında bulunan 2 adet klemens çifti ile ayrı ayrı iki motoru veya bu projede yaptığımız gibi paralel bağlanmış 2’şer motoru (toplam 4 motor) iki yönlü kontrol etmek mümkün. Kart üzerinde yer alan 5V regülatör sayesinde Raspberry Pi kartımız çalışması için gerek duyduğu 5V gerilimi USB konektörüne ihtiyaç kalmadan alabiliyor. Pi’mize giden bu 5V gücü kart üzerinde 8 numara ile gösterilen anahtar ile açıp kapatmamız mümkün. Motor sürücü kartımız shield yapısına sahip olduğundan, Raspberry Pi’nin pinlerine sabitlediğimizde kontrol etmek istediğimiz DC motorlar için ekstra bir kablolama yapmamıza ihtiyaç kalmıyor.

Raspberry Pi Motor Sürücü Shield
Raspberry Pi Motor Sürücü Shield

Aşağıdaki tabloda motor bağlantılarının motor sürücü karttaki ve Raspberry Pi pinlerindeki karşılıkları verilmiştir.

Motorların Pin Bağlantıları
Motorların Pin Bağlantıları

 

Motorların hareketlerine göre robotun davranışı
Motorların hareketlerine göre robotun davranışı
Raspberry Pi 3 Pinleri
Raspberry Pi 3 Pinleri

Devre Bağlantıları

Devre bağlantılarına geldiğimizde motor sürücü shield, Raspberry Pi pinlerine doğrudan oturmaktadır. Arka arkaya karşılıklı DC motorları aynı renkte kablolarla paralel olarak bağlamıştık. Sol taraftaki DC motorları, motor sürücüdeki M1 ve M2 klemenslerine bağlıyoruz; sağ taraftaki DC motorları, motor sürücüdeki M3 ve M4 klemenslerine bağlıyoruz. Ana güç bağlantımızı ise iki motor klemensi arasında yer alan VCC ve GND ile belirtilen bağlantılar aracılığıyla yapıyoruz. Aşağıdaki görselden de kontrol edebilirsiniz.

Kamera modülümüzü de Raspberry Pi’mize aşağıda gösterilen şekilde bağlıyoruz:

Motor sürücü kartımızda servolarımız için hazır bir soket bulunmuyor. Bu sebeple servo motorlarımızı jumper kablolar ile shield üzerinde yer alan GPIO pinlerine teker teker bağlamamız gerekiyor:

Sevo Raspberry Pi Bağlantısı

Robotun donanım kısmı tamamlandı ve programlanmaya hazır hale geldi. Yazının başında söylediğim gibi DC motorları ve servoları Raspberry Pi üzerinden kontrol edeceğiz, çevre kontrolünü de Raspberry Pi kamera modülü ile sağlayacağız. Bu işlemleri web ortamında yapabilmemiz için erişebileceğimiz bir web sunucuya ihtiyacımız olacak.

Web Arayüzü ile Robota Erişim

Sadece programda bulunan IP adresini kendi Pi’nizin IP adresi ile değiştirerek, aşağıdaki işlemleri yapmadan robotu kontrol etmek isterseniz her şeyin hazır olduğu imaj dosyasına buradan ulaşabilirsiniz.

Tüm işlemleri gerçekleştirmek için önce aşağıda paylaşılan dosyayı indiriyoruz:

Projemizin çalışması için Raspberry Pi kamera modülüne ihtiyacımız var. Modülü kartımıza güç kesiliyken taktıktan sonra Raspberry Pi’mizi çalıştırıyoruz. Ayrıca, kurulum aşamalarında çeşitli programlar yükleyeceğimiz için Pi’mizin aktif bir internet bağlantısına ihtiyacı vardır.

Pi’miz açıldıktan sonra terminal ekranına

sudo raspi-config

yazarak konfigürasyon programını çalıştırıyor ve aşağıdaki adımlar ile kamera modülünü aktif hale getiriyoruz:

Kamera arayüzünü aktifleştirdikten sonra, kameranın kullanımı için gerekli bcm2835-v4l2 isimli modülü /etc/modules dosyası altına ekliyoruz:

İndirdiğimiz gerekli kütüphaneler dosyasını ana klasörümüz olan /home/pi klasörüne taşıyıp dosyayı aşağıdaki komut ile açıyoruz:

tar xvf rpi-robot.tgz

Bir sonraki adımda projemizde gerekli olan webiopi programını ilgili klasöre geçtikten sonra

sudo ./setup.sh

komutu ile yüklüyoruz. Bu esnada Pi’mizin internet bağlantısına sahip olması gereklidir.

Webiopi kurulumu tamamlandıktan sonra, kameramızın web üzerinden görüntü aktarabilmesi için gerekli olan mjpg-streamer programını kuracağız. Öncelikle gerekli programları aşağıdaki komut ile sistemimize yüklüyoruz:

sudo apt-get install libv4l-dev libjpeg8-dev subversion

Daha sonra ilgili klasöre

cd ~/Rpi-Motor-Driver-Board-Demo-Code/mjpg-streamer/

komutu ile geçip

make USE_LIBV4L2=true clear all

komutu ile mjpg-streamer programını derliyor ve yüklüyoruz. Bu işlem esnasında “make: *** No rule to make target ‘clear’. Stop.” gibi bir hata alabilirsiniz, herhangi bir sorun olmayacaktır.

Kurulum bittikten sonra

sudo ./start.sh

komutu ile mjpg-streamer programını çalıştırıyoruz. Pi’mizin bağlı olduğu yerel ağa dahil olan başka bir bilgisayardan tarayıcımızı açarak http://raspberry_pi_ip_adresi:8080 adresine girerek kameranın yayınının başladığını görebilirsiniz.

Son aşamada ise robot kontrol programını çalıştıracağız. Programın yer aldığı klasöre

cd ~/Rpi-Motor-Driver-Board-Demo-Code/magpi-cambot

komutu ile geçerek

sudo nano index.html

komutu ile HTML dosyasını açarak içerisindeki bir satırda değişiklik yapmamız gerekiyor.I Burada yer alan IP adresini Pi’mizin yerel ağdaki IP adresi ile değiştiriyoruz:

Burada görmüş olduğunuz üzere, biz projemiz üzerinde çalışırken Pi’mizin IP adresi 192.168.1.114 idi. Sizlerin de kendi Pi’nizin IP adresine göre burada yer alan adresi değiştirmeniz gereklidir. Dosyada gerekli değişikliği yaptıktan sonra ise

sudo webiopi -d -c ./config

Komutu ile web sunucuyu çalıştırıyoruz. Artık Pi’miz ile aynı yerel ağda bağlı olan bir bilgisayar veya cep telefonu ile tarayıcımızdan Pi’mizin IP adresini yazarak robotumuzu kontrol edebiliriz 🙂

Giriş için şifre istendiğinde kullanıcı adı olarak webiopi şifre olarak ise raspberry girmeniz yeterlidir.

 

 

Proje hakkında yorumlarınızı aşağıdaki ‘Yorumlar’ kısmında bizimle paylaşabilirsiniz.

Siz de yaptığınız projeleri Twitter ve Instagram üzerinden #Robotistan hashtagi ile bizimle paylaşabilirsiniz.

Twitter ve Instagram Hesaplarımız: @Robotistan

55 Yorumlar

  1. çok güzel bir proje olmuş. yerel internette çalıştırdım ama bir sorum var işyerinden bağlanıp kontrol etmek için ne gibi değişiklikler yapmak lazım port açmak lazım herhalde hangi port ve nasıl bağlanabiliriz. şimdiden cevabın için tesekkür ederim . ıyı çalışmalar basarılar dilerim yeni projelerde

  2. tebrikler çok güzel proje olmuş denedim mükemmel çalışıyor.Acaba bunu işyerimden bağlanmak için ne gibi değişiklikler yapmam lazım. iyi çalışmalar

    • Öncelikle Raspberry Pi’nize yerel ağınızda sabit bir IP adresi vermeli ve modem/router’ınızdan gerekli portu (bu örneğimizde 80 numaralı port) bu sabit IP’ye yönlendirmeli, yani “port açmalı”sınız. Bu durumda modeminizin dış dünya ile haberleşmek için kullandığı IP adresine bağlantı yaptığınızda bağlantınız evinizdeki yerel ağda bağlı olan Raspberry Pi’nize yönlenecektir.

  3. hocam öncelikle bu güzel çalışma için ellerinize sağlık . benim bir sorum olacak . bitirme projesi olarak bizde buna benzer bir proje yapıyoruz ama biraz farklı . bu şekide robot üzerinde kamera olacak ve sisteme tanıtılan nesnenin hareketine göre robot hareket edecek yani görüntü işleme tekniğiyle . bu projedeki tanıtma işlemi işimi görürmü acaba?

    • Kameradan aldığınız görüntüyü işlemek tamamen yazılım ile ilgilidir. Bu projede kullanılan kamerayı kullanmanız mümkündür.

  4. Öncelikle merhabalar bu projede telefondan hotspot u açıp hücresel veriyi açmasak çalışır mı.
    Raspberry pi kamera modülü yerine gopro kullanabilirmiyiz

    • Merhabalar. Cep telefonunuzdan hotspot özelliğini açarak çalıştırabilirsiniz. Raspberry Pi kamera modülü yerine GoPro kullanmanız malesef mümkün değildir, Raspberry Pi’nin kamera bağlantı arayüzü yalnızca kendi kamera modüllerini desteklemektedir.

  5. merhaba,
    robotu yapmaya başladım fakat çok uğraşmama rağmen pan tilt sistemi ve Raspberry Pi Kamera Modülü’nü birbirine monte edemedim
    Yardımcı olabilir misiniz?

    • Bizler montaj için pan-tilt sistemindeki küçük bir parçayı kestik ve parçaya tutturmak için çift taraflı bant kullandık.

  6. Öncelikle merhabalar hocam. Biz Bu projeyi bitirme projesi olarak yapıyoruz ama bizim projede normal bir webcam kullanmamız gerekiyor. Bunun için ne yapmalıyız . Çalıştırır mı. Başka bir yöntem mi denemeliyiz. Şimdiden Teşekkur ederiz. İyi çalışmalar.

    • Kullanacağınız webcam’in çalışması, Linux sürücülerinin olup olmadığına bağlıdır. Bu yüzden kesin bir cevap vermemiz mümkün değildir.

      • Sizden ricam bana bu projenin algoritmasını verebilir misiniz. Bazi değişiklikler yapmamız gerekmektede proje üzerinde.Şimdiden teşekkurler iyi çalışmalar

        • Algoritmadan kastınız nedir? Projede kullanılacak tüm program kodlarını yazıda “Gerekli Kütüphaneler ve Dosyalar” linkinde verdik. Buradan erişmeniz mümkündür.

          • akış diyagramı şeklinde gerekli. kodlar üzerinden gitmem çok zor olacak onun için size yazdım şimdiden teşekkür ederim. iyi çalışmalar

          • evet kontrol sağladık ama DC motor sayısını indirdik 2ye düşürdük biraz değişiklik yaptık. github’tan yararlandık halloldu

  7. Merhaba hocam. Emeğinize sağlık güzel bir proje olmuş. DC motorların bağlantısı hakkında daha detaylı bilgi alabilirmiyim. iyi çalışmalar…

    • Merhabalar, güzel sözleriniz için teşekkür ederiz. Raspberry Pi ile kullanabileceğiniz tüm kamera modülleri ile projeyi gerçekleştirmeniz mümkündür.

      • Merhaba projeniz çok güzel yapımına başladım fakat yazılımsal olarak “sudo nano /etc/modules kısmını anlamadım , daha sonra kontrol için telefonuna indirdiğimiz dosyaları açamıyorum yardımcı olursanız sevinirim.

        • Merhabalar. /etc/modules dosyasının altına otomatik olarak sistem açılışında yüklenmesini istediğimiz modülleri ekliyoruz. “sudo nano /etc/modules” komutu ile dosyayı nano isimli editör ile açıp, gerekli satırları ekledikten sonra CTRL+O yapın, kaydetmek için “Y” tuşuna basın ve CTRL+X ile nano programından çıkın. Kontrol için telefona dosya indirmenize gerek yoktur, Pi’nizin IP adresini telefonunuzdaki tarayıcıya yazarak girebilirsiniz.

          • Dediklerinizi yaptım teşekkür ederim daha sonra tar xvf rpi-robot.tgz bu komutu yaptım fakat download konutu çıkmadı yardım ederseniz sevinirim …

          • Acaba ben camera modülü v1.3 ile yaptığım için mi bcm2835-v4l2 komutu işe yaramıyor ?

          • Düşük bir ihtimal, kameranın donanımı farklı dahi olsa işletim sistemi tarafında aynı modülleri kullanmaktadır.

  8. Merhaba proje cok iyi.
    PI nin IP adresini girmeme ragmen WebIOPi calistiramadim. MJPG-Streamer den kamera goruntusunu aliyorum. telefondan kontrol edemiyorum# yardimci olursaniz sevinirim. iyi gunler

  9. merhaba öncelikle elinize sağlık. bazı noktaları anlamadım shield konusunda;
    1-shieldi taktığımızda, ana güç kablosunu da shieldın mavi orta bölmesine taktığımızda artık raspberrynin açılması için gerekli olan güç kablosuna gerek yok mu? yani normalde shield olmadığı zaman raspberryi fişe taktığımız usb ye gerek kalmıyor mu artık ?

    2-shieldi oturtunca(bizde servo motor yok bu arada,çok basit kamerasız sadece tekeri döndüren basit bir uygulama düşünelim), motorları ve ana gücü de mavi klemenslere burdaki gibi takınca, artık python programda pwma-pwmb ye denk gelen 26 ve 12 nolu pinleri gout(26,1) ve gout(12,1) şeklinde high yapınca (gout metodunu örnek verdim ismi önemli değil) motorlara direk güç aktarılıyor mu ? yani kısacası sadece shieldi oturtsam+mavi klemensten motorları ve ana gücü bağlasam+python programda 26 ve 12 pinout ları high yapsam motor döner değil mi doğru mu anladım ?

    • Merhabalar. Sorularınıza sırayla cevap vermek gerekirse;

      1) Evet, shield üzerinde 5V regülatör bulunduğu için ekstradan güç girişine adaptör bağlamanıza gerek yoktur, ana bataryadan Raspberry Pi kartı da beslenmektedir.
      2) Evet, servo takmasanız dahi program içersinde robotun ana motorları için gerekli komutlar yer aldığından sorunsuzca kullanabilirsiniz.

      İlginiz için teşekkür ederiz.

      • hızlı yanıtınız için teşekkür ederim.
        bir sorum daha olacak, shieldi aldık fakat güç kablosu çıkmadı içinden. bu shild’a 1.5v luk kalem pillerden 5tane seri bağlayıp taksam(7.5v) sorunsuz çalışır mı yoksa amper farklı gelebilir mi ? teşekkürler.

  10. bu shield bir türlü düzgün olarak açamıyor raspberry’i. ekranın sol üst köşesinde voltaj işareti çıkıyor raspberrynin düşük voltaj işareti. tam iletilmiyor güç galiba.
    9v olan dikdörtgen pille denedim, hatta ayarlanabilir adaptör taktım direk o da olmadı. ben raspberrynin güc kablosunu takıp onu normal şekilde
    çalıştırsam, shiledı da 9v pille açıp ama anahtarını off konumunda yapsam ikisi ayrı ayrı çalışır mı?

    • Kullanmış olduğunuz 9V pilin Raspberry Pi’yi çalıştıracak kadar akım vermesi imkansızdır. Adaptör ile de sorun yaşamanızın sebebi yine akım yetersizliğindendir. Biz projede 2S yani 7.4V bir LiPo batarya kullandık. Siz de LiPo batarya veya 6 adet kalem pil alacak bir kalem pil yuvası kullanırsanız bu sorunu yaşamazsınız. Bahsettiğiniz şekilde iki farklı besleme kullanmanız tavsiye edilmemektedir.

  11. Merhabalar, ışık izleyen araba için arabayi nasıl yavaslatabiliriz? tekere direnç takarak mı yoksa kodda pin.output voltaj ayarlayabiliyor muyuz ?

    • İlk yöntem daha düşük gerilime sahip bir batarya kullanmak olacaktır. Örnek olarak 9V (6xAA kalem pil) yerine 6V (4xAA kalem pil) gerilim ile motorları besleyebilirsiniz. Diğer seçeneğiniz ise, kullandığınız kontrolcüdeki PWM çıkışlarını motor sürücünüzün EN girişlerine bağlayarak buradan vereceğiniz PWM sinyali ile motorların hızını değiştirebilirsiniz.

  12. Merhaba Kerem Bey,

    Harika bir iş olmuş. Ellerinize sağlık.

    Konunun çok acemisi olduğum için sorum (sorularım) saçma olursa affedin lütfen

    1- Böyle bir proje için arduino’mu, raspberry’mi önerirsiniz ve neden? (arduino ile birşeyler yapabilmeye başlayabildiğim için soruyorum)

    2- Eğer performans ve işlevsellik olarak arduino’dan da aynı verim alınabilirse, bu projenin arduino versiyonu varmı?

    Şimdiden çoook teşekkürler 🙂

    • Bu projede Arduino yeterli gelmeyeceği için Raspberry Pi kullandık. Çünkü robot üzerindeki motor sürücü kartının çalıştırılması, WiFi bağlantısı, kameradan görüntü alınıp bu görüntünün bir web sayfası üzerinden yayınlanması gibi işleri aynı anda yapabilecek bir Arduino veya başka bir mikrokontrolcü mevcut değildir. Raspberry Pi bir bilgisayar olduğu için bu işlemlerin hepsini aynı anda yapabilmektedir. Arduino ile Raspberry Pi’nin farkını daha detaylı şekilde öğrenmek isterseniz buradaki yazıyı okuyabilirsiniz: Arduino ile Raspberry Pi’nin Farkı Nedir?

  13. Merhaba öncelikle kolay gelsin ben bu projeyi l298n motor sürücü ile yapmayı düşünüyorum yardımcı olursanız mutlu olurum. İyi çalışmalar .

  14. Merhaba Kerem Bey,
    Benim size bir sorum olucaktı, tüm adımları yaptıktan sonra en son “sudo ./start.sh” yazıyorum ardından şu şekilde hata alıyorum başlıyorum.
    libv4l2: error setting pixformat: Device or resource busy
    Unable to set format: 1448695129 res: 640×480
    Init v4L2 failed !! exit fatal
    i: init_VideoIn failed
    bu konuda yardımcı olursanız çok sevinirim
    İyi çalışmalar

  15. Merhaba robotu monte etmeye basladık fakat bataryanın cıkıslarını VCC ve GND girişlerine yerleştiremedik uçları cok büyük geliyor bir de pan tilt sistemindeki servoların kablolarını nasıl baglayacagız? Bitirme projem cok az zamanım kaldı yardım eder misiniz?

  16. bcm2835-v4l2 modülünü yükleyemedim. Sadece komut ile mi yükleniyor daha detaylı açıklama şansınız var mı?

  17. bcm2835-v4l2 modülü yükleyemedim? nasıl yüklendiğini daha açıklayıcı bir şekilde anlata bilir misiniz

  18. merhaba bu projeye ses alış verişi eklememiz mümkünmüdür yani bebek odalarına konulan wifi kameraların sesleri duymamızı, istediğimizde kendi sesimizi robot aracılığı ile duyurmak bu projeye eklenebilirmi

CEVAP VER

Please enter your comment!
Please enter your name here