MicroPython Kurulumu ve ESP-01 (ESP8266) ile Kullanımı

MicroPython Nedir?

MicroPython, bir mikro denetleyicide çalışmak üzere optimize edilmiş, Script tabanlı ve gerçek zamanlı çalışan bir dildir. MicroPython, mikrodenetleyiciler üzerinde program yazabilmek için mikrodenetleyici ortamına göre iyileştirilmiş Python dilinin ayrı bir sürümüdür.

Mikro denetleyicileri programlama aşamasında kodu önce derlemek ve sonrasında denetleyiciye yüklemek gerekmekte. MicroPython da bu durum farklıdır. Kodu derlemeye ihtiyaç duymadan direk programlarınızı konsol ekranı ile yazabilir ve gerçek zamanlı çalıştığını görebilirsiniz Diğer diller (ASM, C vb.) ile mikrodenetleyicileri programı yazıp ve çalıştırmak için öncelikle mikrodenetleyici için yazılan programın derlenmesi sonra da derlenen kodun mikrodenetleyiciye yüklenmesi gerekmektedir. Ancak MicroPython ile çalışma-zamanında (run-time) kod yazıp, doğrudan mikrodenetleyici üzerinde koşturarak sonuçlar alabilirsiniz. Örneğin konsol üzerinden, bir IO pinini 1-0 yapma komutlarını girerek, kodu derleyip mikrodenetleyiciye yüklemeye gerek duymadan, o an canlı olarak sonucu mikrodenetleyici üzerinden gözlemleyebilirsiniz. Bu yöntem, programlama dünyasında REPL (Read-Eval-Print Loop) olarak geçmektedir. Yani bu yöntemi; komutu oku, değerlendir ve sonucu yaz olarak algılayabiliriz.

Bu demek değil ki kodu illa üzerinde mi yazmamız mı gerekiyor? Hayır. Aşağıda herhangi bir text editor de kodu yazıp modulumuze nasıl yüklememiz gerektiğini de adım adım göreceğiz. MicroPython dili ile yazacağımız kodu çalışma-zamanı haricinde, diğer dillerdeki gibi normal bir şekilde de mikrodenetleyiciye yükleyip, üzerinde çalıştırabiliriz. Başka bir yazıda da uPyCraft ile program yüklemeyi anlatmaya çalışacağım.

MicroPython ile kod yazıp çalıştırmak için piyasada çeşitli hazır donanımlar bulunmaktadır:

  • MicroPython dilinin bizzat KickStarter olarak geliştiricilerinden çıkmış olan PyBoard geliştirme kartı. Bu kart, 168MHz’de çalışabilen STM32 temelli bir karttır. Üzerinde accelerometer, RTC ve SD yuvası barındırmaktadır. Güncel olarak fiyatı £33.90 idir.
  • ESP8266 tabanlı kartlar. Bu kartlar, Pyboard kadar IO pinine sahip olmasalar da dahili Wi-Fi’ye sahiptirler ve fiyatları oldukça uygundur. Hatta ESP32 M5 Stack gibi gelişmiş sürümleri de bulunmaktadır.
  • Adafruit firmasının CircuitPython adı altında geliştirmiş olduğu kartlar da bulunmaktadır. Bu kartların üstün yanları ise Adafruit firmasının geniş donanım yelpazesi için yüksek derecede destek sunmasıdır.

Bu yazımızda, ESP8266 temelli olan ESP-01 1MB lik (Siyah model ) olan kartını kullanacağız. Ancak hepsinden önce bilgisayarlarımızda Python’un kurulu olması gerekmektedir.

Not:

Esp-01 ‘lerde iki model var. Mavi kart ve siyah kart olmak üzere .Mavi 512KB. Siyah 1MB. Tavsiyem 1MB lık flash entegreli modeli kullanmanız.Mavi kartı kullanmak isterseniz alternatif çözüm yolu olarak 1MB ‘lik flash entegre takmanız.

Python Kurulumu

https://www.python.org/ sitesindeki Download bolumunden işletim sisteminize uygun olanı indirip kurulum yaptıktan sonra aşağıdaki 4 adımı uyguladığınızda göreçeksinizki kurulum ve kullanımın ne kadar kolay olduğunu. ( Benim makinede Python27 ve güncel versiyon kurulu.)

