Arduino Tutorial etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Arduino Tutorial etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

14 Mart 2019 Perşembe

Android Studio - RC Bluetooth Araba Projesi

Serinin son videosuna hoşgeldiniz. Bu videomda daha önceki videolarda anlatmış olduklarımı uygulayacağımız RC arabayı gerçekleştiriyoruz. Kit olarak 2WD Robot araba kitini kullandık.
İyi seyirler dilerim.

Video ve kodlar aşağıda




15 Ağustos 2018 Çarşamba

Arduino - RC522 RFID Uygulaması

                                                                                                 


Merhaba herkese. Bu yazımda RC522 RFID uygulamasının kodlarını ve anlatım videosunu paylaşacağım. RC522 kart okuma işlemini kendisi
yapıyor bize de bu veriyi SPI ile okumak kalıyor. Kodların kaynağı Maker Robotistan, ben ise üzerinde kendi isteğime yönelik değişiklikler yaptım. Şöyle ki, 2 no'lu pine bağladığım butona basarak kart okuttuğumda bu kartı eeproma kaydetmesini istedim. Daha sonra herhangi bir kart okuttuğumda kart numarasını Serial Monitörde göstermesini istedim. 

Arduino Mega ve Arduino UNO için giriş pinleri farklı. Bu yüzden 2 şemayı da paylaşıyorum. Şemalar robotistan ve instructables'dan alınmıştır. Arduino Mega için şemadan farklı olarak SS pini 9 numaraya değil 53 numaraya girilmiştir.

28 Ocak 2018 Pazar

Arduino - TCS3200 Renk Sensörü Uygulaması



     Bu yazımda TCS3200 renk sensörünün kullanımından bahsedeceğim. Bu sensör üzerindeki fotodiyotlar aracılığıyla gördüğü rengi algılayıp çıkış veren bir sensör. TCS3200 renk sensörünü nasıl kullanacağımızdan bahsetmek gerekirse ;
Üzerinde bulunan 4 inputu kullanmak istediğimiz renk filtresine göre lojik-1 ve lojik-0 konumuna getireceğiz.
Daha sonra sensörün çıkışından aldığımız kare sinyalin kaç pulse olduğunu sayacağız. Bunu 3 renk için de uygulayıp, sensörün gördüğü cismin hangi renk olduğunu belirleyeceğiz.


27 Ocak 2018 Cumartesi

Arduino - C# ile PWM Degeri Gönderme

C# arayüzü ile Arduino'ya PWM gönderebildiğimiz programın nasıl oluşturulduğunu anlattığım videomu YouTube kanalımda yayınladım. İyi seyirler.



27 Temmuz 2017 Perşembe

Arduino - C# ile LCD'de CPU Sıcaklıgını Gösterme



Bir önceki yazımda C# üzerinden textBox kısmına girdiğimiz yazıyı LCD'de yazdırmıştık. Bu sefer bilgisayarın CPU sıcaklığını hem C# arayüzünde  hem de LCD'de göstermemizi
sağlayacak kodları paylaşmak istiyorum.

23 Temmuz 2017 Pazar

Arduino - C# ile LCD'de Yazı Yazdırma


Merhaba arkadaşlar,
C# ile Arduino'ya bağlı LCD'ye nasıl yazı yazdırabileceğimizi anlattığım videoyu ve kodları paylaşıyorum. Umarım sizlere yardımcı olur.

12 Temmuz 2017 Çarşamba

Arduino - C# ile Aynı İki ve Daha Fazla Veri Okuma




C# ile tek bir veri okuma üzerine videolar yayınlamıştım. Fakat sadece 1 veri okumak elbette her zaman yeterli olmayacaktır. Projelerimizde daha fazla veriyi okumamız gerekebilir. Bu yüzden C# birden çok veri okuma üzerine bir video hazırladım. Yazılımın tamamını, videonun altındaki linkten indirebilirsiniz.Umarım işinize yarar.

5 Haziran 2017 Pazartesi

Arduino - Joystick ile Servo Motor Sürme

    Bu yazımda joystick kullanımından bahsetmek istiyorum sizlere. Kullanımı oldukça basit. Kullanacağım modül siyah kartlı  KY-023 joystick modülü. Üzerinde 2 adet potansiyometre ve de 1 adet buton var. 5V ile çalışıyor.

    Ben uygulamayı LCD Keypad Shield ile yaptığım için fritzingde hem LCD'siz hem LCD li olanı çizmek istedim.



