LAM3




1. Prosedur [Kembali]

Pada percobaan ini digunakan dua buah Raspberry Pi Pico yang masing-masing berperan sebagai pengirim data (TX) dan penerima data (RX). Rangkaian ini terdiri dari potensiometer sebagai input analog di sisi pengirim, dan LCD 16x2 I2C sebagai media tampilan di sisi penerima.

Langkah-langkah Perakitan Rangkaian:

  1. Merangkai Raspberry Pi Pico Pengirim (TX):
    Raspberry Pi Pico pertama dipasang di atas breadboard. Sebuah potensiometer dihubungkan ke pin GPIO 26 yang berfungsi sebagai input analog (ADC). Kaki tengah potensiometer dihubungkan ke GPIO 26, sedangkan kedua kaki sisinya masing-masing dihubungkan ke 3.3V dan GND.
    Selanjutnya, sambungkan pin GPIO 0 (TX) pada Raspberry Pi Pico ini ke pin GPIO 1 (RX) di Raspberry Pi Pico penerima. Ground kedua Raspberry Pi Pico disatukan agar memiliki referensi tegangan yang sama.

  2. Merangkai Raspberry Pi Pico Penerima (RX):
    Raspberry Pi Pico kedua dipasang di atas breadboard lain. Sebuah LCD 16x2 I2C dihubungkan ke Pico ini melalui protokol I2C, dengan koneksi SDA ke GPIO 4 dan SCL ke GPIO 5. Pin VCC LCD dihubungkan ke 3.3V, sedangkan GND ke ground Raspberry Pi Pico.
    Lalu, pin GPIO 1 (RX) di Pico penerima disambungkan ke pin GPIO 0 (TX) dari Pico pengirim menggunakan kabel jumper.

  3. Penyambungan Ground:
    Agar komunikasi UART berjalan dengan baik, kedua Raspberry Pi Pico dihubungkan ke jalur ground yang sama. Ini penting untuk menyamakan referensi tegangan antara kedua device.

  4. Penyambungan Daya dan Komunikasi USB:
    Kedua Raspberry Pi Pico dihubungkan ke laptop menggunakan kabel USB. Sambungan ini digunakan baik untuk memberikan daya maupun untuk memprogram dan memonitor hasil melalui Thonny IDE.

  5. Upload Program:
    Setelah semua rangkaian terpasang, Raspberry Pi Pico pengirim diprogram dengan script TX yang bertugas membaca nilai ADC dari potensiometer, memformat data, dan mengirimkannya via UART.
    Raspberry Pi Pico penerima diprogram dengan script RX untuk membaca data dari UART, mendekodekan data, dan menampilkan hasilnya di LCD 16x2.

rangkaian dapat berjalan sesuai fungsinya, yaitu mengirim nilai analog dari potensiometer melalui UART dan menampilkannya di LCD penerima secara real-time.

2. Hardware dan Diagram Blog [Kembali]

Hardware :

  • Raspberry pi pico


  • Potensiometer


  • LCD



Diagram Blok






prinsip kerja:

Pada sistem ini digunakan dua buah Raspberry Pi Pico yang berkomunikasi menggunakan protokol UART (Universal Asynchronous Receiver Transmitter). Masing-masing Raspberry Pi Pico memiliki peran berbeda, yaitu sebagai pengirim data (TX) dan penerima data (RX).

Di sisi pengirim (TX), sebuah potensiometer dihubungkan ke salah satu pin ADC (Analog to Digital Converter), yaitu pada pin GPIO 26. Nilai tegangan analog dari potensiometer dibaca oleh Raspberry Pi Pico melalui ADC dan dikonversi menjadi nilai digital dalam rentang 0 hingga 65535. Nilai digital ini kemudian diformat menjadi sebuah string dengan format:

POT:<nilai>\n
POT:34567

Setelah itu, string ini dikirim melalui UART0 menggunakan pin GPIO 0 sebagai TX dan GPIO 1 sebagai RX, dengan kecepatan komunikasi baudrate 9600 bps. Untuk memastikan proses berjalan lancar, data yang dikirimkan juga ditampilkan di console Thonny sebagai debug.

Di sisi penerima (RX), Raspberry Pi Pico menerima data serial dari TX melalui UART0. Program akan memeriksa apakah terdapat data masuk. Jika ada, data tersebut dibaca dan didekodekan dari bentuk byte ke string menggunakan format UTF-8. Kemudian program memeriksa apakah data yang diterima berformat POT:<nilai>. Jika sesuai, nilai yang didapat akan ditampilkan ke layar LCD yang terhubung melalui komunikasi I2C, menggunakan GPIO 4 (SDA) dan GPIO 5 (SCL). LCD yang digunakan berukuran 2 baris 16 karakter dengan alamat I2C default 0x27.

Jika data yang diterima tidak sesuai format atau terjadi kesalahan dalam proses decoding, sistem akan menampilkan pesan ERROR pada LCD disertai keterangan pesan kesalahan di baris kedua. Selain itu, data mentah dan hasil decoding juga tetap ditampilkan di console Thonny sebagai log monitoring.

Agar komunikasi berjalan baik, kedua Raspberry Pi Pico harus berbagi ground (GND) yang sama.

Dengan sistem ini, perubahan posisi potensiometer di sisi pengirim dapat dipantau secara langsung di sisi penerima melalui nilai yang ditampilkan di LCD, berkat komunikasi data real-time antar dua Raspberry Pi Pico menggunakan protokol UART.

