Pemantauan Suhu di Raspberry Pi
Ringkasan
Raspberry Pi adalah komputer papan tunggal kecil (SBC) yang dikembangkan di Inggris, oleh Raspberry Pi Foundation. Raspberry Pi menjalankan berbagai versi linux pada ARM dan memiliki satu set pin I/O yang dapat Anda gunakan untuk memasang komponen eksternal seperti sensor, tombol, dll. Sayangnya, Raspberry Pi tidak memiliki konverter Analog-ke-Digital bawaan. kami tidak dapat menggunakan sensor suhu analog seperti TMP36 yang berfungsi baik dengan Arduino, alternatifnya adalah menggunakan sensor suhu digital.
Bagian
Raspberry Pi
Sensor Suhu DS18B20
Resistor 4.8k Ohm
Pelat Prototipe
Pi Cobbler
papan tempat memotong roti setengah ukuran
Paket kawat jumper
Desain Dasar
Perangkat Keras
Dalam desain dasar, yang kita butuhkan hanyalah Raspberry Pi, Sensor Suhu DS18B20, Resistor 4.8k Ohm, Pi Cobbler, papan tempat memotong roti berukuran setengah, dan kabel jumper. Semuanya akan dimasukkan ke dalam papan tempat memotong roti untuk kemudahan pengujian dan desain.
Diagram Pengkabelan
Sensornya cukup unik karena dapat dihubungkan secara paralel, dan sebanyak sensor yang diinginkan dapat ditambahkan ke sistem. Sensor berkomunikasi menggunakan antarmuka serial kabel tunggal dan jika Anda menggunakan Rasbian pada Raspberry Pi, itu akan mengidentifikasi sensor sebagai perangkat serial yang terhubung. Namun, sensor harus disambungkan ke pin4 pada GPIO karena ini adalah satu-satunya pin yang (saat ini) memungkinkan komunikasi menggunakan protokol serial satu kabel.
Anda dapat menggunakan diagram ini dari panduan Adafruit tentang menyiapkan sensor suhu DS18B20 ke Raspberry Pi agar lebih mudah dipahami saat menghubungkan semuanya bersama-sama.
DS18B20
Anda dapat membeli DS18B20 dalam tiga bentuk, tersedia komponen tipe transistor biasa, versi tahan air dengan kabel panjang terpasang, dan versi suhu tinggi.
Ketiga DS18B20 termasuk antarmuka serial 1-kawat khusus serta logika kontrol dan sensor suhu itu sendiri. Ini menampilkan pengukuran digital ke Raspberry Pi dan tergantung pada distro Anda, versi terbaru Raspbian menyertakan cara untuk membaca pesan-pesan itu tanpa kerja ekstra. Jika Anda telah menghubungkan semuanya, Anda dapat mengujinya melalui baris perintah menggunakan perintah di bawah ini.
123456sudo modprobe w1–gpiosudo modprobe w1–thermcd /sys/bus/w1/deviceslscd 28–xxxx (ubah ini agar sesuai dengan milik Anda)cat w1_slave
Ketik perintah yang Anda lihat di atas ke jendela terminal. Arahkan ke direktori '/sys/bus/s1/devices', Dalam perintah di atas perintah 'cd' itu diatur ke direktori mulai '28-' Ini mungkin memiliki nama yang berbeda pada sistem Anda karena didasarkan pada serial DS18B20 nomor, jadi cd ke nama direktori apa pun yang ada.
Responsnya akan memiliki YA atau TIDAK di akhir baris pertama. Jika ya, maka suhu akan berada di ujung baris kedua, dalam 1/000 derajat C.
Perangkat Lunak
Setelah rangkaian disatukan, sekarang kita perlu menulis program untuk membaca data suhu dari sensor, dalam desain dasar program akan membaca data setiap detik dan menampilkan pembacaan ke stdout di terminal.
Bahasa perangkat lunak yang akan kita gunakan untuk membaca data dari sensor suhu DS18B20 adalah Python. Tambahkan ini ke file dan simpan sebagai 'temp_logger_basic.py'
1234567891011121314151617181920212223242526272829303132import osimport globimport timeos.system('modprobe w1-gpio')os.system('modprobe w1-therm')base_dir ='/sys/bus/w1/devices/'device_folder' +glob_folder( glob' )[0]device_file =device_folder + '/w1_slave'def read_temp_raw(): f =open(device_file, 'r') lines =f.readlines() f.close() return linesdef read_temp(): baris =read_temp_raw() while lines[0].strip()[–3:] !='YA': time.sleep(0.2) lines =read_temp_raw() equals_pos =lines[1].find('t=') if equals_pos !=– 1: temp_string =lines[1][equals_pos+2:] temp_c =float(temp_string) / 1000.0 temp_f =temp_c * 9.0 / 5.0 + 32.0 return temp_c, temp_fwhile Benar: waktu baca
Di bagian atas program, kami menyertakan modul yang akan digunakan dalam skrip, kemudian menjalankan perintah 'modprobe' yang diperlukan untuk memulai antarmuka. Tiga baris berikutnya, temukan file dari mana data dapat dibaca.
Ada dua fungsi yang menangani pembacaan suhu, 'read_temp_raw' mengambil dua baris pesan dari antarmuka. Fungsi 'read_temp' mengembalikan dua nilai, suhu dalam Celcius dan suhu dalam Fahrenheit setiap detik.
Berikut adalah output dari skrip.
123456789sculley@berry:/usr/local/temperature/$ sudo python ./temp_logger_basic.py(18.875, 65.975)(18.875, 65.975)(18.875, 65.975)(18.875, 65.975)(18.875, 65.975)(18.875, 65.975)( 18.875, 65.975) (18.875, 65.975)
Skrip harus dijalankan sebagai root, Anda juga perlu menggunakan python untuk memanggil skrip karena kami belum menambahkan Python shebang ke bagian atas skrip.
Jadi begitulah, Anda seharusnya berhasil memasang desain dasar dan menulis skrip dasar untuk membaca data suhu dari sensor suhu DS18B20. Sekarang kita dapat beralih ke desain yang lebih canggih.
Desain Lanjutan
Dalam desain lanjutan saya akan menunjukkan kepada Anda desain pencatat suhu saya yang telah saya solder komponen ke pelindung PCB yang dihubungkan ke Raspberry Pi dan disimpan di dalam kotak hitam kecil untuk menyembunyikan semuanya, kode berjalan setiap jam dan menyimpan data ke database MySQL, saya menggunakan ini untuk menampilkan data dalam Google Chart yang membuatnya lebih mudah untuk divisualisasikan.
Perangkat Keras
Untuk desain lanjutan kita memerlukan bagian yang sama dengan yang dasar kecuali Pi Cobbler (Raspberry Pi, Sensor Suhu DS18B20, Resistor 4.8k Ohm, papan tempat memotong roti setengah ukuran dan kabel jumper) tetapi kita juga membutuhkan PCB, saya membeli Raspberry Pi membuat prototipe pelindung dari Adafruit yang sangat bagus untuk membuat desain semi permanen.
Untuk detail lebih lanjut:Pemantauan Suhu pada Raspberry Pi