TERMOMETER INFRAMERAH BERBASIS RASPBERRY PI PICO
ABSTRAK - Pengukuran suhu merupakan aspek penting dalam proses pengolahan makanan untuk menjaga kualitas pangan. Termometer kontak yang umum dipakai memiliki kelemahan karena sensor harus bersentuhan langsung dengan objek, sehingga berpotensi menimbulkan kontaminasi. Oleh karena itu, dikembangkan termometer inframerah non-kontak berbasis Raspberry Pi Pico dan sensor GY-906 (MLX90614) yang mengukur suhu minyak, air, maupun permukaan area dapur tanpa menyentuh objek. Hasil pengukuran ditampilkan pada layar OLED SSD1306 dalam bentuk nilai suhu digital yang disertai indikator grafik termometer vertikal, sehingga mudah dibaca oleh pengguna. Pengujian menunjukkan alat mampu membaca suhu objek secara non-kontak dengan respons cepat begitu tombol ukur ditekan.
Kata Kunci: Termometer Inframerah, Non-Kontak, Raspberry Pi Pico, GY-906, MLX90614, OLED SSD1306.
I. Pendahuluan
A. Latar Belakang
Pengukuran suhu merupakan aspek penting dalam proses pengolahan makanan untuk menjaga kualitas pangan. Termometer kontak yang umum dipakai memiliki kelemahan karena sensor harus bersentuhan langsung dengan objek, sehingga berpotensi menimbulkan kontaminasi. Untuk mengatasi hal itu, dikembangkan termometer inframerah non-kontak berbasis Raspberry Pi Pico dan sensor GY-906 (MLX90614) yang mengukur suhu minyak, air, maupun permukaan area dapur tanpa kontak langsung dengan objek.
Sensor GY-906 (MLX90614) bekerja dengan menangkap radiasi inframerah yang dipancarkan oleh permukaan objek, sehingga suhu dapat terbaca tanpa perlu menyentuh objek yang diukur. Pendekatan non-kontak ini dinilai lebih sesuai untuk lingkungan dapur maupun industri pengolahan makanan, karena mengurangi risiko kontaminasi silang antar-objek serta mempercepat proses pengukuran dibandingkan termometer konvensional.
B. Rumusan Masalah
- Bagaimana merancang alat ukur suhu non-kontak berbasis Raspberry Pi Pico dan sensor GY-906 (MLX90614)?
- Bagaimana menampilkan hasil pengukuran suhu secara real-time pada layar OLED?
- Bagaimana memastikan alat dapat bekerja secara cepat dan akurat untuk mengukur suhu minyak, air, dan permukaan benda?
C. Tujuan
- Merancang prototipe termometer inframerah non-kontak berbasis Raspberry Pi Pico.
- Mengimplementasikan pembacaan suhu menggunakan sensor GY-906 (MLX90614) melalui komunikasi I2C.
- Menampilkan hasil pengukuran suhu pada layar OLED SSD1306 dengan indikator grafik termometer.
II. Metodologi
Pembuatan prototipe ini dilakukan melalui beberapa tahapan sebagai berikut:
A. Studi Literatur
- Mempelajari Raspberry Pi Pico dan pemrograman MicroPython.
- Mempelajari komunikasi I2C untuk sensor dan layar OLED.
- Mempelajari prinsip kerja sensor inframerah GY-906 (MLX90614).
- Mempelajari pustaka ssd1306 untuk kendali layar OLED.
B. Perancangan Sistem
1. Desain Hardware
Merancang rangkaian yang terdiri atas:
- Raspberry Pi Pico
- Sensor Inframerah GY-906 (MLX90614)
- Layar OLED SSD1306 128x64
- Tombol Tekan
- Baterai Li Ion
- Saklar On-Off
2. Desain Software
Perangkat lunak dijalankan pada Raspberry Pi Pico menggunakan MicroPython. Program membaca data suhu dari sensor GY-906 (MLX90614) melalui jalur I2C, mengonversinya menjadi satuan derajat Celsius, lalu menampilkannya pada layar OLED dalam bentuk teks suhu digital yang disertai grafik termometer vertikal sebagai indikator visual. Saat tombol ukur ditekan, sensor membaca suhu objek di depannya; ketika tidak ditekan, layar menampilkan tampilan standby dengan animasi teks berjalan.
C. Pengujian
- Akurasi pembacaan suhu terhadap objek dengan suhu yang telah diketahui.
- Respons alat saat tombol ukur ditekan.
- Kejelasan tampilan suhu dan grafik pada layar OLED.
- Penanganan kondisi error saat sensor gagal membaca data.
D. Penyusunan Laporan
Menyusun laporan berdasarkan hasil perancangan, implementasi, dan pengujian sistem.
III. Tinjauan Pustaka
A. Raspberry Pi Pico
| Gambar 3.1 Mikrokontroler Raspberry Pi Pico |
B. Oled 0.96 Inch
| Gambar 3.2 Oled 0.96 Inch |
C. Sensor GY-906 (MLX90614)
D. Tombol Tekan
| Gambar 3.4 Tombol Tekan |
E. Saklar On-Off
F. Baterai Li Ion
G. Modul Step-Down LM2596
| Gambar 3.7 Modul Step-Down LM2596 |
H. Diagram Blok
I. Gambar Rangkaian
J. Gambar Pengawatan
K. Diagram Alir
L. Kode Program
Program pada Raspberry Pi Pico (MicroPython)
|
"""============================================================================ Pemrogram
: Kelompok 2 RE-3D Tgl. Praktikum : 14 Juni 2026 Termometer-Inframerah-Pico RaspberryPiPico-Termometer.py
Program untuk mengukur suhu objek secara non-kontak
menggunakan sensor inframerah GY-906 (MLX90614), dengan hasil
ditampilkan pada OLED. ==========================================================================="""
from machine import I2C, Pin import ssd1306 import font_big import time
# --- GY-906 --- I2C_ADDR =
0x5A REG_TOBJ1 =
0x07 i2c_sensor = I2C(0, sda=Pin(0), scl=Pin(1),
freq=100000)
# --- OLED SSD1306 128x64 --- i2c_oled = I2C(1, sda=Pin(2), scl=Pin(3),
freq=400000) oled =
ssd1306.SSD1306_I2C(128, 64, i2c_oled)
# ============================================================= # Sensor #
============================================================= def read_raw(register): try:
i2c_sensor.writeto(I2C_ADDR, bytes([register]), False) data
= i2c_sensor.readfrom(I2C_ADDR, 3) raw =
(data[1] << 8) | data[0]
if
raw & 0x8000:
return None
return raw except
OSError:
return None
def raw_to_celsius(raw): if raw is
None:
return None return
round((raw * 0.02) - 273.15, 1)
#
============================================================= # Grafik Termometer Vertikal (sisi kiri) #
============================================================= def draw_thermometer(fill_pct): tube_x =
10 tube_w =
6 tube_y =
4 tube_h =
38
bulb_y =
tube_y + tube_h bulb_r =
6
# Outline
tabung
oled.rect(tube_x - tube_w // 2, tube_y, tube_w, tube_h, 1)
# Isi
indikator level fill_h =
int((tube_h - 4) * fill_pct / 100)
if fill_h
> 0:
oled.fill_rect(
tube_x - tube_w // 2 + 1,
tube_y + (tube_h - 4) - fill_h + 2,
tube_w - 2,
fill_h, 1 )
# Bulb
bawah for dy in
range(-bulb_r, bulb_r + 1): for
dx in range(-bulb_r, bulb_r + 1):
if dx * dx + dy * dy <= bulb_r * bulb_r:
oled.pixel(tube_x + dx, bulb_y + dy, 1)
# Skala for i in
range(4): sy =
tube_y + i * (tube_h // 4)
oled.hline(tube_x + tube_w // 2, sy, 3, 1)
#
============================================================= # Tampilan Standby #
============================================================= def tampil_standby(offset):
oled.fill(0)
oled.text("Tekan Button", 10, 20 + offset)
oled.text("untuk ukur", 15, 33 + offset)
oled.show()
#
============================================================= # Tampilan Suhu #
============================================================= def tampil_suhu(suhu):
oled.fill(0) AREA_X =
24 AREA_W =
104 AREA_H =
64
if suhu
is not None: pct =
min(int(abs(suhu)), 100)
draw_thermometer(pct)
#
Garis pemisah
oled.vline(22, 0, 64, 1)
#
String suhu
suhu_str = f"{suhu}" if
"." in suhu_str:
bulat, desimal = suhu_str.split(".")
teks = f"{bulat}.{desimal}°C" else:
teks = suhu_str + "°C"
#
Hitung posisi teks agar center
total_w = font_big.string_width(teks, spacing=0)
x_start = AREA_X + (AREA_W - total_w) // 2
y_start = (AREA_H - font_big.height()) // 2
if
x_start < AREA_X:
x_start = AREA_X
#
Tampilkan suhu
font_big.draw_string(oled, x_start, y_start, teks, spacing=0) else:
oled.vline(22, 0, 64, 1)
draw_thermometer(0)
oled.text("ERROR", 40, 28)
oled.show()
#
============================================================= # Main Program # ============================================================= def main():
print("Siap. Tekan button untuk ukur suhu.")
anim_offset = 0 anim_dir
= 1 anim_step
= 2
# Button
pada GP15 button =
Pin(15, Pin.IN, Pin.PULL_DOWN)
while
True: if
button.value():
raw = read_raw(REG_TOBJ1)
suhu = raw_to_celsius(raw)
tampil_suhu(suhu)
if suhu is not None:
print("{} C".format(suhu))
print("Grafik = {} %".format(min(int(abs(suhu)), 100)))
else:
print("ERROR")
time.sleep(0.2) else:
tampil_standby(anim_offset)
anim_offset += anim_dir * anim_step
if anim_offset >= 8 or anim_offset <= -8:
anim_dir *= -1
time.sleep(0.1)
main() |
M. Cara Kerja Rangkaian
Saat sistem dinyalakan, Raspberry Pi Pico secara otomatis menginisialisasi dua jalur I2C terpisah. Jalur pertama terhubung ke sensor GY-906 (MLX90614) pada alamat 0x5A untuk membaca suhu objek, sementara jalur kedua terhubung ke layar OLED SSD1306 (128x64) yang menampilkan data. Selama tombol ukur belum ditekan, sistem berada dalam mode standby dengan menampilkan teks "Tekan Button untuk ukur" yang bergerak naik-turun secara halus di layar. Begitu tombol ditekan, program langsung membaca register objek (TOBJ1) dari sensor via I2C, lalu mengonversi nilai mentah tersebut menjadi satuan derajat Celsius sesuai skala sensor.
Hasil pengukuran tersebut kemudian ditampilkan pada layar OLED dalam format angka besar menggunakan bitmap font khusus. Tampilan ini didampingi oleh indikator grafik batang di sisi kiri layar, dengan tinggi isian grafik dihitung secara dinamis berdasarkan nilai absolut suhu dalam rentang 0–100% sehingga dapat merepresentasikan suhu rendah maupun suhu tinggi secara visual. Apabila terjadi gangguan komunikasi I2C yang menyebabkan sensor gagal memberikan data valid, program tidak berhenti secara keseluruhan, melainkan beralih menampilkan indikator "ERROR" sebagai tanda bahwa hasil pengukuran tidak dapat dipercaya. Pada pengujian yang dilakukan, alat ini membaca suhu objek secara non-kontak dengan respons cepat begitu tombol ditekan, sehingga cocok digunakan untuk mengukur suhu minyak, air, maupun permukaan area dapur tanpa kontak langsung dengan objek.
N. Foto Prototype
IV. Simpulan
Berdasarkan hasil perancangan dan pengujian, prototipe termometer inframerah non-kontak berbasis Raspberry Pi Pico dan sensor GY-906 (MLX90614) berhasil mengukur suhu objek tanpa kontak langsung, sehingga kontaminasi dapat dihindari. Hasil pengukuran ditampilkan secara real-time pada layar OLED SSD1306 dalam bentuk angka suhu digital yang disertai grafik termometer vertikal sebagai indikator visual, sehingga mudah dibaca oleh pengguna. Alat ini responsif saat tombol ukur ditekan dan mampu menangani kondisi kegagalan pembacaan sensor dengan menampilkan pesan error, sehingga dapat digunakan sebagai alat bantu pengukuran suhu non-kontak di lingkungan dapur maupun industri pengolahan makanan yang membutuhkan proses higienis.
V. Referensi
Melexis, 2020. MLX90614 Family - Single and Dual Zone Infra Red Thermometer Datasheet. Tersedia di: https://www.melexis.com/en/product/MLX90614 [Diakses pada 10 Juni 2026].
Raspberry Pi Ltd., 2025. Raspberry Pi Pico Documentation. Tersedia di: https://www.raspberrypi.com/documentation/microcontrollers/ [Diakses pada 10 Juni 2026].
MicroPython, 2025. MicroPython Documentation. Tersedia di: https://docs.micropython.org [Diakses pada 10 Juni 2026].
Solomon Systech, 2016. SSD1306 128x64 Dot Matrix OLED/PLED Segment/Common Driver Datasheet. Tersedia di: https://www.solomon-systech.com [Diakses pada 10 Juni 2026].
Komentar
Posting Komentar