2017
Percobaan 4
Komunikasi Serial Bluetooth
I. Tujuan
Mahasiswa dapat melakukan transfer data menggunakan Bluetooth.
Mahasiswa dapat menghubungkan PC dengan Mikrokontroller atau handphone
dengan mikrokontroller untuk dapat berkomunikasi melalui Bluetooth.
Mahasiswa mampu menganalisa dan menyimpulkan hasil praktikum.
Time Slot
Kanal dibagi dalam time slot-time slot, masing-masing mempunyai panjang
625 ms. Time slot-time slot tersebut dinomori sesuai dengan clock bluetooth dari
master piconet. Batas penomoran slot dari 0 sampai dengan 227-1 dengan panjang
siklus 227. Di dalam time slot, master dan slave dapat mentransmisikan paket-paket
dengan menggunakan skema TDD (Time-Division Duplex). Master hanya memulai
melakukan pentransmisiannya pada nomor time slot genap saja sedangkan slave hanya
memulai melakukan pentransmisiannya pada nomor time slot ganjil saja.
Protokol
Maksud dari protokol adalah untuk mempercepat pengembangan aplikasi-
aplikasi dengan menggunakan teknologi Bluetooth. Layer-layer bawah pada stack
protokol bluetooth dirancang untuk menyediakan suatu dasar yang fleksibel untuk
pengembangan protokol yang lebih lanjut. Protokol-protokol yang lain seperti
RFCOMM diambil dari protokol-protokol yang sudah ada dan protokol ini hanya
dimodifikasi sedikit untuk disesuaikan dengan kepentingan bluetooth. Stack protokol
bluetooth dapat dibagi ke dalam empat layer sesuai dengan tujuannya.
Pengukuran
Ada tiga aspek dalam melakukan pengukuran Bluetooth: pengukuran RF
(Radio Frequency), protokol dan profile. Pengukuran radio dilakukan untuk
menyediakan compatibility perangkat radio yang digunakan di dalam sistem dan untuk
menentukan kualitas sistem serta dapat menggunakan perangkat alat ukur RF standar
seperti spectrum analyzer, transmitter analyzer, power meter, digital signal generator
dan bit-error-rate tester (BERT). Hasil pengukuran harus sesuai dengan spesifikasi
dan memenuhi parameter yang tercantum dalam Tabel 1.
Dari informasi Test & Measurement World, untuk pengukuran protokol, dapat
menggunakan protocol sniffer yang dapat memonitor dan menampilkan pergerakan
data antar perangkat bluetooth. Pengukuran profile dilakukan untuk meyakinkan
interoperability antar perangkat dari berbagai macam vendor.
Fitur Keamanan
Bluetooth dirancang untuk memiliki fitur-fitur keamanan sehingga dapat
digunakan secara aman baik dalam lingkungan bisnis maupun rumah tangga. Fitur-
fitur yang disediakan bluetooth antara lain sebagai berikut:
Enkripsi data
Autentikasi pengguna
Lompatan frekuensi cepat (1600 hops/sec)\
Kontrol pengeluaran energi
Fitur-fitur tersebut menyediakan fungsi-fungsi keamanan dari tingkat
keamanan layer fisik/ radio yaitu gangguan dari penyadapan sampai dengan tingkat
keamanan layer yang lebih tinggi seperti password dan PIN. Tetapi dari sebuah artikel
Internet, menurut penelitian dua mahasiswa Universitas Tel Aviv, mengenai adanya
kemungkinan Bluetooth bisa disadap dengan proses pairing berpasangan.
Caranya adalah dengan menyiapkan sebuah kunci rahasia pada proses pairing.
Selama ini dua perangkat bluetooth menyiapkan kunci digital 128 bit. Ini adalah kunci
rahasia yang kemudian disimpan dan dipakai dalam proses enkripsi pada komunikasi
selanjutnya. Langkah pertama ini mengharuskan pengguna yang sah untuk
menginputkan kunci rahasia yang sesuai, PIN empat digit ke perangkat. Pesan lalu
dikirim ke perangkat lainnya, dan ketika ditanyai kunci rahasia, dia berpura-pura lupa.
Hal ini memacu perangkat lain untuk memutus kunci dan keduanya lalu mulai proses
pairing baru. Kesempatan ini kemudian bisa dimanfaatkan oleh hacker untuk
mengetahui kunci rahasia yang baru. Selain mengirim ini ke perangkat Bluetooth yang
dituju, semua perangkat Bluetooth yang ada dalam jangkauan itu juga tetap dapat
disadap.
Bluetooth FHSS vs WLAN DSSS
Bluetooth lebih memilih metode FHSS (Frequency Hopping Spread Spectrum)
dibandingkan dengan DSSS (Direct Sequence Spread Spectrum). Alasan bluetooth
tidak menggunakan DSSS antara lain sebagai berikut :
1. FHSS membutuhkan konsumsi daya dan kompleksitas yang lebih rendah
dibandingkan DSSS hal ini disebabkan karena DSSS menggunakan kecepatan
chip (chip rate) dibandingkan dengan kecepatan simbol (symbol rate) yang
digunakan oleh FHSS, sehingga cost yang dibutuhkan untuk menggunakan
DSSS akan lebih tinggi.
2. FHSS menggunakan FSK di mana ketahanan terhadap gangguan noise relatif
lebih bagus dibandingkan dengan DSSS yang biasanya menggunakan OPSK
(untuk IEEE 802.11 2 Mbps) atau CCK ( IEEE 802.11b 11 Mbps).
Walaupun FHSS mempunyai jarak jangkauan dan transfer data yang lebih rendah
dibandingkan dengan DSSS tetapi untuk layanan dibawah 2 Mbps FHSS dapat
memberikan solusi cost-efektif yang lebih baik.
Aplikasi dan Layanan
Protokol bluetooth menggunakan sebuah kombinasi antara circuit switching
dan packet switching. Bluetooth dapat mendukung sebuah kanal data asinkron, tiga
kanal suara sinkron simultan atau sebuah kanal di mana secara bersamaan mendukung
layanan data asinkron dan suara sinkron. Setiap kanal suara mendukung sebuah kanal
suara sinkron 64 kb/s. Kanal asinkron dapat mendukung kecepatan maksimal 723,2
kb/s asimetris, di mana untuk arah sebaliknya dapat mendukung sampai dengan
kecepatan 57,6 kb/s. Sedangkan untuk mode simetris dapat mendukung sampai dengan
kecepatan 433,9 kb/s.
III. Peralatan
1. Komputer
2. Modul Bluetooth
3. Modul mikrokontroller STM32F407VGTx
4. Modul Bluetooth SPP
5. Software STM32CubeMX
6. Software Keil uVision
V. Hasil Percobaan
#include "stm32f4xx_hal.h"
#include "lcd_character.h"
#include "stdio.h"
#include "stdlib.h"
if (rx_buffer[0]=='*'&& rx_buffer[8]=='#')
if(rx_buffer[1]=='W'||rx_buffer[1]=='w')
{
sprintf(buffer,"%c%c%c",rx_buffer[2],rx_buffer[3],rx_buffer[4]);
add_data = atoi(buffer);
if(add_dev == add_data)
{
sprintf(buffer,"%c%c",rx_buffer[5],rx_buffer[6]);
ch=atoi(buffer);
data_analog=rx_buffer[7];
(ch==0)
{if (data_analog=='1')HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0,GPIO_PIN_SET);
if (data_analog=='0')HAL_GPIO_WritePin(GPIOE,
GPIO_PIN_0,GPIO_PIN_RESET);
}
else if(ch == 1)
{if (data_analog=='1')HAL_GPIO_WritePin(GPIOE, GPIO_PIN_1,GPIO_PIN_SET);
if (data_analog=='0')HAL_GPIO_WritePin(GPIOE,
GPIO_PIN_1,GPIO_PIN_RESET);
}
else if(ch == 2)
{if (data_analog=='1')HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2,GPIO_PIN_SET);
if (data_analog=='0')HAL_GPIO_WritePin(GPIOE,
GPIO_PIN_2,GPIO_PIN_RESET);
}
else if(ch == 3)
{if (data_analog=='1')HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3,GPIO_PIN_SET);
if (data_analog=='0')HAL_GPIO_WritePin(GPIOE,
GPIO_PIN_3,GPIO_PIN_RESET);
}
}
}
rx_buffer[8]=0; //Untuk mencegah eksekusi sebelum komplit
}
}
/** System Clock Configuration
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
__PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_S
CALE1);
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 4;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
RCC_ClkInitStruct.ClockType =
RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1
|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
/* SysTick_IRQn interrupt configuration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
/* USART3 init function */
void MX_USART3_UART_Init(void)
{
huart3.Instance = USART3;
huart3.Init.BaudRate = 9600;
huart3.Init.WordLength = UART_WORDLENGTH_8B;
huart3.Init.StopBits = UART_STOPBITS_1;
huart3.Init.Parity = UART_PARITY_NONE;
huart3.Init.Mode = UART_MODE_TX_RX;
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart3.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart3);
}
/** Configure pins as
* Analog
* Input
* Output
* EVENT_OUT
* EXTI
*/
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Ports Clock Enable */
__GPIOE_CLK_ENABLE();
__GPIOH_CLK_ENABLE();
__GPIOA_CLK_ENABLE();
__GPIOD_CLK_ENABLE();
__GPIOB_CLK_ENABLE();
VI. Analisa
Pada dasarnya, program yang digunakan pada komunikasi serial Bluetooth
sama dengan yang digunakan pada komunikasi RS 232 dan RS 485 pada percobaan
sebelumnya, yang membedakan adalah huart yang digunakan. Pada komunikasi serial
Bluetooth kali ini menggunakan port huart3 pada software STM32CubeMX.
Percobaan serial Bluetooth tidak memerlukan kabel penghubung antara PC
dengan modul, yang perlu dilakukan adalah menghubungkan Bluetooth yang ada pada
PC dengan Modul Bluetooth sesuai dengan kode yang tertera pada modul.
Pada percobaan serial komunikasi Bluetooth kali ini melanjutkan percobaan
sebelumnya yaitu serial menggunakan RS-232 dan RS-485, dengan menggunakan
protokol komunikasi yang sama yang telah dibuat pada percobaan sebelumnya, yaitu
*WAAACCD#, dimana:
* merupakan start data
W menunjukkan write command
AAA merupakan address data
CC merupakan channel pada relay
D data value, 1 berarti ON, dan 0 berarti OFF
# merupakan end data
if (rx_buffer[0]=='*'&& rx_buffer[8]=='#') 1
if(rx_buffer[1]=='W'||rx_buffer[1]=='w') 2
sprintf(buffer,"%c%c%c",rx_buffer[2],rx_buffer[3],rx_buffer[4]);
add_data = atoi(buffer); 3
if(add_dev == add_data)
Pada program no. 1, digunakan untuk memeriksa apakah format data yang dikirim
telah sesuai dengan format data yang telah ditentukan sebelumnya. Apabila sesuai
maka akan dilanjutkan dengan memeriksa karakter kedua menggunakan program no. 2,
yaitu huruf W yang menunjukkan write command, huruf W disini dapar ditulis dalam
bentuk kapital maupun huruf kecil karena menggunakan tanda OR. Setelah itu, akan
diperiksa address data nya pada program no. 3, yaitu 3 karakter setelah huruf W.
Karena masih dalam bentuk char maka harus diubah ke integer supaya dapat
dibandingkan dengan nilai address data yang telah diinisialisasikan sebelumnya.
sprintf(buffer,"%c%c",rx_buffer[5],rx_buffer[6]);
ch=atoi(buffer); 4
data_analog=rx_buffer[7];
Pada program no. 4, digunakan untuk memeriksa channel yang digunakan. Karena
input data nya masih dalam bentuk char, maka harus diubah ke integer terlebih dahulu.
Selanjutnya akan diperiksa data value yang akan dieksekusikan ke channel relay.
Sebagai contoh *W007011#, maka pada format data tersebut address data yang
digunakan adalah 007, sedangkan channel relay sebagai outputnya yaitu relay channel
1 dengan kondisi ON (data value =1).
rx_buffer[8]=0; 5
Untuk mencegah eksekusi program sebelum data yang dituliskan lengkap (terutama
untuk penulisan format data yang kedua dan seterusnya), maka harus ditambahkan
program no. 5 diatas.
Dengan memanfaatkan fitur terminal yang ada pada software CVAvr, maka
data dapat dikirim sesuai dengan format protokol yang telah dibuat diatas untuk
digunakan menyalakan atau mematikan relay yang ada pada modul mikrokontroller.
Selain menggunakan terminal pada CVAvr, komunikasi serial Bluetooth juga
dapat dilakukan dengan software Bluetooth SPP yang dapat diakses memalui
hadphone. Pada Byte stream mode, pengguna dapat mengetikkan data sesuai format,
kemudian langsung mengirim dengan menekan enter, seperti pada terminal CV Avr.
Sedangkan pada Keyboard mode, pengguna harus mengatur terlebih dahulu data untuk
setiap button “click me” yang disediakan dengan menekan “button set”, dan kemudian
menuliskan format data sesuai protokol diatas.
VII. Kesimpulan
Bluetooth adalah spesifikasi industri untuk jaringan kawasan pribadi (personal
area networks atau PAN) tanpa kabel.
Bluetooth menghubungkan dan dapat dipakai untuk melakukan tukar-menukar
informasi di antara peralatan-peralatan.
Pada komunikasi serial bluetooth port yang digunakan berbeda dengan RS 232 dan
RS-485, serial bluetooth menggunakan USART 3.
Jarak maksimum yang dapar dijangkau Bluetooth adalah 10 meter.