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# ile arduino, C# İle Arduino Kontrolü ve Haberleşme Nasıl Yapı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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Olaylar kısmına girip gerekli kodu ekliyoruz.

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

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

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

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

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

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

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

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

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

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