#define F_CPU 4000000UL //sesuaikan dengan xtal yg dipakai #include <avr/io.h> #include <util/delay.h> #include <inttypes.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #define USART_BAUDRATE 9600 //sesuaikan dengan baudrate Bluetooth #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) //teks reply, sesuaikan dengan keinginan const char menu[] PROGMEM = " \ntest BLUETOOTH by ahocool\n\r" ; const char satu[] PROGMEM = " \ntombol 1 \n\r"; const char dua[] PROGMEM = " \ntombol 2 \n\r"; const char tiga[] PROGMEM = " \ntombol 3 \n\r"; void USART_Tx(unsigned char data) { while (!(UCSRA & (1<<UDRE)));{} // wait till transmit Data register is empty UDR = data; // Send data to the computer } void kirim_text(const char *data) { while (pgm_read_byte(data) != 0x00) USART_Tx(pgm_read_byte(data++)); } void init_usart(void) { cli(); UCSRB |= (1 << RXEN) | (1 << TXEN); UCSRC |= (1 << UCSZ0) | (1 << UCSZ1); UBRRL = BAUD_PRESCALE; UBRRH = (BAUD_PRESCALE >> 8); UCSRB |= (1 << RXCIE); //interupt serial usart sei(); } ISR(USART_RX_vect) { char databyte; databyte = UDR; switch (databyte) { //sesuaikan dengan tombol keyboard yg digunakan case 0xD : { kirim_text(menu) ; break; } case '1' : { kirim_text(satu) ; break; } case '2' : { kirim_text(dua) ; break; } case '3' : { kirim_text(tiga) ; break; } } } int main(void) { init_usart(); while(1) { } return 0; }
Tampilkan postingan dengan label bluetooth. Tampilkan semua postingan
Tampilkan postingan dengan label bluetooth. Tampilkan semua postingan
Rabu, 18 September 2013
[TUTORIAL] AVR - BLUETOOTH - ANDROID ...... it's easy
Sebelum lanjut ke topik pembahasan, saya pingin ngeluh, bangga atau sedih dengan kenyataan mengenai komponen elektronika pabrikan dari china. Teringat ketika disuatu terminal bis 10 tahun yg lalu pada pedagang asongan yang menjual radio FM mini dengan harga 10 ribu rupiah. Secara saya pernah merakit sendiri radio FM serasa ga masuk akal deh harga segitu. Sekarang di tahun 2013 apa sih komponen yg tidak dibikin murah sama pabrikan china ? Dan kenapa bisa murah ? Yang saya tahu bahwa komponen elektronika di china sudah menjadi industri rumah tangga dan mereka didukung pemerintah komunis untuk memproduksi komponen diskrit kelas rendah seperti resistor, kapasitor , transistor dsb. Hasilnya ya dapat dilihat dari murahnya hasil output barang-barang rakitan atau seperti modul Bluetooth seri HC-XX yang saya beli ini dengan harga tidak masuk akal ! Ohh Indonesiaku kapan bisa seperti itu....
MODUL BLUETOOTH
Kembali ke LAAPPTOPP (gaya tukul arwana) .... Kita akan mulai dengan membuka komponen yg baru dibeli yaitu modul bluetooth HC-05. Kenapa saya pilih HC-05 ? Ya karena beberapa tulisan di internet menyatakan bahwa lebih worthed untuk membeli versi ini karena dapat berfungsi sebagai Master atau Slave. Mode ini menunjukkan bahwa si modul dapat menginisialisasi (ala vicky saskia ghotik) koneksi dan juga standar sebagai penerima koneksi dari perangkat lain.
Dan yang bikin lumayan pusing adalah modul yg dibeli belum di breakout (yg jual ke saya ternyata bohong), terpaksa deh saya break out pada kaki-kaki yang akan digunakan. Trick nya adalah dengan memanfaatkan kawat atau sisa kaki komponen yang tipis kemudian di solderkan pada lekukan pin modul. Lakukan dengan hati-hati karena cukup kecil ukurannya. Juga yang menjadi perhatian adalah space antar lekukan yang tidak standar seperti space pin komponen umum, sehingga perlu di kreasikan agar pas seperti contoh yang saya buat di gambar berikut.
Seperti halnya komponen jaman sekarang yg biasa digunakan pada perangkat bertenaga baterai maka HC-05 (harus diingat dalam-dalam) level tegangan yang dipakai adalah 3.3V. Akibatnya semua logic dan supply tenaga yang diberikan memiliki range yang berbeda dengan level TTL yang 5V. Komunikasi yang akan kita pakai adalah UART serial sederhana tapi memiliki level 3.3 volt. Jadi sebelum berkomunikasi dengan microcontroller ataupun menuju ke PC via RS232 (kali ini memakai MAX232) maka cukup diberikan level shifter yang dapat dibuat dengan komponen sederhana seperti berikut ini.
Untuk menghasilkan tegangan 3.3v saya gunakan regulator tegangan AIC 1722-33 yg sangat simple dengan bentuk seperti transistor (TO-92). Apabila mengalami kesusahan mencari komponen ini maka dapat digunakan regulator variabel LM317 yang mudah didapatkan atau bisa juga memakai 7805 dengan modifikasi sebagai berikut.
Atur resistansi R2 sampai output mencapai 3.3V
SKEMATIK
Oke ilmu awal sudah cukup, dan sebaiknya langsung aja dirakit biar ga pusing (biasanya kalo dibiarkan ide atau keinginan menyolder mengendap di otak akan menimbulkan kegalauan tingkat tinggi) . Skematiknya seperti berikut, harap di klik biar jelas.
IC AVR yg digunakan ATMega16, bisa juga menggunakan ATMega 8535/32I
Jika rangkaian sudah dirakit kita lanjut dengan membahas rangkaian diatas. Microcontroller avr merupakan otak dari semua system. HC05 melalui level shifter akan berkomunikasi dengan micro menggunakan mode serial UART. Selain itu harus diingat ketika HC05 keluar pabrik memiliki baudrate 38400 bps dengan nama bluetooth "HC05" passkey : "1234". Untuk merubah nama dan setting lainnya diperlukan koneksi ke UART PC melalui Max232. Seperti alat komunikasi standar maka AT command merupakan metode perintah yang akan digunakan walaupun agak berbeda sedikit dengan AT command untuk perangkat telepon yang pernah dibahas disini.
Untuk menuju ke mode AT command, maka hubungkan jumper serial port ke arah MAX232 dan pasang jumper Key sehingga pin key mendapat logika 1 (high). Jika ini dilakukan sebelum diberikan tegangan maka mode UART menjadi 38400 (otomatis), sedangkan jika jumper dipasang setelah power dinyalakan maka baudrate mengikuti baudrate yg telah diset sebelumnya (semisal 9600). Gunakan software terminal seperti Putty untuk memasukkan command, dan yang umum adalah :
AT+NAME? , AT+NAME=[masukkan nama] , AT+PSWD? , AT+PSWD=[pasword baru], AT+UART?
Selengkapnya dapat di download commandnya disini . Ketika mode AT dijalankan maka LED pin 31 akan menyala pelan dan akan menyala terus atau mati terus saat memberi respon ke kita. Ingat command yang dikirim tidak diketik ulang (echo) oleh modul dan reply akan keluar terus menerus sampai ada penekanan tombol keyboard. Jadi agak sedikit berbeda dengan AT command pada modem wavecom.
Setelah tersetting seperti keinginan (kali ini baudrate kita set 9600), maka kita menuju ke pemrograman pada AVR dan ini tidak jauh berbeda dengan pembahasan sebelumnya mengenai kontrol via serial . Jika pembahasan terdahulu komunikasi serial melalui kabel USB to serial dan kontrol dilakukan di PC maka sesuai judul kita akan menggunakan smartphone ANDROID dengan software terminal "SENA Bterm".
SCRIPT
MENJALANKAN DI ANDROID
Jika kamu tidak mempunyai android maka bisa memanfaatkan komputer yg memiliki bluetooth atau membeli dongle/usb bluetooth yg harganya murah saja sekitar 30ribuan. Selanjutnya bisa menggunakan koneksi serial via bluetooth dan software terminal untuk mengakses com port yg dihasilkan oleh dongle. Untuk HP ANDROID maka meluncur saja ke GOOGLE PLAY dan di search "SENA BTerm" dan kemudian di install. Software terminal ini mendukung komunikasi serial ke bluetooth.
Hidupkan modul dan AVR yg sudah terprogram, jumper serial /UART terhubung ke micro AVR, Jumper Key dicabut dan kemudian ditandai dengan led pin 31 yg menyala cepat (2hz) yang berarti "ready for pairing". Jalankan SENA BTerm pada hp android dan kemudian pencet tombol menu dan pilih "bluetooth management" kemudian "connect to" ==> " Device Select ". Kemudian lanjutkan dengan scanning perangkat bluetooth dan pilih sesuai nama bluetooth modul HC05 yang telah diseting sebelumnya. Masukkan juga password pairing yang sesuai.
Untuk melakukan koneksi mode serial maka pencet tombol "Connect (ATDxxxx)" sampai ada muncul tulisan connected data.
Berdasarkan script diatas maka ketika tombol enter, 1, 2 dan 3 ditekan maka akan muncul reply seperti berikut :
Selanjutnya kreativitas tak terbatas dapat dibuat dengan komunikasi wireless ini. Tapi ingat bahwa bluetooth hanya berjarak udara cukup pendek kira-kira 10 meter tanpa halangan dan harap ini menjadi perhatian tersendiri jika ingin medesain suatu system remote jarak jauh.
SELAMAT MENCOBA