Pemantauan Suhu Akurat di Lemari Server dengan Raspberry Pi
Masalah
Setelah merenovasi kantor rumah saya, saya menyiapkan lemari untuk semua elektronik saya – server, NAS, penerima AV, dan lebih banyak. Saya memasang kipas pengasap untuk mengeluarkan udara panas ke kantor yang berdekatan, tetapi lemari tetap sekitar 90 °F (32 °C) meskipun kipas berjalan. Meskipun ini masih dalam batasan sebagian besar hardware, ini lebih hangat daripada yang saya inginkan. Untuk menentukan apakah pendinginan tambahan diperlukan, saya perlu cara yang andal untuk mencatat perubahan suhu selama beberapa hari.
Menggunakan Raspberry Pi untuk tugas ini ideal. Saya sebelumnya telah bekerja dengan sensor analog TMP36GZ pada Arduino, tetapi pin GPIO Pi hanya digital, sehingga sensor analog tidak cocok tanpa ADC tambahan. Saya ingin solusi sederhana yang memungkinkan saya segera mulai mengkode.
Sensor suhu digital DS18B20 memecahkan masalah. Ia berkomunikasi melalui bus satu kawat, yang cocok dengan BCM GPIO4 (pin 7) Raspberry Pi. Sensor dapat diakses langsung dari terminal Linux, dan beberapa unit DS18B20 dapat berbagi garis data yang sama.
Pembuatan
- Gunakan potongan kabel CAT5e pendek dan solder tiga pin DS18B20: orange = +3,3 V, brown = GND, green = DATA.
- Pasang resistor pull-up 4,7 kΩ antara garis 3,3 V dan data.
- Lipat kabel yang terbuka dengan kawat listrik dan susut-kantong bundel untuk perlindungan.
- Pasang konektor jumper betina di ujung kabel untuk koneksi cepat ke splitter.
- Buat dua splitter 2-jantan-ke-1-betina Y untuk menggabungkan VDD, GND, dan DATA dari dua sensor ke pin tunggal Pi.
- Sambungkan splitter ke Pi: 3,3 V ke pin 1, GND ke pin 6, DATA ke pin 7.
- Letakkan sensor di dalam lemari – satu di setiap sisi kipas pengasap – untuk menangkap variasi suhu.
Di bawah ini adalah foto hasil pembuatan. Perhatikan tiga splitter yang rapi dicolok ke pin GPIO Pi.
Membaca Sensor dari Terminal
Setelah DS18B20 dihubungkan, Anda dapat membaca outputnya langsung dari sistem berkas. Perintah berikut memuat modul kernel yang diperlukan, menampilkan perangkat yang tersedia, dan menampilkan data suhu untuk sensor tertentu.
# Muat driver 1-Wire
sudo modprobe w1-gpio
sudo modprobe w1-therm
# Daftar perangkat yang terpasang (misalnya, 28-0000055f311a)
ls /sys/bus/w1/devices
# Baca suhu dari sensor tertentu
cat /sys/bus/w1/devices/28-0000055f311a/w1_slave
Berkas w1_slave mengembalikan dua baris. Baris pertama berisi pemeriksaan CRC; baris kedua diakhiri dengan t=XXXXX, di mana XXXXX adalah suhu dalam ribuan derajat Celsius. Konversi ke Fahrenheit jika diinginkan.
Dengan pengaturan ini, Anda dapat mencatat pembacaan ke berkas CSV, mendorong data ke server jarak jauh, atau memicu peringatan jika suhu melebihi ambang. Akurasi DS18B20 adalah ±0,5 °C, lebih dari cukup untuk pemantauan hardware rutin.
Untuk instruksi yang lebih rinci dan kode contoh, kunjungi dokumentasi GPIO Raspberry Pi dan panduan DS18B20 Adafruit.