back to top

Demedukit ile Buton, Led, RGB ve Buzzer Kontrolü

Selam Makerlar,

Bu yazımızda, DemeduKit ile buton, LED, RGB ve buzzer gibi temel bileşenlerin kontrolünü nasıl gerçekleştirebileceğinizi adım adım anlatacağız. Hazırsanız, projeye birlikte adım atalım!

Gerekli Malzemeler:

Aşamalar

  1. Stm32CubeIDE ile program oluşturma
  2. Demedukit Kartı hakkında bilgi
  3. Proje yapımı hakkında
  4. Pin bağlantıları
  5. Kod yazım aşaması
  6. Sonuçlar

Stm32CubeIDE ile program oluşturma

  1. STM32CubeIDE programını çalıştırdığımızda karşımıza gelen pencerede, projelerimizi kaydetmek için bir dizin seçelim:
  2. Menüden “File – New – STM32 Project” seçeneğine tıklayalım:
  3. Karşımıza gelen pencerede, projemizde kullanacağımız mikrodenetleyiciyi seçmek için MCU/MPU Selector sekmesinde Commercial Part Number bölümünde STM32G030C8T6 mikrodenetleyicisini seçelim. Aşağıdaki listeden mikrodenetleyiciyi seçtikten sonra Next butonuna tıklayalım:
  4. Project Name bölümüne projemizin adını yazdıktan sonra diğer bölümleri ayarlayarak Finish butonuna tıklayalım:
  5. Oluşturduğumuz projeye ait dosyalar sol tarafta ve kart ile ilgili işlemlerin yapılmasını sağlayan araçlar sağ tarafta olmak üzere, proje penceresi açılır:

Demedukit Kartı Hakkında Bilgi

Bu kart, gömülü sistemlerin temellerini öğrenmek, uygulamak ve deneyimlemek isteyenler için tasarlanmıştır. Bu geliştirme kartı ESP32 ve STM32G030 mikrodenetleyicileri içerir.

ESP32;

  • Çift çekirdekli işlemci
  •  WiFi
  •  Bluetooth desteği
  •  Dijital girişler/çıkışlar
  •  Dahili antenleri
  •  Lüks analog özellikleri

 ile öne çıkıyor.

 STM32G030;

  •  ARM Cortex-M0+ çekirdeği,
  •  Düşük güç tüketimi
  •  Geniş bağlantı seçenekleri
  •  Yüksek hızlı I/O pinleri
  •  Esnek bellek yapısı

ile öne çıkıyor. Bu iki mikrodenetleyici, kartın temelini oluşturur ve farklı uygulama alanları için geniş bir potansiyel sunar.

Donanım Düzeni

1.Üst Düzen

2.Alt Düzen

STM32G030 MCU Bağlantısı

 Proje Yapımı Hakkında

1.LED ve Buzzer Kontrolü:

  • Başlangıçta LED’ler ve bir buzzer (sesli uyarı cihazı) farklı kombinasyonlarda yanıp söner (RGB_LED_Control, LED_Control, Buzzer_Control fonksiyonları).
  • Bu kontrol, mikrodenetleyicinin başlatma işleminin bir parçasıdır ve belirli bir başlangıç animasyonu veya uyarı sekansı sağlar.

2.Butonlar ve LED’ler:

  • Sonsuz bir döngü (while(1)) içinde, üç butonun durumu sürekli olarak kontrol edilir (HAL_GPIO_ReadPin ile).
  • Her buton için, basıldığında (1 okunursa), ilgili LED’in yanması (0 yazılır), basılmadığında ise LED’in sönmesi sağlanır.

3.RGB LED Kontrolü:

  • RGB LED (kırmızı, yeşil, mavi) çeşitli renk kombinasyonlarıyla yanıp söner. Bu işlem rgbcounter değişkeni ile yapılır ve bu değişken her bir saniyede bir artar (SysClkTim._1sn).
  • RGB LED’in farklı renklerde yanması HAL_GPIO_WritePin ile gerçekleştirilir.

4.Zamanlayıcı:

  • Zamanlama işlemleri için bir sistem zamanlayıcı (SYSTickTimer) kullanılır. Bu zamanlayıcı, çeşitli periyotlar için bayrak değişkenleri (SysClkTim) ayarlar.
  • Zamanlayıcı her milisaniyede bir artar ve çeşitli zaman dilimlerine (1ms, 10ms, 1sn vb.) göre işlemler gerçekleştirilir.

Pin Bağlantıları

  1. Demedukit kartındaki STM32G030 mikrodenetleyiciye göre pin bağlantılarını oluşturalım  ilk olarak STM32G030 MCU Bağlantısı bakarak oradaki konfigürasyona göre buton, led, buzzer ve RGB bağlantılarını çıkış olarak ayarlayalım. Örneğin Buton_1, PB2 pini ile bağlıymış bunu mouse sağ tık ile  GPIO_Output seçelim ve ismine mouse sol tık ile “enter user label” kısmına buton_1 yazalım:
  2. Tüm pin bağlantılarını bu şekilde yaparsak son hali aşağıdaki gibi olacaktır:
  3. Donanım zamanlayıcısını aktifleştirelim timable source sekmesinden sysTick seçelim.

