0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan15 halaman

Workshop Mikrokontroler UART Lanjutan

Dokumen ini menjelaskan proyek komunikasi serial menggunakan UART antara satu mikrokontroler Master dan dua Slave, serta interaksi dengan PC. Proyek ini mencakup struktur frame code untuk pengiriman data, penyimpanan data di EEPROM, dan pengambilan data dari sensor. Hasil percobaan menunjukkan bahwa sistem berhasil mengimplementasikan komunikasi yang akurat dan terstruktur.

Diunggah oleh

gaebelajar354
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan15 halaman

Workshop Mikrokontroler UART Lanjutan

Dokumen ini menjelaskan proyek komunikasi serial menggunakan UART antara satu mikrokontroler Master dan dua Slave, serta interaksi dengan PC. Proyek ini mencakup struktur frame code untuk pengiriman data, penyimpanan data di EEPROM, dan pengambilan data dari sensor. Hasil percobaan menunjukkan bahwa sistem berhasil mengimplementasikan komunikasi yang akurat dan terstruktur.

Diunggah oleh

gaebelajar354
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

Project UART

Workshop Mikrokontroler Lanjutan dan Antarmuka


Fahrian Muhammad Rafli
2125640010

A. Pendahuluan
UART atau Universal Asynchronous Receiver/Transmitter merupakan
perangkat keras yang digunakan untuk komunikasi serial antara dua
perangkat. Lalu bagaimana cara agar perangkat UART terhubung?
Sebenarnya, menghubungkan dua perangkat UART secara bersamaan itu
mudah dan sederhana.

Satu kabel untuk mentransmisikan data yang disebut dengan pin TX


dan kabel lainnya untuk menerima data yang disebut dengan pin RX.
UART bekerja dengan mengubah data menjadi paket untuk mengirim
atau membangun kembali data dari paket yang diterima.
Perangkat pengirim mengubah byte data menjadi bit terlebih dahulu
sebelum perangkat UART bisa mengirim data. Setelah mengubah data
menjadi bit, perangkat UART membagi bit tersebut menjadi paket untuk
ditransmisikan. Setiap paketnya berisi start bit, parity bit, data frame dan
stop bit. Setelah menyiapkan paket, kemudian rangkaian UART
mengirimkannya melalui pin TX.
Perangkat UART yang bertugas sebagai penerima memeriksa kesalahan
paket yang diterima melalui pin RX dengan menghitung jumlah 1 dan
membandingkannya dengan nilai bit paritas yang ada dalam paket. Jika
tidak ada kesalahan dalam transmisi, maka paket akan dilanjutkan dengan
strip start bit, stop bit dan parity bit untuk mendapatkan data . Sebelum bisa
membangun kembali seluruh byte data dari bingkai data, mungkin perlu
menerima beberapa paket terlebih dahulu. Setelah byte berhasil
dibangun kembali, kemudian disimpan di buffer UART. Perangkat UART
penerima menggunakan bit paritas untuk menentukan apakah ada
kehilangan data selama transmisi. Saat sedang ditransmisikan,
kehilangan data dalam transmisi terjadi ketika bit statusnya berubah. Bit
bisa berubah karena beberapa faktor, antara lain radiasi magnetik, jarak
transmisidan baud rate yang tidak cocok.
Produsen memiliki level logika UART yang mungkin berbeda. Misalnya,
Arduino UNO memiliki level logika 5-V, namun port RS232 komputer memiliki
level logika +/-12-V. Jika langsung menghubungkan Arduino UNO ke port
RS232, maka akan merusak Arduino. Jika kedua perangkat UART tidak
memiliki level logika yang sama, maka membutuhkan rangkaian konverter
level logika yang sesuai untuk menyambungkan perangkat.

B. Rangkaian

Rangkaian diatas merupakan dasaran dari projek ini, menggunakan 3


