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:

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

Elimizdeki donanımını üstteki şemayı uygulayarak test işlemine hazırlayalım.
Bir terminal penceresi açıp alttaki kodu yazalım:
1 |
sudo pip install esptool |
yükleme bittikten sonra flash büyüklüğünü öğrenelim:
1 |
esptool.py --port /dev/ttyUSB0 flash_id |
<enter> ‘e bastıktan sonra; önce FLASH butonuna, sonra RESET butonuna basalım.

“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.
1 |
esptool.py erase_flash |
<ENTER> ‘e basrıktan sonra; önce FLASH butonuna, sonra RESET butonuna basalım.

“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.
1 |
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.

“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.
1 |
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.

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

1 2 3 4 5 6 7 |
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.

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:

<y> ile yeniden başlatalım.

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.

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;
1 |
webrepl._webrepl.password("87654321") |
ile yapabilirsiniz.
Gelelim bu sistemdeki kopyala-yapıştır işlemlerine;
1 |
help() |
yazdığımızda çıkan ekran bu konuda yardımcı olacak.

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.
1 |
print("Merhaba Dünya! Evde Kal!") |
Türkçe karakterler problem yaratabilir.

Direkt yazabiliriz de. “:” işaretini kullandığımızda uygun miktarda “tab” alanı vermeyi unutmayalım.
Şimdi bir örnek yapalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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.") |
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.