Kod Yazım Aşaması

1.Pin bağlantılarını yaptıktan sonra projeyi generate etmek için project sekmesinden build projeye tıklıyoruz code generate sorusunu onayladıktan sonra ‘main.c’ dosyasına atacaktır.

“main.c”  Dosyanın Amacı:

Bu dosya, STM32 mikrodenetleyicisi için yazılmış temel bir programdır. Programın çalışması bu dosyada başlar ve devam eder.

Ana İşlevler:

main(): Programın başlangıç noktasıdır. Mikrodenetleyici ilk çalıştırıldığında burada tanımlanan adımları takip eder.

HAL_Init(): Mikrodenetleyiciyi başlatır ve temel ayarları yapar.

SystemClock_Config(): Mikrodenetleyicinin çalışması için gerekli olan sistem saatini yapılandırır.

MX_GPIO_Init(): GPIO pinlerini yapılandırır, yani hangi pinin ne yapacağını belirler (örneğin, bir LED’i kontrol etmek).

Sonsuz Döngü (while (1)): Program burada sonsuz bir döngüde kalır. Yani, mikrodenetleyici sürekli bu döngüde tanımlı işleri yapar.

Hata Durumu (Error_Handler()): Programda bir hata olursa, bu fonksiyon çalışır ve mikrodenetleyici hata modunda kalır.

2.  DemsayLib buraya tıklayarak zip Dosyasını İndirelim. Zip dosyasındaki DemsayLib klasörünü proje klasörünün içine ekleyelim ve CubeIDE pragramında projeyi yenileyerek klasörü programda da görünür hale getirelim:

3.Dosya Yolunu Tanımlatma projeye sağ tıkla – properties-C/C++ General – paths and symbols – GNU C  burdan içerik kısmına DemsayLib Inc dosyasını ekleyelim ve ardından source location kısmınada DemsayLib src dosyasını ekleyelim ve bunu yükleyelim :

4. SysClkTim değişkeni ile farklı zaman dilimlerini temsil eden üyeleri saklamak için kullanılabilir. Örneğin, bir zamanlayıcı veya bir zaman ölçüm sistemi geliştirdiğinizde, farklı zaman aralıklarında geçen süreleri veya belirli zaman dilimlerini takip etmek için bu yapıyı kullanabilirsiniz. Aşağıda bu dokuz üyeyi saklamak için main.h dosyasına bu kodlar eklenmiştir.

5. “main.c” dosyasına girip gerekli kodları ekleyelim:

Başlık dosyasını dahil edelim:
#include "DigitalInputOutputs.h"

SysTick Timer tanımlama:
volatile uint64_t SYSTickTimer = 0;

Counter Ve RGB counter değişkenlerini tanımlayıp  0’dan başlatalım:
uint8_t counter = 0;
uint8_t rgbcounter = 0;

RGB LED’ler sırasıyla kırmızı, yeşil, mavi ve beyaz (bütün renkler) olurken, LED’ler birer birer açılır ve sonra kapanır. Buzzer, bazı durumlarda ses çıkarırken, bazı durumlarda sessiz kalır:

Daha sonrasında while döngüsüne girilir ve buton, led, RGB ve zamanlayıcı kontrelleri yapılır.

Buton ve led kontrolü:

RGB Led ve Zamanlayıcı kontrolü:

HAL_SYSTICK_Callback fonksiyonu, STM32 mikrodenetleyicinin SysTick zamanlayıcı kesmesi tarafından çağrılan bir geri çağırma (callback) fonksiyonudur. Bu fonksiyon, zamanlayıcı kesmeleri (interrupt) aracılığıyla düzenli aralıklarla çalıştırılır ve zamanlayıcı tabanlı görevlerin gerçekleştirilmesini sağlar.

static void MX_GPIO_Init(void) bu kısmı silip aşağıdaki yapılandırmayı ekleyelim:

6.  Daha Sonrasında fazladan girilen dosyaları silmek için projeye sağ tıkla –  properties-C/C++ Build sekmesi- settings-tool settings- MCU/MPU compiler-Miscellaneous bunları sırası ile tıkladığımızda gelen sayfadan eklediğimiz -fcommon bayrağı ile fazladan eklentileri engelliyor.

7. Projeyi çalıştırmak için kartı takalım ve build project diyelim derleyelim daha sonrasında run sekmesinden debug yapıp projeyi çalıştıralım debug projeyi sırası ile çalıştırır.

Sonuçlar

Son Çıkan Yazılar

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz