- Mga Kinakailangan:
- Programming PIC Microcontroller para sa Komunikasyon sa Bluetooth:
- Circuit Diagram at Pag-setup ng Hardware:
- Pagkontrol sa LED gamit ang Bluetooth Mobile Application:
Sa tutorial na ito matututunan natin Paano gumawa ng mga proyekto ng PIC na wireless sa pamamagitan ng pag-interfaced ng isang Bluetooth Module (HC-06). Sa aming nakaraang tutorial natutunan na namin Kung paano gamitin ang module ng USART sa aming PIC Microcontroller at itinatag ang komunikasyon sa pagitan ng PIC at Computer. Kung ikaw ay isang ganap na nagsisimula pagkatapos suriin dito para sa aming lahat ng mga Tutorial sa PIC, kung saan nagsimula kami mula sa simula, tulad ng pag-aaral ng MPLAB at XC8, interfacing LED, LCD, gamit ang Timers, ADC, PWM atbp.
Dito, ginamit namin ang tanyag na Bluetooth module na HC-06. Gamit ang modyul na ito maaari naming matanggap at magpadala ng impormasyon nang wireless mula sa aming PIC MCU sa isang mobile application o isang computer. Ang komunikasyon sa pagitan ng PIC at HC-06 ay itinatag gamit ang module ng USART na nasa PIC Microcontroller. Maaari mo ring gamitin ang HC-05. Muli kaming nagpapatakbo sa parehong Asynchronous 8-bit mode, ngunit sa oras na ito ay babaguhin namin ang aming code nang kaunti upang gumana ito sa module ng Bluetooth. Samakatuwid ang pag-aaral ng UART tutorial muna ay isang idinagdag na kalamangan para sa proyektong ito.
Sa tutorial na ito, magpapalipat- lipat kami ng isang LED sa pamamagitan ng pagpapadala o pag-off ng utos mula sa aming Smart phone. Gumagamit kami ng isang Android application na tinatawag na Bluetooth Terminal na maaaring magpadala at tumanggap ng data sa pamamagitan ng Bluetooth. Kung magpapadala kami ng isang char '1' mula sa app ang ilaw ay bubuksan sa board ng PIC at makakakuha kami ng isang pagkilala pabalik sa telepono na ang ilaw ay nakabukas. Katulad nito maaari naming ipadala ang '0' mula sa telepono upang i-off ito. Sa ganitong paraan makokontrol natin ang LED light sa aming PIC board, katulad ng UART tutorial ngunit ngayon nang wireless. Ang Kumpletong Program at ang Detalyadong Video ay ibinibigay sa pagtatapos ng tutorial na ito.
Ang pangunahing diagram ng block para sa pag-setup ay ipinapakita sa ibaba.
Mga Kinakailangan:
Hardware:
- PIC16F877A Perf Board
- HC-05 o HC-06 Bluetooth Module
- Computer (para sa programa)
- Cellphone
- PICkit 3 Programmer
Software:
- MPLABX
- Bluetooth Terminal (Mobile Application)
Bluetooth Module HC-06:
Maaaring gumana ang Bluetooth sa sumusunod na dalawang mga mode:
- Command Mode
- Operating Mode
Sa Command Mode magagawa naming i-configure ang mga pag-aari ng Bluetooth tulad ng pangalan ng signal ng Bluetooth, password nito, ang operating baud rate atbp. Ang Operating Mode ay kung saan magagawa naming magpadala at makatanggap ng data sa pagitan ng PIC Microcontroller at ang module ng Bluetooth. Samakatuwid sa tutorial na ito ay nakikipaglaro lamang kami sa Mode ng Pagpapatakbo. Ang Command mode ay maiiwan sa mga default na setting. Ang pangalan ng Device ay magiging HC-05 (Gumagamit ako ng HC-06) at ang password ay 0000 o 1234 at pinakamahalaga ang default na rate ng baud para sa lahat ng mga module ng Bluetooth ay magiging 9600.
Gumagana ang module sa 5V supply at ang mga signal pin ay nagpapatakbo sa 3.3V, samakatuwid ang isang 3.3V regulator ay naroroon sa mismong module. Samakatuwid hindi tayo dapat magalala tungkol dito. Sa anim na pin apat lamang ang gagamitin sa mode na Pagpapatakbo. Ang talahanayan ng koneksyon ng pin ay ipinapakita sa ibaba
S.Hindi |
I-pin sa HC-05 / HC-06 |
I-pin ang pangalan sa MCU |
I-pin ang numero sa PIC |
1 |
Vcc |
Vdd |
31 st pin |
2 |
Vcc |
Gnd |
32 nd pin |
3 |
Tx |
RC6 / Tx / CK |
Ika- 25 na pin |
4 |
Rx |
RC7 / Rx / DT |
Ika- 26 na pin |
5 |
Estado |
NC |
NC |
6 |
EN (Paganahin) |
NC |
NC |
Suriin ang aming iba pang mga proyekto upang malaman ang tungkol sa Bluetooth module HC-05 kasama ang iba pang mga microcontroller:
- Kinokontrol ng Laruang Kotse ng Bluetooth gamit ang Arduino
- Kinokontrol ng Bluetooth na Home Automation System gamit ang 8051
- Mga Kontrol na Boses na Kinokontrol ng boses gamit ang Raspberry Pi
- Kinokontrol ng Smart Phone FM Radio gamit ang Arduino at Pagproseso
- Kinokontrol ng Mobile Phone ng Robot Car gamit ang G-Sensor at Arduino
Programming PIC Microcontroller para sa Komunikasyon sa Bluetooth:
Tulad ng lahat ng mga module (ADC, Timer, PWM) dapat din nating simulan ang aming module ng Bluetooth. Ang pagsisimula ay magiging katulad ng pagsisimula ng UART ngunit kailangan naming gumawa ng ilang mga pagbabago para gumana ang Bluetooth nang walang kamali-mali sa aming PIC16F877A MCU. Tukuyin natin ang mga bit ng pagsasaayos at magsimula sa pagpapaandar ng pagpapasimula ng Bluetooth.
Inisyal ang Bluetooth:
Halos lahat ng mga module ng Bluetooth sa merkado ay gumagana sa isang rate ng baud na 9600, napakahalaga na itakda ang iyong rate ng baud na katulad ng sa mga Bluetooth module na nagpapatakbo ng rate ng baud, dito itinakda namin ang SPBRG = 129 dahil nagpapatakbo kami sa dalas ng 20Mhz na orasan na may 9600 bilang baud rate. Samakatuwid ang simula sa itaas ay gagana lamang para sa mga module ng Bluetooth na tumatakbo sa 9600 baud rate. Ito ay sapilitan din na magkaroon ng mataas na bilis ng rate ng baud rate na pinapagana ng BRGH. Makakatulong ito sa pagtatakda ng isang tumpak na rate ng baud.
// **** Inisyal ang Bluetooth gamit ang USART ******** // void Initialize_Blu Bluetooth () {// Itakda ang mga pin ng RX at TX // TRISC6 = 1; TRISC7 = 1; // Itakda ang rate ng baud gamit ang talahanayan ng pagtingin sa datasheet (pg114) // BRGH = 1; // Palaging gumamit ng mataas na bilis ng baud rate sa Bluetooth kung hindi man gumagana ito SPBRG = 129; // I-on ang Asyc. Serial Port // SYNC = 0; SPEN = 1; // Itakda ang 8-bit na pagtanggap at paghahatid ng RX9 = 0; TX9 = 0; // Paganahin ang paghahatid at pagtanggap // TXEN = 1; CREN = 1; // Paganahin ang pandaigdigan at ph. nakakagambala // GIE = 1; PEIE = 1; // Paganahin ang mga nakakagambala para sa Tx. at Rx.// RCIE = 1; TXIE = 1; } // ___________ BT pinasimulan _____________ //
Kung mayroon kang isang module na BT na nagpapatakbo sa ibang rate ng baud, maaari mong tingnan ang talahanayan ng pagtingin sa ibaba upang malaman ang iyong halaga para sa SPBRG.
Naglo-load ng data sa Bluetooth:
Kapag na-initialize ang pagpapaandar mayroon kaming tatlong mga pagpapaandar sa aming programa upang magpadala at tumanggap ng data mula sa Bluetooth. Hindi tulad ng UART mayroon kaming ilang mga bagay na dapat isaalang-alang dito bago kami makapagpadala o makatanggap ng data. Ang module ng Bluetooth ay may Transmit at Tumanggap ng buffer sa loob nito, ang data na ipinadala dito ay itatabi sa Tx buffer. Ang data na ito ay hindi mai-broadcast (ipinadala sa hangin) maliban kung ang isang pagbalik sa karwahe ay ipinadala sa modyul. Samakatuwid upang maipadala ang data kailangan naming i-load ang Rx buffer ng BT at pagkatapos ay i-broadcast ito gamit ang pagbalik ng carriage.
Ang nagtatrabaho sa itaas ay madaling makamit sa pamamagitan ng paggamit ng mga sumusunod na pag-andar. Ang pagpapaandar sa ibaba ay maaaring magamit kapag kailangan naming mag- load lamang ng isang character sa Rx buffer. Nilo-load namin ang data sa rehistro ng TXREG at maghintay hanggang maproseso ito sa pamamagitan ng pag-check sa flag na TXIF at TRMT sa pamamagitan ng paggamit habang mga loop.
// Function upang mai-load ang Bluetooth Rx. buffer na may isang char.// void BT_load_char (char byte) {TXREG = byte; habang (! TXIF); habang (! TRMT); } // Pagtatapos ng pagpapaandar //
Ang pagpapaandar sa ibaba ay ginagamit upang mai - load ang isang string sa Rx buffer ng module ng Bluetooth. Ang string ay nahahati sa mga character at ang bawat character ay ipinadala sa pag- andar ng BT_load_char () .
// Function to Load Bluetooth Rx. buffer na may string // void BT_load_string (char * string) {habang (* string) BT_load_char (* string ++); } // Pagtatapos ng pagpapaandar /
Pag-broadcast ng data sa pamamagitan ng Bluetooth:
Hanggang ngayon ay nagpapadala lamang kami ng impormasyon sa Rx buffer ng module na HC-05. Ngayon dapat nating utusan ito upang i-broadcast ang data sa pamamagitan ng hangin sa pamamagitan ng paggamit ng pagpapaandar na ito.
// Function upang mag-broadcast ng data mula sa RX. buffer // void broadcast_BT () {TXREG = 13; __delay_ms (500); } // Pagtatapos ng pagpapaandar //
Sa pagpapaandar na ito nagpapadala kami ng halagang 13 sa rehistro ng TXREG. Ang halagang 13 na ito ay walang anuman kundi ang katumbas na decimal para sa karwahe (sumangguni sa tsart ng ASCII). Pagkatapos ng isang maliit na pagkaantala ay nilikha para magsimula ang broadcaster.
Nagbabasa ng data mula sa Bluetooth:
Katulad ng UART, ang pagpapaandar sa ibaba ay ginagamit upang basahin ang data mula sa Bluetooth
// Function to get a char from Rx.buffer of BT // char BT_get_char (void) {if (OERR) // check for over run error {CREN = 0; CREN = 1; // Reset CREN} kung (RCIF == 1) // kung ang gumagamit ay nagpadala ng isang char ibalik ang char (ASCII na halaga) {habang (! RCIF); ibalik ang RCREG; } pa // kung ang gumagamit ay hindi nagpadala ng mensahe pagbalik 0 bumalik 0; } // Pagtatapos ng pagpapaandar /
Kung ang gumagamit ay nagpadala ng isang data, ibabalik ng pagpapaandar na ito ang partikular na data na maaaring mai-save sa isang variable at naproseso. Kung ang gumagamit ay hindi nagpadala ng anuman ang pagpapaandar ay magbabalik sa zero.
Pangunahing pagpapaandar:
Ginamit namin ang lahat ng ipinaliwanag sa itaas na mga pag-andar sa loob o pangunahing pagpapaandar. Nagpadala kami ng ilang pambungad na mensahe at pagkatapos ay maghintay para sa gumagamit na magpadala ng ilang mga halaga batay sa kung saan namin pinapalitan ang RED led light na konektado sa RB3 pin sa aming Perf board.
void main (void) {// Scope variable na mga deklarasyon // int get_value; // End of variable declaration // // I / O Declarations // TRISB3 = 0; // End of I / O deklarasyon // Initialize_Blu Bluetooth (); // hinahayaan na ihanda ang aming bluetooth para sa pagkilos // Ipakita ang ilang pambungad na mensahe nang isang beses sa pag-up ng kapangyarihan // BT_load_string ("Inisyal na Bluetooth at Handa na"); broadcast_BT (); BT_load_string ("Pindutin ang 1 upang I-ON ang LED"); broadcast_BT (); BT_load_string ("Pindutin ang 0 upang i-OFF ang LED"); broadcast_BT (); // End of message // habang (1) // Ang walang katapusang lop {get_value = BT_get_char (); // Basahin ang char. natanggap sa pamamagitan ng BT // Kung nakatanggap kami ng isang '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("LED naka-OFF"); broadcast_BT (); } // Kung nakatanggap kami ng isang '1' // if (get_value == '1') {RB3 = 1; BT_load_string ("LED ON" "; broadcast_BT ();}}}
Suriin ang Buong Programa sa Seksyon ng Code sa ibaba.
Circuit Diagram at Pag-setup ng Hardware:
Ang mga koneksyon sa circuit para sa proyektong ito ay napaka-simple, kailangan lang naming palakasin ang module ng Bluetooth at ikonekta ang Tx sa ika- 26 na pin ng PIC at Rx sa ika- 25 na pin ng PIC tulad ng ipinakita sa circuit diagram sa ibaba:
Ngayon ay magpatuloy tayo sa hardware. Kapag tapos na ang koneksyon dapat magmukhang ganito.
Pagkontrol sa LED gamit ang Bluetooth Mobile Application:
Ipaalam sa amin ngayon ihanda ang aming Android application. I-download ang application na tinatawag na Bluetooth Terminal mula sa App store o gamitin ang link na ito. Kapag na-download at na-install na ang application, i-on ang iyong PIC perf board na ginagamit namin simula pa. Ang maliit na ilaw na LED sa iyong Bluetooth Module ay dapat na flashing upang ipahiwatig na ito ay pinapagana at aktibong naghahanap ng isang telepono upang maitaguyod ang isang koneksyon.
Pumunta ngayon sa Mga Setting ng Bluetooth ng iyong telepono at maghanap para sa bagong aparatong Bluetooth na dapat mong makita ang pangalang HC-05 o HC-06 batay sa iyong module. Gumagamit ako ng HC-06 kung kaya ipinapakita ng aking telepono ang sumusunod na display. Pagkatapos ay subukan ang paring kasama nito at hihingi ito ng isang password. Ipasok ang password bilang 1234 (para sa ilang maaaring 0000) at i-click ang OK tulad ng ipinakita sa ibaba.
Matapos ang tagumpay ay matagumpay, buksan ang application ng Bluetooth Terminal na na-install lamang namin. Pumunta sa pagpipilian ng mga setting at piliin ang "Kumonekta sa isang aparato - Ligtas" tulad ng ipinakita sa ibaba. Bubuksan nito ang isang pop box kung saan ang lahat ng aming mga nakapares na aparato ay nakalista tulad ng ipinakita sa ibaba. Piliin ang module na HC-05 o HC-06.
Kapag naitatag ang koneksyon, ang ilaw sa module ng Bluetooth na kumikislap sa ngayon ay dapat na naging pare-pareho upang ipahiwatig na matagumpay itong nakakonekta sa iyong mobile. At dapat naming makuha ang pambungad na mensahe mula sa aming Program tulad ng ipinakita sa ibaba.
Pindutin ngayon ang '1' upang i-on ang LED light at pindutin ang '0' upang patayin ang ilaw. Ipapakita ang kumpletong pagtatrabaho sa Video. Ang iyong mobile screen ay magmumukhang tulad nito na ipinakita sa ibaba.
Kaya't ito ang mga tao, natutunan natin ang Paano Mag-interface ng module ng Bluetooth sa aming PIC microcontroller, ngayon sa tulong nito maaari naming subukan ang mga wireless na proyekto. Maraming mga proyekto na gumagamit ng Bluetooth, maaari mong subukan ang mga ito o magkaroon ng iyong sariling Idea at ibahagi ang mga ito sa seksyon ng komento. Suriin din ang aming nakaraang proyekto sa Bluetooth terminal app at HC-05 tulad ng Smart Phone Controlled Home Automation Gamit ang Arduino at Smart Phone Controlled Digital Code Lock gamit ang Arduino.
Sana, nakatulong sa iyo ang tutorial na ito! Kung natigil ka sa kung saan, mangyaring gamitin ang seksyon ng komento.