Anda di halaman 1dari 36

BAB 4

ANTARMUKA DENGAN RANGKAIAN EXTERNAL


MODUL B3

Terdapat beberapa peripheral utama yang bisa digunakan untuk antarmuka pada
BBB diantarnya adalah General Purpose Input Output(GPIO), yang terdapat pada pin
header P8 dan P9. Setiap pin pada pin header tersebut mempunyai fungsi bermacammacam, atau dikenal dengan mempunyai mode operasi yang berbeda. 1 jenis mode
operasi artinya mempunyai fungsi yang berbeda dengan mode operasi yang lain.
Berikut adalah mode dasar pin:

Digital Output
Contoh aplikasi : kontrol LED, LED Matrix, ON/OFF Digital Load(Relay) dll

Digital Input
Contoh aplikasi : Pembacaan tombol, Pembacaan output digital sensor dll

Analog Input(ADC)
Contoh aplikasi : pembacaan sensor-sensor analog, membaca potensiometer

Analog Output(PWM)
Contoh aplikasi : Pengendalian VSD(Variable Speed Drive) pada motor control

Gambar 4. 1 Pin Header P8 dan P9


Linux Device Tree Overlay (DTOs)
Sistem operasi embedded linux tidak sama dengan sistem Personal Computer yang
memiliki sistem BIOS sebagai inisialisasi pembacaan sistem hardaware, karena sistem
2

embedded mengandalkan file-file konfigurasi yang sudah tersimpan sebelumnya pada


microSD/eMMC. Sehingga setiap modul sistem embedded yang berbeda akan memiliki
file konfigurasi yang berbeda pula. Salah satu metode konfigurasi file diperkenalkan
oleh Pantelis Antoniou dari konsultan Antoniou memberikan solusi pada sistem
konfigurasi file tersebut. Untuk menjelaskan sistem DTOs itu sendiri yang paling cepat
adalah dengan mencoba mengaktifkan pin-pin header pada header P8 dan P9
menggunakan mekanisme DTOs.
Membuat Custom Overlay
Sebagai contoh pengguna ingin mengaktifkan pin P9.11 dan P9.13 untuk komunikasi
data serial lewat channel UART4.

Gambar 4. 2 Detail Mode pada pin P9.11 dan P9.13


Terlihat pada Gambar 4. 3 untuk detail setiap mode yang ada. Artinya dalam hal ini
pengguna ingin mengaktifkan mode 6 pada GPIO0_30 dan GPIO0_32. Maka file source
code untuk DTO ditulis sebagai berikut:

Listing 4-1. /root/ B3-P.11-P.13-UART4-00A0.dts

/* OUTPUT GPIO(mode7) 0x07 pulldown, 0x17 pullup, 0x?f no pullup/down */


/* INPUT GPIO(mode7) 0x27 pulldown, 0x37 pullup, 0x?f no pullup/down */
/dts-v1/;
/plugin/;
/{
compatible = "ti,beaglebone", "ti,beaglebone-black" ;
part-number = "EBB-GPIO-Example" ;
version = "00A0" ;
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
ebb_example: EBB_GPIO_Example {
pinctrl-single,pins = <
0x070 0x07 // P9_11 $28 GPIO0_30=30 Output Mode7 pulldown
0x074 0x37 // P9_13 $29 GPIO0_31=31 Input Mode7 pullup
>;
};
};
} ;
fragment@1 {
target = <&ocp>;
__overlay__ {
gpio_helper {
compatible = "gpio-of-helper" ;
status = "okay" ;
pinctrl-names = "default" ;
pinctrl-0 = <&ebb_example>;
};

};
};
};

Simpan file tersebut dengan nama B3-P.11-P.13-UART4-00A0.dts


Cara Mengkompilasi dts File
Untuk mengkompilasi file tersebut, pastikan pada B3 telah terpasang device tree
compiler dengan versi terbaru.
root@beaglebone:~# dtc -v
Version: DTC 1.4.1
root@beaglebone:~# dtc -O dtb -o B3-P.11-P.13-UART4-00A0.dtbo -b 0
-@ B3-P.11-P.13-UART4-00A0.dts

Setelah mendapatkan file dtbo(hasil kompilasi sebelumnya), copy file tersebut ke


/lib/firmware dan masukkan dalam list $SLOTS.
Memuat dtbo file ke konfigurasi file pins
Untuk mempercepat dan mempermudah memuatkan dtbo file ke file konfigurasi pin,
ada 2 environment file variabel yang disetup, yaitu lokasi slots dan daftar pins. Pastikan
terlebih dahulu bahwa lokasi file yang ditunjuk oleh environment variabel sesuai
dengan sistem operasi masing-masing. Tambahkan 2 baris enviroment variabel ini ke
dalam bash profile masing-masing. Sebagai contoh untuk user root, penambahan
environment variabel bisa dilakukan pada file /root/.profile.
# ~/.profile: executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
mesg n
export SLOTS=/sys/devices/platform/bone_capemgr/slots
export PINS=/sys/kernel/debug/pinctrl/44e10800.pinmux/pins
root@beaglebone:~# source .profile
root@beaglebone:~# cat $SLOTS
root@beaglebone:~# cat $PINS
root@beaglebone:~# cp B3-P.11-P.13-UART4-00A0.dtbo /lib/firmware
root@beaglebone:~# echo B3-P.11-P.13-UART4 > $SLOTS

root@beaglebone:~# cat $SLOTS

Untuk memvalidasi apakah pin telah aktif dan siap digunakan, gunakan kombinasi
perintah cat/dmesg.
5.2 Kontrol ON/OFF Output LED dan Buzzer
Terdapat 5 LED yang sudah terangkai pada modul B3 yaitu LED1, LED2,
LED3, LED4 dan LED5-PWM. Hal pertama yang perlu dipahami rangkaian
tambahan pada masing-masing LED yang akan dikontrol ON/OFF. Seperti terlihat
pada gambar bahwa modul B3 mempunyai sejumlah 2 pin header. Namun apabila
dilihat dari sisi pinout chip GPIO, modul B3 memiliki 4 chip GPIO (chip GPIO 0
s/d 3) yang masing-masing chip memiliki sejumlah 32 pin. Sehingga total
sebenarnya modul B3 memiliki 4 chip * 32 pin GPIO/chip = 128 pin GPIO dari pin
GPIO 0 s/d 127. Namun, tidak semua pin dikeluarkan pada output header karena ada
beberapa pin yang sudah terpakai untuk peripheral on board modul B3 seperti
antarmuka ke microSD, ethernet, user LED dan lainnya.
Untuk mengakses pin GPIO dengan nomor tertentu, maka tentunya harus
mengetahui chip GPIO ke berapa dan nomor pin sekian. Sebagai contoh pada ouput
LED1, terhubung pada header P8 pin 7 (sesuai dengan gambar diatas adalah pada
pin P8_7: TIMER4/GPIO2_2[lihat tabel lengkap pada lampiran]). Maka no GPIO
sebenarnya adalah :
(2 * 32) + 2 = 66
Jadi LED1 terhubung pada GPIO pin ke 66.