Internet tarayıcımızda https://www.python.org/downloads/ adresini ziyaret ederek, bilgisayarımıza uygun olan Python sürümünü (kendi bilgisayarım için Windows 64-bit destekli 2.7.16 sürümünü seçtim) indirip, kuruluma başlayalım. Kurulum esnasında, önemli bir adım vardır. Kurulumun üçüncü penceresinde, yani “Customize Python 2.7.16 (64-bit)” başlıklı pencerede iken seçim ağacındaki “Add python.exe to Path” satırının başındaki simgeye tıklayıp, açılan listeden “Will be installed on local hard drive” satırını seçtiğinizden emin olun.
Bu işlem, Pyton çalışma dosyasının, tüm işletim sistemi tarafından tanınmasını sağlar. Daha sonraları Python’a bağlı olan işlemlerinizde çalışmama sıkıntısını giderir ve işletim düzeninde herhangi bir yerde iken Python komutlarını rahatlıkla çalıştırmanızı sağlar.

1- Adım Esptool kurulumu

Python kurulumu yapıldıktan sonra ESP-01 modulumüze MicroPython derlenmiş olan stable versiyon olan xx.bin dosyayı yüklemek için kullanacağımız uygulamayi kurmakla başlıyoruz.

ESP-01 donanımı, kendi üzerinde MicroPython programını çalıştırabilmesi için bir bellenime (firmware) gereksinim duyar. Bu bellenimi (firmware) ESP-01 donanımına yükleyebilmek için bilgisayarımıza esptool adlı Python paketini yüklememiz gerekmektedir. esptool paketini bilgisayarımıza yüklemek için Python için geliştirilmiş olan pip adlı paket yükleyicisini kullanabiliriz. (pip aracı doğal olarak Python kurulumu ile birlikte gelmektedir.) esptool paketini yüklemek için komut satırında aşağıdaki komutu çalıştırın.
C:\python27\scripts\pip install esptool Enter ( komutu calıştırılır. )
Bu komuttan sonra Scripts dizini içinde esptool.py.exe dosyası oluşmaktadır.

2- Adım MicroPython xxxx.bin Dosyasının indirilmesi

https://micropython.org/download/ Linkinden Bordumuza ait olan image dosyasını indiriyoruz. Biz şu an ESP8266 için yukleme yapaçağımız için ilgili dosyanın güncel ve stable versiyonu indiriyoruz. https://micropython.org/download/esp8266/ Linkinden indirilen dosya ismi esp8266-20191220-v1.12.bin  İleriki zamanlarda dosya ismi değişecektir. Değişecektir derken başı aynı kalıp tarihler ve versiyon noları değişir. Yazıyı hazırladıgım zaman guncel olan dosya buydu.

3- Adım ESP-01 Modulun Flash’in Silinmesi & Yüklenmesi.

Yukardaki 1 ve  2 . adımları yaptıysak artık modulumuze gerekli bin dosyasının yüklenme sirasının geldiği demektir. xxx.bin dosyasını bir Pc ye kurduğumuz işletim sistemi gibi düşünebiliriz.
Sonucta module küçük çapli bir işletim sistemi kuruyoruz.

İlk önce ESP-01 modulumuzun flash belleğini siliyoruz. Bu işlemi altaki komut setiyle hallediyoruz. Bu işlemi yaparken ESP-01 modulu boot moduna almayı unutmayın.
C:\python27\scripts\esptool.py -–port COM18 erase_flash

Flash bellek silindikten sonra MicroPython sitesinden indirmiş olduğumuz esp8266-xxx.bin dosyasını son aşamamız olan yükleme aşasına geciyoruz. Bu aşama sonun da modulumuzde artık bir python dili kurulmuş demektir.

Bin dosyasının yüklenmesi için aşağıdaki komut setini çalıştırarak yükleme işlemini tamamlamış oluyoruz.
C:\python27\scripts\esptool.py -–port COM18 –baud 460800 write_flash -–flash_size=detect 0 esp8266-20170108-v1.8.7.bin

Not:

ESP-01 silme ve yükleme işlemi yaparken Boot moduna alınması gerekiyor. ( Eger nasıl girilmesi gerektiği hakkında bilginiz yoksa arama motorlarına  ESP-01 Boot mode yazarak  bakabilirsiniz.)

Yükleme işlemi bittikten sonra herhangi bir terminal programıyla 115200 hızında baglanarak komut işlemi gercekleştirilir.Yükleme sonunda modulu resetleyip Putty serial program (Resim-1 ) ile bağlanarak yükleme işlemi başarılı bir şekilde gerçekleşmişse baglantı sonrası gelecek ekran görüntüsü ise Resim-2 ‘yi görmemiz gerekiyor.

Putty ile baglantı yapılma aşaması.

Not: Ekran ilk acıldıgında Enter basmak gerekebiliyor veya Modulu resetlemek

