ESP8266 ve micopython

~ ESP8266 ile micropython ~

 

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 birgeliş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:


Şekil 1: ESP8266 için boot modları

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


Şekil 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:

sudo pip install esptool

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

esptool.py --port /dev/ttyUSB0​​ flash_id

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

 


Şekil 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.

esptool.py erase_flash

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


Şekil 4: Flash alanını silme

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.

esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20191220-v1.12.bin

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


Şekil 5: Python yorumlayıcısını flash alana yazma

Connecting...” yazızı çı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.

minicom -D /dev/ttyUSB0 -b 115200

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.


Şekil 6: İlk karşılama ekranı

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


Şekil 7: Modülü ağa bağlamak

import network #network modülü ekleniyor

sta_if = network.WLAN(network.STA_IF)

sta_if.active(True)

sta_if.scan()

sta_if.connect("KendiAğAdımız", "KendiAğAdımızınŞifresi")

Bu işlemlerden sonra alttaki kodu girdiğimizde

sta_if.isconnected()

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


Şekil 8: İp adresi öğrenmek

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 browser ile modüle erişmek:


Şekil 9: Webrepl işlemini başlatmak

<y> ile yeniden başlatalım.


Şekil 10: Resetten sonra otomatik webrepl bağlantısı

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 <enter> 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.


Şekil 11: İnternet tarayıcı ile webrepl

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;

webrepl._webrepl.password("87654321")

ile yapabilirsiniz.

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

help()

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


Şekil 12: Kopyala-yapıştır işlemleri

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.

print("Merhaba Dünya! Evde Kal!")

Türkçe karakterler problem yaratabilir.


Şekil 13: İlk çalışan kodumuz

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

Şimdi bir örnek yapalım:

import machine

import time

pin = machine.Pin(5, machine.Pin.OUT)

for i in range(4):

print('LED ON')

pin.value(0)

time.sleep(1)

print('LED OFF')

pin.value(1)

time.sleep(1)

print('Tur bitti.')

print("Tüm işlem tamam.")


Şekil 14: Led yakma

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 yapabilirisiniz.

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 kosları 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.

https://esp8266.ru/esplorer/

Bundan sonrası sizde. Ancak yapacağınız tüm işlemlerde sorumluluk size ait.

İyi eğlenceler...