Mikrokontroler. uC #2 merupakan Slave 1, sedangkan uC #3 merupakan
Slave 2, keduanya memiliki
sensor 3 sensor yang sama antara lain ADC, Digital Input, dan Counter Timer.
Lalu, konfigurasi UART antar Slave, Master, dan PC sebagai berikut:
- Master to PC: UART0
- Master to Slave 1: UART1
- Master to Slave 2: UART2
- Slave 1 to Master: UART0
- Slave 2 to Master: UART0

C. Flowchart
1. Slave

Proses dalam Slave dimulai dengan inisialisasi Input, Output


Sensor, dan LCD. Selanjutnya sistem akan mengerjakan proses yang
ada dalam ketiga sensor yang kemudian akan menghasilkan beberapa
nilai yang akan ditampilkan pada LCD dan dikirimkan pada Master.
Disamping itu, sistem akan memeriksa apakah kode frame yang
masuk sesuai dengan apa yang diprogram, jika True maka data output
dari ketiga sensor akan dikirimkan ke Master. Slave 1 dan 2 tidak ada
perbedaan dalam sistemnya, namun berbeda di Slave ID pada Frame
yaitu 1 dan 2.
2. Master

Proses yang terjadi pada Master adalah inisialisasi pada LCD


dilanjutkan dengan membaca data yang sebelumnya sudah tersimpan
dalam EEPROM. Sistem akan mengirimkan Frame ke Slave, menerima
Frame dari Slave, dan menerima Frame dari PC. Proses yang terjadi
ketika Master menerima Frame dari Slave adalah akan menggeser
variabel yang sebelumnya sudah digunakan untuk membaca data yang
tersimpan dalam EEPROM. Proses menggeser ini adalah menggeser
data lama pada index yang lebih kecil, sehingga index 9 akan diisi
dengan nilai baru yang diterima melalui Frame, selanjutnya akan
menyimpan index 0 sampai 10 ke EEPROM. Selanjutnya proses ketika
menerima Frame dari PC dan ketika Framenya valid maka akan
mengirimkan data yang sebelumnya telah disimpan dalam EEPROM.
[Link] Frame Code
Pada rangkaian memiliki frame code yang berbeda-beda antara PC ke
Master dan Master ke Slave.
PC to Master
Pada pengiriman dari PC menuju Master, PC menggunakan Frame Code
berjumlah 3 byte. Feedback yang diberikan oleh Master akan di parsing satu
persatu.
Header Slave Address Command Mode
0xFA 0x01/0x02 0x00/0x01/0x02/0x03/0x0
4

Command Mode:
 0x00 = Semua nilai yaitu ADC, Tegangan, Status LED, dan Counter.
 0x01 = Nilai ADC saja
 0x02 = Nilai Tegangan saja
 0x03 = Status LED saja
 0x04 = Nilai Counter saja

Master to Slave
Komunikasi antara Master dan Slave bersifat statis yaitu menggunakan
1 macam command saja. Komunikasi ini meliputi Request dan Response,
sehingga terdapat 2 Frame yang berbeda. Berikut adalah Frame Request:
Header Slave Address Command Checksum
0xFA 0x01/0x02 0x00 Header^Slave
Address^Comm
and

Berikut adalah Frame Response:


Header Slave Lengt Data Checksum
Address h
0xFA 0x01/0x02 0x06 2 Byte ADC, 2 Header^Slave
Byte Tegangan, 1 Address^Length^D
Byte Status ata
LED, dan 1 Byte ^Checksum
Counter
Nilai ADC memiliki 2 Byte karena nilainya melebihi dari 8-bit, sedangkan nilai
tegangan memiliki 2 Byte karena memiliki angka belakang koma.

Length : Panjang Byte Data


Checksum : Periksa kelengkapan data
E. Penyimpanan Data pada EEPROM
Master mempunyai sistem penyimpanan internal yaitu EEPROM yang
bertujuan agar data yang direquest oleh PC merupakan data yang sudah
lengkap. Sistem dibuat agar
mampu menyimpan 10 baris data yang siap kirim ke PC, berikut
merupakan alur penyimpanan pada EEPROM:

Sistem EEPROM pada Master dimulai dengan membaca jumlah data