Praktikum 4.1
Tahapan Kontrol ON/OFF Output 4 LED dan 1 Buzzer:
Tujuan Praktikum
1) Mampu menggunakan metode DTOs untuk mengaktifkan pin IO
2) Mengendalikan LED digital output ON/OFF
Alat yang digunakan
1) Modul Embedded System BeagleBone Black
2) PC/Laptop
Tahapan Praktikum
1) Login pada modul B3 seperti pada materi sebelumnya
2) Perhatikan rangkaian 4 LED dan 1 buzzer yang terhubung pada pin header masingmasing:

Gambar 4. 4

3) Tentukan terlebih dahulu no GPIO semua pin LED dan buzzer, seperti pada Tabel
4.1.
Tabel 4. 1 Tabel Pin Aktual LED dan Buzzer

4) Masuk kedirektori /sys/class/gpio


ubuntu@arm:~$ cd /sys/class/gpio
ubuntu@arm:/sys/class/gpio$ ls
export gpiochip0 gpiochip32

gpiochip64

gpiochip96

unexport

5) Login sebagai root dan jalankan perintah berikut


ubuntu@arm:/sys/class/gpio$ sudo su
[sudo] password for ubuntu:
root@arm:/sys/class/gpio# echo 66 > export
root@arm:/sys/class/gpio# ls
export

gpio66

gpiochip0

gpiochip32

gpiochip64

gpiochip96

unexport
root@arm:/sys/class/gpio# cd gpio66
root@arm:/sys/class/gpio/gpio66# ls -l
total 0
-rw-r--r-- 1 root root 4096

Aug

lrwxrwxrwx 1 root root 0

Aug 6 15:24 device ->

-rw-r--r-- 1 root root 4096

Aug

6 15:24 direction

-rw-r--r-- 1 root root 4096

Aug

6 15:24 edge

drwxr-xr-x 2 root root

Aug

6 15:24 power

6 15:24 active_low

lrwxrwxrwx 1 root root 0

Aug 6 15:24 subsystem ->

-rw-r--r-- 1 root root 4096

Aug

6 15:24 uevent

-rw-r--r-- 1 root root 4096

Aug

6 15:24 value

root@arm:/sys/class/gpio/gpio66# cat direction


in

6) Terlihat file arah GPIO masih sebagai input, maka harus diubah sebagai output.
Jalankan perintah berikut

root@arm:/sys/class/gpio/gpio66# echo out > direction

7) Memberi logika 1 (high) pada pin, jalankan perintah


root@arm:/sys/class/gpio/gpio66# echo 1 > value

8) Memberi logika 0 (low) pada pin, jalankan perintah


root@arm:/sys/class/gpio/gpio66# echo 0 > value

9) Apabila telah selesai maka kembalikan status pin seperti semula


root@arm:/sys/class/gpio/gpio66# cd ../
root@arm:/sys/class/gpio# echo 66 > unexport
root@arm:/sys/class/gpio#

10) Seperti tahapan diatas, untuk no pin 69 ikuti perintah berikut


root@arm:/sys/class/gpio# echo 69 > export
root@arm:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Aug

6 15:31 export

lrwxrwxrwx 1 root root

0 Aug

6 15:31 gpio69 ->

lrwxrwxrwx 1 root root

0 Aug

6 15:22 gpiochip0 ->

lrwxrwxrwx 1 root root

0 Aug

6 15:22 gpiochip32 ->

lrwxrwxrwx 1 root root

0 Aug

6 15:22 gpiochip64 ->

lrwxrwxrwx 1 root root

0 Aug

6 15:22 gpiochip96 ->

--w------- 1 root root 4096 Aug

6 15:26 unexport

root@arm:/sys/class/gpio# cd gpio69
root@arm:/sys/class/gpio/gpio69# cat direction
in

11) Terlihat file arah GPIO masih sebagai input, maka harus diubah sebagai output.
Jalankan perintah berikut
root@arm:/sys/class/gpio/gpio69# echo out > direction

12) Memberi logika 1 (high) pada pin, jalankan perintah


root@arm:/sys/class/gpio/gpio69# echo 1 > value

13) Memberi logika 0 (low) pada pin, jalankan perintah


root@arm:/sys/class/gpio/gpio69# echo 0 > value

14) Apabila telah selesai maka kembalikan status pin seperti semula

root@arm:/sys/class/gpio/gpio69# cd ../
root@arm:/sys/class/gpio# echo 69 > unexport
root@arm:/sys/class/gpio#

15) Untuk menyalakan kemudian mematikan LED3 nomor pin GPIO adalah 45,
jalankan perintah berikut:
root@arm:/sys/class/gpio# echo 45 > export
root@arm:/sys/class/gpio# ls
export

gpio45

gpiochip0

gpiochip32

gpiochip64

gpiochip96

unexport
root@arm:/sys/class/gpio# cd gpio45
root@arm:/sys/class/gpio/gpio45# ls -l
total 0
-rw-r--r-- 1 root root 4096 Aug

6 15:37 active_low

lrwxrwxrwx 1 root root

0 Aug

6 15:37 device ->

-rw-r--r-- 1 root root 4096 Aug

6 15:37 direction

-rw-r--r-- 1 root root 4096 Aug

6 15:37 edge

drwxr-xr-x 2 root root

0 Aug

6 15:37 power

lrwxrwxrwx 1 root root

0 Aug

6 15:37 subsystem ->

-rw-r--r-- 1 root root 4096 Aug

6 15:37 uevent

-rw-r--r-- 1 root root 4096 Aug

6 15:37 value

root@arm:/sys/class/gpio/gpio45# cat direction


in
root@arm:/sys/class/gpio/gpio45# echo out > direction
root@arm:/sys/class/gpio/gpio45# echo 1 > value
root@arm:/sys/class/gpio/gpio45# echo 0 > value
root@arm:/sys/class/gpio/gpio45# cd ../
root@arm:/sys/class/gpio# echo 45 > unexport
root@arm:/sys/class/gpio#

16) Untuk menyalakan kemudian mematikan LED4 nomor pin GPIO adalah 47,
jalankan perintah berikut:
root@arm:/sys/class/gpio# echo 47 > export
root@arm:/sys/class/gpio# ls
export

