DHT Tiny Breakout untuk Raspberry Pi
Komponen perangkat keras: Atmel ATTiny85×1DHT22 Sensor Suhu×1DHT11 Sensor Suhu &Kelembaban×1SparkFun Tiny AVR Programmer×1Adafruit 4.7K Resistor×3Adafruit 10K Resistor×1Adafruit 100 Resistor×1Adafruit Diffused Blue 3mm LED×1Adafruit Tactile Button Switch×1Adafruit Break-away 0.1 36-pin strip header laki-laki1 buah @ panjang 6, 1 buah @ panjang 2 (total 8 pin)×1Generic Jumper (0,1″)×1Arduino UNO &Genuino UNOOpsional – digunakan untuk debugging dan pengujian.×1Aplikasi perangkat lunak dan layanan daring: Microsoft Visual Studio 2015Microsoft Windows 10 IoT CoreArduino IDE
CERITA
Pengantar
DHT11 dan DHT22 adalah sensor suhu dan kelembaban yang populer karena akurasinya dengan biaya yang sangat rendah. Namun, satu masalah dengan mereka adalah bahwa mereka bekerja melalui protokol satu kabel berpemilik yang membutuhkan waktu yang tepat. Sensor ini terbukti sulit dibaca di board dengan sistem operasi non-real-time.
Beberapa waktu lalu, saya memposting artikel berjudul “Sensor Suhu DHT11 /DHT22 ” mendemonstrasikan cara menggunakan kode contoh Microsoft C++ dari C# untuk membaca sensor ini. Perpustakaan dapat membaca tetapi saya harus menambahkan logika coba lagi untuk membuatnya lebih andal. Ini terbukti berhasil bagi sebagian besar orang, tetapi beberapa orang mengalami masalah dalam menjalankannya secara konsisten.
Mengingat tingkat minat untuk menggunakan sensor ini pada Raspberry Pi saat menjalankan Windows 10 IoT Core, saya memutuskan untuk membuat opsi kedua yang menyediakan metode yang sangat andal untuk membaca sensor ini sambil tetap mempertahankan biaya rendah.
Ringkasan
Pendekatan yang disajikan di sini adalah memasang sensor DHT ke ATtiny85 yang murah dan mengaturnya sebagai perangkat budak I2C. Ini dilakukan dengan menggunakan perpustakaan TinyWireS dan membuat satu set register yang dapat dibaca dan ditulis untuk berinteraksi dengan perangkat.
Perangkat mendukung fungsi berikut:
- Interval pembacaan yang dapat dikonfigurasi untuk menentukan seberapa sering membaca sensor DHT. Standarnya adalah membaca setiap 2 detik.
- Mode manual yang menonaktifkan interval dan melakukan pembacaan sesuai permintaan.
- Ambang batas suhu atas dan bawah yang dapat dikonfigurasi yang akan memicu pin interupsi saat pembacaan suhu saat ini di atas atau di bawah ambang batas.
- Mode penyimpanan konfigurasi yang memungkinkan pengaturan yang dikonfigurasi untuk dipulihkan saat dihidupkan atau setelah reset.
- Pengaturan ulang konfigurasi memungkinkan konfigurasi yang disimpan diatur ulang ke nilai default.
- Kontrol daya sensor yang memungkinkan daya ke sensor diaktifkan dan dinonaktifkan untuk menghemat daya.
- Alamat perangkat i2c yang dapat diprogram. Alamat default perangkat ini adalah 0x26, tetapi dapat diubah melalui perintah. Perangkat akan mengingat alamatnya. Jika direset, alamat akan kembali ke 0x26. Pustaka C# juga menyertakan kode untuk mencari perangkat di bus i2c sehingga Anda tidak perlu mengetahui alamat untuk terhubung.
- Pemilihan model DHT yang dapat diprogram. Firmware default ke DHT22, tetapi ini dapat diubah dengan mengirimkan perintah ke perangkat untuk menggunakan model yang berbeda. Model disimpan sehingga setelah setiap reboot atau siklus daya, model tersebut mempertahankan jenis model yang akan digunakan.
Kode Sumber
Ada tiga set kode dalam proyek ini. Firmware utama untuk papan, sketsa master Arduino yang digunakan untuk menguji dan mendemonstrasikan papan saat terhubung ke Arduino Uno dan aplikasi Window 10 IoT Code yang menunjukkan cara menggunakan perangkat dari Raspberry Pi. Semua kode tersedia di repositori GitHub yang ditautkan.
Perangkat/Sirkuit
Sirkuitnya kecil dan hanya menggunakan beberapa komponen murah. ATtiny85 dapat dibeli dari beberapa vendor. Saya sarankan mengambil beberapa dari mereka karena mereka memiliki banyak tujuan yang berguna.
Sirkuit ini memiliki header enam pin yang memungkinkannya untuk dihubungkan secara eter ke sirkuit lain atau langsung ke Raspberry Pi. Pin didefinisikan sebagai berikut:
- GND -> Hubungkan ini ke ground di sirkuit Anda atau ke pin ground di Raspberry Pi Anda.
- RST -> Pin ini digunakan untuk mereset atau me-reboot perangkat. Pin ini harus terhubung ke 5V di bawah operasi normal. Untuk menyetel ulang perangkat, picu pulsa RENDAH sesaat pada pin ini.
- INT -> Pin ini memiliki dua tujuan. Ketika ambang batas diaktifkan, pin ini akan menjadi TINGGI setiap kali ambang batas terlampaui dan RENDAH jika tidak. Saat menggunakan mode hemat daya, pin ini digunakan untuk membangunkan perangkat dengan memicu pulsa tinggi sesaat.
Ada juga header dua pin tempat jumper dapat ditambahkan untuk mengaktifkan, atau dihapus untuk menonaktifkan LED on-board.
Saat memanfaatkan ini dalam proyek yang lebih besar, rangkaian untuk DHT Tiny dapat digabungkan atau disematkan ke dalam proyek rangkaian yang ada. Dalam hal ini, pin header dan LED bersifat opsional.
Sirkuit juga dapat dibuat di papan terpisah dan dihubungkan ke Raspberry Pi Anda dengan beberapa kabel atau kabel penghubung.
Memrogram ATtiny85
Muat sketsa bernama DHT_Tiny_Breakout.ino ke ATtiny85 menggunakan programmer AVR Anda. Jika Anda tidak memiliki programmer, Anda dapat menggunakan Arduino Uno (atau papan serupa). Lihat satu atau beberapa artikel di bawah ini untuk mendapatkan bantuan.
- Memrogram ATtiny85 dengan Arduino Uno di Hackster.io
- Lokakarya Virtual:Memprogram ATtiny85 dengan Arduino
- Memrogram ATtiny dengan Arduino 1.6 (atau 1.0)
- Memrogram ATtiny dengan Arduino 0022
Saya menggunakan SparkFun Tiny AVR Programmer untuk memuat ATtiny85 saya.
Saya menjalankan chip saya pada 16 MHz. Lihat artikel saya yang berjudul “ATtiny @ 16MHz ” untuk petunjuk tentang cara melakukannya.
Saat menggunakan ATtiny85, sketsa slave memerlukan TinyWireS perpustakaan untuk diinstal di folder perpustakaan Anda. Pustaka ini dapat diunduh dari https://github.com/rambo/TinyWire.
Breadboard Sirkuit
Langkah pertama adalah membuat DHT Tiny aktif dan berjalan di papan tempat memotong roti. Menggunakan papan tempat memotong roti ukuran setengah, buat sirkuit dengan mengikuti skema dan diagram papan tempat memotong roti yang disertakan dalam proyek.
Berikut adalah beberapa tips untuk membantu membuatnya lebih mudah:
- Buat DHT Tiny di papan tempat memotong roti lalu gunakan papan tempat memotong roti lain untuk koneksi antara DHT Tiny dan Uno atau Raspberry Pi.
- Disarankan menggunakan pin header karena memudahkan untuk menghubungkan dan memutuskan DHT Tiny sebagai satu kesatuan.
- Jika Anda berencana untuk menggunakan header laki-laki break-away standar pada papan tempat memotong roti, Anda perlu menyesuaikan pelek plastik hitam ke tengah pin sehingga pas di papan tempat memotong roti (lihat gambar di bawah). Gunakan tang berujung jarum untuk melakukan penyesuaian.
- Jika Anda memiliki header laki-laki 0.1″ break-away ekstra panjang, gunakan ini di papan tempat memotong roti Anda. Tetap menggunakan header ukuran normal jika Anda berencana untuk menyolder komponen ke PCB. Ekstra panjang tidak disarankan untuk PCB.
- Anda akan membutuhkan kabel jumper female-female jika menggunakan pin header pada breadboard. Jika Anda tidak memilikinya, hilangkan pin header dan gunakan kabel jumper male-male di antara kedua papan.
- Jauhkan kabel dari chip sebanyak mungkin sehingga lebih mudah untuk memasukkan jari dan menarik chip keluar untuk pemrograman.
Di bawah ini adalah beberapa gambar versi papan tempat memotong roti dari DHT Tiny saya.
Menghubungkan Arduino Uno
Jika Anda tertarik dengan pengujian cepat, demonstrasi, atau Anda kesulitan menjalankannya dengan Raspberry Pi, Anda dapat menghubungkan DHT Tiny ke Arduino Uno (atau perangkat serupa).
- Hubungkan GND sematkan ke GND di Uno.
- Hubungkan 5V sematkan ke 5V di Uno.
- Hubungkan RST sematkan ke H4 di Uno.
- Hubungkan SDA sematkan ke A4 di Uno.
- Hubungkan SCL sematkan ke A5 di Uno.
- Hubungkan INT sematkan ke H3 di Uno dan aktifkan LED melalui jumper.
Muat dan jalankan sketsa bernama DHT_Tiny_Master.ino . Sketsa ini akan menampilkan output di Serial Monitor .
Saat menghubungkan I2C antara dua papan, penting untuk memiliki resistor pull-up pada jalur SDA dan SCL. Di sirkuit ini, ada dua 4.7K yang terhubung antara pin dan 5V.
Di bawah ini adalah beberapa gambar papan tempat memotong roti DHT Tiny yang terhubung ke Arduino Uno.
Menghubungkan ke Raspberry Pi
Jika Anda tertarik dengan tes cepat, demonstrasi, atau Anda kesulitan menjalankannya dengan Raspberry Pi, Anda dapat menghubungkan DHT Tiny ke Arduino Uno (atau perangkat serupa).
- Hubungkan GND sematkan ke GND (pin 9) di Raspberry Pi 2/3.
- Hubungkan 5V sematkan ke 5V (pin 2) di Raspberry Pi 2/3.
- Hubungkan RST sematkan ke GPIO4 (pin 7) pada Raspberry Pi 2/3.
- Hubungkan SDA sematkan ke SDA (pin 3) pada Raspberry Pi 2/3.
- Hubungkan SCL sematkan ke SCL (pin 5) di Raspberry Pi 2/3.
- Hubungkan INT sematkan ke GPIO17 (pin 11) dan aktifkan LED.
Saat menghubungkan I2C antara dua papan, penting untuk memiliki resistor pull-up pada jalur SDA dan SCL. Di sirkuit ini, ada dua 4.7K yang terhubung antara pin dan 3V3.
SANGAT PENTING! Board DHT Tiny akan ditenagai oleh pin 5V pada Raspberry Pi, tetapi resistor pull-up harus terhubung ke pin 3V3 pada Raspberry Pi (3V3 pada pin 1 dan 17).
Di bawah ini adalah beberapa gambar papan tempat memotong roti DHT Tiny yang terhubung ke Raspberry Pi 3.
Menjalankan Aplikasi Windows 10
Dapatkan kode dari tautan repositori GitHub di bagian bawah proyek dan unzip ke komputer Anda. Buka kode sumber Aplikasi Universal di Visual Studio 2015 dan terapkan ke Raspberry Pi dan luncurkan dari konsol admin atau jalankan dalam mode debug dari Visual Studio.
Jika ini pertama kalinya Anda menjalankan kode dari Visual Studio untuk aplikasi Windows 10 IoT Core, lihat artikel berikut dari Microsoft:
- Menyebarkan Aplikasi dengan Visual Studio
Lihat demonstrasi video di bawah ini untuk melihat aplikasi yang berjalan di Raspberry Pi 3 saat terhubung ke DHT Tiny.
Sorotan Aplikasi
Aplikasi Windows 10 UWP adalah aplikasi demonstrasi yang memamerkan semua fitur DHT Tiny. Kode akan menampilkan suhu saat ini, kelembaban dan nilai register lainnya dari perangkat. UI juga menyediakan cara untuk mengubah konfigurasi perangkat termasuk alamat perangkat.
Perpustakaan Kecil DHT
Contoh kode menggunakan library yang ditulis untuk berinteraksi dengan DHT Tiny. Pustaka ini siap digunakan dan dapat disertakan langsung di semua aplikasi Anda.
Dapatkan Perpustakaan dari NuGet
Jika Anda tidak ingin memasukkan proyek secara langsung ke dalam aplikasi Anda, cukup unduh pustaka DHT Tiny dari NuGet menggunakan perintah yang ditunjukkan di bawah ini. Buka Package Manager Console di Visual Studio dan ketik perintah.
PM> Install-Package IoT.DhtTiny
Memindai Bus i2c untuk Perangkat
Pustaka DHT Tiny menyertakan metode yang akan mencari bus i2c untuk perangkat DHT Tiny dan mengembalikan daftar alamat. Daftar ini dapat digunakan untuk menginisialisasi satu atau lebih perangkat yang ditemukan. Ini sangat berguna jika Anda mengubah alamat perangkat tetapi tidak dapat mengingat apa yang Anda setel alamatnya. Perhatikan bahwa metode callback adalah opsional.
// ***// *** Hitung perangkat DHT Tiny di bus i2c.// ***IEnumerable address =menunggu DhtTiny.FindAllDhtTinyAsync(this. FindAllDhtTinyCallback);// ***// *** Metode panggilan balik// ***private void FindAllDhtTinyCallback(I2cScanEventArgs e) { int persenLengkap =(int)((ganda)e.Indeks Saat Ini / (ganda)e.Total * 100.0 hari); this.Status =string.Format("Menemukan perangkat [0x{0:X2}] [{1}%] [Ditemukan ={2:##0}]...", e.CurrentAddress, persen Lengkap, e.Items .Count());}
Skema DHT Tiny Breakout untuk Raspberry Pi
Demonstrasi Perangkat Lunak
Video ini mendemonstrasikan Aplikasi Universal yang berjalan di Raspberry Pi 3 yang terhubung ke DHT Tiny di breadboard.
[VIDEO SEGERA HADIR]
Membuat Perangkat Final
Cara termudah, dan paling hemat biaya untuk membuat papan adalah dengan menggunakan papan prototipe PCB seperti Perma-Proto Quarter-sized Breadboard PCB dari Adafruit. Gambar di bawah ini menunjukkan breakout menggunakan papan prototipe ini. Catatan Saya menggunakan dremel untuk melepas bagian power rail dari papan.
Lihat Lebih Banyak: DHT Tiny Breakout untuk Raspberry Pi