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

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)
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.
Video Simulasi [Download]
Komentar
Posting Komentar