Merhaba arkadaşlar bugün sizlerle Rs-232 ile C# ve STM32F103C8T6 kullanılarak led yakıp söndürme işlemini gerçekleştiricez. Neden bu proje ? bu soruya cevap verecek olursak arkadaşlar led yakıp söndürme olayının röle tetiklenmesinde , kendin yap projelerinde yer alan PLC devrelerinin ve tüm hobi sayısal elektronik devrelerinin temelini oluşturması , STM32F103C8T6 kartının seçilmesinin nedeni ise STM32 serisine ait kartlarının en temeli olması ,dronlarda ,DELTA gibi PLC cihazlarında kullanılması ve birçok dokunmatik ekran ile kontrol edilen robotik projelerinde tercih edilmesi beni bu projenin yapımına götürmüştür.Bu cevaptan sonra isterseniz projeye adım adım başlayalım arkadaşlar;
GEREKSİNİM PROGRAMLARI
İlk olarak aşağıda verilen linkleri tıklayarak programları indirelim ,
- C# programını kendi bilgisayarınızın özelliğine ve bu programa ait istediğiniz sürümü Microsoft Visual C# ifadesine tıklayarak,
- STM32F103C8T6 kartına ait yapılan yazılımın derlenmesi için Arduino IDE ifadesine tıklayarak,
- Arduino IDE programında kullanılan STM32 serisine ait kartların dosyalarına Arduino for STM32 ifadesine tıklayarak indirilir .
- NOT : Arduino for STM32 linkinden İndirilen bu dosyalar .zip dosyasından çıkartılır ve ardından ise OS (C) -> Program files(x86)->Arduino -> hardware dosyasının içerisine kopyalanır.
PROJENİN AMACI
Evet arkadaşlar programlarımızı indirip kurduk şimdide bu projede neler öğreneceğiz sorusuna aşağıdaki maddelerle açıklayacak olursak;
- STM32F103C8T6 kartının özelliklerini ne olduğunu , RS-232 iletişim protokolü, MAX 232, led kavramlarını öğrenmek.
- STM32F103C8T6 kartına ait gömülü yazılım kodları , açık kaynak kodu olarak kullanılarak yazılımda kullanılan komutlarının kullanım amaçlarını öğrenmek.
- STM32F103C8T6 kullanılarak PC ile nasıl haberleşeceğini göstermek ve öğrenmek.
TEORİK BİLGİLER
- STM32F103C8T6 : STM32F103C8T6 kartı özellikleri nedir ? bu soruya ayrıntılı cevap verecek olursak arkadaşlar STM32F103C8T6 kartı STM32F103xx serisine aittir ve en yüksek çalışma frekansı 72 MHz frekanstır. Bu kart ARM®Cortex®-M3 32-bit RISC çekirdeği mimarisine sahiptir. Programların yüklenebilmesi için 128 kb’a kadar flash bellek ve 20Kbayt kadar ise SRAM’a sahiptir. PLL konfigürasyonu için iki adet APB veriyoluna sahiptir. STM32F103C8T6 iki adet 12 bit ADC, üç adet genel amaçlı 16 bit zamanlayıcı ve bir adet PWM zamanlayıcı ve standart ve gelişmiş iletişim arabirimlerine sahiptir. İletişim arabirimleri olarak ise içerisinde iki adet I2C ve SPI, üç adet USART, bir USB ve bir CAN-BUS arabirimi bulunur. Çalışma gerilimi 2.0 ile 3.6 volt aralığındadır. Çalısma sıcaklığı ise -40 C ile +85 C aralığındadır.

