Selasa, 11 Desember 2018

PC Komunikasi Arduino Untuk Sensor DHT11 Dengan Visual C#

Suhu dan Kelembaban Sensor DHT11 di Arduino dengan C #

1. Pernyataan Masalah
Dalam tutorial ini kita akan belajar bagaimana menggunakan sensor untuk mendapatkan suhu dan kelembaban dari lingkungan menggunakan DHT11 Sensor di Arduino dan memproses informasi dalam C # melalui Port serial. Kami akan menunjukkan suhu dalam Celcius dan Kelembaban.

2. Suhu dan Kelembaban Sensor DHT11
DHT11 adalah sensor suhu dan kelembaban digital dasar, sangat murah. Ini menggunakan sensor kelembaban kapasitif dan termostat untuk mengukur udara sekitarnya, dan memuntahkan sinyal digital pada pin data. Ini cukup mudah digunakan, tetapi membutuhkan waktu yang cermat untuk mengambil data. Satu-satunya kekurangan nyata dari sensor ini adalah Anda hanya bisa mendapatkan data baru dari itu sekali setiap 2 detik. Di pasar Anda akan menemukan banyak model, beberapa di antaranya memiliki 3 atau 4 pin, jadi hati-hati dan baca spesifikasi teknis. Spesifikasi teknis DHT11 adalah:
Daya 3 hingga 5V dan I / O
Penggunaan arus maksimal 2,5mA selama konversi (saat meminta data)
Baik untuk pembacaan kelembaban 20-80% dengan akurasi 5%
Baik untuk pembacaan suhu 0-50 ° C ± 2 ° C akurasi
Tidak lebih dari 1 tingkat sampling Hz (sekali setiap detik)
Ukuran tubuh 15,5 mm x 12 mm x 5,5 mm
3 pin dengan jarak 0,1 "

3. Sketsa untuk proyek ini



Untuk melaksanakan proyek ini kami akan membutuhkan materi-materi berikut:
Suhu dan kelembaban sensor DHT11
Kabel
Arduino UNO R3
Gambar selanjutnya menunjukkan sketsa untuk proyek ini


Pada gambar berikutnya kita dapat melihat pin pertama terhubung ke pin digital 2 di papan arduino, yang tengah ke 5v dan yang terakhir terhubung ke GND.

4. Arduino Source Code untuk mendapatkan Suhu dan Kelembaban dari DHT11
Kode sumber di arduino tidak begitu rumit, seperti yang bisa kita lihat pertama-tama Anda perlu menambahkan pustaka dht11.h untuk mulai menggunakan suhu dan sensor kelembaban DHT11 dan kemudian tentukan pin digital yang akan Anda gunakan untuk membaca informasi dari sensor dan akhirnya membaca informasi dari sensor dht11 (suhu dan kelembaban) dan mencetak di port serial untuk membaca lebih lanjut dari C #.

#include <dht11.h>
//Declare objects
dht11 DHT11;
//Pin Numbers
#define DHT11PIN 2
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  int chk = DHT11.read(DHT11PIN);
  //read temperature in celsius degree and print in the serial port
  Serial.print((float)DHT11.humidity, 2);
  Serial.print(",");
  //read humidity and print in the serial port
  Serial.print((float)DHT11.temperature, 2);
  Serial.println();
  delay(2000);
}

5. Merancang Proyek di C # untuk Menunjukkan Suhu dan Kelembaban



Untuk mengimplementasikan proyek ini menggunakan C # kita perlu menggambar kontrol pengukur dan jarum, dalam kasus saya saya menggambar mereka menggunakan photoshop untuk menampilkan suhu dan menempatkan gambar pengukur dalam kontrol PictureBox dan untuk pergerakan jarum yang akan kita buat secara terprogram. Juga kita membutuhkan beberapa TextBox untuk menunjukkan suhu, kelembaban, dan waktu. Setiap 10 detik kami akan memperbarui suhu dan kelembaban sehingga kami perlu menggunakan kontrol Timer dan akhirnya kami akan membutuhkan kontrol SerialPort untuk membaca informasi dari port serial. Desain antarmuka ditunjukkan pada gambar berikutnya.



C # Source Code
Seperti yang dapat kita lihat ini adalah bagian utama dari kode sumber c # untuk proyek ini, kami membagi informasi yang kami dapatkan dari arduino yang dipisahkan oleh koma menjadi suhu dan kelembapan dan kemudian menggambar suhu itu dalam kontrol pengukur.

private void timer1_Tick(object sender, EventArgs e)
{
    //read temperature and humidity every 10 seconds
    timer1.Interval = 10000;
    //read information from the serial port
    String dataFromArduino = serialPort1.ReadLine().ToString();
    //separete temperature and humidity and save in array
    String[] dataTempHumid = dataFromArduino.Split(',');
    //get temperature and humidity
    int Humidity =
    (int)(Math.Round(Convert.ToDecimal(dataTempHumid[0]),0));
    int Temperature =
    (int)(Math.Round(Convert.ToDecimal(dataTempHumid[1]),0));
    //draw temperature in the graphic
    drawTemperature(Temperature);
    txtHumidity.Text = Humidity.ToString()+" %";
    txtTemperatureCelsius.Text = Temperature.ToString()+" °C";
}
private void timer2_Tick(object sender, EventArgs e)
{
    txtTime.Text = DateTime.Now.ToLongTimeString();
}
private void frmTemperatureHumidity_Load(object sender, EventArgs e)
{
    needle = Image.FromFile("needle2.png");
     serialPort1.Open();
}


6. Menjalankan Proyek
Cukup tekan F5 untuk menjalankan proyek dan Anda akan melihat program mulai membaca dari port serial dan ditampilkan dalam kontrol pengukur, dan setiap 10 detik akan diperbarui dengan informasi baru yang diperoleh dari sensor DHT11.


Tidak ada komentar:

Posting Komentar