yang sudah tersimpan. Saat Master menerima data dari Slave maka akan
menjalankan program FIFO(First Input First Output) dimana ini menggeser
variabel pada index 10 ke index 0 sehingga variabel terbaru terdapat pada
index ke 9 dengan index 10 yang kosong. Dan yang terakhir akan
menyimpan data dan jumlah index tersebut ke EEPROM.

F. Hasil Percobaan
Percobaan pada Slave:
Pada LCD baris pertama yaitu informasi identifikasi mikrokontroler dan
strip yang menandakan menyala nya LED, baris kedua merupakan status
dari ketiga LED, baris ketiga merupakan nilai dari ADC, V, dan Counter,
dan baris keempat merupakan framecode yang dikirimkan berdasarkan
kondisi sensornya.
LED 1 akan menyala ketika nilai ADC diatas 360 dan di bawah 720,
LED 2 akan menyala ketika push button ditekan namun pada rangkaian
ini menggunakan switch agar memungkinkan pengiriman data ketika LED
2 ON, LED 3 akan menyala ketika Counter bernilai lebih dari 4 dan blinky
sebanyak 3 kali. Hal ini berlaku juga dengan Mikrokontroler 2, hanya saja
pada mikrokontroler 2 memiliki Slave ID 2.

Master:
LCD pada Master menggunakan 16x2 baris pertama untuk status
penyimpanan data pada EEPROM dan baris kedua digunakan untuk
informasi jumlah data yang tersimpan dalam EEPROM. Berikut adalah
rangkaiannya:

Ketika PC mengirimkan Frame maka baris pertama akan memberikan


informasi pengiriman, dan baris kedua memberikan informasi command
mode yang digunakan.
Percobaan pada Komunikasi:
Pada percobaan ini menggunakan Com 2 dan 3 yang disambungkan dengan
software ”Com0com” seperti berikut:

Berikut adalah konfigurasi dari compim sebagai jembatan RS232


untuk menghubungkan Master dengan PC:
Konfigurasi yang digunakan adalah COM2, BauRate 9600, Data Bits 8, dan
Parity None. Berikut adalah konfigurasi pada Software PC:

Default dari Data Bits dan Parity adalah 8 dan None. Lalu, menekan tombol
“Connect”.
1. Pengambilan Data All_Slave1

Data yang dipanggil dari software sesuai dengan data yang terdapat
pada Proteus dan pada Listbox terdapat data historis sebanyak 10 data
sebelumnya. Kondisi pada mikrokontroler adalah P: 1, V: 0, LED: ON, C:
0 dengan frame code:
1. Header : FA
2. Slave ID : 01
3. Leng : 06
4. HighBit Pot : 00
5. LowBit Pot : 01
6. HighBit : 00
Volt
7. LowBit Volt : 00
8. LEDState : 01
9. Counter : 00
10. Checksum : FD

Frame yang dikirim oleh Master merupakan frame statis untuk Slave 1
sebagai berikut:
1. Header : FA
2. Slave ID 01
3. CMD Mode 00
4. Checksum : FB

Frame yang direquest dari PC untul All_Slave1 sebagai berikut:


1. Header : FA
2. Slave ID 01
3. CMD Mode 00

2. Pengambilan data ADC_Slave1


Berikut adalah contoh ketika pengambilan data hanya pada ADC.
Counter ditambah untuk membuktikan bahwa data yang diambil hanya
ADC. Disini LED pada software mewakili status LED pada S2 di proteus.

Gambar diatas menunjukkan kondisi pada Proteus nilai ADC: 410,


V: 0, LED: ON, Counter: 1. Sedangkan pada software ADC: 410, V: 0,
LED: ON, dan Counter 0. Yang berarti pengambilan data pada ADC saja
berhasil.

Frame Code pada Slave sebagai berikut:


