Arşivlerin arasında; 2017 yılında katıldığım kursun proje notlarını buldum. Python Programlama Eğitminden aldığım bilgilerle yapmaya çalıştmıştım. Python2 üzerine yazılmış proje. Basit değişiklikler ile Python3 ‘e dönüştürülebilir. Okumaya devam et Arduino ile seri port üzerinden 7 segment display
Direnç değerlerini nasıl öğrenebiliriz?
Bazen tembellikten olsa gerek böyle bir programa ihtiyaç duyuyorum.
Python, PySimpleGUI modülü ile bir uygulama yaptım. Python ve PySimpleGUI modülünü öğrenmeye çalışıyorum.
Python pendulum ve pyttsx3 modülleri ile zamanı dinleyelim.
Python ile saat ve tarih bilgisini sese çevirebilmek için küçük bir uygulama yazdım.
Öncelikle;
pendulum ve pyttsx3 modüllerinin yüklü olması gerekmekte. Eğer yüklü değilse;
1 |
pip install pendulum pyttsx3 |
ile kuralım. Okumaya devam et Python pendulum ve pyttsx3 modülleri ile zamanı dinleyelim.
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.
Bundan sonrası sizde. Ancak yapacağınız tüm işlemlerde sorumluluk size ait.
İyi eğlenceler...
STM32F103C8T6(Blue Pill) kartını USB den kullanmak
Selamlar.
Uzun zamandan beri yazamadım. Korona günleri buna fırsat oldu.
Blue Pill test kartına yeni bir bootloader yükleyerek harici seri port cihazına gerek kalmadan, üzerindeki usb konnektörü ile haberleşmek/program yükleme nasıl yapılacağı konusuna bakacağız. Okumaya devam et STM32F103C8T6(Blue Pill) kartını USB den kullanmak
Analog girişe çoklu buton
Uzun zaman önce forumda paylaştığım örnek çalışmayı buraya taşıyorum.
Çıkış noktası; “Pull-up/pull-down haricinde buton başka şekilde bağlanır mı?” sorusuydu…
Arduino IDE ile STM32 macerasına başlangıç.
Selam;
Yeni bir başlıkta daha birlikteyiz. İyi eğlenceler…
Bulaşıcı olan STM32 hastalığı bana da bulaştı. Tabii ben tembel biri olarak kolay yollar aradım. Arduino IDE bu konuda kolaylık sağladı. Melih Abi ‘nin hediye ettiği STM32F103C8T6 mcu barındıran modülü ile işe başladım. Öncelikli hedef üzerinde PC13 pinine bağlı bulunan kullanıcı ledini yakmak.
Okumaya devam et Arduino IDE ile STM32 macerasına başlangıç.
Portlarım yetmiyor
MCU kullanırken bizleri en çok zorlayan şeylerden birisi portların yetmemesi.
Burada yazdığım minik proje ile 5 port ile 20 led yakmayı göstermeye çalışacağım. Biraz daha geliştirilip başka amaçlar ile kullanmak mümkün olabilir.
İyi eğlenceler…
Gıcık Geliştirme Kartı Arduino
Benim de sinir olduğum geliştirme kartları arasında olan Arduino ile yaptığım bir çalışmayı paylaşmak istiyorum.
Çok zor oldu kodları yazmak. Zira altı pot okuyup altı pwm çıkışı verebilmek için; fonksiyon satırları hariç altı satır kod yazmak zorunda kaldım.
PIC16F877A ile 16 Buton, 16 Led
Daha önceden hazırladığım test kodlarını paylaşıyorum.
18F877A ile yapılan bu çalışmada 16 giriş ve 16 çıkış kullanılmıştır. Her buton ilgili ledini diğer butonlardan bağımsız şekilde yakıp/söndürebilmektedir.
Kodların içerisinde elimden geldiğince açıklama yapmaya çalıştım. Timer0 ile yaptığım kesme ile çıkışlar saniyede 1000 kez tazelenmektedir. Butonlar da ana döngü içerisinden okunmaktadır.
Doğal olarak farklı şekillerde yapmak mümkündür.