TERMOMETER INFRAMERAH BERBASIS RASPBERRY PI PICO


Termometer Inframerah Berbasis Raspberry
Pi Pico
Kelas RE3-D Kelompok 2 Teori Sistem Terbenam

Elsa Sukma Hapsari¹, Rif'at Sungkar², Alandra Surya Seta Santosa³, Muhammad Iqbal Ramdhani⁴


Program Studi Teknologi Rekayasa Elektronika

Jurusan Teknik Elektro Politeknik Negeri Semarang 2025/2026

Jl. Prof. Soedarto, Tembalang, Kec. Tembalang, Kota Semarang, Jawa Tengah, 50275


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

  1. Bagaimana merancang alat ukur suhu non-kontak berbasis Raspberry Pi Pico dan sensor GY-906 (MLX90614)?
  2. Bagaimana menampilkan hasil pengukuran suhu secara real-time pada layar OLED?
  3. Bagaimana memastikan alat dapat bekerja secara cepat dan akurat untuk mengukur suhu minyak, air, dan permukaan benda?

C. Tujuan

  1. Merancang prototipe termometer inframerah non-kontak berbasis Raspberry Pi Pico.
  2. Mengimplementasikan pembacaan suhu menggunakan sensor GY-906 (MLX90614) melalui komunikasi I2C.
  3. 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

  1. Mempelajari Raspberry Pi Pico dan pemrograman MicroPython.
  2. Mempelajari komunikasi I2C untuk sensor dan layar OLED.
  3. Mempelajari prinsip kerja sensor inframerah GY-906 (MLX90614).
  4. Mempelajari pustaka ssd1306 untuk kendali layar OLED.

B. Perancangan Sistem

1. Desain Hardware

Merancang rangkaian yang terdiri atas:

  1. Raspberry Pi Pico
  2. Sensor Inframerah GY-906 (MLX90614)
  3. Layar OLED SSD1306 128x64
  4. Tombol Tekan
  5. Baterai Li Ion
  6. 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

  1. Akurasi pembacaan suhu terhadap objek dengan suhu yang telah diketahui.
  2. Respons alat saat tombol ukur ditekan.
  3. Kejelasan tampilan suhu dan grafik pada layar OLED.
  4. 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

Raspberry Pi Pico merupakan papan mikrokontroler yang menggunakan chip RP2040 sebagai pusat pemrosesan data. Mikrokontroler ini memiliki antarmuka I2C, SPI, UART, serta GPIO yang mendukung komunikasi dengan berbagai sensor dan perangkat output. Pada proyek ini, Raspberry Pi Pico berfungsi untuk membaca data suhu dari sensor GY-906 melalui komunikasi I2C, mengolah data tersebut menjadi nilai suhu dalam derajat Celcius, kemudian menampilkan hasil pengukuran pada layar OLED. Raspberry Pi Pico dipilih karena memiliki performa yang baik, konsumsi daya rendah, dan mudah diprogram menggunakan MicroPython.

B. Oled 0.96 Inch

Gambar 3.2 Oled 0.96 Inch

OLED (Organic Light Emitting Diode) 0,96 inci merupakan layar monokrom beresolusi 128 × 64 piksel yang banyak digunakan pada sistem embedded. Layar ini menggunakan komunikasi I2C sehingga hanya memerlukan dua jalur data untuk berkomunikasi dengan mikrokontroler. Pada proyek ini, OLED digunakan untuk menampilkan hasil pengukuran suhu, grafik termometer, serta informasi kondisi sistem. Penggunaan OLED memberikan tampilan yang jelas, kontras tinggi, serta konsumsi daya yang relatif rendah.

C. Sensor GY-906 (MLX90614)

Gambar 3.3 Sensor GY-906 (MLX90614)

