ESP8266 ve micopython

ESP8266 ve Python güçlerini birleştirerek daha güçlü bir donanım oluşturulabiliyor. Bunu nasıl yapacağımıza bir bakalım. Öncelikle donanım kısmına bakmamız gerekli.

Eğer NodeMCU gibi bir geliştirme kartımız varsa sorun yok, ancak ESP-01, ESP07, vb. gibi donanıma sahipsek, biraz ekleme yapmamız gerekmekte. ESP8266 ‘nın birkaç boot modu bulunmakta:

Resim 1: ESP8266 için boot modları

Bizim flash üzerinden boot yapabilmemiz için uygun değişikliği yapmamız gerekecek.

Resim 2: Boot işlemi flash üzerinden olması için uygun değişiklik

Elimizdeki donanımını üstteki şemayı uygulayarak test işlemine hazırlayalım.

Bir terminal penceresi açıp alttaki kodu yazalım:

yükleme bittikten sonra flash büyüklüğünü öğrenelim:

<enter> ‘e bastıktan sonra; önce FLASH butonuna, sonra RESET butonuna basalım.

Resim 3: Flash büyüklüğünü öğrenme

“Connecting…” yazızı çıkınca butonları bırakalım. Üstteki resimdekine benzer bir görüntü almamız gerekli. Burada flash büyüklüğü 4MB olarak görülmekte.

Elimdeki ESP-07 normalde 512KB flasha sahip. Bunu 25Q32FV ile değiştirdim. Artık ESP-12 gibi bir cihazım oldu.

ESP-01 siyah kart varsa bunda 1MB flash bulunmakta. Mavi olanlarda yine 512KB flash var. Aynı şekilde flash entegresini değiştirmek mümkün olacaktır.

512KB için micropython firmware bulunmakta, ancak çalışmak çok rahat olmadı.

Artık uygun firmware indirip kartımıza yüklemeye geçebiliriz.

https://www.micropython.org/download/

Buradan uygun firmware bulup indiriyoruz. Benim tercihim:

https://www.micropython.org/resources/firmware/esp8266-20191220-v1.12.bin

Önce flash entegresini siliyoruz.

<ENTER> ‘e basrıktan sonra; önce FLASH butonuna, sonra RESET butonuna basalım.

Resim 4: Flash alanının silinmesi

“Connecting…” yazızı çıkınca butonları bırakalım. Üstteki resimdekine benzer bir görüntü almamız gerekli. Biraz uzun sürmekte, telaş etmeyin. Silme işleminden sonra micropython yorumlayıcısını yükleyeceğiz.

yine aynı işlem. <ENTER> ‘e bastıktan sonra; önce FLASH butonuna, sonra RESET butonuna basalım.

Resim 5: Yeni firmware yazılması

“Connecting…” yazısı çıkınca butonları bırakalım. Üstteki resimdekine benzer bir görüntü almamız gerekli.

Artık micropython yorumlayıcımız yüklendi. Şimdi modüle seri port üzerinden bağlanıp ağ ayarlarımızı yapalım. 115200 baud 8N1 olarak bağlanacağız.

ile terminal bağlantısı yapalım. Bir kere CTRL+D yapıp soft-reset ile karşılama ekranını görebiliriz. İstersek RESET butonuna basıp aynı işlem yapılabilir.

Resim 6: Teminal ile ESP’ ye bağlantı

Karşılama ekranında artık promt bizi beklemekte. Öncelikle ağ işlemlerimizi yapalım. help() çıktısında neler yapabiliriz görülmekte.

Resim 7: Wİ-Fİ bağlantı ayarları

“True” cevabını alırsak artık modülümüz ağ üzerindedir.

Resim 8: İP sorgulama

Bu şekilde de aldığımız ip adresi görülmekte. Artık her hard/soft reset işleminden sonra tekrar şifre işlemlerine gerek kalmadan ağa bağlanır. Ancak farklı bir ağa bağlanmak isterseniz aynı işlemler tekrarlanacak.