gpio47

gpiochip0

gpiochip32

gpiochip64

gpiochip96

unexport
root@arm:/sys/class/gpio# cd gpio47
root@arm:/sys/class/gpio/gpio47# ls -l
9

total 0
-rw-r--r-- 1 root root 4096 Aug

6 15:40 active_low

lrwxrwxrwx 1 root root

0 Aug

6 15:40 device ->

-rw-r--r-- 1 root root 4096 Aug

6 15:40 direction

-rw-r--r-- 1 root root 4096 Aug

6 15:40 edge

drwxr-xr-x 2 root root

0 Aug

6 15:40 power

lrwxrwxrwx 1 root root

0 Aug

6 15:40 subsystem ->

-rw-r--r-- 1 root root 4096 Aug

6 15:40 uevent

-rw-r--r-- 1 root root 4096 Aug

6 15:40 value

root@arm:/sys/class/gpio/gpio47# cat direction


in
root@arm:/sys/class/gpio/gpio47# echo out >direction
root@arm:/sys/class/gpio/gpio47# echo 1 > value
root@arm:/sys/class/gpio/gpio47# echo 0 > value
root@arm:/sys/class/gpio/gpio47# cd ../
root@arm:/sys/class/gpio# echo 47 > unexport
root@arm:/sys/class/gpio#

17) Untuk menyalakan kemudian mematikan LED4 nomor pin GPIO adalah 22,
jalankan perintah berikut:
root@arm:/sys/class/gpio# echo 22 > export
root@arm:/sys/class/gpio# ls
export

gpio22

gpiochip0

gpiochip32

gpiochip64

gpiochip96

unexport
root@arm:/sys/class/gpio# cd gpio22
root@arm:/sys/class/gpio/gpio22# cat value
0
root@arm:/sys/class/gpio/gpio22# cat direction
in
root@arm:/sys/class/gpio/gpio22# echo out > direction
root@arm:/sys/class/gpio/gpio22# echo 1 > value
root@arm:/sys/class/gpio/gpio22# echo 0 > value
root@arm:/sys/class/gpio/gpio22# ls -l
total 0
-rw-r--r-- 1 root root 4096 Aug

6 15:43 active_low

lrwxrwxrwx 1 root root

0 Aug

6 15:43 device ->

-rw-r--r-- 1 root root 4096 Aug

6 15:43 direction

-rw-r--r-- 1 root root 4096 Aug

6 15:43 edge

drwxr-xr-x 2 root root

0 Aug

6 15:43 power

lrwxrwxrwx 1 root root

0 Aug

6 15:43 subsystem ->

-rw-r--r-- 1 root root 4096 Aug

6 15:43 uevent

-rw-r--r-- 1 root root 4096 Aug

6 15:43 value

root@arm:/sys/class/gpio/gpio22# cd ..
10

root@arm:/sys/class/gpio# echo 22 >unexport


root@arm:/sys/class/gpio#

18) Untuk menyalakan kemudian mematikan buzzer 5Volt nomor pin GPIO adalah 7,
jalankan perintah berikut:
root@arm:/sys/class/gpio# echo 7 > export
root@arm:/sys/class/gpio# ls
export

gpio7

gpiochip0

gpiochip32

gpiochip64

gpiochip96

unexport
root@arm:/sys/class/gpio# cd gpio7/
root@arm:/sys/class/gpio/gpio7# cat direction
in
root@arm:/sys/class/gpio/gpio7# echo out > direction
root@arm:/sys/class/gpio/gpio7# echo 1 > value
root@arm:/sys/class/gpio/gpio7# echo 0 > value
root@arm:/sys/class/gpio/gpio7# cd ..
root@arm:/sys/class/gpio# echo 7 > unexport
root@arm:/sys/class/gpio#

Praktikum 4.2
Pembacaan Input Tombol BTN1, BTN2 dan BTN3
11

Tujuan Praktikum
1) Mampu menggunakan metode DTOs untuk mengaktifkan pin IO
2) Membaca input logika high dan low pada BTN1, BTN2 dan BTN3
Alat yang digunakan
1) Modul Embedded System BeagleBone Black
2) PC/Laptop
Tahapan Praktikum
1) Login pada modul B3 seperti pada materi sebelumnya
2) Perhatikan rangkaian 3 tombol push button terhubung pada pin header masingmasing:
Pada modul B3, terdapat 3 kombinasi tombol yang bernama BTN1, BTN2 dan
BTN3. Dengan mempelajari peripheral ini diharapkan untuk bisa membaca input
tegangan digital ke modul B3. Perhatikan gambar untuk mengetahui rangkaian
koneksi tombol menuju ke modul B3.

Gambar 4. 5 Rangkaian Input Tombol Push Button BTN1, BTN2 dan BTN3
3) Tentukan terlebih dahulu no GPIO semua pin tombol, seperti pada Tabel 4.2.

12

Tabel 4. 2 Daftar aktual pin input untuk di export

4) Untuk pembacaan tombol 1, masuk kedirektory /sys/class/gpio/ dan export


no pin bersangkutan
root@arm:~# cd /sys/class/gpio/
root@arm:/sys/class/gpio# echo 3 > export
root@arm:/sys/class/gpio# ls
export

gpio3

gpiochip0

gpiochip32

gpiochip64

gpiochip96

unexport
root@arm:/sys/class/gpio# cd gpio3/
root@arm:/sys/class/gpio/gpio3# ls -l
total 0
-rw-r--r-- 1 root root 4096 Aug

6 16:08 active_low

lrwxrwxrwx 1 root root

0 Aug

6 16:08 device ->

-rw-r--r-- 1 root root 4096 Aug

6 16:08 direction

-rw-r--r-- 1 root root 4096 Aug

6 16:08 edge

drwxr-xr-x 2 root root

0 Aug

6 16:08 power

lrwxrwxrwx 1 root root

0 Aug

6 16:08 subsystem ->

-rw-r--r-- 1 root root 4096 Aug

6 16:08 uevent

-rw-r--r-- 1 root root 4096 Aug

6 16:08 value

5) Periksa isi file direction


root@arm:/sys/class/gpio/gpio3# cat direction
in

Paramater in artinya konfigurasi direction telah benar, sehingga tidak perlu dirubah
6) Selanjutnya adalah memeriksa file value yang berisi status tombol. Logika 1 artinya
tidak ditekan dan logika 0 artinya ditekan(untuk pin input aktif low) dan sebaliknya
untuk rangkaian aktif high. Jadi saat tombol tidak ditekan:
root@arm:/sys/class/gpio/gpio3# cat value
1

