elektronika

Membaca Suhu dan Kelembaban dengan Sensor SHT20 Menggunakan Modbus RTU pada Raspberry Pi Pico W

Tujuan Pembelajaran:

  • Memahami konsep dasar komunikasi Modbus RTU.
  • Mengimplementasikan komunikasi antara Raspberry Pi Pico W dan sensor SHT20 menggunakan protokol Modbus RTU.
  • Membaca dan mengonversi data suhu dan kelembaban dari SHT20 menggunakan MicroPython.

Alat dan Bahan:

  1. Raspberry Pi Pico W
  2. Sensor SHT20
  3. TTL to RS485 converter
  4. Breadboard dan jumper wires
  5. Kabel USB untuk power dan komunikasi
  6. Software Thonny IDE (atau IDE lain yang mendukung MicroPython)

Dasar Teori:

  1. Raspberry Pi Pico W:

Raspberry Pi Pico W adalah mikrokontroler berbasis RP2040 yang mendukung komunikasi nirkabel dan berbagai protokol komunikasi seperti UART, SPI, dan I2C.

  1. Sensor SHT20:

SHT20 adalah sensor suhu dan kelembaban dengan akurasi tinggi. Sensor ini menggunakan protokol komunikasi Modbus RTU untuk pengambilan data. Data yang dikirim oleh sensor SHT20 adalah dalam bentuk register yang perlu dikonversi menjadi suhu dan kelembaban.

  1. Modbus RTU:

Modbus RTU adalah protokol komunikasi serial yang sering digunakan untuk menghubungkan perangkat seperti sensor dan aktuator dalam sistem otomasi industri. Dalam protokol ini, master mengirimkan perintah kepada slave, dan slave merespons dengan data.

  1. Konversi Data Sensor:

Data suhu dan kelembaban dari sensor SHT20 dikirim dalam bentuk mentah melalui register Modbus. Untuk mendapatkan suhu dalam derajat Celsius dan kelembaban dalam persen (%RH), data register perlu dikonversi menggunakan rumus yang diberikan oleh produsen sensor:

  • Suhu (°C) = -46.85 + (175.72 * nilai suhu mentah / 65536)
  • Kelembaban (%RH) = -6 + (125.0 * nilai kelembaban mentah / 65536)

Langkah Kerja:

  1. Rangkaian Perangkat Keras:
  1. Hubungkan TTL to RS485 converter ke Raspberry Pi Pico W:
    • TXD (Pico W)DI (RS485 Converter)
    • RXD (Pico W)RO (RS485 Converter)
    • GND (Pico W)GND (RS485 Converter)
    • VCC (Pico W)VCC (RS485 Converter)
  2. Hubungkan sensor SHT20 ke konverter RS485 (A+, B-):
    • A (RS485)A (SHT20)
    • B (RS485)B (SHT20)
  3. Pastikan semua sambungan terhubung dengan benar.
  1. Inisialisasi dan Konfigurasi MicroPython:
  1. Buka Thonny IDE dan hubungkan Raspberry Pi Pico W.
  2. Instal library micropython-modbus jika belum ada di Raspberry Pi Pico W. Anda dapat mengunggahnya melalui Thonny.

Jika library sudah ada, lanjutkan ke tahap pemrograman.

  1. Membuat Program untuk Membaca Suhu dan Kelembaban dari SHT20:
  1. Buat file baru di Thonny, lalu salin kode berikut ke dalam file:
import time
from machine import Pin, UART
from umodbus.serial import Serial as ModbusRTUMaster

# Define the pins for Modbus communication (TX and RX)
rtu_pins = (Pin(0), Pin(1)) # Adjust these pins based on your wiring

# Define the starting address to read from (temperature and humidity registers)
starting_address = 1 # Adjust this based on your register mapping
# Define the quantity of registers to read (2 for temperature and humidity)
qty = 2

# Initialize Modbus RTU Master
host = ModbusRTUMaster(baudrate=9600, data_bits=8, stop_bits=1, parity=None, pins=rtu_pins, ctrl_pin=None, uart_id=0)

# Continuous reading loop
while True:
try:
print('INPUT REGISTER request test.')
print('Reading qty={} from starting address {}:'.format(qty, starting_address))

# Read input registers from the slave device
values = host.read_input_registers(slave_addr=1, starting_addr=starting_address, register_qty=qty, signed=False)

# Extract temperature and humidity values
temperature = (values[0] / 10.0) # Convert to Celsius
humidity = (values[1] / 10.0) # Convert to percentage

# Print the results
print('Temperature: {:.1f}°C, Humidity: {:.1f}%'.format(temperature, humidity))

except Exception as e:
print('An error occurred:', e)

# Wait for 5 seconds before the next reading
time.sleep(5)
  1. Simpan program tersebut di Raspberry Pi Pico W, misalnya dengan nama sht20_modbus.py.
  2. Jalankan program dengan menekan tombol Run di Thonny.
  1. Pengujian dan Verifikasi:
  • Setelah program dijalankan, Raspberry Pi Pico W akan mencoba membaca data dari sensor SHT20 melalui Modbus RTU.
  • Data suhu dan kelembaban akan ditampilkan di terminal Thonny setiap 2 detik.

Contoh output:

Temperature: 23.45 C

Humidity: 45.67 %

  • Jika ada kesalahan atau sensor tidak merespons, program akan menampilkan pesan error.

Tugas Tambahan:

  1. Modifikasi program agar data suhu dan kelembaban ditampilkan dalam satuan yang berbeda, misalnya Fahrenheit untuk suhu.
  2. Tambahkan fitur untuk menyimpan data yang dibaca ke file atau mengirimnya melalui jaringan.

Kesimpulan:

Dengan mengikuti jobsheet ini, Anda telah berhasil membuat sistem untuk membaca data suhu dan kelembaban dari sensor SHT20 menggunakan Modbus RTU pada Raspberry Pi Pico W. Anda juga telah mempelajari cara menggunakan komunikasi serial dengan protokol Modbus RTU dan mengonversi data register mentah menjadi nilai yang bisa dibaca manusia.

Related Articles

Leave a Reply

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