- RS-232: Bilgisayar ile mikrodenetleyici/mikroişlemci içeren devrelerde iletişim kurmamıza yarayan iletişim protokolüdür . Bu iletişim protokolünde tek bir hattan veri gönderilip tek hattan veri alınır paralel iletişime göre yavaş olmasına rağmen uzun mesafelerde kullanılır ve maliyet olarak da düşüktür. Bu seri iletişim ile ilgili temel kavramların tanımlarını yazacak olursak;
- Start (başlangıç ) biti : Bu alıcıya veri gönderiminin başlandığını bildirir
- Stop(Bitiş) biti : Bu ise alıcıya gönderilecek bilginin bittiğini belirtir stop biti 1 veya 2 olabilir.
- Parity(Eşlik) biti : Bu ise alıcı tarafından alınan bilginin iletilip iletilmediğini kontrol etmek için kullanılır .
- Baund Rate : Bu ise gönderilecek verinin hızını belirtir.
- Led : Işık yayan diyotlar olarak adlandırılır. Temelinde ise üzerinden geçen elektrik akımı ile katkılandığı maddenin cinsine göre kırmızı, yeşil, mavi gbi ışık yayan yarı iletken malzemelerdir. Elektronik devrelerde ledin uzun bacağı anot(+) , kısa bacağı ise katot (-) dikkat ederek devreye bağlanmalıdır.
MALZEME LİSTESİ
Proje kapsamında teorik bilgiler verildikten sonra projenin devamı için gerekli olan malzemeler aşağıdaki tabloda yer verilmiştir.
MALZEME ADI | MALZEME ADET | MALZEME ADI | MALZEME ADET |
Breadboard | 2 | Data Kabloları | N TANE |
STM32F103C8T6 | 1 | USB TTL Dönüştürücü | 1 |
Data Kabloları | N TANE | ST-LİNK V2 | 1 |
Kırmızı Led | 1 | *** | *** |
Yeşil Led | 1 | *** | *** |
Mavi Led | 1 | *** | *** |
Beyaz Led | 1 | *** | *** |
330 ohm | 4 | *** | *** |
ŞEMATİK DEVRE
Bu projenin şematik bölümü fritzing programında çizilmiştir. Şematik kısmına bakılacak olursa seri iletişim için USB TTL dönüştürücü kullanılmıştır. STM32F103C8T6 kartının 5V kısmından besleme yapılmıştır ve 5V kısmına bağlı 3.3 V regületör entegresi vardır bu bakımdan kartın 5V kısmından beslenme kısmı sorun yaşatmamaktadır.
KAYNAK KODLARI
Bu projenin gömülü yazılımı Arduino IDE derleyecisinde derlenmiştir. Komutlara bakılacak olursa her satır yanında. ‘ // ‘ ifadelerinin yanında açıklamaları bulunmaktadır . Kaynak kodlarının yanındaki açıklamaları dikkate alarak proje çalışmanıza devam etmeniz önerilir.
/* Program Adı : RS232 ile Led Uygulaması Donanım : STM32F103C8T6 Derleyici : Arduino IDE 1.8.5 MCU : 72 MHz Yazan : Adil Teoman Kurt Adres : https://electrolog.blog */ char data; // Data Karakter olarak tanımlanıyor const int kirmizi_led = 0; // STM32F103C8T6 kartının A0.Pini kirmizi_led ifadesiyle eşleniyor const int yesil_led = 1; // STM32F103C8T6 kartının A1.Pini yesil_led ifadesiyle eşleniyor const int mavi_led = 2;// STM32F103C8T6 kartının A2.Pini mavi_led ifadesiyle eşleniyor const int beyaz_led = 3;// STM32F103C8T6 kartının A3.Pini beyaz_led ifadesiyle eşleniyor void setup() { Serial.begin(9600); //Seri iletişim başlatılıyor ve Baudrate 9600 yapılıyor pinMode(kirmizi_led,OUTPUT); //A0. Pin çıkış olarak ayarlanıyor pinMode(yesil_led,OUTPUT);//A1. Pin çıkış olarak ayarlanıyor pinMode(mavi_led,OUTPUT);//A2. Pin çıkış olarak ayarlanıyor pinMode(beyaz_led,OUTPUT);//A3. Pin çıkış olarak ayarlanıyor } void loop()// İşlem yapılacak bölüm { data=Serial.read(); // Seri iletişim hattan gelen veri okunuyor if( data=='A') { digitalWrite(kirmizi_led,HIGH); //A0. Pin lojik-1 yapılıyor Serial.print("KIRMIZI LED YANDI\n"); //Bu komut ile PC ye ifade gönderiliyor } if( data=='B') { digitalWrite(kirmizi_led,LOW);//led1 lojik-0 yapılıyor Serial.print("KIRMIZI LED SONDU\n");//Bu komut ile PC ye ifade gönderiliyor } if( data=='C') { digitalWrite(yesil_led,HIGH);//A1. Pin lojik-1 yapılıyor Serial.print("YESIL LED YANDI\n");//Bu komut ile PC ye ifade gönderiliyor } if( data=='D') { digitalWrite(yesil_led,LOW);//A1. Pin lojik-0 yapılıyor Serial.print("YESIL LED SONDU\n");//Bu komut ile PC ye ifade gönderiliyor } if( data=='E') { digitalWrite(mavi_led,HIGH);//A2. Pin lojik-1 yapılıyor Serial.print("MAVI LED YANDI\n");//Bu komut ile PC ye ifade gönderiliyor } if( data=='F') { digitalWrite(mavi_led,LOW);//A2. Pin lojik-0 yapılıyor Serial.print("MAVI LED SONDU\n");//Bu komut ile PC ye ifade gönderiliyor } if( data=='G') { digitalWrite(beyaz_led,HIGH);//A3. Pin lojik-1 yapılıyor Serial.print("BEYAZ LED YANDI\n");//Bu komut ile PC ye ifade gönderiliyor } if( data=='H') { digitalWrite(beyaz_led,LOW);//A3. Pin lojik-0 yapılıyor Serial.print("BEYAZ LED SONDU\n");//Bu komut ile PC ye ifade gönderiliyor } } }
C# ARAYÜZ PANELİ
Bu projenin arayüz programı Microsoft Virtual Studio programının C# bölümü ile oluşturulmuştur . Programın ‘Verilerin Gönderilmesi’ bölümü ile ledlerin durumu kontrol edilirken ‘Verilerin Alınması’ bölümü ise STM32F103C8T6 dan PC ye gönderilen verilerin alınıp yazıldığı kısımdır.
PROJENİN VİDEOSU
Bu projede hazırlanan C# programına ait arayüzünün STM32F103C8T6 ile gerçek zamanlı elektronik devresi ile ilgili çalışmayı anlatan videoya C# +STM32F103C8T6 ifadesine tıklayarak izleyebilirsiniz.
EK DOSYALAR
Bu bölüm ise C# arayüz panelinin .exe dosyasını , STM32F103C8T6 için yazılan gömülü yazılımının .bin uzantılı dosyasını içermektedir.
BİLGİLENDİRME
Proje hakkında merak ettiklerinizi iletişim adresinden sorabilir veya yorum kısmına yazabilirsiniz arkadaşlar projede herkese iyi çalışmalar.
Hoşçakalın…..