7) Saat tombol ditekan


root@arm:/sys/class/gpio/gpio3# cat value
0

8) Kembalikan status pin kembali pada kondisi semula.


13

root@arm:/sys/class/gpio/gpio3# cd ../
root@arm:/sys/class/gpio# echo 3 > unexport
root@arm:/sys/class/gpio#

9) Untuk pembacaan tombol 2, masuk kedirektory /sys/class/gpio/ dan export


no pin bersangkutan
root@arm:/sys/class/gpio# echo 49 >export
root@arm:/sys/class/gpio# ls
export

gpio49

gpiochip0

gpiochip32

gpiochip64

gpiochip96

unexport
root@arm:/sys/class/gpio# cd gpio49

10) Periksa isi file direction


root@arm:/sys/class/gpio/gpio49# cat direction
in

Paramater in artinya konfigurasi direction telah benar, sehingga tidak perlu dirubah
11) Selanjutnya adalah memeriksa file value yang berisi status tombol. Logika 1 artinya
tidak ditekan dan logika 0 artinya ditekan(untuk pin input aktif low) dan sebaliknya
untuk rangkaian aktif high. Jadi saat tombol tidak ditekan:
root@arm:/sys/class/gpio/gpio49# cat value
0

12) Saat tombol ditekan

root@arm:/sys/class/gpio/gpio49# cat value


1

13) Kembalikan status pin kembali pada kondisi semula.


root@arm:/sys/class/gpio/gpio49# cd ../
root@arm:/sys/class/gpio# echo 49 > unexport

14) Untuk pembacaan tombol 3, masuk kedirektory /sys/class/gpio/ dan export


root@arm:/sys/class/gpio# echo 109 > export
root@arm:/sys/class/gpio# ls
export

gpio109

gpiochip96

gpiochip0

gpiochip32

gpiochip64

unexport
14

root@arm:/sys/class/gpio# cd gpio109

15) Periksa isi file direction


root@arm:/sys/class/gpio/gpio109# cat direction
in

Paramater in artinya konfigurasi direction telah benar, sehingga tidak perlu dirubah
16) Selanjutnya adalah memeriksa file value yang berisi status tombol. Logika 1 artinya
tidak ditekan dan logika 0 artinya ditekan(untuk pin input aktif low) dan sebaliknya
untuk rangkaian aktif high. Jadi saat tombol tidak ditekan:
root@arm:/sys/class/gpio/gpio109# cat value
0

17) Saat tombol ditekan


root@arm:/sys/class/gpio/gpio109# cat value
1

18) Kembalikan status pin kembali pada kondisi semula.


root@arm:/sys/class/gpio/gpio109# cd ..
root@arm:/sys/class/gpio# echo 109 > unexport
root@arm:/sys/class/gpio#

Praktikum 4.3
Kontrol LED super bright dari PWM dan Motor Servo
Tujuan Praktikum
1) Mampu

menggunakan

metode

DTOs

untuk

mengaktifkan

pin

Analog

Output(PWM)
2) Mengendalikan intensitas cahaya LED superbright dan sudut putar motor servo
Alat yang digunakan
1) Modul Embedded System BeagleBone Black
2) PC/Laptop
Tahapan Praktikum
1) Login pada modul B3 seperti pada materi sebelumnya
15

2) Perhatikan rangkaian motor servo dan LED super bright terhubung pada pin header
masing-masing.

Gambar 4. 6
Rangkaian

skematik untuk koneksi B3 dengan modul motor servo

3) Untuk mengetahui semua informasi pin yang suda terpakai pada modul B3, jalankan
perintah berikut:
4) Login sebagai root user

16

ubuntu@arm:~$ sudo su

5) Masuk kedirektory pinmux


root@arm:/home/ubuntu# cd
/sys/kernel/debug/pinctrl/44e10800.pinmux/

6) Tampilkan isi file pingroups

root@arm:/sys/kernel/debug/pinctrl/44e10800.pinmux# cat
pingroups
registered pin groups:
group: pinmux_uart0_pins
pin 92 (44e10970.0)
pin 93 (44e10974.0)
group: cpsw_default
pin 66 (44e10908.0)
....
....
....
group: mcasp0_pins
pin 107 (44e109ac.0)
pin 103 (44e1099c.0)
pin 101 (44e10994.0)
pin 100 (44e10990.0)
pin 27 (44e1086c.0)
root@arm:/sys/kernel/debug/pinctrl/44e10800.pinmux#

file pingroup berisi informasi mengenai semua daftar pin group list yang dimiliki
oleh modul B3 dan dikenali oleh sistem operasi. Semua pin groups terdaftar disini
dengan penomoran masing-masing pada lokasi alamat yang unik.
7) Untuk mengetahui pin sudah terpakai secara lebih detail, jalankan perintah berikut:
root@arm:/sys/kernel/debug/pinctrl/44e10800.pinmux# cat
pinmux-pins | more
Pinmux settings per pin
Format: pin (name): mux_owner gpio_owner hog?
pin 0 (44e10800.0): 481d8000.mmc (GPIO UNCLAIMED) function
pinmux_emmc_pins group pinmux_emmc_pins
pin 1 (44e10804.0): 481d8000.mmc (GPIO UNCLAIMED) function
pinmux_emmc_pins group pinmux_emmc_pins
pin 2 (44e10808.0): 481d8000.mmc (GPIO UNCLAIMED) function
............
17

............
............
pin 16 (44e10840.0): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 17 (44e10844.0): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 20 (44e10850.0): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 21 (44e10854.0): leds (GPIO UNCLAIMED) function
user_leds_default group user_leds_default
pin 24 (44e10860.0): leds (GPIO UNCLAIMED) function
user_leds_default group user_leds_default
pin 25 (44e10864.0): (MUX UNCLAIMED) (GPIO UNCLAIMED)

file pin-mux-pins digunakan untuk informasi pin-pin yang telah terpakai atau aktif
secara default dan kemungkinan digunakan pada sistem operasi. File ini bisa
digunakan untuk memeriksa dan validasi dari pengaktifan DTOs yang telah
dibahasa sebelumnya.
8) Untuk mengetahui daftar semua pin, jalankan perintah berikut:
root@arm:/sys/kernel/debug/pinctrl/44e10800.pinmux# cat pins
| more
registered pins: 142
pin 0 (44e10800.0) 00000031 pinctrl-single
pin 1 (44e10804.0) 00000031 pinctrl-single
pin 2 (44e10808.0) 00000031 pinctrl-single
...
...
...
pin 8 (44e10820.0) 00000027 pinctrl-single
pin 9 (44e10824.0) 00000027 pinctrl-single
pin 10 (44e10828.0) 00000027 pinctrl-single
pin 11 (44e1082c.0) 00000027 pinctrl-single
pin 12 (44e10830.0) 00000027 pinctrl-single

