STM32F4-Dicovery (STM32F407) geliştirme kartına micropython yükleme

Bölüm – I

Gelişmekte olan micropython üzerine bir kaç kelam da ben edeyim dedim. Elimde bulunan STM32F4-dicovery kartına micropython yükleyeceğiz. Ardından gömülü sistemlerinin meşhur ilk işi olan, led yakma uygulaması yapacağız.

Öncelikle bu kartı “Discovery” üzerinden bağladığımız mini USB kablosu ile birlikte; bir adet mikro USB kablosu ve isteğe bağlı dişi-dişi tek dupont kablo gerekli.

Ben Linux(Fedora) kullanıyorum. Bu işletim sistemi üzerinden anlatmaya çalışacağım. Ancak benzer programlar kullanarak diğer işletim sistemlerinde de aynı işlemleri yapmak mümkün.

Başvuru kaynağımız:

https://www.micropython.org/

İlgili firmware dosyalarını buradan indireceğiz ve aynı yerdeki belgeleri kullanarak micropython ve kartımıza ait modülleri tanımaya çalışacağız.

https://micropython.org/download/STM32F4DISC/

Bu linkeki:

https://micropython.org/resources/firmware/STM32F4DISC-20230426-v1.20.0.hex

dosyasını indirelim. Bu yazıyı yazdığım zaman bu son sürüm, daha yenisi çıkarsa üstteki linkten onu da indirebilirsiniz.

STM32 Cube Programmer ‘in bilgisayarınızda kurulu olduğunu varsayıyorum. Ayrıca kullandığınız işletim sistemine göre STM32 paketlerinin/uygulamalarının da yüklü olduğunu düşünüyorum. Eğer yok ise bunlara ihtiyacımız olacak.

Bu firmware ‘den bir kaç önceki sürümlerde .hex dosyası yoktu. DFU üzerinden firmware yazılabiliyordu. Bu biraz sıkıntılı. Uçları pin headerler yapılmış USB kablosu yapmak ve uygun pinlere bağlamak ve bir kac işlem yapıp kartın DFU modunda başlamasını sağlamamız gerekiyordu. Artık buna gerek kalmadı. İlgili .hex dosyasını yüklemek artık yeterli.

Önce STM32F407 içindeki bilgileri silmemiz/sıfırlamamız gerekmekte. STM32 Cube Programmer GUI ile bunu yapmak çok kolay. Tüm hafıza alanını silin ve .hex dosyasının yerini gösterin. Ardından yükleyin. Bu yeterli, ama terminal ile de bunun yapılmasını göstermek istiyorum.

Şimdi sadece USB mini kablosu takılı olacak şekilde kartımızı bilgisayarımıza bağlıyoruz. Herhangi bir jumper bağlantısı yapmamıza gerek yok. (DFU için BOOT0 -> HIGH yapılmalıydı, şimdi buna gerek yok.)

komutuyla kart hafızasını siliyoruz. Ardından:

komutunu veriyoruz. “./STM32F4DISC-20230426-v1.20.0.hex” o an bulunduğum dizin içinde olduğundan ayrıntılı yolu yazmama gerek kalmadı. Ancak programın tam yolunu yazmam gerekiyor.

Silme, firmware yazma ve USB seri bağlantısı öğrenme

Firmware (micropython yorumlayıcısı) yüklendikten sonra USB mikro kablosunu takıyoruz ve:

