C# ile Arduino Kontrolü ve Haberleşme Nasıl Yapılır?
Bu içerikte sizlerle, C# ile Arduino kontrolü gerçekleştiriyoruz. Seri haberleşme yardımıyla ve C# kullanarak oluşturduğumuz arayüzlerle projelerimizi kontrol etmeyi ve veri okumayı öğreneceğiz, bunun yanında C# ile form oluşturarak, daha kullanışı ve kullanıcı dostu olabilirsiniz.
Öncelikle, bilgisayarımıza Microsoft Visual Studio’yu kurmamız gerekiyor, sonrasında bağlantıları gerçekleştirip, kodlarımızı deneyeceğiz. Bütün adımlara aşağıdan ulaşabilirsiniz. Projenizi bilgisayar üzerinden kontrol etmek, arayüz tasarımınız ile kullanıcı dostu olmak ister misiniz?
Seri İletişim Nedir?
Seri iletişim dijital bilginin tek bir hat üzerinden ard arda taşınmasıdır, yani seri iletişimde bir kerede sadece bir bit iletilir. Paralel iletişimde ise tüm bitler aynı anda transfer edilir. Bu yüzden seri iletişimi tek bir bağlantı sağlayabilirken paralel iletişimde her bit için ayrı bir bağlantı gerekir. Bunun sonucu olarak da seri iletişim, maliyeti bakımından daha avantajlıdır.

Seri iletişimde veriler, genellikle belirli bir hız (baud rate) ile bir verici cihazdan (örneğin bir Arduino) bir alıcı cihaza (örneğin bir bilgisayar) gönderilir. Verici ve alıcı, veri alışverişi için belirli bir protokolü paylaşır.
Baud Rate: Bir saniyede iletilen sembol (bit) sayısını ifade eder. Örneğin, 9600 baud hızında bir iletişimde saniyede 9600 bit veri aktarılır.
Microsoft Visual Studio Kurulumu
C# ile form oluşturmak için Visual Studio’yu kullanacağız. Buradan, Visual Studio, Community 2019’u indirelim, çok kolay ilerlemeler ile kurulumu tamamlayalım.

Bilgisayarınıza inen Visual Studio kurucusuna çift tıklayarak yükleme işlemini başlatın. Kurulum işleminin başında “İş Yükleri” sekmesinde dil paketleri ve platformlardan seçim yapmanız istenecektir. Buradan “Evrensel Windows Platformu Geliştirme” ve “.NET masaüstü geliştirme” seçeneklerini seçiyoruz. Bunun haricinde kullanacağınız veya alternatif farklı platformları da seçebilirsiniz. Sağ alttan yükleme boyutunu görebilirsiniz. Platformları seçtikten sonra yükleme işlemine başlıyoruz.
C# ile Form Uygulamasını Oluşturmak
Kurulum tamamlandıktan sonra bu adımlar ile bir C# formu oluşturalım. Programı ilk açtığımızda bizi böyle bir Başlangıç Sayfası karşılar. Dosya bölümüne basarak, alttaki menüler açılır.

Bu menüden, Dosya>Yeni>Proje sekmesi ile devam edilir.

Devamında açılan pencere ile sol taraftaki diyagramlardan “Visual C#” kısmını seçiyoruz. Ortada açılan bölüm ile “Windows Form Uygulaması” seçeneğini seçiyoruz. Ad, Konum, Çözüm Adı gibi bölümlerini keyfinize göre değiştirebilirsiniz, fakat Çerçeve yani .NET Framework kısmına dokunmanıza pek gerek yok, bu seçeneği en güncel seçmekte fayda var, ayrıca bilgisayarınız .NET Framework yüklü değilse, program yüklenirken otomatik yüklenmiş olunacak.

Bütün adımları doğru yaparak geldiğimizde, bizi boş bir form karşılamış olucak. Bunun devamında formu doldurup kodumuzu yazmamız gerekicek. Bu kısımlarda sadece bilgisayar üzerinden kontrol etmek için. Farkındaysanız hala Arduino kısmına geçmedik.

Arayüz Tasarımı ve C# Kodu
Arayüzün nasıl ve ne şekilde olacağı tamamen size kalmış durumda, seri port bağlantısını göstermek için arayüze ekleyeceğiz. Fakat bunun kodun arkasında yani kullanıcıya göstermeden de yapılabildiğini bilelim.
Araç Kutusu sekmesi ile, form arayüzünde kullanacağımız bileşenlere ulaşabilirsiniz.

Bu projede kullanacağımız bileşenleri doğrudan tutup formun üstüne bırakabilirsiniz.
Kullanılacak Bileşenler;
- Buton
- Label
- ComboBox
- SerialPort
Neden bu nesneleri kullandığımızı açıklamak gerekirse: ComboBox’ı Arduino’nun bağlı olduğu portu seçerken kullanacağız. Bunu kodla da tanımlayabilirdik ancak port değişikliği durumundan etkilenmemek adına bu şekilde yapıyoruz. Label’ı led durumunu görmek, 2 butonu da ledi açıp kapatmak için kullanacağız. SerialPort, form üzerinde görünen bir araç değildir, seri iletişimi sağlamak için onu da projemize dahil ediyoruz.

