- Persyaratan:
- Pemrograman Mikrokontroler PIC untuk Komunikasi Bluetooth:
- Diagram Sirkuit dan Pengaturan Perangkat Keras:
- Mengontrol LED menggunakan Aplikasi Seluler Bluetooth:
Dalam tutorial ini kita akan belajar Bagaimana membuat proyek PIC nirkabel dengan menghubungkan Modul Bluetooth (HC-06). Dalam tutorial kami sebelumnya, kami telah mempelajari Cara menggunakan modul USART di Mikrokontroler PIC kami dan menjalin komunikasi antara PIC dan Komputer. Jika Anda seorang pemula mutlak, periksa di sini untuk semua Tutorial PIC kami, di mana kami telah memulai dari awal, seperti mempelajari MPLAB dan XC8, menghubungkan LED, LCD, menggunakan Pengatur Waktu, ADC, PWM, dll.
Di sini, kami telah menggunakan modul Bluetooth HC-06 yang populer. Dengan menggunakan modul ini kami dapat menerima dan mengirim informasi secara nirkabel dari PIC MCU kami ke aplikasi seluler atau komputer. Komunikasi antara PIC dan HC-06 dibuat menggunakan modul USART yang ada di Mikrokontroler PIC. Anda juga dapat menggunakan HC-05. Kami kembali beroperasi pada mode Asynchronous 8-bit yang sama, tetapi kali ini kami akan sedikit memodifikasi kode kami sehingga berfungsi dengan modul Bluetooth. Oleh karena itu mempelajari tutorial UART sebelumnya merupakan keuntungan tambahan untuk proyek ini.
Dalam tutorial ini, kami akan mengaktifkan atau menonaktifkan LED dengan mengirim atau menonaktifkan perintah dari ponsel pintar kami. Kami akan menggunakan aplikasi Android bernama Terminal Bluetooth yang dapat mengirim dan menerima data melalui Bluetooth. Jika kami mengirim karakter '1' dari aplikasi, lampu akan DIAKTIFKAN di papan PIC dan kami akan mendapatkan pemberitahuan kembali ke telepon bahwa lampu telah dinyalakan. Demikian pula kita dapat mengirim '0' dari telepon untuk mematikannya. Dengan cara ini kita dapat mengontrol lampu LED pada papan PIC kita, mirip dengan tutorial UART tetapi sekarang tanpa kabel. Program Lengkap dan Video Detil diberikan di akhir tutorial ini.
Diagram blok dasar untuk pengaturan ditunjukkan di bawah ini.
Persyaratan:
Perangkat keras:
- Papan Perf PIC16F877A
- Modul Bluetooth HC-05 atau HC-06
- Komputer (untuk pemrograman)
- Telepon genggam
- Programmer PICkit 3
Perangkat lunak:
- MPLABX
- Terminal Bluetooth (Aplikasi Seluler)
Modul Bluetooth HC-06:
Bluetooth dapat beroperasi dalam dua mode berikut:
- Mode Perintah
- Modus operasi
Dalam Mode Perintah kita akan dapat mengkonfigurasi properti Bluetooth seperti nama sinyal Bluetooth, kata sandinya, baud rate operasi dll. Mode Operasi adalah mode di mana kita akan dapat mengirim dan menerima data antara Mikrokontroler PIC dan modul Bluetooth. Karenanya dalam tutorial ini kita hanya akan bermain-main dengan Mode Operasi. Mode Perintah akan dibiarkan ke pengaturan default. Nama Perangkat adalah HC-05 (Saya menggunakan HC-06) dan kata sandi adalah 0000 atau 1234 dan yang terpenting baud rate default untuk semua modul Bluetooth adalah 9600.
Modul ini bekerja pada suplai 5V dan pin sinyal beroperasi pada 3,3V, oleh karena itu ada regulator 3,3V di modul itu sendiri. Karenanya kita tidak perlu khawatir tentang itu. Dari enam pin hanya empat yang akan digunakan dalam mode Pengoperasian. Tabel koneksi pin ditunjukkan di bawah ini
S.No |
Pin di HC-05 / HC-06 |
Pin nama di MCU |
Nomor pin di PIC |
1 |
Vcc |
Vdd |
Pin 31 st |
2 |
Vcc |
Gnd |
32 nd pin |
3 |
Tx |
RC6 / Tx / CK |
Pin ke- 25 |
4 |
Rx |
RC7 / Rx / DT |
Pin ke- 26 |
5 |
Negara |
NC |
NC |
6 |
EN (Aktifkan) |
NC |
NC |
Periksa proyek kami yang lain untuk mempelajari lebih lanjut tentang modul Bluetooth HC-05 dengan mikrokontroler lain:
- Mobil Mainan yang Dikendalikan Bluetooth menggunakan Arduino
- Sistem Otomasi Rumah Terkendali Bluetooth menggunakan 8051
- Lampu Kontrol Suara menggunakan Raspberry Pi
- Radio FM Terkendali Ponsel Pintar menggunakan Arduino dan Pemrosesan
- Mobil Robot Pengendali Ponsel menggunakan G-Sensor dan Arduino
Pemrograman Mikrokontroler PIC untuk Komunikasi Bluetooth:
Seperti semua modul (ADC, Timer, PWM) kita juga harus menginisialisasi modul Bluetooth kita. Inisialisasi akan mirip dengan inisialisasi UART tetapi kami perlu membuat beberapa perubahan agar Bluetooth berfungsi dengan sempurna dengan PIC16F877A MCU kami. Mari tentukan bit konfigurasi dan mulai dengan fungsi inisialisasi Bluetooth.
Memulai Bluetooth:
Hampir semua modul Bluetooth di pasaran bekerja pada baud rate 9600, sangat penting untuk mengatur baud rate Anda sama dengan baud rate modul Bluetooth, di sini kami menetapkan SPBRG = 129 karena kami beroperasi pada frekuensi clock 20Mhz dengan 9600 sebagai baud rate. Karenanya inisialisasi di atas hanya akan berfungsi untuk modul Bluetooth yang beroperasi pada kecepatan baud 9600. Ini juga wajib untuk mengaktifkan bit kecepatan tinggi baud rate BRGH. Ini akan membantu dalam menetapkan baud rate yang akurat.
// ****** Inisialisasi Bluetooth menggunakan USART ******** // void Initialize_Bluetooth () {// Setel pin RX dan TX // TRISC6 = 1; TRISC7 = 1; // Setel baud rate menggunakan tabel pencarian di lembar data (pg114) // BRGH = 1; // Selalu gunakan baud rate kecepatan tinggi dengan Bluetooth, jika tidak maka tidak akan berfungsi SPBRG = 129; // Nyalakan Asyc. Port Serial // SYNC = 0; SPEN = 1; // Atur penerimaan dan transmisi 8-bit RX9 = 0; TX9 = 0; // Aktifkan transmisi dan penerimaan // TXEN = 1; CREN = 1; // Aktifkan global dan ph. menyela // GIE = 1; PEIE = 1; // Aktifkan interupsi untuk Tx. dan Rx.// RCIE = 1; TXIE = 1; } // ___________ BT diinisialisasi _____________ //
Jika Anda memiliki modul BT yang beroperasi pada baud rate yang berbeda, Anda dapat merujuk tabel pencarian di bawah ini untuk mengetahui nilai SPBRG Anda.
Memuat data ke Bluetooth:
Setelah fungsi diinisialisasi, kami memiliki tiga fungsi dalam program kami untuk mengirim dan menerima data dari Bluetooth. Tidak seperti UART, kami memiliki beberapa hal yang perlu dipertimbangkan di sini sebelum kami dapat mengirim atau menerima data. Modul Bluetooth memiliki buffer Transmit and Receive di dalamnya, data yang dikirim ke dalamnya akan disimpan di buffer Tx. Data ini tidak akan disiarkan (dikirim di udara) kecuali carriage return dikirim ke modul. Karenanya untuk mengirimkan data kita harus memuat buffer Rx dari BT dan kemudian menyiarkannya menggunakan carriage return.
Pekerjaan di atas dapat dengan mudah dicapai dengan menggunakan fungsi berikut. Fungsi di bawah ini dapat digunakan ketika kita harus memuat hanya satu karakter ke buffer Rx. Kami memuat data ke dalam register TXREG dan menunggu sampai diproses dengan memeriksa bendera TXIF dan TRMT dengan menggunakan while loop.
// Berfungsi untuk memuat Bluetooth Rx. buffer dengan satu char.// void BT_load_char (char byte) {TXREG = byte; while (! TXIF); while (! TRMT); } // Akhir fungsi //
Fungsi di bawah ini digunakan untuk memuat string ke buffer Rx dari modul Bluetooth. String dipecah menjadi karakter dan setiap karakter dikirim ke fungsi BT_load_char () .
// Berfungsi untuk Memuat Bluetooth Rx. buffer dengan string // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Akhir fungsi /
Menyiarkan data melalui Bluetooth:
Sampai saat ini kami baru saja mengirimkan informasi ke buffer Rx dari modul HC-05. Sekarang kita harus menginstruksikannya untuk menyiarkan data melalui udara dengan menggunakan fungsi ini.
// Berfungsi untuk menyiarkan data dari RX. buffer // void broadcast_BT () {TXREG = 13; __delay_ms (500); } // Akhir fungsi //
Dalam fungsi ini kami mengirim nilai 13 ke dalam register TXREG. Nilai 13 ini tidak lain adalah desimal yang setara untuk carriage (lihat grafik ASCII). Kemudian penundaan kecil dibuat untuk penyiar memulai.
Membaca data dari Bluetooth:
Mirip dengan UART, fungsi di bawah ini digunakan untuk membaca data dari Bluetooth
// Berfungsi untuk mendapatkan char dari Rx.buffer dari BT // char BT_get_char (void) {if (OERR) // memeriksa kesalahan over run {CREN = 0; CREN = 1; // Reset CREN} if (RCIF == 1) // jika pengguna telah mengirimkan karakter, kembalikan karakter (nilai ASCII) {while (! RCIF); kembali RCREG; } else // jika pengguna tidak mengirimkan pesan return 0 return 0; } // Akhir fungsi /
Jika pengguna telah mengirim data, fungsi ini akan mengembalikan data tertentu yang dapat disimpan dalam variabel dan diproses. Jika pengguna belum mengirim apa pun, fungsi akan mengembalikan nol.
Fungsi utama:
Kami telah menggunakan semua fungsi yang dijelaskan di atas di dalam atau fungsi utama. Kami mengirim beberapa pesan pengantar dan kemudian menunggu pengguna mengirim beberapa nilai berdasarkan mana kami mengaktifkan lampu led MERAH yang terhubung ke pin RB3 di papan Perf kami.
void main (void) {// Deklarasi variabel cakupan // int get_value; // Akhir dari deklarasi variabel // // Deklarasi I / O // TRISB3 = 0; // Akhir dari deklarasi I / O // Initialize_Bluetooth (); // mari kita siapkan bluetooth kita untuk beraksi // Tampilkan beberapa pesan pengantar setelah dinyalakan // BT_load_string ("Bluetooth Inisialisasi dan Siap"); broadcast_BT (); BT_load_string ("Tekan 1 untuk menyalakan LED"); broadcast_BT (); BT_load_string ("Tekan 0 untuk mematikan LED"); broadcast_BT (); // Akhir pesan // while (1) // Lop tak terbatas {get_value = BT_get_char (); // Baca karakternya. diterima melalui BT // Jika kami menerima '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("LED dimatikan"); broadcast_BT (); } // Jika kita menerima '1' // if (get_value == '1') {RB3 = 1; BT_load_string ("LED dihidupkan"); broadcast_BT ();}}}
Periksa Program Penuh di Bagian Kode Di Bawah Ini.
Diagram Sirkuit dan Pengaturan Perangkat Keras:
Koneksi sirkuit untuk proyek ini sangat sederhana, kita hanya perlu power up modul Bluetooth dan menghubungkan Tx ke 26 th pin PIC dan Rx ke 25 th pin PIC seperti yang ditunjukkan di sirkuit diagram di bawah:
Sekarang mari kita lanjutkan ke perangkat keras. Setelah koneksi selesai, akan terlihat seperti ini.
Mengontrol LED menggunakan Aplikasi Seluler Bluetooth:
Sekarang mari kita siapkan aplikasi Android kita. Unduh aplikasi bernama Terminal Bluetooth dari App store atau gunakan tautan ini. Setelah aplikasi diunduh dan diinstal, hidupkan papan kinerja PIC Anda yang kami gunakan sejak awal. Lampu LED kecil pada Modul Bluetooth Anda harus berkedip untuk menunjukkan bahwa itu dihidupkan dan secara aktif mencari telepon untuk membuat koneksi.
Sekarang masuk ke Pengaturan Bluetooth telepon Anda dan cari perangkat Bluetooth baru, Anda harus dapat melihat nama HC-05 atau HC-06 berdasarkan modul Anda. Saya menggunakan HC-06 maka ponsel saya menunjukkan tampilan berikut. Kemudian coba paring dengannya dan itu akan meminta kata sandi. Masukkan kata sandi sebagai 1234 (untuk beberapa mungkin 0000) dan klik OK seperti yang ditunjukkan di bawah ini.
Setelah pengupas berhasil, buka aplikasi Bluetooth Terminal yang baru saja kita instal. Masuk ke opsi pengaturan dan pilih "Hubungkan perangkat - Aman" seperti yang ditunjukkan di bawah ini. Ini akan membuka kotak pop di mana semua perangkat pasangan kami akan terdaftar seperti yang ditunjukkan di bawah ini. Pilih modul HC-05 atau HC-06.
Setelah koneksi dibuat, lampu pada modul Bluetooth yang berkedip sejauh ini harus menjadi konstan untuk menunjukkan bahwa itu telah berhasil terhubung ke ponsel Anda. Dan kita harus mendapatkan pesan pengantar dari Program kita seperti yang ditunjukkan di bawah ini.
Sekarang tekan '1' untuk menyalakan lampu LED dan tekan '0' untuk mematikan lampu. Pekerjaan lengkap akan ditampilkan di Video. Layar ponsel Anda akan terlihat seperti ini di bawah ini.
Jadi begitulah, kita telah belajar Bagaimana menghubungkan modul Bluetooth ke mikrokontroler PIC kita, sekarang dengan bantuan ini kita dapat mencoba proyek nirkabel. Ada banyak proyek yang menggunakan Bluetooth, Anda dapat mencobanya atau membuat Ide Anda sendiri dan membagikannya di bagian komentar. Juga periksa proyek kami sebelumnya dengan aplikasi terminal Bluetooth dan HC-05 seperti Smart Phone Controlled Home Automation Menggunakan Arduino dan Smart Phone Controlled Digital Code Lock menggunakan Arduino.
Semoga tutorial ini membantu Anda! Jika Anda terjebak di suatu tempat, silakan gunakan bagian komentar.