Percobaan 4
UART
1. Rangkai rangkaian sesuai dengan kondisi percobaan.
2. Buat program untuk Raspberry pi pico di software ThonyIDE.
3. Upload program dari ThonyIDE ke Raspberry Pi Pico.
4. Selesai.
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Komunikasi yang digunakan adalah UART, di mana komunikasi terjadi antara dua mikrokontroller yaitu raspberry pi dengan raspberry pi. Pada kondisi ini, salah satu raspberry berfungsi sebagai transmitter, dan satunya lagi sebagai receiver.
Di sisi transmitter, potensiometer dihubungkan ke pin ADC raspberry pi sebagai nilai input. Input dari potensiomter yang merupakan data analog diubah menjadi data digital oleh pin ADC raspberry pi. Salah satu pin raspberry, diinisialisasi sebagai pin Tx, yang dihubungkan ke pin raspberry pi di sisi penerima yang diinisialisasi sebagai Rx. Dari pin Tx inilah, data digital yang sudah diubah sebelumnya dari potensiometer dikirimkan ke pin Rx di sisi receiver.
Di sisi receiver, pin Rx terhubung ke pin Tx di sisi transmitter. Pin ini akan menerima data yang dikirimkan oleh raspberry transmitter. Pada sisi ini, raspberry terhubung ke LCD, di mana terjadi komunikasi I2C dengan raspberry sebagai master dan LCD sebagai slave. Raspberry memberikan perintah write, yaitu raspberry mengirimkan data yang diterima dari transmitter, lalu dikirimkan ke LCD. LCD, kemudian menampilkan data yang dikirimkan oleh respberry (master).
4. Flowchart dan Listing Program
[Kembali]
- Flowchart
- Listing Program
TX
from machine import Pin, ADC, UART
import time
pot = ADC(26)
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
while True:
pot_value = pot.read_u16()
data = f"POT:{pot_value}\n"
uart.write(data)
print("Sent:", data.strip())
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)
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])
print("Error:", e, "| Data:", raw_data)
sleep(0.1)
5. Video Demo
[Kembali]
6. Analisa
[Kembali]
1. Analisa bagaimana konfigurasi rangkaian dan program dari percobaan yang telah dilakukan!
Jawab:
Pada konfigurasi rangkaian, dua respbery pi digunakan oleh melakukan komunikasi dengan protokol UART, di mana satu bertindak sebagai transmitter dan satu lagi sebagai receiver. Pada sisi transmitter, potensiometer dihubungkan ke pin ADC raspberry untuk mengubah data analog dari potensiometer menjadi data digital. Salah satu pin raspberry pi diinisialisasi sebagai Tx, yang terhubung ke pin raspberry receiver yang diinisialisasi sebagai Rx. Jalur ground antara kedua respberry pi terhubung pada jalur yang sama.
Pada raspberry receiver, salah satu pin diinisialisai sebagai Rx, yang terhubung ke pin Tx pada raspberry transmitter. Selanjutnya, dua pin GPIO pada raspberry dihungkan ke LCD, di mana satu terhubung ke pin SDA untuk mengirimkan data dari raspberry ke LCD dan satu lagi ke pin SCL sebagai clock.
2. Jelaskan bagaimana proses komunikasi yang terjadi pada percobaan (I2C)!
Jawab:
Komunikasi I2C terjadi antara raspberry di sisi receiver dan LCD, di mana raspberry sebagai master dan LCD sebagai slave. Setelah raspberry receiver menerima data dari transmitter, raspberry receiver memberi perintah write, di mana raspberry mengirimkan data yang diterimanya ke LCD. Lalu, LCD menampilkan data yang dikirimkan oleh raspberry (master).
3. Jelaskan bagaimana proses data dikirimkan hingga dapat tampil sebagai karakter pada LCD!
Jawab:
Data dari potensiometer yang merupakan data analog diubah menjadi data digital oleh pin ADC raspberry pi. Selanjutnya, data ini dikirimkan melalui pin yang diinisialisai sebagai Tx ke pin Rx pada raspberry receiver. Pada rangkaian, pin Tx terhubung ke pin Rx, sehingga memungkinkan untuk kominkasi. Pada sisi receiver, terjadi komunikasi I2C, di mana raspberry sebagai master dan LCD sebagai receiver. Setelah raspberry receiver menerima data dari transmitter, raspberry memberi perintah write kepada LCD, lalu mengirimkan data ke LCD. Lalu, LCD menampilkan data yang dikirimkan oleh raspberry receiver (master).
4. Analisa penyebab tidak terkirimnya data potensiometer pada percobaan yang telah dilakukan!
Jawab:
Penyebab data dari potensiomter tidak terkirimkan dapat disebabkan oleh format yang tidak sesuai, di mana format data pada receiver tidak sesuai dengan format data potensiometer yang dikitmkan oleh trasnmitter.
7. Download File
[Kembali]
Datasheet Mikrokontroler Raspberry Pi [Download]
Datasheet LCD [Download]
Tidak ada komentar:
Posting Komentar