1. Header : FA
2. Slave ID : 01
3. Leng : 06
4. HighBit Pot : 01
5. LowBit Pot : 9A
6. HighBit Volt : 02
7. LowBit Volt : 00
8. LEDState : 01
9. Counter : 01
10. Checksum : 64
Disini walaupun Framecode yang dikirim lengkap, parsing data
terletak pada Master dengan Frame yang diminta dari PC yaitu
ADC_Slave1, berikut adalah Framenya:
1. Header : FA
2. Slave ID 01
3. CMD Mode 01

3. Pengambilan Data All_Slave2

Data yang dipanggil dari Slave 2 memiliki kondisi yang sesuai


antara lain: P: 512, V: 2.50, LED: OFF, C: 0 dengan frame code:
1. Header : FA
2. Slave ID : 02
3. Leng : 06
4. HighBit Pot : 02
5. LowBit Pot : 00
6. HighBit Volt : 02
7. LowBit Volt : 32
8. LEDState : 00
9. Counter : 00
10. Checksum : CC

Berbeda dengan frame yang dikirim pada Slave 1, frame ini


memiliki perbedaan pada frame Slave, antara lain:
1. Header : FA
2. Slave ID 02
3. CMD Mode 00
4. Checksum : F8
Frame yang direquest dari PC dengan All_Slave2 yaitu:
1. Header: FA
2. Slave ID: 02
3. CMD Mode: 00

4. Pengambilan Data Counter_Slave2


Berikut adalah pemanggilan nilai counter saja dengan kondisi
pada proteus LED: OFF, ADC: 922, V: 4.51, Counter: 2. Hasilnya, pada
Software dengan kondisi LED yang masih OFF dan Counter: 2, yang
berarti nilai Counter saja berhasil dipanggil.

Frame pada Slave 2 sebagai berikut:


1. Header : FA
2. Slave ID : 02
3. Leng : 06
4. HighBit Pot : 03
5. LowBit Pot : 9A
6. HighBit Volt : 04
7. LowBit Volt : 32
8. LEDState : 01
9. Counter : 02
10. Checksum : 52

Sedangkan Frame pada PC sebagai berikut:


1. Header : FA
2. Slave ID 02
3. CMD Mode 04

[Link]:
1. Proyek ini berhasil mengimplementasikan sistem komunikasi serial
UART antara 3 mikrokontroler (1 Master dan 2 Slave) dengan PC
menggunakan protokol frame code yang terstruktur. Konfigurasi UART
yang digunakan meliputi UART0 untuk Master-PC, UART1 untuk Master-
Slave1, dan UART2 untuk Master-Slave2.
2. Struktur frame code yang dirancang dengan header (0xFA), slave
address, command mode, length, data, dan checksum terbukti efektif
untuk memastikan integritas data dan mencegah kesalahan transmisi.
Sistem checksum menggunakan operasi XOR berhasil memvalidasi
kelengkapan data yang diterima.
3. Implementasi sistem penyimpanan EEPROM pada Master dengan
metode FIFO (First Input First Output) berhasil menyimpan hingga 10
data historis. Sistem ini memastikan PC dapat mengakses data yang
lengkap dan terstruktur dengan baik.
4. Sistem berhasil melakukan parsing data berdasarkan command mode
yang diminta (0x00-0x04), memungkinkan pengambilan data secara
selektif mulai dari semua nilai (ADC, Tegangan, Status LED, Counter)
hingga nilai spesifik sesuai kebutuhan.
5. Kedua Slave berhasil mengintegrasikan 3 jenis sensor (ADC, Digital
Input, dan Counter Timer) dengan kondisi logika yang sesuai, seperti
LED1 menyala saat ADC 360-720, LED2 mengikuti status switch, dan
LED3 blinky 3 kali saat Counter > 4.
6. Percobaan komunikasi menggunakan software Com0com sebagai virtual
serial port berhasil membuktikan bahwa data dari Slave dapat diterima
dengan akurat oleh PC melalui Master, dengan kesesuaian data antara
Proteus dan software PC.

Link =
[Link]
1dNjLcAul0gObIBn0lv8az BzSf4xVaO18?usp=drive_link

Anda mungkin juga menyukai