25 Mart 2017 Cumartesi

Arduino - Su Seviye Sensörü Uygulaması

Su seviye sensörünün kullanımı aslında çok basit. Herhangi bir potansiyometreyi okuyan biri bu sensörü rahatlıkla kullanabilir. "-" ucunu GND, "+" ucunu 5V'a "S" ucunu da herhangi bir analog girişe takıp AnalogReadSerial örneğini açarak bu sensörü kullanabilirsiniz.

Lakin bu sensör, doğrusal çıkış vermemekte ve bu yüzden de okunan adc değerlerinin cm cinsine çevrilmesinin mümkünatı zorlaşmakta.









Bu yüzden biz de adc değerlerinden örnekler alarak bu değerleri MATLAB programındaki "Eğri Uydurma" özelliğini kullanarak cm cinsine çevireceğiz.

6 Temmuz 2016 Çarşamba

Arduino - TCRT5000 IR Sensör Uygulaması

Bu yazımda TCRT5000 kızılötesi sensörün kullanımından bahsedeceğim. HC-SR04 ultrasonik sensör ile mesafe ölçmüştük. HC-SR04 ses dalgası kullanıyordu. TCRT5000 ise kızılötesi dalgaları kullanıyor.

TCRT5000 ile sadece mesafe ölçümü değil ayrıca lojik-1 lojik-0 düzeyinde de kullanabilir bunun yanı sıra siyah-beyaz bant ayrımı da yaptırtabilirsiniz. Bu sayede çizgi izleyen bir robot yapabilirsiniz.

Ben bu yazımda sensörün analog çıkışını okuyacağım ve bunu LCD ekrana yazdıracağım. Sensörü soldaki şemaya göre oluşturup, siyah gözü 5v'a çektiğimiz yeri Arduino'nun A0 pinine bağlıyoruz.

Siyah gözü 10K ile Mavi Gözü 100ohm ile 5V'a çekiyoruz. Ben 20K-100 ohm ikilisini kullandım, siz aldığınız ölçümlere göre en optimum ikiliyi seçip kullanabilirsiniz.






25 Aralık 2015 Cuma

Arduino - ULN2003A ile Step (Adım) Motor Sürme


DC Motor ve  Servo Motoru PWM yöntemiyle sürmüştük. Step motorun sürülmesi ise bu diğer 2 motora göre biraz daha farklı. Step motorlar dijital kontrollüdürler ve her gönderilen pals için belli açıda döndürülebilirler. Hassasiyet gereken küçük açılarla hareket etmesi istenen cihazlar için kullanılırlar.



Soldaki gifte görüldüğü gibi step motorun 4 sargısında sırasıyla verilen lojik-1'ler ile oluşan manyetik alan sayesinde rotorun dönmesi sağlanır.

Step motorun sürülmesi için 2 yöntem vardır. Bunlar "Tam Adım" ve "Yarım Adım" sürme teknikleridir.

Tam Adım'da motor sargılarının ikisi aynı anda enerjilendirilir, tıpkı soldaki gifte görüldüğü gibi.

Yarım Adım'da ise tek faz ve tam adım sürme adımları art arda uygulanır. Böylece motor her enerjilendirmede yarım adım döner.



Kullandığımız motor 28BYJ-48 Tam adımda 3º , Yarım Adımda 1.5º dönmekte. Biz uygulamamızda yarım adım yöntemini kullanacağız. Tam adım ve yarım adım motor sürmek için sargılara sırasıyla uygulanması için gereken pals tablosu  aşağıda.




Yapacağımız uygulamayı özetlemek gerekirse bağladığımız 2 buton ile step motorumuza 1.5º'lik açıyla yön vereceğiz. 

Bu sargılara verilmesi gereken akımı Arduino karşılayamadığı için dolaylı yoldan, ULN2003A entregresini kullanarak süreceğiz. Bu entegre 500mA'e kadar çıkış verebilmektedir.





Kodlarımız;




  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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#define IN1  8