9) Download terlebih dahulu contoh program Device Tree Overlay dari github,
menggunakan aplikasi git dari halaman internet
git://github.com/derekmolloy/boneDeviceTree.git:
root@arm:~# pwd
/root
root@arm:~# git clone
git://github.com/derekmolloy/boneDeviceTree.git
Cloning into 'boneDeviceTree'...
remote: Counting objects: 121, done.

18

remote: Total 121 (delta 0), reused 0 (delta 0), pack-reused


121
Receiving objects: 100% (121/121), 1.09 MiB | 379.00 KiB/s,
done.
Resolving deltas: 100% (44/44), done.
Checking connectivity... done.
root@arm:~# tree
.
boneDeviceTree
docs

BeagleboneBlackP8HeaderTable.pdf

BeagleboneBlackP9HeaderTable.pdf

DTSource3.8.11

am335x-boneblack.dts

am335x-bone-common.dtsi

am335x-bone.dts

am33xx.dtsi

build

derek.dts

skeleton.dtsi

tps65217.dtsi

DTSource3.8.12

am335x-boneblack.dts

am335x-bone-common.dtsi

am335x-bone.dts

am33xx.dtsi

skeleton.dtsi

tps65217.dtsi

DTSource3.8.13

am335x-boneblack.dts

am335x-bone-common.dtsi

am335x-bone.dts

am33xx.dtsi

skeleton.dtsi

tps65217.dtsi

gpio

build

SimpleGPIO.cpp

SimpleGPIO.h

TestApplication

TestApplication.cpp

overlay

build

DM-GPIO-Test-00A0.dtbo

19

DM-GPIO-Test.dts

README.md
spi
build
DM-SPI-Test-00A0.dtbo
DM-SPI-Test.dts
8 directories, 34 files

10) Pada gambar diatas motor servo ditunjukkan terhubung pada pin P8_14 atau
EHRPWM1A. Untuk mengatur mode pin ini menjadi PWM, tulislah source code
berikut kemudian kompile
/*
* Copyright (C) 2013 CircuitCo
* Copyright (C) 2013 Texas Instruments
*
* This program is free software; you can redistribute it
and/or modify
* it under the terms of the GNU General Public License
version 2 as
* published by the Free Software Foundation.
*/
/dts-v1/;
/plugin/;
/ {
compatible = "ti,beaglebone", "ti,beaglebone-black";
/* identification */
part-number = "bone_pwm_P9_14";
version = "00A0";
/* state the resources this cape uses */
exclusive-use =
/* the pin header uses */
"P9.14",

/* pwm: ehrpwm1A */

/* the hardware IP uses */


"ehrpwm1A";
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
pwm_P9_14: pinmux_pwm_P9_14_pins {

20

pinctrl-single,pins = <0x048

0x6>; /* P9_14

(ZCZ ball U14) | MODE 6 */


};
};
};
fragment@1 {
target = <&ocp>;
__overlay__ {
pwm_test_P9_14 {
compatible

= "pwm_test";

pwms

= <&ehrpwm1 0 500000 1>;

pwm-names

= "PWM_P9_14";

pinctrl-names

= "default";

pinctrl-0 = <&pwm_P9_14>;
enabled

= <1>;

duty

= <0>;

status

= "okay";

};
};
};
};

11) Pada direktori overlay terdapat sebuah file build script yang digunakan untuk
mengkompilasi file berekstensi dts. Modifikasi dan sesuaikan file dts untuk nama
file source dan nama file hasil kompilasi. File dts adalah source file yang bisa
dimodifikasi sesuai dengan keinginan dan dtbo adalah obyek file hasil kompilasi
oleh dtc compiler.
12) Simpan file tersebut dengan nama bone_pwm_P9_14-00A0.dts pada direktori
overlay. Kompilasi modifikasi file build agar bisa mengkompikasi file dts yang baru
dibuat.
root@beaglebone:~/boneDeviceTree/overlay# nano build
root@beaglebone:~/boneDeviceTree/overlay# ./build
Compiling the overlay from .dts to .dtbo
root@beaglebone:~/boneDeviceTree/overlay# ls -l
total 28
-rw-r--r-- 1 root root

986 Aug 27 03:49 DM-GPIO-Test-00A0.dtbo

-rw-r--r-- 1 root root 1591 Aug 25 14:53 DM-GPIO-Test.dts


-rw-r--r-- 1 root root 1101 Aug 27 03:49 bone_pwm_P8_1900A0.dtbo
-rw-r--r-- 1 root root 1081 Aug 25 15:11 bone_pwm_P8_19-00A0.dts
-rw-r--r-- 1 root root 1085 Aug 27 03:48 bone_pwm_P9.14-00A0.dts
-rw-r--r-- 1 root root 1101 Aug 27 03:49 bone_pwm_P9.1400A0.dtbo
21

-rwxr-xr-x 1 root root

266 Aug 27 03:49 build

root@beaglebone:~/boneDeviceTree/overlay#

13) Copy file dtbo hasil kompilasi ke direktory /lib/firmware, lalu aktifkan pada file
slots dan periksa pada system.
root@beaglebone:~/boneDeviceTree/overlay# cp bone_pwm_P9.1400A0.dtbo /lib/firmware/

14) Periksa terlebih dahulu file SLOTS yang sedang aktif


root@beaglebone:~/boneDeviceTree/overlay# cat $SLOTS
0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

Kosong dan tidak ada pin yang aktif


15) Tambahkan file dtbo tersebut ke SLOTS
root@beaglebone:~/boneDeviceTree/overlay# echo bone_pwm_P9.14 >
$SLOTS

16) Periksa lagi file SLOTS

root@beaglebone:~/boneDeviceTree/overlay# cat $SLOTS


0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

4: P-O-L-

0 Override Board Name,00A0,Override Manuf,BB-PWM2

5: P-O-L-

1 Override Board Name,00A0,Override

Manuf,bone_pwm_P9.14

Terlihat bahwa pin tersebut telah aktif sebagai output PWM


17) Periksa juga perubahan pesan sistem operasi
root@beaglebone:~/boneDeviceTree/overlay# dmesg | tail -5
[ 3667.642333] bone_capemgr bone_capemgr: part_number
'bone_pwm_P9.14', version 'N/A'
[ 3667.642406] bone_capemgr bone_capemgr: slot #5: override
[ 3667.642448] bone_capemgr bone_capemgr: Using override eeprom
data at slot 5

