Contents
Salah satu sensor suhu di pasaran adalah DS18B20 buatan Analog Devices Inc./Maxim Integrated. Sensor ini merupakan sensor temperatur dengan output sinyal berupa data serial dengan format bus one wire (1-wire) standar Maxim (propietary protocols). Dengan demikian kita harus mengikuti format data ini agar dapat membaca output sensor. Untuk detail format protokol one-wire sensor DS18b20 dapat dibaca di datasheet berikut ini. Di pasaran ada dua macam jenis sensor ini, ada yang bentuknya seperti transistor (indoor), ada pula yang didesain untuk keperluan outdoor dengan bentuk seperti silinder alumunium tahan air. Tegangan operasional sensor DS18b20 berada dalam range 3-5.5V sehingga dapat digunakan dalam sistem Raspberry Pi dan NodeMCU yang bekerja di tegangan 3.3V maupun untuk Arduino yang bekerja di level tegangan 5V.
Berikut ini adalah spesifikasi teknis sensor suhu DS18b20
- Tegangan kerja : 3 – 5.5V
- Range pembacaan suhu : -55°C – 125°C
- Akurasi : +/-0.5 ºC
- Output : data
- Protokol : 1-wire
Percobaan sensor suhu DS18b20 – Raspberry Pi – Python
Pada percobaan kali ini, kita akan mencoba mengambil data sensor suhu DS18b20 di Raspberry Pi menggunakan bahasa Python.
Alat dan Bahan
- Papan modul Basic Trainer Kit
- Jumper female to female 3 pcs
- Power supply 12V
- Laptop
- Hotspot WIFI (bisa menggunakan smartphone)
- aplikasi Putty dan Notepad++ (settingan kedua software ini bisa di baca di artikel “persiapan Raspberry Pi“)
Gambar rangkaian untuk percobaan ini adalah sebagai berikut:
Sedangkan wiring di papan modul Basic Trainer Kit adalah sbb:
Konfigurasi pin
DS18B20 | Pin Raspi | Pin GPIO |
VCC | 1 | |
Data | 7 | GPIO4 |
GND | 6 |
Catatan: pada rangkaian di atas, perlu Anda perhatikan bahwa pada jalur bus 1-wire perlu dihubungkan dengan resistor pull-up 4K7 ohm (di papan modul sudah tersedia, jadi cukup menghubungkan kabel jumpernya saja). Resistor pull up ini digunakan untuk ‘mengangkat’ level tegangan pada bus one wire untuk memastikan level tegangan digital terpenuhi agar tidak ada salah pembacaan di sisi controllernya (Raspberry Pi)
Tampilan wiring di papan modul Basic Trainer Kit adalah sebagai berikut
Setelah hardware sudah siap, kini saatnya kita menyiapkan sisi software-nya. Perlu untuk Anda ketahui, untuk menggunakan protokol one wire di Raspi perlu ada beberapa hal yang perlu di setting terlebih dahulu.
- Mengaktifkan interface 1-wire di Raspbery Pi
Dari Putty ketik perintah ‘sudo raspi config’ kemudian pilih ‘Interfacing Options’ – pilih I2C – tekan tombol ‘Ya’ untuk meng-enable interface I2C di Raspi - Mendefinisikan pin GPIO yang digunakan untuk mengambil data suhu
Dari putty, ketik ‘sudo nano /boot/config.txt’, scroll down sampai baris akhir, tambahkan ‘dtoverlay=w1-gpio, gpiopin=4’ (tanpa tanda petik). Tekan tombol CTRL-X, pilih Y untuk keluar dan menyimpan konfigurasi baru - Mengaktifkan pin GPIO sebagai pin one wire
Dari Putty, ketik perintah ‘sudo modprobe w1-gpio’ [Enter] dan ‘sudo modprobe w1-therm’ [Enter] - Membaca id sensor (opsional)
- Menginstal library python yang dibutuhkan
Masih di Putty, ketikkan ‘pip3 install w1thermsensor==2.2.0’, tunggu sampai selesai instalasinya. Pastikan WIFI hotspot terhubung dengan internet
Catatan: pip adalah perintah untuk menginstal library khusus untuk Python3. Jadi nanti kita akan menggunakan Python 3 (yang terinstal di Raspi adalah Python 3.7.3) daripada menggunakan Python 2 (versi 2.7) seperti yang biasa kita gunakan. Mengapa menggunakan Python 3? karena setelah saya coba , semua function dan class di dalam library w1thermsensor dapat berfunsi dengan baik jika dijalankan di Python3. Kalau di Python2 ada beberapa class yang tidak dikenal.
Setelah semua persiapan di atas selesai dilakukan, buat script sederhana berikut ini untuk membaca suhu output dari sensor DS18b20. Buka Notepad++ Anda, koneksikan ke Raspi, isikan script berikut ini dan simpan dengan nama “ds18b20.py” (wajib dengan tanda petik dua)
import time from w1thermsensor import W1ThermSensor sensor = W1ThermSensor() while True: suhu = sensor.get_temperature() print("Suhu: %s celsius" % suhu) time.sleep(3)
Jalankan script di atas melalui aplikasi Putty dengan perintah ‘python3 ds18b20.py’ dan lihat hasilnya di terminal
Penjelasan program:
- Baris [1-2] : memanggil library yang dibutuhkan
- Baris [3] : mendefinisikan sensor
- Baris [5-8] : loop untuk terus mengambil data suhu (baris 6), menampilkannya di terminal (baris 7), dengan interval 3 detik (baris 8)
Selamat, saat ini Anda sudah dapat mengambil data suhu dari sensor DS18B20 di Raspberry Pi 3 atau 4 menggunakan Python. Sekarang pertanyaannya, bagaimana caranya jika ada lebih dari satu sensor DS18b20 dalam sistem raspi Anda? Jawabannya adalah Anda perlu perlu memasukkan id sensor secara eksplisit saat mendefinisikan sensor dalam library ‘w1thermsensor’ di atas. Simak caranya berikut ini:
Cek id sensor menggunakan perintah berikut menggunakan Putty
cd /sys/bus/w1/devices ls
atau bisa juga melalui script Python (simpan dengan nama “ds_id.py”)
from w1thermsensor import W1ThermSensor for sensor in W1ThermSensor.get_available_sensors(): print("Sensor %s suhu %.2f" % (sensor.id, sensor.get_temperature()))
jalankan dengan Putty
Dari script di atas diketahui id sensor DS18b20 di papan modul Basic Trainer Kit adalah ‘00000c8f734f’. Kemudian masukkan id sensor ini saat mendefinisikan sensor di script pengambilan data suhu. Contoh scriptnya adalah sebagai berikut:
from w1thermsensor import W1ThermSensor, Sensor sensor = W1ThermSensor(Sensor.DS18B20, "00000c8f734f") suhu = sensor.get_temperature() print (suhu)
Simpan script di atas dengan nama “ds_exp.py” kemudian jalan di Putty
Nah dengan cara ini jika Anda punya banyak sensor dapat Anda definisikan dulu masing-masing id sensor, baru diambil suhunya melalui function ‘get_temperature()’
Demikian tutorial ‘Cara Mengambil Data Suhu Sensor DS18B20 dengan Raspberry Pi dan Python‘, sebagai summary, ada dua cara pengambilan data suhu ds18b20 melalui library w1thermsensor yakni secara implisit dan eksplisit. Library ini mem-wrapping protokol 1-wire dalam function-function siap pakai yang memudahkan penggunanya. Jangan lupa pula tambahkan resitor pullup (4K7 sd 10K ohm) pada pin data sensor, untuk memastikan data terbaca dengan baik di sisi controller. Demikian wrapping up tutorial kali ini, semoga bermanfaat untuk Anda
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com