~ 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.
Bundan sonrası sizde. Ancak yapacağınız tüm işlemlerde sorumluluk size ait.
İyi eğlenceler...