#define IN2 9
#define IN3 10
#define IN4 11
#define saga 2
#define sola 3

int bekle=1;

void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(saga,INPUT_PULLUP);
pinMode(sola,INPUT_PULLUP);
}

void loop()
{
if(digitalRead(saga)==HIGH)
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(bekle);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
delay(bekle);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(bekle);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(bekle);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(bekle);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(bekle);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(bekle);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(bekle);
}
if(digitalRead(sola)==1)
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(bekle);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(bekle);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(bekle);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(bekle);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(bekle);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
delay(bekle);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(bekle);

}
}

Denemek için zamanım olmadı fakat I/O kodlarını hexal moda çevirip kısaltarak burda tekrar paylaşacağım. 

Tam adım sürmek isteyenler, sargıları tek tek lojik-1 (HIGH) yaparak sonuca ulaşabilirler.

NOT: Daha önce ki motor uygulamalarımızda yaptığımız gibi motorun beslemesini toprakları ortak olmak şartıyla dışardan almanızda fayda var. Fakat beslemeyi Arduino'dan almanızda da bir sakınca yok, çalışıyor.

Uygulama Videosu;





Şemalarını kullanmış olduğum kaynaklar;
http://domoticx.com/arduino-modules-stappenmotor-28byj-48/

http://www.electricaleasy.com/2014/10/stepper-motor.html

19 Haziran 2015 Cuma

Arduino - Android Arayüzünden Bluetooth ile Veri Okuma

2 aylık bir aranın ardından tekrardan merhaba :).

Bu yazımda, MIT App Inventor 2 aracılığı ile oluşturduğum android programdan bahsedeceğim. Aslında programı ben oluşturmadım,internet üzerinden araştırırken buldum, görünümünde bir kaç değişiklik yaptım göze daha hoş gelmesi için.

Android programımız ,arduino ile herhangi bir sensörden ölçtüğümüz değeri HC-06 bluetooth modülüne bağlanarak görmemizi sağlıyor. Bu modül ile ilgili daha önceki uygulamamız ve yazılım için buraya tıklayınız.

Arduino yazılımınızı oluştururken, android bağlantısı için ayrıca bir kod yazmanıza gerek yok. Sadece HC-06 Bluetooth modülünüzü Arduino'ya bağlamanız ve görmek istediğiniz sensör ya da herhangi değeri, Arduino IDE'deki "Serial Monitör" de görmek ister gibi yazmanız yeterli. 
Bunun için bildiğiniz üzere "Serial.println();" komutunu kullanıyoruz.


ÖNEMLİ !!! 
Arduino yazılımını oluştururken okunan verinin ekranda gösterilme sıklığını yüksek tutmanız( 1000 ms ve fazlası) ya da okunan değeri integer olarak gösterirseniz sıkıntı yaşamazsınız. Diğer türlü bazı okuma sıkıntıları oluşabiliyor android programda.


LM35 ile sıcaklık ölçümü yaptım, %100 olmasa bile başarılı.

APP Inventor komutları;



Proje dosyalarına aşağıdaki linkten ulaşabilirsiniz.Hem App Inventor 2 'de kendinize göre düzenlemeniz için .aia uzantılı proje dosyasını, hem de telefonunuza kendi hazırlamış olduğum programı direkt yükleyip kullanmanız için  .apk uzantılı andorid programı da attım.

https://drive.google.com/file/d/0B7Iv2kkg1He_SnB1WHpJckswQUk/view?usp=sharing

21 Mart 2015 Cumartesi

Arduino - C# Arayüzü ile Veri Okuma

Merhaba.
Arduino'dan okuduğumuz verileri direkt Serial Monitör'den ya da LCD'den okuyabiliyorduk. Fakat bu okunan veriler için bir tasarrufumuz olmuyordu.

Bu yazıda Arduino'dan okuduğumuz veriyi C# da gösterip, istediğimiz değerleri listbox'a kaydettiğim arayüzden bahsedeceğim. Bu arayüzü oluşturmamda yardımcı olan Necmettin Zengin arkadaşıma teşekkür ederim. 


