Lego Mindstorms EV3'ü Pardus 19 XFCE üzerinde Python ile Programlama

Resim Kaynağı: https://le-www-live-s.legocdn.com/images/423923/live/sc/Products/5003400/5003400_1050x1050_1_xx-xx/63feb014132ef703a7e6d2c600b1d52d/2d9e36d3-afaf-4203-aa23-a58d00d7ca07/original/2d9e36d3-afaf-4203-aa23-a58d00d7ca07.jpg?output-format=jpg&fit=inside|920:615&composite-to=,|https://le-www-live-s.legocdn.com/sc/static/bg-max.jpg?resize=920:615

Merhaba arkadaşlar, bu yazımda sizlere LEGO firmasının ürettiği bir eğitim robotu olan Lego Minstorms EV3’ün, PARDUS 19 XFCE işletim sistemi üzerinden Python dili ile programlanmasını bir örnek üzerinden anlatmaya çalışacağım.

Bilindiği üzere EV3 eğitim robotu, EV3 Lab denilen bir masaüstü yazılım aracılığı ile Windows ya da Mac OS üzerinden programlanabiliyordu. Linux çekirdeğini kullanan EV3’ü, Linux çekirdeği kullanan çeşitli masaüstü dağıtımlarında programlayamamak gerçekten üzücüydü. Neyse ki çok yakında LEGO firmasının resmi web sitesinde yayınladığı şu yazıdan öğrendiğim kadarı ile EV3, MicroPython vasıtası ile Python dili kullanılarak programlanabiliyormuş. Dökümanda Windows işletim sistemi olması gerektiği yazıyor. Linux dağıtımlarından olan Pardus 19’da zaten Python3 hazır kurulu geldiği için “neden Pardus’ta kodlanmasın ki?” diye kafamda oluşan soru işareti neticesinde deneme yaptım. Deneme sonucunda Pardus 19’da EV3’ün sorunsuz bir şekilde programlanabildiğini tecrübe ettim.

MicroPython, microdenetleyicilerin Python dili kullanılarak programlanabilmesi için geliştirilmiştir. Python, syntax’ı çok kolay olan yüksek seviyeli bir dildir. Mikrodenetleyiciler genelde C gibi düşük seviyeli diller ile programlanabilmektedirler (Örneğin Arduino, C ile kodlanmaktadır). C ile yazılmış MicroPython sayesinde, Python dilinin gücünü kullanarak EV3’ün mikrodenetleyicisini programlayabilirsiniz.

Aşağıdaki hazırlık aşamalarını tamamladıktan sonra, örnek uygulamayı deneyerek EV3’ün sorunsuz şekilde çalıştığını göreceksiniz.

1. EV3’ü Hazırlama

  1. En az 4, en fazla 32 Gb’lık bir microSD ya da microSDHC hafıza kartı almanız gerekmektedir. Okuma - yazma hızının yüksek olması açısından kartın Class A1 türünde olması önerilmektedir.
  2. https://le-www-live-s.legocdn.com/sc/media/files/ev3-micropython/ev3micropythonv100sdcardimage-4b8c8333736fafa1977ee7accbd3338f.zip adresindeki dosyayı indirin. Dosyayı zip’ten çıkarmayın. Bu dosyayı microSD / SDHC kartımıza, EV3 bu karttan açılacak şekilde yazdıracağız.
  3. balenaEtcher - Flash OS images to SD cards & USB drives adresinden Download for Linux x64 bağlantısındaki uygulamayı indirin ve bilgisayarınıza kurun.
  4. microSD / SDHC kartınızı laptobunuzdaki uygun kart yuvasına ya da bir kart reader vasıtasıyla takın.
  5. balenaEtcher - Flash OS images to SD cards & USB drives adresinden indirp kurduğunuz uygulamayı çalıştırın ve bu adreste gösterildiği gibi (hareketli resmi inceleyin) 3 adımda indirdiğiniz zip dosyasını (MicroPython) kolayca hafıza kartına yazdırın. İşlemin tamamlanmasını bekleyin.
  6. Yazma işlemi tamamlandıktan sonra hafıza kartınızı EV3 üzerindeki SD kart yuvasına yerleştirin ve EV3’ü açın. EV3 otomatik olarak bu kart üzerinden açılacaktır. Ekranda küçük yazıların hızlıca kaydığı görünecektir. Bu süreçte cihazın durum ışıkları turuncu renkte hızlıca yanıp sönecektir. Sürecin tamamlanmasını bekleyin. Önyükleme tamamlandıktan sonra MicroPython’un EV3 için sunduğu arayüzü göreceksiniz. Cihaz durum ışıkları yeşil olacaktır.

