Evvelki “Harici Sistem Performans Monitörü” isimli kendin yap rehberimizde 1.3 inçlik küçük OLED ekran üzerinde işlemci ve ekran kartı sıcaklığını, kullanım bilgilerini ve çalışma frekansını göstertiyorduk. Ortadan geçen vakitte projeyi biraz daha geliştirdiğimiz üzere projenin daha büyük (2.8 inç LCD) ekranlı sürümünü yapma bahtımız oldu. Bu rehberimizde her ikisi için de ayrıntılı bilgiler bularak rahatlıkla kendi harici sıcaklık göstergenizi yapmak için gerekli bilgiyi edinebileceksiniz.
Not: Bu rehberimiz minimum seviyede hobi elektroniği, prototipleme, lehimleme ve Arduino programlama bilgisi gerektirmektedir.
Gnat-Stats: Küçük ekranlı sistem monitörü
İsterseniz öncelikle küçük ekranlı sistem monitöründe yaptığımız değişikliklere değinelim. Şayet okumadıysanız o rehberimize de bakmanızı ve temel bilgileri edinmenizi öneririz.

Gnat-Stats projesinin birinci yaptığımız versiyonu
Birinci yaptığımız versiyon breadboard üzerinde biraz kaba ve büyük duruyordu + daha çok bir prototipi andırıyordu. Biraz daha hafif ve portatif hale getirmek için kullandığımız Arduino ProMicro mikro kontrolcüsünü Breadboard’dan çıkarıp bütün bacaklarını söktük ve direk ekranın altına lehimledik. Böylelikle portatif ve Gnat-Stats ismine yaraşır formda küçük hale getirmiş olduk.
Bunun için ekranın 4 bacağından sondaki ikisini (VCC ve GND) sökmemiz gerekti. Ekranın birinci iki pini yani SDA ve SCL pinleri bahtımıza direk olarak zati takılmaları gereken Pro Micro’nun 2. Ve 3. Analog pinlerinin üzerine denk geliyordu. O yüzden bu iki pinin bacaklarını bırakıp, o pinlere lehimledik. Geriye kalan güç ve toprak pinleri için de kablo çekip ilgili yerlere lehim yaptık.
Bunlara ek olarak Adafruit NeoPixel isminde çok hoş RGB LED halkaları var ve projeyi tasarlayanlar (Rupert Hirst & Colin Conway) kodlarında bu halkalara da dayanak veriyorlar. Bu 16 LED içeren bir model ve Pro Micro’ya nasıl bağlayacağınızı proje sayfasında da bulabileceğiniz aşağıdaki diagrama bakarak görebilirsiniz:
NeoPixel PCB üzerine dairesel olarak yerleştirilmiş RGB ledlerden oluşuyor. Bu LED’ler CPU ve GPU kullanımına nazaran yanıp sönüyor. Halkanın üst yarısındaki LED’ler işlemci kullanımını, alt yarısındakiler de ekran kartı kullanımını temsil ediyor.
Bu kıymetlerin düzeyine nazaran bunlar yeşil, sarı ve kırmızı yanıyor. Bunların parlaklığını kod içindeki neoBrightness değişkenindeki pahası değiştirerek ayarlayabiliyorsunuz.

Varsayılan olarak 60 olan neoBrightness bedelini artırıp azaltarak RGB ledlerin ışık düzeyini değiştirebilirsiniz.
Şunu da hatırlatayım kodu birinci yüklediğinizde NeoPixel özelliği devre dışı oluyor, etkin kılmak için enableNeopixelGauges’ın başındaki iki yatay çizgiyi silmeniz gerekiyor.

NeoPixel’i etkinleştirmek için enableNeopixelGauges’in başındaki iki yatay çizgiyi silmeniz gerekiyor.
Birinci rehberimizde bahsetmeyi unuttuğumuz bir öbür hoş özellik de makul şartlarda devreye girmesini istediğiniz hareketler hazırlayabiliyorsunuz.