Resimde de görüldüğü gibi arayüzde 4 buton, 2 combobox, 2 label ve 1 tane de listbox bulunmakta. 0 yazan yerde ölçülen analog değer gösterilecek ve ekle butonuna bastığımızda okunan değer listbox a eklenecek. C# da hazırlanan bu arayüz için ayrıca bir arduino yazılımına ihtiyaç bulunmamakta. Serial Monitör'de veri okuyacakmış gibi yazılımınızı oluşturmanız yeterli. 
RS232 vb. seri port haberleşmesinde deneme şansım olmadı, en yakın zamanda PIC için deneyip sonucunu burada yazarım.
C# kodlarına geçecek olursak ki yakın zamanda bununla alakalı bir video çekmeyi de planlıyorum;






  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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO;

namespace Data_Okuma
{
public partial class Form1 : Form
{
string[] ports = SerialPort.GetPortNames(); //Port Numaralarını ports isimli diziye atıyoruz.
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
foreach (string port in ports)
{
comboBox1.Items.Add(port); // Port isimlerini combobox1'de gösteriyoruz.
comboBox1.SelectedIndex = 0;
}
comboBox2.Items.Add("2400"); // Baudrate'leri kendimiz combobox2'ye giriyoruz.
comboBox2.Items.Add("4800");
comboBox2.Items.Add("9600");
comboBox2.Items.Add("19200");
comboBox2.Items.Add("115200");
comboBox2.SelectedIndex = 2;

label3.Text = "Bağlantı Kapalı"; //Bu esnada bağlantı yok. }

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
{
// Form kapandığında Seri Port Kapatılmış Olacak.
if (serialPort1.IsOpen == true)
{
serialPort1.Close();
}
}
}

private void timer1_Tick(object sender, EventArgs e)
{
try
{
string sonuc = serialPort1.ReadExisting();//Serial.print kodu ile gelen analog veriyi alıyoruz,string formatında sonuc'a atıyoruz
label1.Text = sonuc + ""; //Labele yazdırıyoruz.
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); // basarısız olursa hata verecek.
timer1.Stop();
}
}

private void button1_Click(object sender, EventArgs e)
{
timer1.Start(); //250 ms olarak ayarladım timer'ı.
if (serialPort1.IsOpen == false)
{
if (comboBox1.Text == "")
return;
serialPort1.PortName = comboBox1.Text; // combobox1'e zaten port isimlerini aktarmıştık.
serialPort1.BaudRate = Convert.ToInt16(comboBox2.Text); //Seri Haberleşme baudrate'i combobox2 'de seçilene göre belirliyoruz.
try
{
serialPort1.Open(); //Haberleşme için port açılıyor
label3.ForeColor = Color.Green;
label3.Text = "Bağlantı Açık";


}
catch (Exception hata)
{
MessageBox.Show("Hata:" + hata.Message);
}
}
else
{
label3.Text = "Bağlantı kurulu !!!";
}
}

private void button2_Click(object sender, EventArgs e)
{
//BAĞLANTIYI KES BUTONU
timer1.Stop();
if (serialPort1.IsOpen == true)
{
serialPort1.Close();
label3.ForeColor = Color.Red;
label3.Text = "Bağlantı Kapalı";
}
}

private void button3_Click(object sender, EventArgs e)
{
listBox1.Items.Add(label1.Text); //Okunan veri listbox'a atılıyor
}

private void button4_Click(object sender, EventArgs e)
{
listBox1.Items.Clear(); // listbox temizleniyor.
}



}
}


Arayüz oluşturma vidyom. Aynı arayüz değil :)

Microsoft Visual Basic Form şeklinde ve exe olarak aşağıdaki linkten programa ulaşabilirsiniz.

İndirme Linki


Burda da aynı arayüz programına Serial.ReadLine() methodu ile devam ederek veri okumayı daha stabil daha işlenebilir hale getirdim.



1 Mart 2015 Pazar

Arduino - MQ-4 Gaz Dedektörü (Metan&Propan) Uygulaması

Askerliğim nedeniyle verdiğim 6 aylık aranın ve de Liverpool zaferimizin ardından tekrar merhaba :).

