15. DERS - C# ile Bluetooth üzerinden LED Kontrolü

Bu dersde Bilgisayarın Bluetooth'unu kullanarak Arduino UNO Portlarının nasıl kontrol edileceğini açıkladım. Bluetooth, radyo dalgalarını kullanarak yüksek hızlarda ses ve veri iletmek için kullanılan bir kablosuz iletişim türüdür. Yaygın olarak kullanılır. Bluetooth ile arduino kullanarak nesneleri uzaktan kolay bir şekilde kontrol edilebilir.


Şekil 1 - LED Kontrol Dvresi
HC Bluetooth Modülü
HC-07 modülü 4 pine sahiptir bunlar ;
  • RXD : Arduino UNO'dan (Tx)gelen veriler alınır
  • TXD : Arduino UNO'ya (Rx) veri gönderir
  • VCC : 3,3-6,6 Volt
  • GND : Toprak ucu

Şekil 2 - HC 07 Bluetooth Modülü

HC'nin farklı versiyonları var. Bu versiyonların bazılarında RXD 5V bazılarında ise 3.3V ile çalışır. Arduino Tx ucu 5 volt gönderir. Bu nedenle HC bluetooth modülünün RXD gerilim değerine dikkat etmelisiniz. Eğer 3.3 vol ile çalışıyor ise gerilim bölücü (voltage divider) kullanmalısınız.


Yukarıdaki formülde; R1 = 1,2 K R2 = 2,2 K Vin = 5v.
Formül Çözüldüğünde: Vout = 5 x 2,2 K / (2,2 K + 1,2 K ) = 5v x 2,2 K / 3,4 K = 3.24 V
R1 ve R2 değerlerini farklı kombinasyonlarda seçebilirsiniz. R2 değeri yaklaşık olaraka R1 in 2 katı olmalıdır. Gerilim bölücü kullanmak istemiyorsanız. 3.3 volt gerilim regülatörü kullanabilirsiniz.



Şekil 3 - Arduino UNO ile HC 07 Bluetooth Modülünün Bağlantı Devresi

ARDUINO UNO Programı

/*C# ile Bluetooth üzerinden LED Kontrolü (The LED Control via Bluetooth with C#)
  
  http://www.bilisimkitabi.net
  http://bilisimkitabi.blogspot.com.tr 
  
*/

// LED çıkışlarını tanımla (Define LED OUTPUT)
int LED1=2;
int LED2=3;
int LED3=4;
int LED4=5;
int chr=0;

void setup() 
{
  Serial.begin(9600);//Seri habarleşme başlatılır (Start Serial Communication)
  //LED ler için Portları tanımla (Define Digital Port for LEDs)
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(LED3,OUTPUT);
  pinMode(LED4,OUTPUT);
}

void loop() 
{
  if(Serial.available()) 
     {
         chr= Serial.read(); //Bluetooth üzerinden gelen bilgiyi oku (Read the data via Bluetooth)
         if(chr==1)
          {
             digitalWrite (LED1, HIGH);
          }
         else if(chr==2)
          {
            digitalWrite (LED1, LOW);
          }
          else if(chr==3)
          {
            digitalWrite (LED2, HIGH);
          }
          else if(chr==4)
          {
            digitalWrite (LED2, LOW);
          }
          else if(chr==5)
          {
            digitalWrite (LED3, HIGH);
          }
          else if(chr==6)
          {
            digitalWrite (LED3, LOW);
          }
          else if(chr==7)
          {
            digitalWrite (LED4, HIGH);
          }
          else if(chr==8)
          {
            digitalWrite (LED4, LOW);
          }
     }
 }

C# 2013 ile LED Control With Bluetooth Programı 


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;////EKLE (You Have to add this line)

namespace LEDControlBluetooth
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int l1 = 0, l2 = 0, l3 = 0, l4 = 0;
        private void Form1_Load(object sender, EventArgs e)
        {
            string[] ports = SerialPort.GetPortNames();//Seri Portu Oku (Read Serial Port)
            foreach (string port in ports)
            {
                comboBox1.Items.Add(port); //Listeye At (Add List)
            }
           
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string x = comboBox1.SelectedItem.ToString();
            serialPort1.PortName = x;
            serialPort1.BaudRate = 9600;
            serialPort1.Open();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                if (!serialPort1.IsOpen)
                    serialPort1.Open(); //Seri portu aç

            }
            catch
            {
                MessageBox.Show("Seri Port Seçin!");
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            serialPort1.Close(); //Seri Portu Kapat
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == true)
            {
                if (l1 == 0)
                {
                    byte[] chr = new byte[] { 1 };
                    serialPort1.Write(chr, 0, 1); //Seri Porta 1 Karakterini gönder
                                                 //(Write 1 char to serial port)
                    l1++;
                }
                else
                {
                    byte[] chr = new byte[] { 2 };
                    serialPort1.Write(chr, 0, 1);
                    l1--;
                }
            
            }
            else // gerçekleşmemişse hata mesajı verir.
            {
                MessageBox.Show ("Cihaz Bağlı Değil");
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == true)
            {
                if (l2 == 0)
                {
                    byte[] chr = new byte[] { 3 };
                    serialPort1.Write(chr, 0, 1);
                    l2++;
                }
                else
                {
                    byte[] chr = new byte[] { 4};
                    serialPort1.Write(chr, 0, 1);
                    l2--;
                }

            }
            else // gerçekleşmemişse hata mesajı verir.
            {
                MessageBox.Show("Cihaz Bağlı Değil");
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == true)
            {
                if (l3 == 0)
                {
                    byte[] chr = new byte[] { 5 };
                    serialPort1.Write(chr, 0,1);
                    l3++;
                }
                else
                {
                    byte[] chr = new byte[] {6 };
                    serialPort1.Write(chr, 0, 1);
                    l3--;
                }

            }
            else // gerçekleşmemişse hata mesajı verir.
            {
                MessageBox.Show("Cihaz Bağlı Değil");
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == true)
            {
                if (l4 == 0)
                {
                    byte[] chr = new byte[] { 7};
                    serialPort1.Write(chr, 0, 1);
                    l4++;
                }
                else
                {
                    byte[] chr = new byte[] { 8 };
                    serialPort1.Write(chr, 0, 1);
                    l4--;
                }

            }
            else // gerçekleşmemişse hata mesajı verir.
            {
                MessageBox.Show("Cihaz Bağlı Değil");
            }
        }
    }
}

Programı yazarken " using System.IO.Ports; " satırını yazmayı unutmayın. Bu kütüphane serialPort nesnesinin çalışmasını sağlar.

Program Dosyaları


Ders Videosu




1 yorum:


  1. Emeklerine sağlık en bu konudaki en güzel içerik...Lütfen böyle güzel içerikler yapmaya devam edin.Kodlar için teşekkürler çok işime yaradı

    YanıtlaSil