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

Tujuan
- Memahami konsep komunikasi Modbus RTU dengan Raspberry Pi sebagai master dan sensor sebagai slave.
- Mampu mengintegrasikan sensor SHT20 dengan Raspberry Pi melalui protokol Modbus RTU.
- Menggunakan USB to RS485 untuk komunikasi antara master dan slave.
Alat dan Bahan
- Hardware:
- Raspberry Pi (dengan OS Raspbian terinstal).
- USB to RS485 Converter.
- Sensor SHT20 (Modbus RTU ready).
- Kabel RS485.
- Breadboard dan jumper kabel (opsional).
- Software:
- Python 3.
- Library pymodbus untuk Python.
- Terminal emulator (misalnya, minicom atau Putty).
- Datasheet sensor SHT20 untuk konfigurasi register.
Dasar Teori
- Modbus RTU: Protokol komunikasi serial berbasis master-slave. Master (Raspberry Pi) akan mengirim permintaan data dan slave (SHT20) akan merespons.
- Sensor SHT20: Sensor ini mendukung protokol Modbus RTU untuk membaca suhu dan kelembapan melalui register tertentu.
- RS485: Menggunakan dua kabel (A+ dan B-) untuk komunikasi serial jarak jauh dengan daya tahan terhadap gangguan.
Langkah Kerja
- Persiapan Lingkungan
- Hubungkan USB to RS485 ke Raspberry Pi.
- Sambungkan kabel RS485 ke sensor SHT20 dengan pin A(+) dan B(-).
- 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
- Pastikan ID slave, baudrate, parity, dan stopbits pada sensor sudah sesuai (lihat datasheet sensor).
- 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
No | Materi | Tanggal | Waktu | Harga | Lokasi | View | Action |
---|---|---|---|---|---|---|---|
1 | IOT PLC SCADA Siemens | 7-8 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
2 | IOT PLC SCADA Omron | 14 - 15 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
3 | IOT PLC SCADA Schneider | 21-22 Juni 2025 | 08.00 -16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
4 | IOT PLC SCADA Allen Bradley | 28-29 Juni 2025 | 08.00-16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
- Modifikasi program untuk membaca data dari beberapa register sekaligus.
- Logging data suhu dan kelembapan ke file CSV secara berkala.
- 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.