22

[ 3667.642493] bone_capemgr bone_capemgr: slot #5: 'Override


Board Name,00A0,Override Manuf,bone_pwm_P9.14'
[ 3667.662710] bone_capemgr bone_capemgr: slot #5: dtbo
'bone_pwm_P9.14-00A0.dtbo' loaded; overlay id #1
root@beaglebone:~/boneDeviceTree/overlay#

Terlihat bahwa pin tersebut telah aktif sebagai output PWM


18) Sampai disini, maka pin PWM pada pin header P8_14 telah aktif pada mode PWM.
Selanjutnya untuk mengatur nilai duty cycle dan periode sinyal yang di bangkitkan,
jalankan perintah-perintah berikut:
root@beaglebone:~# cd /sys/class/pwm/pwmchip0
root@beaglebone:/sys/class/pwm/pwmchip0# ls
device

export

npwm

power

subsystem

uevent

unexport

root@beaglebone:/sys/class/pwm/pwmchip0# echo 0 > export


root@beaglebone:/sys/class/pwm/pwmchip0# ls
device

export

npwm

power

pwm0

subsystem

uevent

unexport

root@beaglebone:/sys/class/pwm/pwmchip0# cd pwm0/
root@beaglebone:/sys/class/pwm/pwmchip0/pwm0# ls
duty_cycle

enable

period

polarity

power

uevent

19) Enable terlebih dahulu PWM out, periode(dengan satuan nano second), duty cycle.
Sebagai contoh sinyal pwm dengan frekuensi 1 Hz, duty cycle 50%:
root@beaglebone:/sys/class/pwm/pwmchip0/pwm0# echo 1 > enable
root@beaglebone:/sys/class/pwm/pwmchip0/pwm0# echo 1000000000 >
period
root@beaglebone:/sys/class/pwm/pwmchip0/pwm0# echo 500000000 >
duty_cycle

PeUntuk motor servo, nilai frekuensi dan duty cycle adalah tertentu. Diskusikan
dengan teman anda untuk menemukan nilai duty cycle dan frekuensi yang
dibutuhkan.
20) Perintah diatas juga bisa diajalankan menggunakan file dtbo yang sudah tersedia
pada direktory /lib/firmware.
21) Aktifkan mode PWM pada pin P9.19 pada pada direktory /sys/class/pwm dengan
masuk kedirektori overlay dan buka file dts menggunakan teks editor. Melalui file
inilah semua pin pada P8 dan P9 dapat dikonfigurasi. Masuk kedirektory
/lib/firmaware dan aktifkan mode PWM pada
BB-PWM2-00A0.dtbo, lalu
tambahkan pada slot file.
root@beaglebone:~# ls /lib/firmware/*PWM* -l
-rw-r--r-- 1 root root 1198 Aug

3 15:48 /lib/firmware/BB-PWM0-

00A0.dtbo
-rw-r--r-- 1 root root 1198 Aug

3 15:48 /lib/firmware/BB-PWM1-

00A0.dtbo

23

-rw-r--r-- 1 root root 1198 Aug

3 15:48 /lib/firmware/BB-PWM2-

00A0.dtbo
root@beaglebone:/lib/firmware# cat $SLOTS
0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

root@beaglebone:~# cd /lib/firmware/
root@beaglebone:/lib/firmware# echo BB-PWM2 > $SLOTS
root@beaglebone:/lib/firmware# cat $SLOTS
0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

7: P-O-L-

0 Override Board Name,00A0,Override Manuf,BB-PWM2

root@beaglebone:/lib/firmware# dmesg |tail -5


[ 4188.878915] bone_capemgr bone_capemgr: part_number 'BB-PWM2',
version 'N/A'
[ 4188.878990] bone_capemgr bone_capemgr: slot #7: override
[ 4188.879032] bone_capemgr bone_capemgr: Using override eeprom
data at slot 7
[ 4188.879078] bone_capemgr bone_capemgr: slot #7: 'Override
Board Name,00A0,Override Manuf,BB-PWM2'
[ 4188.913561] bone_capemgr bone_capemgr: slot #7: dtbo 'BBPWM2-00A0.dtbo' loaded; overlay id #0
root@beaglebone:/lib/firmware#

22) Sampai disini, maka pin PWM pada pin header P8_19 telah aktif pada mode PWM.
Selanjutnya untuk mengatur nilai duty cycle dan periode sinyal yang di bangkitkan,
jalankan perintah-perintah berikut:
root@beaglebone:~# cd /sys/class/pwm/pwmchip0
root@beaglebone:/sys/class/pwm/pwmchip0# ls
device

export

npwm

power

subsystem

uevent

unexport

root@beaglebone:/sys/class/pwm/pwmchip0# echo 0 > export


root@beaglebone:/sys/class/pwm/pwmchip0# ls
device

export

npwm

power

pwm0

subsystem

uevent

unexport

root@beaglebone:/sys/class/pwm/pwmchip0# cd pwm0/
root@beaglebone:/sys/class/pwm/pwmchip0/pwm0# ls
duty_cycle

enable

period

polarity

power

uevent

23) Enable terlebih dahulu PWM out, periode(dengan satuan nano second), duty cycle.
Sebagai contoh sinyal pwm dengan frekuensi 1 Hz, duty cycle 50%:
root@beaglebone:/sys/class/pwm/pwmchip0/pwm0# echo 1 > enable
24

root@beaglebone:/sys/class/pwm/pwmchip0/pwm0# echo 1000000000 >


period
root@beaglebone:/sys/class/pwm/pwmchip0/pwm0# echo 500000000 >
duty_cycle

24) Amati pada LED super bright yang terkoneksi dengan pin P8_19. Seharusnya LED
berkedip. Percobaan bisa dilanjutkan dengan cara merubah nilai duty cycle dan
periode berbeda untuk pengaturan intensitas cahaya led.
root@beaglebone:/sys/class/pwm/pwmchip0/pwm0# echo 1 > enable

25) Untuk menonaktifkan mode pin PWM pada P8_19, jalankan perintah berikut:
root@beaglebone:cd ../
root@beaglebone:echo 0 > unexport