İşlemci, ekran kartı kullanımı yahut sıcaklığı muhakkak bir pahası aşında programa bir hareket yaptırabiliyorsunuz.
Arduino IDE’de “CustomThresholdTriggerEvents” sekmesine gidip burada CPU ve GPU kullanımı ya da sıcaklığı aşikâr düzeyleri aştığında yapılmasını istediğiniz şeyler belirleyebiliyorsunuz. Örneğin bu, devreye eklediğiniz bir buzzer’ın çalması ya da farklı bir LED’in yanması olabilir.
Phat-Stats: Büyük Ekranlı Sistem Performans Monitörü
Performans monitörünün büyük versiyonunda 2.8 inçlik 320×240 çözünürlüğünde TFT LCD ekran kullanılıyor. Bu ekranın şoförü kesinlikle ILI9341 olmalı. Satın alırken buna dikkat etmeniz gerekiyor.
Küçük ekranlı versiyondan farklı olarak burada bir de Rotary Encoder kullanılıyor.
Bu ekran parlaklığını ayarlamak ve ekranın oryantasyonunu yatay ve dikey yapmaya yarıyor. Çevirdiğinizde ekran parlaklığı artıp/azalıyor, ortasındaki düğmeye bastığınızda ekran oryantasyonu yatay yahut dikey oluyor.
Opsiyonel olsa da çok fonksiyonel olduğu için bu parçayı edinmenizi öneririz. Esasen çok kıymetli birşey değil. Bu gereçleri Google’da aratarak yurt içindeki & dışındaki alışveriş sitelerinden ve robotik mağazalarından bulabilirsiniz.
Hangi Mikrokontrolcü: STM32 mi Xiao mu?
Bu projede kullanacağımız STM32F103C8T6 isimli mikrokontrolcüye mavi PCB’sinden dolayı “blue pill” yani mavi hap deniliyor.
Robotik mağazalarında yaklaşık 30 liraya bulabileceğiniz epeyce düşük maliyetli bir kesim. Ucuz olmasına rağmen tipik Arduino’lardan çok daha süratli ve büyük hafızaya sahip.
Bunu kullanıyoruz zira Intel, AMD, Nvidia, Gskill üzere donanım üreticilerinin logolarını saklamak ve bu büyük ekranda çok fazla bilgiyi birebir anda gösterip sık sık güncellemek için bu süreç gücüne gereksinim duyuyoruz.
Arduino Pro Micro | STM32F103C8T6 | |
İşlemci | Atmega32u4 | Arm Cortex®-M3 |
Sürat | 16 Mhz | 72Mhz |
Mimari | 8bit | 32bit |
Bellek | 2KB | 20KB |
Kod hafızası | 32KB | 64KB |
Tek sorun onu programlamak Arduino’lardaki üzere kolay değil. Arduino’ları kutudan çıktığı üzere bilgisayarınıza takıp kendi IDE’siyle programlayabiliyorsunuz. Lakin STM32 mikrokontrolcüyü Arduino IDE’siyle programlamak için evvel ona bir Arduino bootlaoder yüklememiz gerekiyor.
Bootloader yüklemek biraz zahmetli ve teknik bir mevzu. Şayet bununla uğraşmak istemiyorsanız Seeeduino’nun biraz daha değerli olan Xiao mikrokontrolcüsünü satın alıp kolay kolay Arduino IDE ile programlayabilirsiniz. Hatta Xiao kullanmanın bir avantajı da ilerde projeyi genişletmek ve Adafruit NeoPixel eklemek istediğinizde yapabilirsiniz, STM32 ise Neopixel’i desteklemiyor.
STM32 ve hazırlıklar
Biz uygun maliyeti sebebiyle bu rehberi STM32’yi baz alarak hazırladık. Mikrokontrolcünüzü satın aldınız ve elinize ulaştı. Kututan bacakları lehimlenmemiş biçimde çıktığını göreceksiniz. Bu bacakları problemsiz formda lehimlemeniz gerekiyor. Bu işte yeniyseniz size tavsiyemiz işini düzgün yapan bir elektronikçiye bunu götürüp lehimletmeniz. Zira kimi pinlerin bacaklarla teması düzgün olmazsa ya da birtakım pinler kısa devre yaparsa proje çalışmayacaktır.
STM32’ye Arduino bootloader yükleme
Bizim elimizde hali hazırda FTDI232 isimli seri programlama modülü olduğu için bootloader flash’lama sürecini onu kullanarak yapacağız. Fakat dilerseniz isterseniz STLink v2 isimli programlayıcıyı edinerek de STM32’ye kod atabilirsiniz.
FTDI modülü ile devam edersek, modülün gördüğünüz pinlerini STM32 kartımızın şu pinlerine takmanız gerek:
FTDI232 pini | STM32 pini |
RX | A9 |
TX | A10 |
VCC | 3.3v |
GND | GND |
Ve burası çok değerli, FTDI modülüne güç vermeden evvel STM32 üzerindeki BOOT 0 isimli jumper’ı 0 pozisyonundan 1’e getirmeniz gerek.
Bir öbür değerli jumper da FTDI modülü üzerinde var. Flaşlayacağımız yalnızca STM32 kartı 3.3v uyumlu olduğu için buradaki jumper’ın da 5v değil 3.3v’da olduğundan emin olmamız gerek.
Daha sonra FTDI modülünün buradan indirebileceğiniz VCP şoförünü yüklemeniz gerekiyor. Bu sürücüyü yükledikten sonra FTDI modülünü küçük USB yuvasından bilgisayarınıza bağlayabilirsiniz.
Artık sırada STM32 kartları flaşlamamızı sağlayan uygulamayı ve karta flaşlayacağımız bootloader belgesini indirmek var.
Bizim elimizdeki STM32 kartın üzerindeki LED’in 13. dijital giriş/çıkış pinine bağlı. Bu sebeple “generic_boot20_pc13.bin” isimli belgeyi flashladık. Muhtemelen sizin kartınız da birebir formda olacaktır.
Bu belgeyi ve flaşlama uygulamasını indirip bilgisayarınıza kurduysanız bir sonraki adımda bu uygulamayı çalıştırın. Uygulama varsayılan olarak C:/Program Files/STMicroelectronics altına kuruyor kendini. Değişik bir formda masaüstüne ve başlat menüsüne kısayol oluşturmadığı için bu dizine gidip kendiniz açmanız gerekiyor.
Bu uygulama açıldığında birinci kısımdan değiştirmeniz gereken tek şey FTDI modülün takılı olduğu COM portunu seçmek.
Bunu seçip İleri’ye bastığınızda bir kusur bildirisi yerine yeşil ışık yanmış trafik lambası ikonu görüyorsanız herşey yolunda demektir.
Sonra birkaç kez ileriye tıkladıktan sonra flaşlamanız gereken .bin belgesini seçeceğiniz kısma geliyorsunuz.
Buradan az evvel indirdiğiniz .bin evrakını seçip devam edin. Flaşlama süreci tamamlandığında uygulamayı kapatın lakin gücü şimdi kesmeyin.
Artık STM32 üzerindeki BOOT0 jumper’ını 1’den 0’a geri almamız gerekiyor. Ve bunu karta elektrik giderken yapmamız gerekiyor yoksa yaptığımız flaşlama silinecektir. Jumper’ı geri yerine taktıysanız gücü kesebilirsiniz.
Bir sonraki adımda Arduino IDE uygulamasını çalıştırıyoruz. Belge > Tercihler menüsünü izleyip tercihler penceresi altında “ek devre kartları yöneticisi URL’leri” kısmına aşağıdaki linki kopyalayıp yapıştırın ve sonra Tamam’a tıklayın:
“http://dan.drown.org/stm32duino/package_STM32duino_index.json”
Bunu yaptıktan sonra Araçlar, Kart ve Kart yöneticisi menülerini izleyip kart yöneticisi penceresini açın. Arama kutusuna “STM32F1” yazın. Yapımcının stm32duino olduğundan emin olup bunu kurun. Arduino IDE’yi kapatabilirsiniz.
Artık neredeyse hazırsınız. STM32’nin VCP şoförlerini bu linkten indirip kurun ve sonra STM32 kartınızı micro USB yuvasıyla bilgisayarınıza bağlayın. Arduino IDE’yi tekrar açıp Araçlar > Kart menüsüne gelip buradan STM32F1 kartlar altından Generic STM32F103C serisini seçin.
Sonra varyant menüsünden 20kb ram ve 64kb hafızalı modelin seçili olduğundan emin olun. Upload method menüsünde USB ile yükleme yapacağımız için “STM32duino bootloader” seçili olmalı.
Son olarak Port menüsü altında STM32 kartımız bir COM portunda takılı olarak gözükmeli ve parantez içinde “Maple Mini” yazmalı.
Bu yazıyorsa deneme gayeli blink kodunu yükleyerek herşeyin düzgün çalışıp çalışmadığını test edebiliriz. Bu kod Kart üzerindeki 13. Pine bağlı dahili LED’i 1’er saniye aralıklarla yakıp söndürüyor. Buradan da kodun karta meselesiz yüklendiğini anlıyoruz. Arduino IDE’de Evrak > Örnekler > Basics ve Blink’e tıklayarak bu koda ulaşabilirsiniz ve STM32’ye yükleyebilirsiniz. Şayet herşey yolunda gittiyse STM32 kartınız üzerindeki LED’in 1’er saniye aralıklarla yanıp söndüğünü görmeniz gerek. Yanmıyorsa geriye dönüp adımlarınızı tekrar denetim edin.
Aslında projenin sıkıntı olan kısmı buydu. Geriye kalan kısım birkaç kablo bağlamak ve indirdiğiniz kodu ve bir kütüphaneyi STM32’ye yüklemekten ibaret.
Adafruit GFX kütüphanesini yükleme
Arduino IDE menülerinden Taslak > Library Ekle > Kütüphaneleri yönet’e tıklıyoruz ve arama kutusuna Adafruit GFX yazıyoruz. Dikkat etmeniz gereken şey yüklemeniz gereken sürümün en şimdiki olan değil 1.7.5 sürümü olması gerektiği. Daha yeni sürümler STM32 mikrokontrolcülerde kusur veriyor.
Ekran, rotary encoder ve STM32 mikrokontrolcü ortasındaki ilişkilerin nasıl yapılacağı proje sayfasındaki açık ve net diagramlarla çok hoş gösterilmiş. Birebirini biz buraya da ekliyoruz:
Bunları takip ederek breadboard üzerinde kablolama yapabilirsiniz. Tabiki breadboard yalnızca başlangıç. Buna 3D yazıcıdan başka bir kasa yapıp masaüstünüzde bir aksesuar üzere kullanabilirsiniz ya da yalnızca ekrana giden kabloları uzun tutup, ekranı kasa camının bir köşesine yapışık biçimde durmasını da sağlayabilirsiniz. Mikrokontrolcüyü ve öbür kabloları da kasanın altında görünmeyen bir yerlerde saklayabilirsiniz.
Proje kodlarını STM32 mikrokontrolcüye yüklemek
Hackaday’deki Phat-Stats sayfası üzerinde bulunan Files (dosyalar) sekmesine gidip hangi mikrokontrolcü ve ekran kombosunu kullandıysanız ona uygun .zip belgesini indirin. Bizim indireceğimiz ‘Phat-Stats-TFT-STM32F1′ ile başlayan evrak. İndirdikten sonra sağ tuşla tıklayıp arşiv yöneticinizi kullanarak tıpkı isimde bir klasöre evrakları çıkarın. Ana proje belgesini açtığınızda dizindeki başka kod evraklarının da Arduino IDE altında farklı sekmeler formunda yüklendiğini doğrulayın. Kodu Yükle tuşuna basıp süreci tamamladığınızda ekranda logo ve yazılar görmeniz gerek.
Bunu görmüyorsanız geriye gidip adımlarınızı tekrar gözden geçirin.
Hardware Serial Monitor uygulamasını bilgisayarda çalıştırmak
Son adım olarak bilgisayarımızın arkaplanında çalışıp mikrokontrolcüye sistem bilgilerini raporlayan uygulamayı indirip kurmamız gerek. Hardware Serial Monitor isimli bu uygulamayı da yeniden belgeler kısmında bulabilirsiniz. Çok değerli bir nokta bu uygulamayı çalıştırırken yönetici müsaadesi ile çalıştırmak gerektiği. Yoksa kimi bilgiler eksik kalıyor.
Hardware Serial Monitor’u başlangıçta otomatik çalıştırmak
Bu uygulamayı Windows her başladığında otomatik çalışacak biçimde ayarlamak istiyorsanız öncelike Hardware Serial Monitor.exe belgesine sağ tuşla tıklayıp özelliklerini açıp, oradan uyumluluk sekmesine tıklayıp, bu uygulamayı yönetici müsaadesiyle çalıştır kutucuğunu işaretleyip Tamam’a tıklıyoruz.
Sonra aşağıdan kopyalayıp yapıştırabileceğiniz bu VBScript’i kopyalayıp not defteri uygulamasında yapıştırın:
Set WshShell = CreateObject(“WScript.Shell” )
WshShell.Run chr(34) & “C:Program Files (x86)HardwareSerialMonitorHardwareSerialMonitor.exe” & Chr(34), 0
Set WshShell = Nothing
Buradaki dizin bilgisini sizin uygulama evrakınız neredeyse ona nazaran değiştirin. Sonra belgeyi HardwareSerialMonitor.vbs ismiyle uygulamanın olduğu dizine kaydedin.
Artık Windows başlangıç klasörüne gitmek için Windows + R tuşlarına basıp Çalıştır kutucuğunu açın.
Buraya “shell:startup” yazdığınızda Windows başlangıç klasörü açılacaktır. Buraya az evvel kaydettiğiniz VBScript’in bir kısayolunu kopyaladığınızda uygulama bilgisayarınız her açıldığında otomatik başlayacaktır.
Mümkün yanlışlara tahliller
Ekranı bir müddet kullandıktan sonra farkettiğim birşey geliştiricinin sonlu imkanı ve vakti olduğu için ve sayısız çeşitte farklı donanımı tek tek test edemeyeceği için ekranda kimi yanlışlar oluşabiliyor. Örneğin işlemcinizin ismi bu iş için ayrılan kısma sığmayabiliyor ya da Mhz üzere kimi ibareler kutucuklardan taşabiliyor. Projenin açık kaynak kodlu olması işte bu yüzden hoş, kodun ilgili kısmına gidip buraları düzenleyebiliyorsunuz. Geliştirici bunun için koda bol bol açıklama eklemiş.