Komunikasi Modbus RTU Menggunakan Raspberry Pi sebagai Master dan Sensor Suhu dan Kelembaban sebagai Slave

Tujuan
  1. Memahami konsep komunikasi Modbus RTU dengan Raspberry Pi sebagai master dan sensor sebagai slave.
  2. Mampu mengintegrasikan sensor SHT20 dengan Raspberry Pi melalui protokol Modbus RTU.
  3. Menggunakan USB to RS485 untuk komunikasi antara master dan slave.
Alat dan Bahan
  1. Hardware:
    • Raspberry Pi (dengan OS Raspbian terinstal).
    • USB to RS485 Converter.
    • Sensor SHT20 (Modbus RTU ready).
    • Kabel RS485.
    • Breadboard dan jumper kabel (opsional).
  2. Software:
    • Python 3.
    • Library pymodbus untuk Python.
    • Terminal emulator (misalnya, minicom atau Putty).
    • Datasheet sensor SHT20 untuk konfigurasi register.
Dasar Teori
  1. Modbus RTU: Protokol komunikasi serial berbasis master-slave. Master (Raspberry Pi) akan mengirim permintaan data dan slave (SHT20) akan merespons.
  2. Sensor SHT20: Sensor ini mendukung protokol Modbus RTU untuk membaca suhu dan kelembapan melalui register tertentu.
  3. RS485: Menggunakan dua kabel (A+ dan B-) untuk komunikasi serial jarak jauh dengan daya tahan terhadap gangguan.
Langkah Kerja

SHT20 to Raspberry PI

  • Persiapan Lingkungan
  1. Hubungkan USB to RS485 ke Raspberry Pi.
  2. Sambungkan kabel RS485 ke sensor SHT20 dengan pin A(+) dan B(-).
  3. Pastikan Raspberry Pi dinyalakan dan login ke terminal.
  • Instalasi Library Python
    • Update dan install Python serta pip:
sudo apt update

sudo apt install python3 python3-pip -y
    • Install library pymodbus:
pip3 install pymodbus
  • Konfigurasi Port Serial
    • Pastikan USB to RS485 terdeteksi:
ls /dev/ttyUSB*

Catat nama port (contoh: /dev/ttyUSB0).
    • Tambahkan pengguna ke grup dialout:
sudo usermod -a -G dialout $USER
  • Konfigurasi Sensor SHT20
  1. Pastikan ID slave, baudrate, parity, dan stopbits pada sensor sudah sesuai (lihat datasheet sensor).
  2. Konfigurasikan register sesuai tabel berikut:
    • Address Suhu: Misalnya, 0x0001.
    • Address Kelembapan: Misalnya, 0x0002.
  • Program Python untuk Master Modbus RTU
    • Buat file Python:
nano modbus_sht20.py
    • Masukkan kode berikut:
from pymodbus.client.sync import ModbusSerialClient as ModbusClient

import time  # Untuk membuat delay di antara loop




# Konfigurasi client

client = ModbusClient(

    method='rtu',

    port='/dev/ttyUSB0',  # Ubah sesuai port Anda

    baudrate=9600,

    stopbits=1,

    bytesize=8,

    parity='N',

    timeout=1

)




if client.connect():

    print("Koneksi ke sensor SHT20 berhasil!")

else:

    print("Gagal menghubungkan ke sensor SHT20.")

    exit(1)  # Keluar dari program jika koneksi gagal




try:

    while True:  # Loop terus-menerus

        # Baca suhu dari Input Register

        suhu = client.read_input_registers(address=1, count=1, unit=1)

        if not suhu.isError():

            print("Suhu (raw data):", suhu.registers[0])

            print("Suhu (°C):", suhu.registers[0] / 10.0)  # Asumsi scaling 10x

        else:

            print("Error membaca suhu:", suhu)




        # Baca kelembapan dari Input Register

        kelembapan = client.read_input_registers(address=2, count=1, unit=1)

        if not kelembapan.isError():

            print("Kelembapan (raw data):", kelembapan.registers[0])

            print("Kelembapan (%):", kelembapan.registers[0] / 10.0)  # Asumsi scaling 10x

        else:

            print("Error membaca kelembapan:", kelembapan)




        # Tunggu selama 2 detik sebelum iterasi berikutnya

        time.sleep(2)




except KeyboardInterrupt:

    print("\nProgram dihentikan oleh pengguna.")




except Exception as e:

    print("Error:", str(e))




finally:

    client.close()

    print("Koneksi ke sensor ditutup.")

Simpan file dan keluar.

  • Jalankan Program
    • Jalankan program:
python3 modbus_sht20.py
    • Periksa apakah data suhu dan kelembapan terbaca dengan benar.
  • Troubleshooting
    • Pastikan baudrate, parity, stopbits, dan ID unit pada Raspberry Pi sama dengan konfigurasi sensor SHT20.
    • Gunakan alat monitoring seperti Modbus Poll untuk memverifikasi komunikasi.

Tugas

Ads Jadwal Training bisaioti Offline
NoMateriTanggalWaktuHargaLokasiViewAction
1IOT PLC SCADA Siemens7-8 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
2IOT PLC SCADA Omron14 - 15 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
3IOT PLC SCADA Schneider21-22 Juni 202508.00 -16.002000000SurabayaSilabusDaftar Sekarang
4IOT PLC SCADA Allen Bradley28-29 Juni 202508.00-16.002000000SurabayaSilabusDaftar Sekarang
  1. Modifikasi program untuk membaca data dari beberapa register sekaligus.
  2. Logging data suhu dan kelembapan ke file CSV secara berkala.
  3. Tambahkan visualisasi data menggunakan library seperti Matplotlib.

Kesimpulan

Jelaskan bagaimana Raspberry Pi mengirimkan query Modbus RTU dan menerima data suhu serta kelembapan dari sensor SHT20.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Sekarang