Bu yazımda MQ Gaz Sensörleri serisinden MQ-4 sensörünün uygulamasını gerçekleştireceğiz. MQ serisinin sensörlerinin hangi gazlar için üretildiği sonundaki rakamla belirtilmiş. Resimde MQ6 sensörü LPG ve Bütan gazına duyarlı iken uygulamasını yapacağımız MQ4 sensörü Metan,Propan ve CNG gazlarına duyarlı. Propan bildiğiniz üzere çakmaklarda kullanılıyor. Diğer gaz sensörleri ile ilgili daha fazla bilgi için aşağıdaki linke tıklayabilirsiniz.

MQ Gaz Sensörleri



MQ-5 GAZ SENSÖRÜ
Bu sensörlerin 6 bacağı bulunmakta ve bunlardan 4 pini 2'şerli olarak birbirleriyle kendiliğinden kısa devre. Bu 6 pin 3'erli 2 gruba ayrılmış. Bu 2 grubun ortasındaki pinler ise Heater(ısıtıcı) pinleri. Bize ise hangi tarafı Vcc hangi tarafı GND olarak belirleyeceğimiz kalıyor. Şekilde de görüldüğü gibi A kısmındaki pinleri kendi arasında kısa devre yapıyor ve Arduino'daki 5V'a takıyoruz. B kısmındaki B pinlerini de birbiriyle kısa devre yapıp analog girişine bağlıyoruz. B kısmındaki H pinini (ortadaki pin) de 10-20k ohm'luk bir dirençle B kısmındaki B pinlerine bağlayıp toprağa takıyoruz. Yazı ile biraz karışık oldu ama aşağıdaki fiqürde açıklamam daha anlaşılır olacaktır. Fiqürde sensörün alt kısmı A kısmı olarak belirlenmiş.Out yazan yer ise analogpin'e girecek olan pin.


Kodlarımız diğer analog ölçüm yapan kodlarla aynı, sensör değeri belirli bir seviyeye gelince 13. pine bağlı ledin yanmasını istedim. Çakmağınızla denemeler yapabilirsiniz.



 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const int analogInPin = A0;  
const int ledPin = 13;

int veri = 0;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
veri = analogRead(analogInPin);
if (veri >= 200)
{ digitalWrite(ledPin, HIGH);}
else
{ digitalWrite(ledPin, LOW);}

Serial.print("Okunan Değer = " );
Serial.println(veri);
delay(750);
}

Devremiz ve sensörden okuduğumuz değerler;



Videomuz ;



Kaynak olarak kullandığım siteler;

14 Şubat 2015 Cumartesi

Arduino - DS18B20 One Wire Sıcaklık Sensörü

Daha önceden LM35 sıcaklık sensörü ile bir uygulama gerçekleştirmiştik. LM35 analog çıkış veren bir sensördü. Bu yazımda ise sizlere dijital çıkış veren bir sıcaklık sensörü olan Dallas 18B20 (DS18B20) ile ilgili bilgi vermek istiyorum.


DS18B20 'nin özelliklerinden bahsedecek olursak ;

* ±0.5°C ölçüm hassasiyetine sahip
* Dallas firmasının geliştirdiği One Wire haberleşmesini kullanır
* Ölçüm aralığı -55°C 'den +125°C 'ye kadardır.
* Termometre çözünürlüğü kullanıcının seçimine bağlı olarak 9 bitten 12 bite kadardır.





Daha ayrıntılı bilgiyi datasheet sayfasında bulabilirsiniz.
DS18B20 Datasheet

Bu sensör ile ilgili yazı yazmak istedim çünkü DS18B20 sensörü ki uygulamayı gerçekleştirdiğinizde siz de anlayacaksınız, LM35 sensörüne göre daha kararlı ve daha hassas. Oda sıcaklığı ölçümünden ziyade vücut ateşi vb. hassasiyet gereken ölçümler yapabilirsiniz. Uygulamaya geçmeden önce aşağıdaki linkten "One Wire" kütüphanesini indirip Arduino klasörünün libraries klasörüne yüklüyoruz.

OneWire Kütüphanesi Linki







 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
66
67
68
69
70
71
72
73
74
75
76
// Arduinoturkiye.com DS18B20 Dijital Sıcaklık Sensörü Kullanımı
// Tek Sensör Örnek Programı
// Düzenleme: İsmail BUÇGÜN

#include <OneWire.h> // OneWire kütüphanesini ekliyoruz.