Praktikum 4.4
Input Tegangan Analog/ADC
Modul B3 memiliki sejumlah 7 channel ADC dengan resolusi hasil konversi sebesar 12
bit. Sebelum mempelajari materi ini diharuskan untuk memahami materi ADC pada
mikrokontroler. Resolusi ADC ini digunakan bisa digunakan untuk membaca input
tegangan analog maksimal sebesar 1,8 Volt. Sehingg, tegangan input 1,8 Volt ini akan
direpresentasikan menjadi data informasi digital dari 0 sampai dengan 4095(12bit).
Berikut ini adalah daftar peripheral koneksi ADC pada modul B3.
1. Pin P9.32 : VDDADC
2. Pin P9.33 : AIN4
3. Pin P9.34 : GNDADC
4. Pin P9.35 : AIN6
5. Pin P9.36 : AIN5
6. Pin P9.37 : AIN2
7. Pin P9.38 : AIN3
8. Pin P9.39 : AIN1
9. Pin P9.40 : AIN0
Adapun pada modul tambahan B3, input ADC sudah terhubung dengan sensor LDR,
LM 35 dan input potensiometer. Berikut adalah gambar koneksi ke-3 input ADC
25

tersebut:

Gambar 4. 7 Rangkaian dan posisi input-input tegangan analog


Jadi untuk daftar input ADC pada modul B3 adalah sebagai berikut:

LM35 = P9.40/AIN0

LDR = P9.38/AIN3

POTENSIOMETER = P9.36/AIN0
26

Tujuan Praktikum
1) Mampu menggunakan metode DTOs untuk mengaktifkan pin Analog Input(ADC)
2) Mampu membaca tegangan input sensor LM35, LDR dan Potensiometer
Alat yang digunakan
1) Modul Embedded System BeagleBone Black
2) PC/Laptop
Tahapan Praktikum
1) Login pada modul B3 seperti pada materi sebelumnya
2) Masuk kedirektory /lib/firmware
root@beaglebone:~# cd /lib/firmware/

3) Periksa status slot sebelum ditambahkan dtbo adc


root@beaglebone:/lib/firmware# cat $SLOTS
0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

4) Tambahkan file dtbo BB-ADC ke SLOTS seperti tahapan sebelumnya


root@beaglebone:/lib/firmware# echo BB-ADC > $SLOTS

5) Periksa status SLOTS sekarang


root@beaglebone:/lib/firmware# cat $SLOTS
0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

5: P-O-L-

0 Override Board Name,00A0,Override Manuf,BB-ADC

6) Setelah pin ADC aktif, lalu masuk ke direktori /sys/bus/iio/devices/iio\:


device0
root@beaglebone:/lib/firmware# cd

27

/sys/bus/iio/devices/iio\:device0

7) Tampilkan isi direktori tersebut


root@beaglebone:/sys/bus/iio/devices/iio:device0# ls -l
total 0
drwxr-xr-x 2 root root

0 Aug 27 04:13 buffer

-r--r--r-- 1 root root 4096 Aug 27 04:13 dev


-rw-r--r-- 1 root root 4096 Aug 27 04:13 in_voltage0_raw
-rw-r--r-- 1 root root 4096 Aug 27 04:13 in_voltage1_raw
-rw-r--r-- 1 root root 4096 Aug 27 04:13 in_voltage2_raw
-rw-r--r-- 1 root root 4096 Aug 27 04:13 in_voltage3_raw
-rw-r--r-- 1 root root 4096 Aug 27 04:13 in_voltage4_raw
-rw-r--r-- 1 root root 4096 Aug 27 04:13 in_voltage5_raw
-rw-r--r-- 1 root root 4096 Aug 27 04:13 in_voltage6_raw
-r--r--r-- 1 root root 4096 Aug 27 04:13 name
lrwxrwxrwx 1 root root

0 Aug 27 04:13 of_node

drwxr-xr-x 2 root root

0 Aug 27 04:13 power

drwxr-xr-x 2 root root

0 Aug 27 04:13 scan_elements

lrwxrwxrwx 1 root root

0 Aug 27 04:13 subsystem

-rw-r--r-- 1 root root 4096 Aug 27 04:13 uevent

Sebagaimana terlihat pada struktur direktory diatas, bahwa terdapat sebanyak 7


in_voltage yang bisa diperiksa. Sebagaimana telah dijelaskan diatas bahwa setiap
file tersebut mewakili nilai pembacaan tegangan input dari masing-masing channel
ADC yang digunakan.
8) Nilai tegangan keluaran dari input potensiometer adalah
(Untuk Potensiometer)
root@beaglebone:/sys/bus/iio/devices/iio:device0#
cat in_voltage5_raw
1344

9)

Nilai tegangan keluaran dari input LM35 adalah


(Untuk LM35)
root@beaglebone:/sys/bus/iio/devices/iio:device0#
cat in_voltage0_raw
4095

10) Nilai tegangan keluaran dari input LDR adalah


(Untuk LDR)
root@beaglebone:/sys/bus/iio/devices/iio:device0#
28

cat in_voltage3_raw
3225

Praktikum 4.5
Protokol Serial Programming Interface/SPI
Komunikasi SPI digunakan untuk komunikasi antara 1 IC master dan 1/ lebih IC slave.
Komunikasi ini menggunakan 4 jenis koneksi yakni:
1. MOSI : Master Out Slave In
2. MISO : Master In Slave Out
3. SCLK : Signal Clock
4. CS : Chip Select
Pada modul B3 sendiri komunikasi ini terhubung pada display 7 Segment menggunakan
IC 74HC595 shift register yang langsung terhubung pada header P9. Berikut adalah
gambar rangkaian tersebut:

29

Gambar 4. 8 Posisi dan Rangkaian 7 segment ke SPI


Seven segment yang digunakan disini berjenis common cathode dan segment a-h pada keempat digit
seven segment ini diparalel. Sehingga untuk menampilkan angka pada keempat digit ini perlu dilakukan
secara bergantian selama 1ms untuk sebuah digit dan dilakukan secara terus berulang. Metode seperti ini
dikenal sebagai metode refresh. Data baik untuk segment a-h maupun untuk common dikirim secara
serial dari B3 menggunakan SPI dan diterima oleh dua buah IC 74HC595. Akan tetapi tampak disini
bahwa data untuk segment a-h tidak mengumpul pada sebuah IC 74HC595. Langkah ini diambil untuk
menyederhanakan layout PCB dan disengaja demikian untuk bisa dijadikan pembelajaran mengenai
teknik pemrograman dalam embedded system. Tampak dalam rangkaian ini bahwa SPI yang digunakan
ialah SPI1.
SPI1 secara default tidak tersedia karena jalur pin-pinnya digunakan untuk HDMI. Untuk menonaktifkan
HDMI dan dalam rangka mengijinkan akses SPI1, tambahkan instruksi berikut ini ke file /boot/uEnv.txt
yang ada di partisi FAT B3.
capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
sedangkan untuk daftar pin yang digunakan pada modul B3 adalah sebagai berikut:
30

