Bu derste Arduino UNO ve DHT11 sensörü kullanılarak sıcaklık
ve nem ölçümü yaptım. Yaptığım ölçümü Microsoft Visual Studio C# 2013 de yazdığım SerialCom. V1.1 isimli program ile görüntüledim. DHT11 sıcaklık
ve nemi aynı anda ölçen bir sensör. Sıcaklık ölçüm aralığı 0-50 °C hassasiyeti
±2 °C. Nem ölçüm aralığı ise %20-%90 hassasiyeti ± %5.
Şekil 1 – DHT11
Sıcaklık ve Nem Sensörü (Humidity and Temperature Sensor)
İlk olarak Arduino UNO, DHT11 bağlantısını
gerçekleştirdim (Şekil 2). Ardından Arduino 1.6.6 programını açtım ve
DHT11 sensörünün kütüphanesini ekledim. Eğer bu kütüphaneyi eklemezsek
programımız çalışmayacaktır. DHT11 kütüphanesini eklemek için Arduino 1.6.6
programının “Taslak” menüsünden “library ekle” seçilir açılan pencerede ise
“.ZIP
Kitaplığı ekleKomutu” seçilir (Şekil 3). Bilgisayarımızda kayıtlı olan zip uzantılı kütüphane dosyası seçilerek onaylanır.
Şekil 2 – Arduino UNO
ve DHT11 Sensörü Bağlantı Şeması
DHT11.zip dosyasını indirerek Arduino 1.6.6 programınıza
ekleyin. DHT11.zip dosyasını İndirilenler-Download sekmesinden
indirebilirsiniz.
Şekil 3 - DHT11.zip
dosyasını kütüphaneye ekleme.
Arduino Programı
#include <DHT11.h> //DHT11 kütüphanesi eklenir
//Dijital pin tanımlaması
int pin=2;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);//Seri habarleşme başlatılır
}
void loop()
{
float nem,sicaklik;
int oku = dht11.read(nem,sicaklik); //sensördeki veriler okunur
//Nemi oku ve seri porta gönder
Serial.print(nem, 2);
Serial.print(",");
//Sıcaklık santigrat derece olarak oku ve seri porta gönder
Serial.print(sicaklik, 2);
Serial.println();
delay(2000); // 2 Saniye bekle
}
//Dijital pin tanımlaması
int pin=2;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);//Seri habarleşme başlatılır
}
void loop()
{
float nem,sicaklik;
int oku = dht11.read(nem,sicaklik); //sensördeki veriler okunur
//Nemi oku ve seri porta gönder
Serial.print(nem, 2);
Serial.print(",");
//Sıcaklık santigrat derece olarak oku ve seri porta gönder
Serial.print(sicaklik, 2);
Serial.println();
delay(2000); // 2 Saniye bekle
}
Arduino Programını İndirilenler-Download sekmesinden
indirebilirsiniz.
SerialCom. V1.1 Programı
Ölçümünü gerçekleştirdiğim değerleri okumak için C# 2013 programında SerialCom. V1.1 isimli bir program
yazdım (Şekil 4). Bu programı yazarken using System.IO.Ports; satırını yazmayı unutmayın.
Dikkat etmemiz gereken bir hususta seri port haberleşme hızı. Bu değeri 9600
olarak ayarladım. Donanım ve program hızı aynı değerlere sahip olmak zorunda.
Şekil 4 - SerialCom. V1.1 programı
Programın PORT SELECT kısmında Arduino UNO’nun haberleştiği
seri port numarası seçilir. Port seçimi yapıldıktan sonra ise Start*Stop
kısmında START butonuna basılarak haberleşme başlatılır. STOP butonuna
basılarak da haberleşme durdurulur. Humudity-Temparature kısmında ise sırasıyla
Nem, Sıcaklık ve Zaman görüntülenir. Program dosyasını İndirilenler-Download sekmesinden indirebilirsiniz.
private void Form1_Load(object sender, EventArgs e)
{
string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
comboBox1.Items.Add(port);
}
timer2.Enabled = true;
}
private void button1_Click(object sender, EventArgs e)
{
string x = comboBox1.SelectedItem.ToString();
serialPort1.PortName = x;
serialPort1.BaudRate = 9600;
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Interval = 2000;
String dataFromArduino = serialPort1.ReadLine().ToString();
String[] dataTempHumid = dataFromArduino.Split(',');
int Humidity = (int)(Math.Round(Convert.ToDecimal(dataTempHumid[0])/100, 0));
int Temperature =(int)(Math.Round(Convert.ToDecimal(dataTempHumid[1])/100, 0));
textBox1.Text = Humidity.ToString()
+ " %";
textBox2.Text =
Temperature.ToString() + " °C";
}
private void timer2_Tick(object sender, EventArgs e)
{
textBox3.Text = DateTime.Now.ToLongTimeString();
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
try
{
if (! serialPort1.IsOpen)
serialPort1.Open();
}
catch
{
MessageBox.Show("Seri Port Seçin!");
}
}
private void button3_Click(object sender, EventArgs e)
{
timer1.Stop();
serialPort1.Close();
}
}
}Programı yazarken using System.IO.Ports; satırını yazmayı unutmayın. Bu kütüphane serialPort nesnesinin çalışmasını sağlar.
Ders videosu
Hi Ser.! Program 's error
YanıtlaSilWhich one? Arduino or C#
YanıtlaSilString dataFromArduino = serialPort1.ReadLine().ToString();
YanıtlaSilşu kısım c#da hata veriyor
Peki hocam c# kullanarak bu aynı işlemi LCD ekranda okutmak için ne yapmalıyım.
YanıtlaSilPeki hocam değerleri LCD ekrana eklemek için ne yapmalıyız
YanıtlaSilLCD Kütüphanesini kullanarak yapabilirsin
Sil