4. Flowchart dan Listing program[Kembali]

Flowchart

 
 Listing Program:

TX
from machine import Pin, ADC, UART
import time
pot = ADC(26) # GPIO 26 (ADC0)
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
while True:
pot_value = pot.read_u16() # Baca nilai (0-65535)
data = f"POT:{pot_value}\n" # Format: "POT:<nilai>\n"
uart.write(data)
print("Sent:", data.strip()) # Debug: Cek di Thonny
time.sleep(0.5)
RX
from machine import UART, I2C, Pin
from i2c_lcd import I2cLcd
from time import sleep
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
i2c = I2C(0, sda=Pin(4), scl=Pin(5))
lcd = I2cLcd(i2c, 0x27, 2, 16) # Ganti 0x27 jika perlu
while True:
if uart.any():
raw_data = uart.readline()
try:
decoded_data = raw_data.decode('utf-8').strip()
print("Received RAW:", repr(raw_data)) # Tampilkan data mentah (termasuk \n)
print("Decoded:", decoded_data) # Data tanpa \n
if decoded_data.startswith("POT:"):
pot_value = int(decoded_data.split(':')[1])
lcd.clear()
lcd.putstr(f"Value:{pot_value}")
else:
raise ValueError("Format salah")
except Exception as e:
lcd.clear()
lcd.putstr("ERROR")
lcd.move_to(0, 1)
lcd.putstr(str(e)[:16]) # Tampilkan pesan error
print("Error:", e, "| Data:", raw_data)


5. Video Demo [Kembali]


 

6. Kondisi [Kembali]

Ketika potensiometer diputar, nilai ADC akan terbaca oleh Raspberry Pi Pico pengirim (TX) dan dikirim melalui UART. Raspberry Pi Pico penerima (RX) menerima data tersebut dan menampilkannya di LCD 16x2. Jika data yang diterima sesuai format "POT:<nilai>", nilai ADC ditampilkan di baris pertama LCD. Jika data salah atau tidak sesuai format, LCD akan menampilkan pesan "ERROR" disertai keterangan error di baris kedua.

7. Analisa [Kembali]

1. Jelaskan bagaimana proses komunikasi yang terjadi pada percobaan (UART dan I2C)!

UART (Universal Asynchronous Receiver Transmitter)*:
  Komunikasi terjadi secara serial asinkron, artinya tidak menggunakan sinyal clock. Pengirim (TX) dari board pertama dihubungkan ke penerima (RX) di board kedua. Data dikirim byte per byte, dimulai dari bit start, diikuti data, dan diakhiri dengan bit stop. Kedua board harus memiliki baud rate yang sama agar komunikasi berhasil.

I2C (Inter-Integrated Circuit)*:
  Komunikasi sinkron menggunakan dua jalur: SDA (data) dan SCL (clock). Salah satu board bertindak sebagai master yang mengontrol clock dan memulai komunikasi, sementara board lainnya sebagai slave. Master mengirimkan alamat slave diikuti data. Protokol ini memungkinkan komunikasi multi-perangkat dalam satu bus.


2. Jelaskan bagaimana proses data analog dikirimkan antara kedua Dev.board!
Data analog terlebih dahulu dibaca menggunakan *ADC (Analog-to-Digital Converter)* pada board pengirim. Nilai ADC ini diubah menjadi data digital (biasanya berupa nilai integer 8-bit atau 10-bit). Setelah itu:

 Pada UART, nilai digital dikirim sebagai karakter atau byte ke board penerima.
Pada I2C, master (pengirim) mengirim nilai digital ke slave (penerima) dalam format byte melalui bus I2C.

Penerima kemudian dapat mengolah nilai tersebut, misalnya untuk ditampilkan atau digunakan dalam logika tertentu.



3. Jelaskan bagaimana proses data yang dikirimkan menampilkan karakter pada LCD!
Setelah data analog dikirim dan diterima sebagai nilai digital:

Board penerima akan mengkonversi nilai tersebut ke bentuk string atau karakter yang dikenali LCD.
Kemudian, board mengirimkan perintah dan data ke LCD menggunakan protokol I2C (jika LCD I2C) atau melalui GPIO langsung (jika paralel).
LCD kemudian menampilkan nilai tersebut dalam bentuk angka atau teks di layar.

---

4. Analisa kenapa saat percobaan, awalnya data yang dikirim ERROR
Beberapa penyebab umum error di awal percobaan antara lain:

Perbedaan Baud Rate (untuk UART): Jika pengirim dan penerima tidak memiliki baud rate yang sama, data tidak akan terbaca dengan benar.
Kesalahan Wiring: TX dan RX tidak tersambung silang (TX ke RX dan RX ke TX), atau jalur SDA/SCL salah sambung.
Timing atau Sinkronisasi: Pada I2C, jika master mengirim data sebelum slave siap, bisa terjadi NACK (no acknowledgement).
Format Data Salah: Jika data tidak dikonversi dengan benar (misalnya int langsung dikirim tanpa casting), maka LCD bisa menampilkan karakter aneh atau kosong.
Inisialisasi Modul Belum Benar: Modul UART/I2C belum diinisialisasi dengan benar (misalnya belum mengaktifkan clock atau salah set bit konfigurasi).




8. Download File [Kembali]

 Video Simulasi [Download 

Komentar

Postingan populer dari blog ini

Modul 1 Prak SIsDIg

Tugas Besarr

Modul 2 PrakSisdig