Sensor GY-906 merupakan modul sensor suhu inframerah yang menggunakan IC MLX90614 untuk mengukur suhu objek tanpa kontak langsung. Sensor bekerja dengan mendeteksi radiasi inframerah yang dipancarkan oleh permukaan objek, kemudian mengubahnya menjadi nilai suhu. Komunikasi data dilakukan melalui antarmuka I2C sehingga memudahkan integrasi dengan Raspberry Pi Pico. Pada proyek ini, sensor GY-906 digunakan sebagai komponen utama untuk melakukan pengukuran suhu objek secara non-kontak.

D. Tombol Tekan

Gambar 3.4 Tombol Tekan

Tombol tekan adalah saklar tekan sesaat yang hanya akan terhubung selama tombol ditekan. Komponen ini banyak digunakan sebagai media masukan pada sistem mikrokontroler. Pada proyek ini, push button digunakan untuk memulai proses pengukuran suhu sehingga sensor hanya melakukan pembacaan ketika tombol ditekan. Penggunaan push button membuat proses pengukuran menjadi lebih mudah dan menghemat konsumsi daya sistem.

E. Saklar On-Off

Gambar 3.5 Saklar On-Off

Saklar merupakan komponen elektromekanik yang berfungsi untuk menghubungkan atau memutus aliran arus listrik pada suatu rangkaian. Pengoperasian saklar dilakukan secara manual sehingga pengguna dapat mengendalikan kondisi hidup atau mati sistem dengan mudah. Pada proyek ini, saklar ON-OFF dipasang pada jalur catu daya dari baterai menuju rangkaian utama. Penggunaan saklar memudahkan proses pengoperasian sekaligus membantu menghemat penggunaan daya baterai ketika alat tidak digunakan.

F. Baterai Li Ion

Gambar 3.6 Baterai Li Ion

Baterai Li Ion merupakan sumber daya listrik isi ulang yang memiliki kepadatan energi tinggi dan umur pakai yang relatif panjang. Baterai ini mampu menyediakan tegangan yang stabil untuk berbagai perangkat elektronik portabel. Pada proyek ini digunakan dua buah baterai Li-ion sebagai sumber catu daya eksternal sehingga alat dapat dioperasikan tanpa bergantung pada sumber listrik dari USB. Penggunaan baterai membuat sistem menjadi lebih portabel dan mudah digunakan di berbagai lokasi.

G. Modul Step-Down LM2596

Gambar 3.7 Modul Step-Down LM2596

Modul Step-Down LM2596 dalah rangkaian konverter DC-DC yang berfungsi menurunkan tegangan masukan menjadi tegangan keluaran yang lebih rendah dengan efisiensi tinggi. Modul ini umumnya digunakan untuk menyesuaikan tegangan dari sumber daya agar sesuai dengan kebutuhan perangkat elektronik. Pada proyek ini, modul step down digunakan untuk menurunkan tegangan dari dua baterai Li-ion menjadi tegangan kerja yang aman untuk Raspberry Pi Pico dan komponen lainnya. Dengan demikian, sistem memperoleh suplai tegangan yang lebih stabil dan aman.

H. Diagram Blok

Gambar 3.8 Blok Diagram Sistem

I. Gambar Rangkaian

Gambar 3.9 Rangkaian

J. Gambar Pengawatan

Gambar 3.10 Diagram Pengawatan

K. Diagram Alir

Gambar 3.11 Diagram Alir Sistem

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

Gambar 3.12 Perangkat Keras Projek

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].

VI. Lampiran

A. Link PPT         : https://canva.link/e1bwhyfb6puw0qk

B. Link YouTube : https://youtu.be/lQaRxeP_pSg?si=olJWPzuvVBQbvx4O

Komentar

Postingan populer dari blog ini

SISTEM KONVEYOR OTOMATIS DENGAN SENSOR INFRARED DAN KONTROL MANUAL

Pompa Air Otomatis Berbasis ATMega8535

SISTEM PEMANTAUAN SUHU DAN KELEMBABAN PADA SUATU RUANGAN MENGGUNAKAN SENSOR DHT22 BERBASIS MIKROKONTROLLER ARDUINO UNO ATMEGA328P