2. Pardus 19’u Hazırlama

  1. Download Visual Studio Code - Mac, Linux, Windows adresinden Visual Studio Code’un Pardus’a uygun olan .deb paketini indirin. İndirdiğiniz .deb paketine çift tıklayarak VS Code’u bilgisayarınıza kurun.
  2. Pardus başlatıcı ikonuna tıklayın ve Geliştirme kategorisinden Visual Studio Code’a tıklayın.
  3. Buraya tıklayarak resimdeki adımları takip edin. Bu adımların sonunda VS Code’a LEGO MIINDSTORMS EV3 MicroPython eklentisini kurmuş olacaksınız.
  4. Buraya tıklayarak resimdeki adımları takip edin. Bu adımların sonunda EV3’ü kodlamak için oluşturduğunuz python dosyalarınızı bilgisayarınızda barındıracağınız proje klasörünüzü belirlemiş olacaksınız.
  5. Buraya tıklayarak resimdeki adımları takip edin. Bu adımların sonunda EV3’ü VS Code’un görmesini sağlayacaksınız. VS Code editörü EV3 aygıtınıza (ev3dev) bağlandığında sarı renkteki yuvarlak ikon, yeşile dönüşecektir. Bu durum EV3’ün programlanmaya hazır olduğu anlamına gelmektedir.

3. Örnek Program (Motor Hareket Ettirme)

  1. Öncelikle VS Code’u kapatalım ve EV3’ün USB kablosunu bilgisayardan çıkalım. Projemizde kullanacağımız tüm aygıtlarımızı EV3’e bağlayalım. Bu projemizde bir adet motor döndüreceğiz. Bunun için bir adet orta motor (medium motor) ya da büyük motor (large motor)'u cihaz ile birlikte gelen ara kablo yardımı ile EV3’ün A portuna bağlayalım.
  2. VS Code editörünü tekrar açın. Pardus 19’u Hazırlama başlığı altındaki 5 nolu adımı uygulayın.
  3. # Write your program here yazan açıklama satırından sonraki satırı silelim ve buraya kendi kodlarımızı yazalım. Aşağıdaki kodları yazdıktan sonra F5 tuşu ile kodların EV3’e yüklenerek otomatik olarak çalışmasını sağlayabilirsiniz. Kodlar çalıştırıldığında motorunuzun hareket ettiğini göreceksiniz.
m1 = Motor(Port.A)
m1.run_angle(360, 700)

Yukarıdaki kodlarda Motor() sınıfı üzerinden m1 isimli bir nesne türettim. Ardından m1 nesnesinin run_angle() isimli mehodunu kullanarak A portuna bağlı olan motorun dönmesini sağladım. run_angle() methodu 2 parametre almaktadır. İlk parametre (örnekte 360) motorun hız değeridir. Yani 1 sn’de kaç tur atarak döneceği anlamına gelmektedir. 2. parametre ise kaç derecelik açıyı tamamlayana kadar döneceği değerdir (örnekte 700). Yani motorumuzu bu python kodları yardımı ile sn 360 derece yani 1 tam turluk hız ile 700 derecelik bir açı yapacak şekilde dönecektir.

NOT : EV3’ün Python dili kullanılarak programlanabilmesi ile ilgili Türkçe bir kaynak yazmaktayım. Bitirdiğimde burada paylaşacağım. Karşılaştığınız sorunları buradan bana bildirebilirsiniz.

Kaynak: Selçuk Sinan KIRAT | Kişisel Web Sitesi

6 Beğeni

Bu konu son cevaptan 30 gün sonra otomatik olarak kapatıldı. Yeni cevap girilmesine izin verilmiyor.