Bundan sonra yapacaklarımız basit işlemler; led yak, buton oku, vb. Ancak bu işlemleri kalıcı ve kolayca yapabilmek için birkaç işleme daha ihtiyacımız var. Bunlardan ilki webrepl işlemi. Terminale ihtiyaç duymadan internet tarayıcı ile modüle erişmek:

Resim 9: Webrepl için yeniden başlatma

<y> ile yeniden başlatalım.

Resim 10: Webrepl kullanılmaya hazır

Bu çıktıyı göreceğiz. İkinci satırdaki ip bizim ilk aldığımız adres. İlk anda 0.0.0.0 olarak çıktı. Ağa bağlandığını düşündükten sonra CTRL+D ye bastığımızda soft-reset olur ve aldığı ip de görülür.

Burada iki adres görmekteyiz. 192.168.1.62 benim wifi modemin verdiği adres. 192.168.4.1 de ESP8266 nın AP modundaki yayınıdır. Kablosuz bir bağlantınız varsa ağ işlemlerinden ESP8266 yayınını görebilir ve bağlanabilirsiniz. Buradaki isim MicrpPython-xxxx benzeridir. Ağ şifresi de “micropythoN” (sondaki “n” hatfi büyük) olmaktadır.

Peki bu bağlantı nasıl olacak;

Tarayıcınızın adres kısmına yukarıdaki adresi yapıştırıp e basın. Eğer desteklemez ise;

http://micropython.org/webrepl/

adresine gidin. Bağlantı adresine istediğiniz birisini yazın. Kablosuz bağlantınız yok ise modemin vermiş olduğu adresi kullanmalısınız.

Resim 11: Browser üzerinden ESP ‘ye bağlantı

Artık terminal bağlantısına ihtiyacımız yok. İstediği şifre webrepl işlemini başlattığımızda verdiğimiz şifredir. Değiştirmek isterseniz;

ile yapabilirsiniz.

Gelelim bu sistemdeki kopyala-yapıştır işlemlerine;

yazdığımızda çıkan ekran bu konuda yardımcı olacak.

Resim 12: Kontrol tuşları

Tek satır işlemlerde sorun olmaz ancak bir kod parçasını yapıştırmak istersek CTRL+E ile “paste” modunu açmamız gerekli. İptal etmek istersek CTRL+C, kodun şalışmasını istersek CTRL+D.

Şimdi bir klasik olan “Merhaba Dünya!” çıktısını ekranda görelim.

Türkçe karakterler problem yaratabilir.

Resim 13: print() çıktısı

Direkt yazabiliriz de. “:” işaretini kullandığımızda uygun miktarda “tab” alanı vermeyi unutmayalım.

Şimdi bir örnek yapalım:

Bunları bir editöre yapıştırın “tab” aralıklarını kontrol edin ve “paste” modunda yapıştırıp kodu çalıştırın. Ben bu işlemleri yapabilmek için ULN2003 ile yedi ledli bir test kartı yaptım. Bredboard ile de yapabilirsiniz.

http://docs.micropython.org/en/latest/esp8266/quickref.html

adresi başvuru kaynağımız. Yapabileceklerimiz artık hayal gücümüzle sınırlı.

Buraya kadar olan kısım epey zahmetli. Özellikle kodları elle yazmak, düzenlemek ve tekrar çalıştırmak. Yazdığımız kodları denemek için bir editör ile düzenleyip webrepl ve internet tarayıcısı üzerinden modüle yollamak mümkün. Ancak bu da epey yorucu. Kod hatalı olursa düzenleyip yeniden yüklemek ve çalıştırmak gerekli.

Bu durumu ESPlorer ile aşmak mümkün.


Bu konuya bir ek getirmek istiyorum:
micropython ile daha konforlu kod yazabilmek için Thonny uygulamasını kullanmaya başladım.

https://thonny.org/