ls /dev/*[AU]*

yazıp seri port bağlantımız yapılmış mı kontrol ediyoruz. Belki diğer işletim sistemlerinde uygun göstericiler ile bunu görmek mümkün olacaktır.

Benim bilgisayarımda “/dev/ttyACM0” olarak bağlantım hazır. Sizin bilgisayarınızda da benzer olarak bir uç bağlantısı olacaktır.

Bu noktada mini USB kablosu artık sadece besleme sağlayan bir kablodur. İki kablo ile çalışmak canınızı sıkarsa; önce tüm USB kablolarını çıkarn. Ardından tedarik edin dediğim dişi-dişi dupont kablosunun bir ucunu PA9(OTG_VBUS) pinine takın. Diğer pini de 5V pinlerinden birine takıyorız. Dikkat edin 5V olan. Başka bir pin değil. P2 pin headerlerinde bulunmakta. Gerekirse bu kartın şemasını açıp oradan ayrıntılı pinleri bulabilirsiniz.

komutunu terminalden verince artık kartın içide yüklü olan micropython yorumlayıcısına ulaşmış oluyoruz.

micropython komut satırı

Yorumlayıcı konsol bağlantısı hızı 115200baud ve bağlantı noktam /dev/ttyACM0. Buraya kadar geldiyseniz artık bir kahve molası verebilirsiniz. Bundan sonrası artık daha kolay olacaktır.


Kahve molası bittiğine göre devam edebiliriz. “Hep terminal ekranından mı çalışacağız?” sorusu kahve molanızı zehir etmemiştir. Tabii ki değil, ama isterseniz neden olmasın.

Thonny; adında güzel bir arayüz yapmış, maharetli geliştiriciler. Sevgilerimizi yolluyorum. Tüm işletim sistemleri için uygulama bulunmakta. Kendi işletim sisteminize uygun olanı indirip çalıştırın. Basit bir yapılandırma kısmı var, dil ve yorumlayıcı seçimi. Herhangi birini seçin. Şu an için sorun değil. Daha sonra keyfinize göre yapılandırabilirsiniz.

Thonny örnek başlangıç

Şimdi kartımıza bağlanıp bir şeyler yapalım:

Menü > Araçlar > Seçenekler menüsünü açalım. Burada, yorumlayıcı olarak MicroPython(genel) seçelim. Port olarak da sizin bilgisayarınızda STM32F4-discovery kartın bağlı olduğu portu seçelim. Benimkini daha önce öğrenmiştik: /dev/ttyACM0.

Yorumlayıcı ve port seçimi

Tamam dediğimizde, artık yorumlayıcıya bağlanmış olacağız. Menü > Görünüm > Dosyalar seçeneğini işaretlersek; kendi bilgisayarımızdaki dosyaları ve board içindeki dosyaları göreceğiz.

Burda bir güzel nokta bulunmakta. Eğer dosya yönetici gibi bir uygulama açarsanız; sabit sürücülerin yanında PYBFLASH adında bir sürücü daha göreceksiniz. İstersek board içindeki dosyalara buradan da ulaşabiliriz.

Yorumlayıcıya bağlantı

Soldaki dosyalara (boot.py, main.py ve diğerlerine) sonra değinelim. Hemen bir uygulama yapalım. Malumdur ki board üzerindeki ledler; PD12 -> Yeşil, PD13 -> Turucu, PD14 -> Kırmızı ve PD15 -> Mavi led olmaktadır.

Bir ledi yakabilmek için; terminal alanında sırayla alttaki komutları verelim:

Yeşil ledin yandığını gördük (umarım :p). Şimdi de söndürelim.

Biraz python bilgisine ihtiyacımız var. Bunu internette bir çok platformda bulmak mümkün. Ücretli – ücretsiz dersler bulunmakta.

“pyb” modülünün içindeki metodlara dir(pyb) ile erişebiliriz. Bu yapıyı alttaki adresten inceleyebilirsiniz. Başvuru kaynağımız burası olacak:

https://docs.micropython.org/en/latest/library/pyb.html?highlight=pyb#module-pyb

Yazıya “blink” led yak/söndür uygulaması ile son verelim. Thonny, Menü > Dosya > Yeni (Ctrl+N veya Yeni ikonu) seçimini yapıp yeni boş bir belge açalım. Buraya alttaki kodu yazalım:

Kaydet(Ctrl+S) yi seçelim. “MicroPython Cihazı” nı seçelim ve .py uzantılı olacak şekilde bir isim verelim. Örneğin: “led_blink.py” olsun. “Tamam” a basarak kodumuzun discovery kartına yüklenmesini sağlayalım. Menü > Çalıştır > Geçerli betiği çalıştır(F5 veya Çalıştır ikonu) ile kodumuzu artık çalıştırabiliriz. Yeşil ledimiz artık bir saniye aralıklarla yanıp sönmeye başlayacak.

Durdurmak için bir kaç seçenek mevcut: Kırmızı durdurma düğmesi(Ctrl+F2, bu donanımsal resettir aynı zamanda.), Ctrl+D (soft reset), Ctrl + C (programı durdur).

Konsola help() yazarak örnekleri çalıştırabilirsiniz. Önümüzdeki günlerde bu yazının devamını yazmayı düşünüyorum. Board üzerindeki donanımlara veya dışarıdan bağladığımız modüllere erşmeye çalışacağız.

Kafanıza takılanlar olursa “Hakkımda” bölümünden yazabilirsiniz. Şimdilik biraz ledler ile uygulamalar yapın. Sonrasında daha büyülü şeyler yapmaya çalışacağız.

İyi eğlenceler…

7 segment 7segment 12F675 12F683 ADC Arduino AVR AvrDude BUTON button Code Composer Studio Direnç esp esp8266 G2552 GLCD itoa led LIS3DSH LIS302DL micropython MPLABX MSP430 ortanca filtre pendulum PIC PIC18F452 port PWM PySimpleGUI python pyttsx3 seven segment STM32 STM32F-Discovery STM32F4-DISCO STM32F4-Discovery STM32F407 Thonny Timer0 usb Voltmetre XC8 Zener test cihazı İvme Sensörü