// Sıcaklık sensörünü bağladığımız dijital pini 2 olarak belirliyoruz.
int DS18S20_Pin = 2;

// Sıcaklık Sensörü Giriş-Çıkışı
OneWire ds(DS18S20_Pin); // 2. Dijital pinde.

void setup(void) {
Serial.begin(9600); // Seri iletişimi başlatıyoruz.
}

void loop(void) {
// temperature değişkenini sıcaklık değerini alma fonksiyonuna bağlıyoruz.
float temperature = getTemp();
// Sensörden gelen sıcaklık değerini Serial monitörde yazdırıyoruz.
Serial.print("Sicaklik: ");
Serial.println(temperature);
// 1 saniye bekliyoruz. Monitörde saniyede 1 sıcaklık değeri yazmaya devam edecek.
delay(1000);

}

// Aşağıdaki fonksiyon DS18B20 sıcaklık sensörümüzden gelen verileri
// Celcius cinsinden sıcaklık değerlerine çevirmek için kullanılıyor.
// Herhangi bir değişiklik yapmamız gerekmiyor.

float getTemp(){
//returns the temperature from one DS18S20 in DEG Celsius

byte data[12];
byte addr[8];

if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized");
return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end

byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad

for (int i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}

ds.reset_search();

byte MSB = data[1];
byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB); //using two's compliment
float TemperatureSum = tempRead / 16;

return TemperatureSum;

}
Seri haberleşme monitörünü kullanarak LM35'deki gibi aynı ölçümleri almanız mümkün, hatta belirttiğim gibi daha kararlı olduğunu göreceksiniz.

Kaynak;
http://arduinoturkiye.com/ds18b20-dijital-sicaklik-sensorunun-arduino-ile-kullanimi/

9 Ağustos 2014 Cumartesi

Arduino - Android Arayüzünden Bluetooth Haberleşmesi


Kablosuz haberleşme neden bilmiyorum diğer haberleşmelere göre daha heyecan verici geliyor bana. Özellikle son zamanlarda kullandığımız akıllı telefonları Arduino ile haberleştirebilmek gerçekten büyük zevk. Zaten basit bir uygulama olsa bile bu yazımdaki uygulamayı yaptığınızda ne demek istediğimi daha iyi anlayacaksınız :). 




Yazılımdaki mantık C# uygulamasındaki mantık ile aynı. 3 adet butonumuz var, 1 tanesi ile bluetooth haberleşmesi ile mikrodenetleyicimize bağlanıyoruz. 2.buton ile led yakıyor, 3.buton ile led söndürüyoruz.

Bu uygulamayı ilerleterek android kontrollü bir araba, akıllı ev uygulamaları vb. projeler gerçekleştirebilirsiniz. Tabii android bilmekte gerçekten büyük fayda var. Size mutlaka + katkıda bulunacaktır.


Eclipse öğrenmeye başladım fakat henüz başlangıç aşamasındayım. Buradaki kullanacağıız programı Selim Erkan OĞUZ arkadaşımın yardımıyla Google'ın App Inventor isimli programı yardımıyla yaptık. İster kendiniz oluşturursunuz isterseniz vereceğim link ile programı direkt android telefonunuza yükleyerek uygulamayı gerçekleştirebilirsiniz.



Yukardaki resimde uygulamanın kodlarını yazabildiğimiz bir arayüz var. Sağ taraftaki resimde de uygulamamızın basit bir arayüzü var. 

İndirme linki burda ; arduinotooth indirme linki









HC-06/07 BLUETOOTH MODÜLÜ
Anrdoid telefonumuzla Arduino'muz arasındaki haberleşmeyi HC-06 modülümüz sayesinde gerçekleştireceğiz.Bu sayede istediğimiz dataları Arduino'ya gönderip ışık yakıp söndüreceğiz.

Bluetooth'un RXD pinini Arduino'da TXD'ye, Bluetooth TXT pinini, Arduino RXD'sine takacağız.


