Kit Sensor Suhu & Kelembaban DHT11 & DHT22 untuk Raspberry Pi & Arduino
Komponen dan Perlengkapan
Sensor Suhu & Kelembaban DHT11 (4 pin) – 1 buah
Raspberry Pi 2 Model B – 1 buah
Arduino UNO – 1 buah
Kabel Jumper Macho ke Macho – 3 buah
Breadboard (umum) – 1 buah
Resistor 4.7K Ω – 1 buah
Kit Cobbler Breakout – 1 buah
Aplikasi dan Layanan Online
Microsoft Windows 10 IoT Core
Arduino IDE
Raspberry Pi Raspbian
Microsoft Visual Studio 2015
WinSCP
PuTTY
Tentang Proyek Ini
Pendahuluan
Latar Belakang
DHT11 adalah sensor suhu dan kelembaban 4 pin (satu pin tidak digunakan) yang mampu mengukur kelembaban relatif 20% - 90% dan suhu 0 hingga 50 °C. Sensor dapat beroperasi antara 3 dan 5.5V DC dan berkomunikasi menggunakan protokol OneWire miliknya sendiri. Protokol ini memerlukan timing yang sangat presisi untuk mendapatkan data dari sensor. Bit LOW dan HIGH dikodekan pada kabel oleh panjang waktu sinyal HIGH. Waktu total untuk melakukan pembacaan adalah paling lama 23.4 ms. Ini termasuk penundaan 18 ms yang diperlukan untuk memulai transfer data dan jendela hingga 5.4 ms untuk data. Sinyal individual dapat sem pendek 20 μs dan sepanjang 80 μs.
Saat Windows 10 IoT Core pertama kali tersedia saya mengambil Raspberry Pi 2 dan sensor DHT11 saya dan mencobanya di C#. Saya dengan cepat menemukan bahwa ini tidak akan berfungsi. Masalahnya dengan C# di Windows 10 IoT Core adalah bahwa itu tidak akan cukup cepat (setidaknya tidak saat ini).
Saya memposting di forum Microsoft dan memiliki beberapa pertukaran dengan pengembang lain yang mengalami kesulitan yang sama. Saya akhirnya menemukan respons Microsoft tentang protokol OneWire di Windows 10 IoT Core yang menyatakan:
Setelah beberapa saat saya menerima respons pada posting saya yang menyatakan:
Nah, itu akan bagus dan saya sangat bersemangat tentang kemampuan mendatang tetapi siapa yang bisa menunggu? Saya baru-baru ini melihat bahwa Microsoft memposting contoh tentang cara mendukung protokol OneWire menggunakan DHT11 sebagai sensor contoh dan menggunakan C++ di Windows 10 IoT Core. Saya melihat ini sebagai kesempatan untuk membawa ke C#.
Proyek ini tentang mengubah contoh itu menjadi perpustakaan yang dapat digunakan di C#. Saya berterima kasih kepada orang yang menulis perpustakaan untuk membantu membuat sensor populer ini berguna di Windows 10 IoT Core, dan semoga, dengan perpustakaan ini itu akan lebih berguna lagi.
Perpustakaan
Perpustakaan yang saya buat adalah refactoring sederhana dari kode yang awalnya diposting oleh Microsoft jadi saya tidak mengakui kredit untuk pekerjaan yang dilakukan untuk mendapatkan pembacaan sensor.
Perpustakaan menyajikan kelas sederhana yang disebut Dht11 di namespace Sensors.Dht. Membuat objek baru di C# sederhana.
Pertama buka pin GPIO yang pin sensor DHT11 Anda terhubung.
using Sensors.Dht;GpioPin pin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);
Kemudian serahkan pin ini ke konstruktor kelas Dht11 dan tentukan Mode Drive Pin GPIO. Ini memungkinkan Anda untuk memutuskan apakah akan menambahkan resistor pull-up Anda sendiri.
Dht11 dht11 = new Dht11(_pin, GpioPinDriveMode.Input);
Untuk mendapatkan pembacaan dari perangkat gunakan metode GetReadingAsync.
Ada overload yang memungkinkan nilai maksimum percobaan ditentukan. Nilai default adalah 20. Ini menentukan berapa banyak upaya untuk membaca sensor sebelum menyerah dan mengembalikan pembacaan gagal.
Struktur DhtReading didefinisikan sebagai:
public value struct DhtReading { bool TimedOut; bool IsValid; double Temperature; double Humidity; int RetryCount; };
Observasi
Meski sensor bekerja di C++ ia masih tidak mendapatkan pembacaan setiap kali. Oleh karena itu, perlu opsi percobaan ulang dalam kelas (ini sebenarnya bagian dari contoh Microsoft). Saya pikir akan lebih baik untuk membandingkan ini dengan platform lain untuk melihat bagaimana performanya. Saya mencoba kode di Raspberry Pi 2 yang menjalankan Raspbian serta di Arduino Uno. Kode yang saya gunakan untuk keduanya telah disertakan dalam repositori GitHub.
Video yang disertakan dalam proyek ini akan mendemonstrasikan dan membandingkan output dari setiap platform ini.
Memulai
Susun Rangkaian untuk Raspberry Pi 2
Gunakan panduan ini untuk menyusun rangkaian sambil menggunakan diagram yang terletak di bagian bawah halaman sebagai panduan (perhatikan bahwa warna kabel bersifat opsional dan telah dipilih untuk membantu membuat rangkaian mudah diikuti saat dibangun).
Tempatkan cobbler berupa T di ujung kiri papan half size+ (di mana angka dimulai dari 1). Dua pin paling kiri akan berada di E1 dan F1 pada papan. Dua pin paling kanan akan berada di E20 dan F20
Tempatkan resistor 4.7K Ω antara A4 dan 3V3
Sambungkan kabel jumper macho ke macho berwarna oranye antara B4 dan F28
Sambungkan kabel jumper macho ke macho berwarna merah antara F29 dan 3V3
Sambungkan kabel jumper macho ke macho berwarna hitam antara F30 dan GND
Tempatkan sensor DHT11 di J30 (-), J29 (+) dan J28 (s)
Colokkan kawat pita ke cobbler dan Raspberry Pi
Susun Rangkaian untuk Arduino
Gunakan panduan ini untuk menyusun rangkaian sambil menggunakan diagram yang terletak di bagian bawah halaman sebagai panduan (perhatikan bahwa warna kabel bersifat opsional dan telah dipilih untuk membantu membuat rangkaian mudah diikuti saat dibangun).
Tempatkan resistor 4.7K Ω antara E12 dan E13
Sambungkan kabel jumper macho ke macho berwarna putih antara D13 dan Pin 5 di Arduino
Sambungkan kabel jumper macho ke macho berwarna merah antara D12 dan pin 5V di Arduino
Sambungkan kabel jumper macho ke macho berwarna hitam antara D11 dan GND di Arduino
Tempatkan sensor DHT11 di A11 (-), A12 (+) dan A13 (s)
Colokkan kabel USB dari komputer Anda ke Arduino
Berikut adalah foto rangkaian yang saya bangun.
Memulai Aplikasi untuk Raspberry Pi
Pilih Debug, konfigurasi ARM dan Mesin Jarak Jauh. Sekarang klik kanan proyek, pilih Properti lalu klik tag Debug. Selanjutnya masukkan alamat IP Raspberry Pi 2 di kolom Mesin Jarak Jauh, dan centang tidak digunakan Use authentication.
Tekan F5. Aplikasi akan di-deploy ke perangkat yang mungkin memakan waktu beberapa menit pada kali pertama.
Memulai Aplikasi untuk Arduino
Sketch untuk proyek ini tersedia di GitHub dalam file yang disebut Dht11_Speed. Mulai Arduino IDE dan buka sketch. Unggah sketch ke Arduino (Ctrl U) dan lalu mulai Serial Monitor (Ctrl Shift M)
Jika Anda tidak yakin cara melakukannya atau baru di lingkungan ini video di bawah ini akan mendemonstrasikan cara melakukannya.
Memulai Aplikasi untuk Raspbian
Kode C untuk Raspberry Pi tersedia di GitHub untuk proyek ini dalam file yang disebut Dht11.c. Sumber perlu disalin ke Raspberry Pi lalu dikompilasi di sana. Saya suka menggunakan WinSCP untuk menyalin file. Jika Anda tidak memiliki aplikasi ini saya merekomendasikan Anda untuk mengunduh dan menginstal sekarang. Kode sumber menggunakan wiringPi yang harus diinstal sebelum mengompilasi aplikasi.
Perintah untuk mengompilasi kode di Raspberry Pi adalah:
Di mana 1000 menentukan penundaan 1000 ms (1 detik) dan 10 adalah jumlah sampel yang akan dibaca.
Video akan mendemonstrasikan secara lebih detail cara menyalin kode dan cara mengompilasinya di Raspberry Pi yang menjalankan Raspbian. Untuk mempelajari cara memuat Raspbian ke Raspberry Pi Anda kunjungi https://www.raspberrypi.org/downloads/raspbian/.
Video
Video di bawah adalah demonstrasi aplikasi:
Tonton video ini di YouTube menggunakan mode Theater untuk kualitas terbaik.