Laporan Akhir 1

 




Percobaan 4

1. Prosedur [Kembali]

  • Persiapan Alat dan Bahan 
  • Pemahaman Skematik/Wiring Diagram
  • Pengawatan (Wiring)
  • Pemrograman STM32
  • Pengujian dan Pengamatan

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Raspberry Pi Pico






2. Potensiometer


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :
 
Prinsip Kerja : 

percobaan 4 (I2C - STM32 LCD I2C) berlandaskan pemanfaatan protokol komunikasi I2C sebagai sarana pertukaran data antara mikrokontroler STM32 dan modul LCD. Protokol ini beroperasi melalui dua saluran utama, yakni SDA (Serial Data) untuk pengiriman data dan SCL (Serial Clock) sebagai penentu ritme komunikasi. Dalam arsitektur ini, STM32 berperan sebagai master yang mengatur alur interaksi, sedangkan modul LCD I2C berfungsi sebagai slave yang merespons instruksi dan data yang diterima.

Komunikasi dimulai dengan pengiriman alamat perangkat slave oleh master, diikuti oleh data atau perintah yang ingin ditampilkan. Selanjutnya, LCD I2C memproses informasi tersebut dan menampilkannya secara visual. Efisiensi penggunaan pin mikrokontroler menjadi keunggulan utama dari protokol ini, menjadikannya solusi yang efektif untuk komunikasi digital antar perangkat.

4. Flowchart dan Listing Program [Kembali]

Flowchart :


Listing Program :

TX: 
# Pengirim: Mengirim data potensiometer via UART 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: Menampilkan data UART di 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))
            print("Decoded:", decoded_data)

            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)
    sleep(0.1)

5. Video Demo [Kembali]


6. Analisa [Kembali]






7. Download File [Kembali]
Download Video Demo [Download]




















Tidak ada komentar:

Posting Komentar