- Keperluan:
- Pengaturcaraan PIC Microcontroller untuk Komunikasi Bluetooth:
- Diagram Litar dan Persediaan Perkakasan:
- Mengawal LED menggunakan Aplikasi Bergerak Bluetooth:
Dalam tutorial ini kita akan belajar Cara membuat projek PIC tanpa wayar dengan menghubungkan Modul Bluetooth (HC-06). Dalam tutorial sebelumnya kami telah mempelajari Cara menggunakan modul USART dalam PIC Microcontroller kami dan mewujudkan komunikasi antara PIC dan Komputer. Sekiranya anda seorang pemula mutlak, periksa di sini untuk mengetahui semua Tutorial PIC kami, di mana kami telah bermula dari awal, seperti belajar MPLAB dan XC8, LED antara muka, LCD, menggunakan Pemasa, ADC, PWM dll.
Di sini, kami telah menggunakan modul Bluetooth HC-06 yang popular. Dengan menggunakan modul ini, kami dapat menerima dan menghantar maklumat secara wayarles dari PIC MCU kami ke aplikasi mudah alih atau komputer. Komunikasi antara PIC dan HC-06 dijalin dengan menggunakan modul USART yang terdapat dalam PIC Microcontroller. Anda juga boleh menggunakan HC-05. Kami sekali lagi beroperasi pada mod 8-bit Asynchronous yang sama, tetapi kali ini kami akan sedikit mengubah kod kami supaya berfungsi dengan modul Bluetooth. Oleh itu, belajar tutorial UART terlebih dahulu adalah kelebihan tambahan untuk projek ini.
Dalam tutorial ini, kami akan menukar LED dengan menghantar perintah hidup atau mati dari telefon pintar kami. Kami akan menggunakan aplikasi Android yang disebut Bluetooth Terminal yang dapat mengirim dan menerima data melalui Bluetooth. Sekiranya kita mengirim char '1' dari aplikasi, lampu akan DIPATUH di papan PIC dan kita akan mendapat pengakuan kembali ke telefon bahawa lampu telah dihidupkan. Begitu juga kita boleh menghantar '0' dari telefon untuk mematikannya. Dengan cara ini kita dapat mengawal lampu LED pada papan PIC kita, sama seperti tutorial UART tetapi sekarang tanpa wayar. Program Lengkap dan Video Terperinci diberikan pada akhir tutorial ini.
Gambarajah blok asas untuk penyediaan ditunjukkan di bawah.
Keperluan:
Perkakasan:
- PIC16F877A Perf Board
- Modul Bluetooth HC-05 atau HC-06
- Komputer (untuk pengaturcaraan)
- Telefon bimbit
- Pengaturcara PICkit 3
Perisian:
- MPLABX
- Terminal Bluetooth (Aplikasi Mudah Alih)
Modul Bluetooth HC-06:
Bluetooth boleh beroperasi dalam dua mod berikut:
- Mod Perintah
- Mod operasi
Dalam Mod Perintah kita akan dapat mengkonfigurasi sifat Bluetooth seperti nama isyarat Bluetooth, kata laluannya, kadar baud operasi dan lain-lain. Mod Operasi adalah mod di mana kita akan dapat mengirim dan menerima data antara PIC Microcontroller dan modul Bluetooth. Oleh itu, dalam tutorial ini kita hanya akan bermain dengan Mod Operasi. Mod Perintah akan diserahkan ke tetapan lalai. Nama Peranti akan menjadi HC-05 (saya menggunakan HC-06) dan kata laluan adalah 0000 atau 1234 dan yang paling penting ialah kadar baud lalai untuk semua modul Bluetooth adalah 9600.
Modul berfungsi pada bekalan 5V dan pin isyarat beroperasi pada 3.3V, oleh itu pengawal selia 3.3V terdapat dalam modul itu sendiri. Oleh itu kita tidak perlu risau. Dari enam pin hanya empat yang akan digunakan dalam mod Operasi. Jadual sambungan pin ditunjukkan di bawah
S.No |
Pin pada HC-05 / HC-06 |
Sematkan nama pada MCU |
Nombor pin di PIC |
1 |
Vcc |
Vdd |
31 st pin |
2 |
Vcc |
Gnd |
Pin 32 nd |
3 |
Tx |
RC6 / Tx / CK |
Pin ke- 25 |
4 |
Rx |
RC7 / Rx / DT |
Pin ke- 26 |
5 |
Nyatakan |
NC |
NC |
6 |
EN (Aktifkan) |
NC |
NC |
Lihat projek kami yang lain untuk mengetahui lebih lanjut mengenai modul Bluetooth HC-05 dengan pengawal mikro lain:
- Kereta Mainan Terkawal Bluetooth menggunakan Arduino
- Sistem Automasi Rumah Terkawal Bluetooth menggunakan 8051
- Lampu Dikawal Suara menggunakan Raspberry Pi
- Telefon Pintar dikendalikan Radio FM menggunakan Arduino dan Pemprosesan
- Kereta Robot Dikawal Telefon bimbit menggunakan G-Sensor dan Arduino
Pengaturcaraan PIC Microcontroller untuk Komunikasi Bluetooth:
Seperti semua modul (ADC, Timer, PWM) kita juga harus memulakan modul Bluetooth kita. Inisialisasi akan serupa dengan inisialisasi UART tetapi kita perlu membuat beberapa perubahan agar Bluetooth berfungsi dengan sempurna dengan PIC16F877A MCU kami. Mari tentukan bit konfigurasi dan mulakan dengan fungsi inisialisasi Bluetooth.
Memulakan Bluetooth:
Hampir semua modul Bluetooth di pasaran berfungsi pada kadar baud 9600, sangat penting untuk menetapkan kadar baud anda sama seperti modul Bluetooth yang beroperasi dengan kadar baud, di sini kita menetapkan SPBRG = 129 kerana kita beroperasi pada frekuensi jam 20Mhz dengan 9600 sebagai kadar baud. Oleh itu, inisialisasi di atas hanya akan berfungsi untuk modul Bluetooth yang beroperasi pada kadar 9600 baud. BRGH bit bit berkelajuan tinggi juga diaktifkan. Ini akan membantu dalam menetapkan kadar baud yang tepat.
// ****** Inisialisasi Bluetooth menggunakan USART ******** // batal Initialize_Bluetooth () {// Tetapkan pin RX dan TX // TRISC6 = 1; TRISC7 = 1; // Tetapkan kadar baud menggunakan jadual pencarian di lembar data (ms114) // BRGH = 1; // Sentiasa gunakan kadar baud berkelajuan tinggi dengan Bluetooth jika tidak berfungsi SPBRG = 129; // Hidupkan Asyc. Port Bersiri // SYNC = 0; SPEN = 1; // Tetapkan penerimaan dan transmisi 8-bit RX9 = 0; TX9 = 0; // Dayakan penghantaran dan penerimaan // TXEN = 1; CREN = 1; // Dayakan global dan ph. mengganggu // GIE = 1; PEIE = 1; // Aktifkan gangguan untuk Tx. dan Rx.// RCIE = 1; TXIE = 1; } // ___________ BT dimulakan _____________ //
Sekiranya anda mempunyai modul BT yang beroperasi pada kadar baud yang berbeza, maka anda boleh merujuk jadual carian di bawah untuk mengetahui nilai SPBRG anda.
Memuatkan data ke Bluetooth:
Setelah fungsi diinisialisasi, kami memiliki tiga fungsi dalam program kami untuk mengirim dan menerima data dari Bluetooth. Tidak seperti UART kita mempunyai beberapa perkara yang perlu dipertimbangkan di sini sebelum kita dapat menghantar atau menerima data. Modul Bluetooth mempunyai buffer Transmit and Receive di dalamnya, data yang dikirimkan akan disimpan di buffer Tx. Data ini tidak akan disiarkan (dihantar melalui udara) melainkan perjalanan pulang dihantar ke modul. Oleh itu untuk menghantar data, kita harus memuatkan buffer Rx BT dan kemudian menyiarkannya menggunakan carriage return.
Kerja di atas dapat dicapai dengan mudah dengan menggunakan fungsi berikut. Fungsi di bawah ini dapat digunakan ketika kita harus memuatkan hanya satu karakter ke dalam buffer Rx. Kami memuat data ke dalam daftar TXREG dan menunggu hingga diproses dengan memeriksa bendera TXIF dan TRMT dengan menggunakan sambil gelung.
// Fungsi memuatkan Bluetooth Rx. buffer dengan satu char.// kosong BT_load_char (char byte) {TXREG = bait; sementara (! TXIF); sementara (! TRMT); } // Tamat fungsi //
Fungsi di bawah ini digunakan untuk memuat rentetan ke penyangga Rx modul Bluetooth. Rentetan dibahagikan kepada watak-watak dan setiap watak dihantar ke fungsi BT_load_char () .
// Fungsi Memuatkan Bluetooth Rx. buffer dengan string // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Tamat fungsi /
Menyiarkan data melalui Bluetooth:
Hingga kini kami baru sahaja menghantar maklumat ke dalam buffer Rx modul HC-05. Sekarang kita mesti memerintahkannya untuk menyiarkan data melalui udara dengan menggunakan fungsi ini.
// Fungsi untuk menyiarkan data dari RX. penampan // void broadcast_BT () {TXREG = 13; __delay_ms (500); } // Tamat fungsi //
Dalam fungsi ini kita menghantar nilai 13 ke dalam daftar TXREG. Nilai 13 ini tidak lain adalah persamaan perpuluhan untuk pengangkutan (rujuk carta ASCII). Kemudian kelewatan kecil dibuat untuk penyiar bermula.
Membaca data dari Bluetooth:
Sama seperti UART, fungsi di bawah digunakan untuk membaca data dari Bluetooth
// Fungsi untuk mendapatkan char dari Rx.buffer of BT // char BT_get_char (void) {if (OERR) // periksa ralat over run {CREN = 0; CREN = 1; // Tetapkan semula CREN} if (RCIF == 1) // jika pengguna telah mengirim char mengembalikan char (nilai ASCII) {while (! RCIF); kembali RCREG; } lain // jika pengguna tidak menghantar mesej kembali 0 kembali 0; } // Tamat fungsi /
Sekiranya pengguna telah mengirim data, fungsi ini akan mengembalikan data tertentu yang dapat disimpan dalam pemboleh ubah dan diproses. Sekiranya pengguna belum menghantar apa-apa, fungsi akan kembali sifar.
Fungsi utama:
Kami telah menggunakan semua fungsi yang dijelaskan di atas atau fungsi utama. Kami menghantar beberapa mesej pengenalan dan kemudian menunggu pengguna menghantar beberapa nilai berdasarkan mana kami menukar lampu LED RED yang disambungkan ke pin RB3 di papan Perf kami.
void main (void) {// Deklarasi pemboleh ubah skop // int get_value; // Akhir deklarasi pemboleh ubah // // Deklarasi I / O // TRISB3 = 0; // Tamat deklarasi I / O // Initialize_Bluetooth (); // mari siapkan bluetooth kami untuk bertindak // Tunjukkan beberapa mesej pengenalan sekali dihidupkan // BT_load_string ("Bluetooth Dimulakan dan Siap"); siaran_BT (); BT_load_string ("Tekan 1 untuk menghidupkan LED"); siaran_BT (); BT_load_string ("Tekan 0 untuk mematikan LED"); siaran_BT (); // Akhir mesej // sementara (1) // Kekurangan yang tidak terbatas {get_value = BT_get_char (); // Baca char. diterima melalui BT // Sekiranya kita menerima '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("LED dimatikan"); siaran_BT (); } // Sekiranya kita menerima '1' // if (get_value == '1') {RB3 = 1; BT_load_string ("LED dihidupkan"); siaran_BT ();}}}
Lihat Program Penuh di Bahagian Kod di Bawah.
Diagram Litar dan Persediaan Perkakasan:
Sambungan litar untuk projek ini adalah sangat mudah, kita hanya perlu untuk kuasa sehingga modul Bluetooth dan menyambung Tx kepada 26 th pin PIC dan Rx kepada 25 th pin PIC seperti yang ditunjukkan dalam rajah litar di bawah:
Sekarang mari kita teruskan ke perkakasan. Setelah sambungan selesai, ia akan kelihatan seperti ini.
Mengawal LED menggunakan Aplikasi Bergerak Bluetooth:
Sekarang mari kita siapkan aplikasi Android kita. Muat turun aplikasi bernama Terminal Bluetooth dari App store atau gunakan pautan ini. Setelah aplikasi dimuat turun dan dipasang, hidupkan PIC perf board anda yang kami gunakan sejak awal. Lampu LED kecil pada Modul Bluetooth anda harus berkelip untuk menunjukkan bahawa lampu itu dihidupkan dan sedang mencari telefon secara aktif untuk membuat sambungan.
Sekarang masuk ke Tetapan Bluetooth telefon anda dan cari peranti Bluetooth baru, anda seharusnya dapat melihat nama HC-05 atau HC-06 berdasarkan modul anda. Saya menggunakan HC-06 oleh itu telefon saya menunjukkan paparan berikut. Kemudian cuba sebanding dengannya dan ia akan meminta kata laluan. Masukkan kata laluan sebagai 1234 (untuk sebilangan mungkin 0000) dan klik OK seperti yang ditunjukkan di bawah.
Setelah perceraian berjaya, buka aplikasi Terminal Bluetooth yang baru kami pasang. Masuk ke pilihan tetapan dan pilih "Sambungkan peranti - Aman" seperti yang ditunjukkan di bawah. Ini akan membuka kotak pop di mana semua peranti berpasangan kami akan disenaraikan seperti yang ditunjukkan di bawah. Pilih modul HC-05 atau HC-06.
Setelah sambungan dibuat, lampu pada modul Bluetooth yang berkelip-kelip setakat ini pasti menjadi berterusan untuk menunjukkan bahawa ia berjaya disambungkan ke telefon bimbit anda. Dan kita harus mendapat mesej pengenalan dari Program kita seperti yang ditunjukkan di bawah.
Sekarang tekan '1' untuk menyalakan lampu LED dan tekan '0' untuk mematikan lampu. Kerja yang lengkap akan ditunjukkan dalam Video. Skrin mudah alih anda akan kelihatan seperti ini di bawah.
Oleh itu, kami telah belajar Bagaimana Interface Bluetooth modul ke mikrokontroler PIC kami, sekarang dengan bantuan ini kami dapat mencuba projek tanpa wayar. Terdapat banyak projek yang menggunakan Bluetooth, anda boleh mencubanya atau membuat Idea anda sendiri dan membaginya di bahagian komen. Periksa juga projek kami sebelumnya dengan aplikasi terminal Bluetooth dan HC-05 seperti Automasi Rumah Dikawal Telefon Pintar Menggunakan Arduino dan Kunci Kod Digital Terkawal Telefon Pintar menggunakan Arduino.
Harap, tutorial ini membantu anda! Sekiranya anda tersekat di suatu tempat, sila gunakan bahagian komen.