Herkese Merhaba
Bu blog sayfamda aynı zamanda yazarı olduğum projehocam.com da paylaştığım yazılarımıda anlatacağım. Umarım herkes olabildiğince faydalanır.
Resimde görüldüğü gibi 8 adet röleyi Visual Studio'da hazırladığım bir arayüz programı ile ister kablolu ister kablosuz olarak kontrol edebilirsiniz.Uygulama üzerinde ayrıca "ayarlar" kısmından röle isimlerini değiştirebilirsiniz.
PC ile Arduino Bağlantısı:
- Kablolu Bağlantı: Kablolu bağlantıda Arduino kartını usb portu ile bilgisayara bağlamanız yeterlidir.Aynı Arduino programında com portu seçme işlemini bu programdada yapmalısınız. Programın sol üst kenarında bulunan kısımdan Arduinonun bağlı olduğu com portunu seçerek bağlantı kurabilirsiniz.
- Kablosuz Bağlantı (Bluetooth): Bluetooth bağlantısı için öncelikle bilgisayarınızda bluetooth olması gerekmektedir.Kablosuz bağlantı için Arduino ve bluetooth bağlantılarını kurun ve çalıştırın. Daha sonra bilgisayarınızda bluetooth cihazını açarak aynı telefon eşleştirir gibi Arduinoda bağlı olan bluetooth cihazınız ile bigisayarı eşleştirmelisiniz. Eşleşmeden sonra bluetooth cihazına bir com portu atanır.Bu kom portunu programda seçerek sorunsuzca kullanabilirsiniz.
C# Uygulaması Hakkında:
- Kullanılan Kütüphaneler:
1
2
3
4
5
6
7
8
9
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO.Ports; using System.Windows.Forms; |
- COM Portlarını Listeleme Kodu:
1
2
3
| string[] Ports = SerialPort.GetPortNames(); foreach (string port in Ports) comboBox1.Items.Add(port); |
Bu kodu “public Form1” içerisine yazmalısınız.Burada tasarım kısmında bağlantı için bir adet combobox ve bir adette buton var. “Ports” adında string türünde dizi tanımlıyoruz ve bu dizinin elemanlarını seri port isimlerine eşitliyoruz daha sonra bütün elemanları combox içerisine ekliyoruz.Buraya kadar sadece bağlantı kurucağmız portu seçmiş oluyoruz.
- Porta Bağlanma Kodu:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| private void baglan_Click(object sender, EventArgs e) { if (baglan.Text == "Bağlan" ) { try { serialPort1.PortName = comboBox1.SelectedItem.ToString(); serialPort1.Open(); baglan.Text = "Kes" ; baglan.BackColor = Color.Red; bilgi.Text += "\n Bağlandı" ; } catch { MessageBox.Show( "Lütfen doğru portu seçiniz." ); } } else { serialPort1.Close(); baglan.Text = "Bağlan" ; baglan.BackColor = Color.Lime; bilgi.Text += "\n Bağlantı Kesildi" ; }
}
|
Kodu kısaltarak yazıyorum en temel haliyle.Burada mantık şu şekilde.”Bağlan” butonumuzun texti “Bağlan” ise bağlantı kurmayı deniycek.Bağlantı kurulduktan sonrada butonun textini değiştiriyoruz ve bağlantıyı kesme olayını başlatıyoruz.Yani aynı butona tekrar bastığınızda texti “Bağlan” olmadığı için portu kapatıcak.
- Röle Kontrolleri:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| private void one1_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write( "oneopen" ); one1.BackColor = Color.LimeGreen; bilgi.Text += "\n Röle-1 Açık" ; } } private void off1_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write( "oneclose" ); one1.BackColor = Color.White; off1.BackColor = Color.Red; bilgi.Text += "\n Röle-1 Kapalı" ; } } |
Burada ben her butonu karışıklık olmasın diye isimlendirdim.Örneğin 1. röleyi açma butonuna bastığınızda kod öncelikle portu kontrol edicek.Port açıksa yani bağlantı kurulmuşsa “oneopen” bilgisini göndericek.Arduino kodumuzuda bu verilere göre hazırlıyoruz.Veri gönderme bu kadar basit gerisi buton renklerini değiştirme ekrana bilgi yazdırmak.Kapatma mantığıda aynı şekilde port kontrol edilir açıksa kapatma verisi gönderilir.
- Röle İsimlerinin Değiştirilmesi:
1
2
3
4
5
6
7
| private void button1_Click(object sender, EventArgs e) { Form1 form = Application.OpenForms[ "Form1" ] as Form1; GroupBox Gbox = form.Controls[ "röle1" ] as GroupBox; form.bilgi.Text += ( "\n Röle adı" + "~" +textBox1.Text+ "~" + "olarak değiştirildi" ); Gbox.Text = textBox1.Text; } |
Bunun için projeye yeni bir Form ekledim ve içerise röle sayısı kadar textBox ve buton ekledim.Bunun için Form1 de bulunan groupBox ların yani Röle isimleri yazan kısımların “Modifiers” özellikleri “Public” olmak zorunda.Böylece başka formlardan bu özellikleri değiştirebiliriz.Aynı şekilde richtextBox ında diğer formdan yazı yazdırabilmemiz için modifiers özelliğini public yapıyoruz.
Burada iki form sayfasınında aynı anda açık iken bu işlemi yapabilmemiz için butona tıkladığmızda diğer açık olan formu (yani From1) aratıyoruz.Daha sonra “Gbox” adında bir groupBox tanımlıyoruz adının ne olduğu önemli değil sadece bu formda kullanmak için bir isim giriyoruz.Daha sonra “röle1” isimli groupBox a eşitliyoruz.Oda bizim diğer formumuzda ki groupBox ın adı.Yani kısaca belirttiğmiz formda “röle1” aratıp onu “Gbox” a eşitliyorum.Artık Gbox değişkenimizi form2 deki textBox1 e eşitlediğmizde textBox a girdiğmiz veri bizim Röle-1 adımız olucak.Benzer işlemi 8 butonun içerisinede yapıyoruz.
Arduino Kodu:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
| String data; int role1 = 9; int role2 = 8; int role3 = 7; int role4 = 6; int role5 = 5; int role6 = 4; int role7 = 3; int role8 = 2; void setup() { pinMode (role1,OUTPUT); pinMode (role2,OUTPUT); pinMode (role3,OUTPUT); pinMode (role4,OUTPUT); pinMode (role5,OUTPUT); pinMode (role6,OUTPUT); pinMode (role7,OUTPUT); pinMode (role8,OUTPUT); digitalWrite (role1,HIGH); digitalWrite (role2,HIGH); digitalWrite (role3,HIGH); digitalWrite (role4,HIGH); digitalWrite (role5,HIGH); digitalWrite (role6,HIGH); digitalWrite (role7,HIGH); digitalWrite (role8,HIGH); Serial.begin (9600); } void loop() { while (Serial.available()) { delay(10); data += char ( Serial.read ()); } if (data.length()> 0) { Serial.println(data); if (data == "oneopen" ) { digitalWrite (role1, LOW );} if (data == "oneclose" ) { digitalWrite (role1, HIGH );} if (data == "twoopen" ) { digitalWrite (role2, LOW );} if (data == "twoclose" ) { digitalWrite (role2, HIGH );} if (data == "threeopen" ) { digitalWrite (role3, LOW );} if (data == "threeclose" ) { digitalWrite (role3, HIGH );} if (data == "fouropen" ) { digitalWrite (role4, LOW );} if (data == "fourclose" ) { digitalWrite (role4, HIGH );} if (data == "fiveopen" ) { digitalWrite (role5, LOW );} if (data == "fiveclose" ) { digitalWrite (role5, HIGH );} if (data == "sixopen" ) { digitalWrite (role6, LOW );} if (data == "sixclose" ) { digitalWrite (role6, HIGH );} if (data == "sevenopen" ) { digitalWrite (role7, LOW );} if (data == "sevenclose" ) { digitalWrite (role7, HIGH );} if (data == "eightopen" ) { digitalWrite (role8, LOW );} if (data == "eightclose" ) { digitalWrite (role8, HIGH );} } data = "" ; } |
Arduino Bluetooth Bağlantısı:
NOT: Bluetooth modülünüzün VCC pinini, bluetooth modülünüz kaç volt ile çalışıyorsa Arduinonun o pinine bağlayınız! (3.3v - 5v)
Program İndirme Linki : https://yadi.sk/d/dZaDC-qkmZ6GF