C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır?

Ö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? Bu seride sizlerle, bu gibi projelerin devamını getiriyoruz. 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.

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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

Ş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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

İ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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

Olaylar kısmına girip gerekli kodu ekliyoruz.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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();
        }
    }
}

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");
    }
  }
}

Bağlantı Şeması

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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. İndirdikten sonra sizi şöyle bir pencere karşılayacak. Burada Microsoft Visual Studio Version Selector ile devam ediyoruz.

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form

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

C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapılır? C# İle Arduino Kontrolü,c# ile arduino programlama,arduino windows form