Uyglamayı çalıştırmadan önce telefonunuzu Bluetooth modülü ile eşleştirmeniz gerekiyor. HC-06 veya HC-07 diye ekranda gözükecek. Modülün şifresi 1234. Eşleştirme yaptıktan sonra arayüzü açıp bağlan butonuna tıklayarak bir kez daha bağlanacağız. Bağlantı sağlandıktan sonra modülün üzerinde yanıp sönen ışık sürekli yanmaya başlayacak. Bu da komutlar için bluetooth haberleşmesinin sağlandığını, Arduino'nun komut almaya hazır olduğunu gösterir.

Arduino kodlarımız hemen hemen benzer kodlar C# uygulamasındaki kodlarla. Buyrun;

int data;
int led=7;
void setup() {
  pinMode(led,OUTPUT);  
  Serial.begin(9600);
}
void loop() { 
  {
  if (Serial.available()){
   int data = Serial.read();
   delay(100);
   if(data=='1'){
     digitalWrite(led,1);
   }
      if(data=='0'){
     digitalWrite(led,0);
   }
   delay(100);
  }}}

Videomuz da burda :) Türk Usülü Çay Bardağımız da bize eşlik etmiş :p







Arduino'da ölçülen analog veriyi android program ile okuma yazılımı için aşağıdaki linke tıklayın.
http://arduinotik.blogspot.com/2015/06/arduino-bluetooth-ile-android.html

11 Temmuz 2014 Cuma

Arduino - C# Arayüzü ile Led Yakma

Bu yazımda C# ile oluşturduğumuz arayüz ile Arduino'nun dijital çıkışlarına hükmetmeyi öğreneceğiz. Uygulamamız 2 aşamadan oluşmakta. Önce Arduino'ya yükleyeceğimiz programda hangi çıkışımızı yani ledi ON ve OFF duruma getirecek datayı belirleyeceğiz. Daha sonra da C# arayüzünden önce Port'lara bağlanmayı ve butonlara bastığımızda hangi datayı göndereceğimizi kararlaştıracağız.


C# ile ilgilenmenizi öneririm çünkü her defasında LCD bağlamak veya Serial Monitör kullanamayacağımız projeler olabilir. Tüm verileri tek arayüz üzerinden göndermek veya almak zorunda kalabilirsiniz. İnternet üzerinden C# üzerine projeleri veya arayüzü öğrenmeniz size fayda sağlar. Lafı fazla uzatmadan önce Arduino kodlarımızı vermek istiyorum;



int led = 13;  // Hali hazırda bulunan ledi kullanacağım.
void setup() {              
    pinMode(led, OUTPUT); 
  Serial.begin(9600);  
}
void loop() {
  if(Serial.available())   //Eğer seri haberleşme açık olursa alttaki komutlar işleyecek.
  {int a=Serial.read();    //Seri haberleşme ile okunan verimize a integer değerini verdik.
  if(a=='1')
 { digitalWrite(led, HIGH);}  // a, 1 olursa yanacak.
  
  else if (a == '0')          // a, 0 olursa sönecek.
  {digitalWrite(led, LOW);}
  }

}

C# kısmımızda Toolbox'dan aldığımız nesneler, ComboBox, 3 Buton, 1 Label.



Led Yak = Buton 3
Led Söndür = Buton 2
Bağla = Buton 1

Programımıza bakarsanız daha bu kısım daha iyi anlaşılacaktır.
Arayüzü oluşturduktan sonra Components kısmından SerialPort nesnesini arayüzün üzerine atıyoruz.





Amacımız önce programı yüklemiş olduğumuz Arduino'nun portuna, bu arayüz ile bağlanarak LED YAK ve LED SÖNDÜR komutlarını kullanmak :)

C# komutlarımız ;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace ArduinoSerial

{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = comboBox1.Text;            
            serialPort1.Open();
            
        }       

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.DataSource = SerialPort.GetPortNames();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Write("0");
            label1.Text = "LED KAPALI";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Write("1");
            label1.Text = "LED AÇIK";      
        }                     

        private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
        {

        }           

            }

}

Programın çalışabilmesi için Bilgisayarınızda Framework yüklü olması gerekmektedir.

Tüm Dosyaları İndirmek İçin Tıklayın (File>Download)
(Exe dosyası ArduinoSerial\ArduinoSerial\bin\Debug klasörünün içinde.)


Bu da C# arayüz oluşturma videomuz ve çalıştırma videomuz ;









Kolay gelsin :)...