Tabel 4. 3 Tabel No Pin untuk Komunikasi SPI

Tujuan Praktikum
1) Mampu menggunakan metode DTOs untuk mengaktifkan protokol komunikasi
serial SPI
2) Mampu membangkitkan karakter angka pada display 7-segment dari modul B3
Alat yang digunakan
1) Modul Embedded System BeagleBone Black
2) PC/Laptop
Tahapan Praktikum
1) Login pada modul B3 seperti pada materi sebelumnya
2) Masuk kedirektory /dev dan periksa apakah spi telah aktif sebagai device node
root@beaglebone:~# ls /dev/*spi*
ls: cannot access /dev/*spi*: No such file or directory

artinya file node SPI tidak ditemukan/belum aktif


3) Periksa daftar slot yang aktif terlebih dahulu
root@beaglebone:~# cat $SLOTS
0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

4) Masuk kedirektori /lib/firmware


root@beaglebone:~# cd /lib/firmware/

31

5) Tambahkan komunikasi SPI pada daftar slot aktif


root@beaglebone:/lib/firmware# echo BB-SPIDEV1 > $SLOTS

6) Lalu periksa lagi apakah file node pada direktory /dev/ telah aktif
root@beaglebone:/lib/firmware# ls /dev/*spi*
/dev/spidev2.0

/dev/spidev2.1

Terdapat 2 file node spi yang siap digunakan. Pada rangkaian telah dijelaskan bahwa
7 segment terhubung dengan SPI channel 2
7) Untuk memvalidasi ulang, periksa daftar slot lagi
root@beaglebone:/lib/firmware# cat $SLOTS
0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

6: P-O-L-

0 Override Board Name,00A0,Override Manuf,BB-SPIDEV1

8) Untuk mengirimkan data pada channel SPI, gunakan perintah berikut


root@beaglebone:/lib/firmware# echo -nf "x\FF" > /dev/spidev2.0
root@beaglebone:/lib/firmware# echo -nf "x\00" > /dev/spidev2.0
root@beaglebone:/lib/firmware# echo -nf "x\0F" > /dev/spidev2.0

Praktikum 4.6
Protokol Komunikasi I2C
Untuk membahas materi bab ini pertimbangkan rangkaian I2C pada Cape TK4B3
seperti dalam Gambar.

32

Gambar 4. 9 Rangkaian eeprom dan rtc untuk komunikasi I2C

33

Menurut datasheet, DS1307 memiliki alamat tetap 0xD0 (0b1101 0000) atau jika bit
R/W ditiadakan (dengan cara alamat tersebut digeser satu bit ke kanan) maka alamat
DS1307 menjadi 0x68 (0b0110 1000). Adapun alamat 24C256 adalah 0b1010 A2-A1A0-R/W. Tampak dalam gambar tersebut bahwa A0, A1 dan A2 dipullup sehingga
berlogika 1. Tetapi karena A2 dilengkapi

dengan jumper maka A2 akan terseting

sebagai 0 bila jumper tersebut dipasang. Jadi alamat 24C256 akan bernilai 0b1010 0110
(0xA6) ketika A2=0 atau 0b1010 1110 (0xAE) ketika A2=1. Apabila bit R/W diabaikan
(digeser satu bit ke kanan) maka alamat 24C256 menjadi 0b0101 0011 (0x53) ketika
A2=0 atau 0b0101 0111 (0x57) ketika A2=1.
Ikuti prosedur berikut untuk melakukan pengujian pada protokol komunikasi I2C yang
terkoneksi pada eeprom 24C256:
Tujuan Praktikum
1) Mampu menggunakan metode DTOs untuk mengaktifkan protokol komunikasi
serial I2C
2) Mampu bermkonukasi dengan perangkat EEPROM dan RTC dari modul B3
Alat yang digunakan
1) Modul Embedded System BeagleBone Black
2) PC/Laptop
Tahapan Praktikum
1) Login pada modul B3 seperti pada materi sebelumnya
2) Install terlebih dahulu i2c-tools
root@beaglebone:~#

apt-get install i2c-tools

3) Periksa daftar slots yang sedang aktif


root@beaglebone:~# cat $SLOTS
0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

tidak ada slots yang aktif

34

4) Masuk kedirektori kumpulan file dtbo


root@beaglebone:~# cd /lib/firmware/

5) Tambahkan dtbo BB-I2C pada slots


root@beaglebone:/lib/firmware# echo BB-I2C1 > $SLOTS

6) Periksa kondisi slots setelah penambahan


root@beaglebone:/lib/firmware# cat $SLOTS
0: PF----

-1

1: PF----

-1

2: PF----

-1

3: PF----

-1

4: P-O-L-

0 Override Board Name,00A0,Override Manuf,BB-I2C1

7) Periksa juga apakah device node telah aktif pada direktori /dev
root@beaglebone:/dev# ls i2c-* -l
crw-rw---- 1 root i2c 89, 0 Aug 29 06:18 i2c-0
crw-rw---- 1 root i2c 89, 1 Aug 29 06:23 i2c-1
crw-rw---- 1 root i2c 89, 2 Aug 29 06:18 i2c-2
root@beaglebone:/dev#

8) Terdapat 3 channel i2c yang telah aktif. Tahap pertama adalah dengan mendeteksi semua
perangkat i2c yang terhubung ke bus:
root@beaglebone:/dev# i2cdetect -l
i2c-0 i2c

OMAP I2C adapter

I2C adapter

i2c-1 i2c

OMAP I2C adapter

I2C adapter

i2c-2 i2c

OMAP I2C adapter

I2C adapter

9) Periksa kondisi slots setelah penambahan dan selanjutnya adalah memeriksan setiap
channel yang terkoneksi dengan slave chip yang aktif:
root@beaglebone:/lib/firmware# i2cdetect -y -r 0
0
00:

-- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -20: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- -30: -- -- -- -- 34 -- -- -- -- -- -- -- -- -- -- -40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

35

50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -70: -- -- -- -- -- -- -- --

Terlihat pada channel 0 terhubung dengan sebuah chip I2C. Tanda - - artinya alamat
device telah dicek namun tidak terdeteksi, sedangkan UU artinya alamat tersebut sudah
terpakai oleh system embedded untuk tujuan yang lain, sehingga tidak dicek lagi. 0X34
artinya adalah perangkat I2C yang terdeteksi oleh sistem pada hardware. Untuk melihat
lebih detail informasi chip/driver yang aktif pada alamat 0x34 tersebut, gunakan
perintah i2cdump, i2cget dan i2cset.

36

Anda mungkin juga menyukai