LAPORAN AKHIR MODUL 3



PERCOBAAN 2 KONDISI 5

1. Prosedur[Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi Thonny
  • Jalankan program dan inputkan program 
  • Jalankan rangkaian

2. Hardware dan Diagram Blok[Kembali]

Hardware :

1. Raspberry Pi Pico



2.  LCD





3. Potensiometer



Diagram Blok  :

3. Rangkaian Simulasi dan Prinsip Kerja[Kembali] 

Prinsip Kerja : 

Rangkaian ini menggunakan beberapa komponen yaitu 2 buah Raspberry Pi PIco , potensiometer dan LCD. Rangkaian ini dimulai dengan inputan dari potensiometer yang kemudian data dikirim dan di proses ke Raspberry Pi PIco. Kemudian Raspeberry Pi Pico (UART 1) yang bertindak sebagai TX akan mengirim data ke  Raspberry Pi Pico (UART 2) yang bertindak sebagai RX atau penerima menggunakan protokol komunikasi UART (Universal Asynchronous Receiver-Transmiter). Kemudian setelah di proses, data tersebut akan di tampilkan di LCD menggunakan protokol komunikasi I2C. Rangkaian ini berjalan dengan program yang kita inputkan kedalam Raspbeery Pi Pico. 

4. Flowchart dan Listing Program[Kembali] 

Flowchart :



Listing Program :

TX (Pengirim - Raspberry Pi Pico):

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 (Penerima - Raspberry Pi Pico + LCD I2C):

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))  # Data mentah
            print("Decoded:", decoded_data)         # Data bersih

            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])  # Maks 16 karakter error
            print("Error:", e, "| Data:", raw_data)

    sleep(0.1)

5. Analisa[Kembali]

1. Analisa bagaimana konfigurasi rangkaian dan program dari percobaan yang telah dilakukan!
Jawab:
Konfigurasi rangkaian pada percobaan ini melibatkan dua buah Raspberry Pi Pico yang dihubungkan menggunakan komunikasi UART. Satu Raspberry Pico berperan sebagai pengirim data (TX) yang terhubung dengan sebuah potensiometer melalui pin ADC 0 (GPIO 26), sementara Pico lainnya sebagai penerima (RX) yang terhubung ke LCD berbasis I2C. Rangkaian UART dilakukan melalui koneksi langsung antara TX (GPIO 0) pada pengirim ke RX (GPIO 1) pada penerima dan sebaliknya. Di sisi pengirim, program membaca nilai analog dari potensiometer, mengubahnya ke format digital menggunakan read_u16() lalu mengirim ke UART dengan format string seperti "ROT:<nilai>\n". Di sisi penerima, data diterima dan diproses, kemudian ditampilkan pada LCD melalui komunikasi I2C (SDA: GPIO 4, SCL: GPIO 5).

2. ⁠Jelaskan bagaimana proses komunikasi yang terjadi pada percobaan (UART/SPI/ 2C) !
Jawab:
Proses komunikasi pada kedua Raspberry Pi Pico menggunakan UART, yaitu komunikasi serial asinkron tanpa clock. Data dikirim dari TX (pengirim) ke RX (penerima) dengan baudrate 9600. Setelah diterima, data ditampilkan menggunakan I2C, yaitu protokol komunikasi 2 kabel (SDA & SCL) antara Pico penerima dan modul LCD.

3. ⁠Jelaskan bagaimana proses data dikirimkan hingga dapat tampil sebagai karakter pada LCD!
Jawab:
Data potensiometer dibaca oleh Pico pengirim, diubah ke format string, dan dikirim melalui UART. Pico penerima membaca data tersebut memverifikasi formatnya, lalu mengambil nilai yang dikirim. Nilai ini ditampilkan sebagai karakter di LCD melalui komunikasi.

4. ⁠Analisa penyebab kesalahan. Yang terjadi saat diawal
Jawab:
Kesalahan pengiriman data sering terjadi akibat baudrate yang tidak sinkron, kabel yang longgar, format data yang salah, atau karakter newline yang hilang. Selain itu, alamat I2C yang tidak sesuai atau kesalahan saat decoding string juga dapat menyebabkan error.

6. Video Simulasi[Kembali]



7. Download File[Kembali]

Download Listing Program [Download]
Datasheet Raspberry Pi Pico [Download]
Video simulasi [download]




Tidak ada komentar:

Posting Komentar