LA M3

[menuju akhir]

1. Prosedur [kembali]

  1. Buatlah rangkaian di breadboard sesuai dengan percobaan ke-4 pada modul yang terhubung dengan 2 buah Raspberry Pi Pico.
  2. Sambungkan breadboard ke komputer yang terinstal software Thony IDE menggunakan kabel USB.
  3. Buka Thony IDE dan pastikan Raspberry Pi Pico terdeteksi dengan baik oleh perangkat lunak.
  4. Buat dan buka program pada Thony IDE yang telah dibuat.
  5. Upload program ke Thony IDE dan jalankan program untuk mengontrol Ragnkaian.
  6. Uji rangkaian yang dirangkai sesuai dengan output yang telah ditentukan.
  7. Selesai.

2. Hardware dan Diagram Blok [kembali]

Hardware

a) Raspberry Pi Pico

b) Breadboard
c) Potensiometer
d) LCD

Diagram Blok


3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

Rangkaian Simulasi



Prinsip Kerja Sistem

Sistem ini terdiri dari dua komponen utama, yaitu unit pengirim (TX) dan penerima (RX), yang saling berkomunikasi menggunakan protokol UART (Universal Asynchronous Receiver/Transmitter). Tujuan dari sistem ini adalah membaca nilai dari sebuah potensiometer, mengirimkannya melalui komunikasi serial, lalu menampilkannya di layar LCD 16x2 dengan antarmuka I2C.

Bagian Pengirim (TX):
Program pada sisi pengirim dimulai dengan menginisialisasi pin ADC (Analog-to-Digital Converter) untuk membaca nilai dari potensiometer yang terhubung ke pin analog mikrokontroler (GPIO26). Nilai yang diperoleh berupa data digital 16-bit dalam rentang 0 hingga 65535.

Kemudian, modul UART disetting dengan Baudrate 9600, menggunakan dua pin GPIO untuk komunikasi serial (TX dan RX). Setiap 0,5 detik, nilai terbaru dari potensiometer dibaca, diformat menjadi string "POT:\n" agar mudah dikenali oleh penerima, lalu dikirim melalui UART. Nilai ini juga ditampilkan di terminal serial (misalnya di Thonny IDE) sebagai bahan debugging.

Bagian Penerima (RX):
Di sisi penerima, UART diatur dengan baudrate 9600 dan pin yang sesuai untuk menerima data dari TX. Selain itu, jalur I2C dikonfigurasi untuk menghubungkan mikrokontroler dengan modul LCD 16x2, yang akan menampilkan nilai dari potensiometer.

Program kemudian berjalan dalam loop utama yang terus memeriksa apakah ada data yang masuk melalui UART. Jika data diterima, program akan mencoba mengubah data byte menjadi string. Jika format data sesuai, yaitu "POT:", maka angka tersebut akan diambil dan ditampilkan di LCD. LCD akan dibersihkan terlebih dahulu sebelum menampilkan nilai baru untuk mencegah tampilan yang tumpang tindih.

Jika data yang diterima tidak sesuai format atau terjadi kesalahan saat decoding, maka layar LCD akan menampilkan pesan "ERROR" di baris pertama, dan baris kedua akan menunjukkan pesan kesalahan yang telah dipotong agar pas di layar. Informasi kesalahan ini juga dicetak ke terminal sebagai referensi debugging.

Sistem ini secara keseluruhan bekerja dengan cara mengubah data analog menjadi digital, mengirimkannya secara serial, dan menampilkannya secara visual di LCD. Mikrokontroler pertama berfungsi sebagai pembaca dan pengirim data potensiometer, sedangkan mikrokontroler kedua berfungsi menerima data dan menampilkannya.

Dengan pengiriman berkala dan format data yang konsisten, sistem ini memungkinkan pemantauan nilai analog secara real-time menggunakan antarmuka yang sederhana namun efektif.

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)

sleep(0.1)

5. Video Demo [kembali]



6. Kondisi [kembali]

    Percobaan 4

7. Analisa [kembali]


8. Download File [kembali]

Video Simulasi [klik disini]
HTML [klik disini]
Datasheet Raspberry STM32F103C8 [klik disini]
Datasheet Potensiometer [klik disini]
Datasheet LCD [klik disini]

Comments

Popular posts from this blog