Araçları eklediğimiz zaman, form arayüzüne bu şekilde gelmiş olucak. SerialPort gibi bileşenleri eklediğimiz zaman form arayüzüne değil, pencerenin en altına inmiş oluyor. Doğrudan üstlerine kod yazmak için her hangi bileşene çift tıklamak yeterli oluyor, ayrıca form load yani form’un ilk açılışında çalışmasını istediğini bir kod varsa, boş bir yere çift tıklamanız gerekiyor.

Arayüz tasarımını bu şekilde yapıyoruz.

Şimdi sırada adım adım kodlarımızı yazmak.
C# Kodu
Formun her hangi bir yerine çift tıklayarak kod bölümüne geçiyoruz.

İlk olarak, kod kısmının en üst kısmına “using System.IO.Ports;” Kütüphanesini eklememiz gerekiyor. Bu sayede form uygulamamız, Input/Output işlemlerini tanıyabilecek. Ayrıca form1_Load olayına bu kodu yazarak, form ilk açıldığında bağlı olan seri portlar ComboBox1‘e eklenmiş olucak. Kısacası Form1_Load alanına seri portları string tipinde bir diziye tanımlayan, ardından da bu portları comboBox1 nesneme ekleyen bir kod yazdık. Bu sayede form yüklendiğinde seri portlar comboBox1 içinde seçilebilir hale gelmiş olacak.

Paylaşılan kodları kendi projenize göre tekrar adlandırmayı unutmayın.
private void Form1_Load(object sender, EventArgs e) { string[] portlar = SerialPort.GetPortNames(); foreach (string port in portlar) comboBox1.Items.Add(portlar); }
Form1_Load Kısmı
Burada button2 ve button3 butonlarının, comboBox1 kutusunun görevlerini yazdık. Ayrıca comboBox1 bölümünde, değişim zamanında gerekli porta bağlanmasını ayarladık.

Şimdi formu yani uygulamayı kapattığımızda, seri bağlantının kapanması için bir kod yazacağız.

Olaylar kısmına girip gerekli kodu ekliyoruz.

Bu sayede program kapansa bile açık kalan port bağlantısını, program kapanırken, port bağlantısını kapatmış oluyoruz.

C# kısmımız bitti. Bağlamadan denemek için Başlat butonuna yada F5 tuşuna basabilirsiniz. Bütün kodu paylaşıyoruz fakat kullanırken dikkatli olmakta fayda var, çünkü sizin bileşenleriniz ile farklılık gösterecektir, buton isimlerine dikkat edin.

C# ile Arduino Kontrolü için Gereken Tüm Kod
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; namespace WindowsFormsApp4 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string[] portlar = SerialPort.GetPortNames(); foreach (string port in portlar) comboBox1.Items.Add(portlar); } private void button2_Click(object sender, EventArgs e) { serialPort1.Write("1"); button1.BackColor = Color.Green; button2.Enabled = false; button3.Enabled = true; } private void button3_Click(object sender, EventArgs e) { serialPort1.Write("0"); button1.BackColor = Color.Red; button2.Enabled = true; button3.Enabled = false; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { serialPort1.PortName = comboBox1.SelectedItem.ToString(); serialPort1.Open(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (serialPort1.IsOpen) serialPort1.Close(); } } }
C# ile Arduino Kontrolü için Gereken Arduino Kodu
Burada Serial.read komutu ile, seri porttan gelen 1 yada 0 değeri ile LEDimizi yakıyoruz.
void setup() { pinMode(8, OUTPUT); Serial.begin(9600); } void loop() { if(Serial.available()) { char a = Serial.read(); if(a == '1') { digitalWrite(8,HIGH); Serial.println("LED YANDI"); } else if(a == '0') { digitalWrite(8,LOW); Serial.println("LED SONDU"); } } }
C# ile Arduino Kontrolü için Bağlantı Şeması

Bütün bağlantılarımız ve hazırlığımız tamamlandı ise; Form uygulamamız ile test edebiliriz.
BONUS: Microsoft Visual Studio’yu Arduino IDE Olarak Kullanmak
Neredeyse bütün yazılım dillerine entegre olabilen Microsoft Visual Studio’yu, aynı zamanda Visual Micro ile, Arduino’ya uyumlu hale getirebiliriz. Buradan indireceğiniz eklenti ile, gerekli bileşenleri kurmuş olacaksınız. C# ile Arduino Kontrolü için gereken tüm işlemleri burada da yapabilirsiniz, Gerekli sürümü indirdikten sonra sizi şöyle bir pencere karşılayacak. Burada Microsoft Visual Studio Version Selector ile devam ediyoruz.

Buradan klasör, versiyon ve hariç kartlar yani ATtiny85 gibi kartların kurulumu için verilen bağlantıları yazabilirsiniz.

Devamında, Arduino versiyonu, kart bilgileri, port bağlantısı gibi seçenekleri, seçerek kullanmaya başlayabilirsiniz.

Sonuç
C# ile arduino kontrolü sayesinde kullanıcı dostu arayüzler oluşturmanıza ve donanım projelerinizi daha işlevsel hale getirmenize olanak tanır. Bu temel projeyi geliştirerek sensör verilerinin işlenmesi, IoT entegrasyonu veya çok daha karmaşık sistemler geliştirebilirsiniz.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.