Cara Menggunakan Sensor Suhu Digital DS18B20 di Raspberry Pi
Aditya Suranata - 30 Mei 2016 13:49:45 10
DS18B20 adalah sensor suhu digital seri terbaru dari Maxim IC (dulu yang buat adalah Dallas Semiconductor, lalu dicaplok oleh Maxim Integrated Products). Sensor ini mampu membaca suhu dengan ketelitian 9 hingga 12-bit, rentang -55degC hingga 125degC dengan ketelitian (+/-0.5degC ). Setiap sensor yang diproduksi memiliki kode unik sebesar 64-Bit yang disematkan pada masing-masing chip, sehingga memungkinkan penggunaan sensor dalam jumlah besar hanya melalui satu kabel saja (single wire data bus/1-wire protocol). Ini merupakan komponen yang luar biasa, dan merupakan batu patokan dari banyak proyek-proyek data logging dan kontrol berbasis temperatur di luar sana.
Fitur dari sensor suhu DS18B20
Sebagai acuan dan informasi pendukung, sensor ini memiliki fitur utama sebagai berikut:
- Antarmuka hanya menggunakan satu kabel sebagai komunikasi (menggunakan protokol Unique 1-Wire)
- Setiap sensor memiliki kode pengenal unik 64-bit yang tertanam di onboard ROM
- Kemampuan multidrop yang menyederhanakan aplikasi penginderaan suhu terdistribusi
- Tidak memerlukan komponen tambahan
- Juga bisa diumpankan daya melalui jalur datanya. Rentang dayanya adalah 3.0V hingga 5.5V
- Bisa mengukur temperatur mulai dari -55degC hingga +125 degC
- Memiliki akurasi +/-0.5 degC pada rentang -10 degC hingga +85 degC
- Resolusi sensor bisa dipilih mulai dari 9 hingga 12 bit
- Bisa mengkonversi data suhu ke 12-bit digital word hanya dalam 750 milidetik (maksimal)
- Memiliki konfigurasi alarm yang bisa disetel (nonvolatile)
- Bisa digunakan untuk fitur pencari alarm dan alamat sensor yang temperaturnya diluar batas (temperature alarm condition)
- Penggunaannya bisa dalam lingkungan kendali termostatis, sistem industri, produk rumahan, termometer, atau sistem apapun yang memerlukan pembacaan suhu.
Sensor DS18B20 memiliki dua jenis casing, yang umum beredar di pasaran yaitu casing biasa dan casing anti air (kiri).
Interfacing Sensor Suhu DS18B20 di Raspberry Pi
Pada tulisan kali ini saya akan mencoba berbagi cara interfacing sensor DS18B20 di Raspberry Pi. Tujuan dari tulisan ini adalah kita memahami bagaimana cara melakukan pembacaan sensor DS18B20 di Raspberry Pi yang terhubung melalui komunikasi 1-wire, menggunakan bahasa pemrograman Python 3.
Langkah pertama adalah, kita melakukan perakitan perangkat keras. Komponen yang kita perlukan disini adalah sensornya sendiri, baik tipe anti air atau yang biasa dan sebuah resistor/hambatan dengan nilai 4.7KO.
DS18B20 adalah "1-wire" sensor yang bisa dihubungkan secara parallel. Jika dipasang lebih dari satu, semua sensor berbagi pin yang sama, tapi resistor 4.7Knya cukup dipasang satu saja.
Fungsi dari resistor ini adalah sebagai 'pullup' dari jalur data, dan diperlukan untuk membantu memastikan proses transfer data tetap berjalan stabil dan baik.
Perhatian: meskipun bentuk dari DS18B20 yang biasa berkaki tiga, sangat mirip dengan sensor suhu analog LM35 atau sensor jenis lain seperti TMP36, sensor-sensor itu sama sekali tidak cocok dengan tulisan ini, jadi jangan coba-coba untuk menggunakan tipe lain karena dapat merusak sensor dan Raspberry Pi sendiri.
Skema Pengkabelan Single/Multi DS18B20 di Raspberry Pi
Kabel merah adalah tegangan positif 3.3V, hitam adalah negatif/ground, dan biru adalah Data.
Koding Program Pembacaan Sensor Suhu DS18B20 dengan Python 3
Pada console Raspberry pi, pertama kita perlu menginstall library w1thermsensor. Library ini mendukung pembacaan sensor digital 1-wire tidak hanya DS18B20 tapi juga sensor saudaranya seperti DS18S20 * DS1822 * DS18B20 * DS28EA00 * DS1825/MAX31850K.
Pertama kita aktifkan dulu modul kernel 1-wire. Buka file konfigurasi Raspberry Pi,
$ sudo nano /boot/config.txt
Cari baris yang berisi tulisan #Additional overlays and parameters are documented... dan tambahkan dibawahnya
dtoverlay=w1-gpio,gpiopin=4
sehingga menjadi:# Additional overlays and parameters are documented /boot/overlays/README
dtoverlay=w1-gpio,gpiopin=4
Tekan CTRL+X+Y enter untuk keluar dari nano. Lalu reboot Raspi:
$ sudo reboot
Setelah reboot, kita bisa menginstall w1thermsensor:
$ sudo apt-get install python3-w1thermsensor -y
Tunggu proses download dan instalasi selesai. Setelah itu, kita buka console Raspi lagi untuk mencari tahu kode unik dari sensor yang terpasang. Caranya cukup masuk ke direktori w1_bus_master1 menggunakan perintah ls:
$ ls /sys/devices/w1_bus_master1/
Akan muncul hasil seperti berikut:
28-000005504c8b w1_master_attempts w1_master_remove
driver w1_master_max_slave_count w1_master_search
subsystem w1_master_name w1_master_slave_count
uevent w1_master_pointer w1_master_slaves
w1_master_add w1_master_pullup w1_master_timeout
driver w1_master_max_slave_count w1_master_search
subsystem w1_master_name w1_master_slave_count
uevent w1_master_pointer w1_master_slaves
w1_master_add w1_master_pullup w1_master_timeout
Bisa terlihat yang saya bold dan garis bawahi adalah kode unik dari sensor. Kita ambil kodenya setelah tanda (-), angka 28 kita abaikan. Sehingga kode sensor saya adalah 000005504c8b.
Setelah mendapatkan kode unik sensor, kemudian buka Python 3, dan coba ketik perintah berikut untuk memastikan sensor suhu terpasang dengan baik:
$ sudo python3
>>> from w1thermsensor import W1ThermSensor as PembacaSensor
>>> sensorSuhu = PembacaSensor(PembacaSensor.THERM_SENSOR_DS18B20, "000005504c8b")
>>> sensorSuhu.get_temperature()
32.687
>>> sensorSuhu = PembacaSensor(PembacaSensor.THERM_SENSOR_DS18B20, "000005504c8b")
>>> sensorSuhu.get_temperature()
32.687
Dari hasil diatas, bisa terlihat suhunya adalah 32.687 derajat selsius. Selanjutnya, program bisa dikembangkan tanpa batas.
Sekian tulisan singkat ini, semoga bermanfaat dan apabila ingin berdiskusi silahkan kirim komentar atau gabung di Forum Miarana.
Tidak ada komentar:
Posting Komentar