RS-232 İle C# ve STM32 Kullanılarak Led Yakıp Söndürme Projesi
2 Kasım 2017 Adil Teoman Kurt PROJELER, STM Projeleri RS-232 İle C# ve STM32 Kullanılarak Led Yakıp Söndürme Projesi için yorumlar kapalı
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;
İ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.
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.
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.
Resim http://showmeyourcode.org/how-to-program-stm32f103c8t6/ adresinden alınmıştı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.
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 *** ***
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.
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
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
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
digitalWrite(kirmizi_led,LOW);//led1 lojik-0 yapılıyor
Serial.print("KIRMIZI LED SONDU\n");//Bu komut ile PC ye ifade gönderiliyor
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
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
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
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
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
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.
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.
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.
Ek dosyalar ( .bin ve .exe)
Proje hakkında merak ettiklerinizi iletişim adresinden sorabilir veya yorum kısmına yazabilirsiniz arkadaşlar projede herkese iyi çalışmalar.
C#LEDRS-232 İletişimRS232Serial Communicationserial portSTM32STM32F103C8T6
Previous Post: MATLAB GUI VE ARDUINO İLE MESAFE SENSÖRÜ UYGULAMALARI
Next Post: Rs-232 ile Labview ve STM32F103C8T6 Kullanılarak Led Yakıp Söndürme Projesi