Terminalden module örnek bir komut giriş uygulaması.

4- Adım Yazılan Uygulamanın Module ( ESP8266 ) Yüklenmesi.

Modulumuz için herhangi bir text editor yardımıyla (Notepad++, vb.. ) yazmış olduğumuz Python kodunu module yükleyebilmek için Adafruit MicroPython  (ampy) komutunu yüklememiz gerekiyor.
Komutu yüklemek icin aşağıdaki satırları çalıştırıriz.
C:\python27\scripts\pip install ampy
veya
C:\python27\scripts\pip install adafruit-ampy
Bu komut satırı sonunda ilgili klasorde ampy.exe dosyası oluşmaktadır. (C:\python27\scripts\ klasoru icinde. )

ampy komutunun eklentilerini görmek icin.
ampy –help

  • Donanımdaki dosyaları çekmek (get)
  • Donanıma yeni dosya eklemek (put)
  • Donanımdaki dosyaları çalıştırmak (run)
  • Donanımdaki dosyaları silmek (rm)
  • Donanımdaki dosyaları listelemek (ls)

Şimdi ampy komutunu da aktif ettikten sonra modulumuze aşağıdaki örnekleri yüklemeye çalışalım. Öncelikle aşağıdaki komutları Notepad++ te yazıp main.py olarak kayıt edelim.

Örnek Code-1:

Komut satırında ampy -–port COM18 put main.py yazıp entere bastığımızda program modüle yüklenmeye başlar.Yükleme yaparken Boot moduna almaya gerek yok. Altaki program ise Basit bir led yak sondur uygulamasıdır. Bu programı ister main.py olarak kayıt edip module yukleyerek veya Putty gibi bir serial terminal program aracılığıyla yazıp da çalıştırabilirsiniz.

Örnek Code-2:

Not:

  • Yukardaki komutları devamlı aynı klasorde çalıştırmamak için Dosya yönetim kısmından Python27 ‘nin kurulu olduğu dizin gösterilmelidir. Yukardaki ilk kurulumdaki aşama yapıldıysa buna ihtiyaç kalmayacaktır.
  • PC de modulden bağımsız yazacagımız uygulamar için örnegin. C:\uPython klasoru olusturup dosyalarımızı icine kayıt edip burdan yükleme ve çalıştırma yapabiliriz.
  • Yükleme ve çalıştırma için ampy komutlarına bakın.

AMPY Komutlarına Genel Bakış

ls komutu

ESP-01 modulun icindeki Dosyaları görmek için kullanıyoruz
Kullanımı : ampy -–port COM18 ls
Ekran görüntüsü:
/boot.py
/main.py
ampy -–port dizin1 ls
ilgili klasorun icindeki dosyaları gösterir.

run komutu

Yazilan programın modul üzerinde calıştırılması
Kullanımı: ampy -–port COM18 run test.py
Hata çıktısı vermeden calıştırmak icinde.
ampy -–port COM18 run -–no-output test.py

Not:

Port seçeneğini sürekli olarak belirtmek istemiyorsanız AMPY_PORT ortam değişkenini ayarlayabilirsiniz ve ampy bunu devre kartının seri bağlantı noktası olarak kullanır.
Kullanımı: Set AMPY_PORT=COM18
Bundan sonra ampy -–port COM18 yazmaya gerek yok.
Direkt  olarak  ampy run test.py  gibi komutlar yazılır.

get komutu

Modulun icindeki ilgili dosyanın iceriğine bakılması ve Çalışılan dizin içine kopyalanması.
ampy -–port COM18 get boot.py
Ekran Goruntusu:


ampy -–port COM18 get boot.py board_boot.py
komutuyla ilgili dizine
board_boot.py  dosyasıni kaydeder.

mkdir komutu

ampy -–port COM18 mkdir dizin1
modulun icinde dizin1 diye bir klasor oluşturur.

rm komutu

ampy -–port COM18 rm main.py

    • modulun icindeki main.py isimli dosyayı siler.

ampy -–port COM18 dizin1 rm /dizin2

    • dizin1 klasorun icindeki dizin2 yi siler.
      Not: dizin2 nin silinebilmesi için içinin boş olması lazım. Değilse

     

      Silindikten sonra silme işlemi yapılmalı.

    put komutu

      Çalışmış olduğumuz dizin içindeki main.py dosyasını modulumuzun içine yüklemek için kullanıyoruz.

    ampy -–port COM18 put main.py

      ( Bir bakıma mikro denetleyiciye hex dosyası yükleme işlemi gibi. )
      Saygı ve sevgilerimle.

 

    Mehmet BEBEK

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir