- Požiadavky:
- Programovanie mikrokontroléra PIC na komunikáciu Bluetooth:
- Schéma zapojenia a nastavenie hardvéru:
- Ovládanie LED pomocou mobilnej aplikácie Bluetooth:
V tomto výučbe sa dozvieme, ako rozložiť projekty PIC bezdrôtovo pomocou rozhrania Bluetooth modulu (HC-06). V našom predchádzajúcom návode sme sa už naučili Ako používať modul USART v našom mikrokontroléri PIC a nadviazali sme komunikáciu medzi PIC a počítačom. Ak ste úplným začiatočníkom, pozrite si tu všetky naše výukové programy PIC, kde sme začali úplne od začiatku, napríklad učenie sa MPLAB a XC8, prepojenie LED, LCD, použitie časovačov, ADC, PWM atď.
Tu sme použili populárny modul Bluetooth HC-06. Pomocou tohto modulu môžeme prijímať a odosielať informácie bezdrôtovo z nášho PIC MCU do mobilnej aplikácie alebo do počítača. Komunikácia medzi PIC a HC-06 sa uskutočňuje pomocou modulu USART v mikrokontroléri PIC. Môžete tiež použiť HC-05. Opäť pracujeme na rovnakom asynchrónnom 8-bitovom režime, ale tentokrát náš kód trochu upravíme, aby fungoval s modulom Bluetooth. Z tohto dôvodu je učenie UART tutoriálu vopred ďalšou výhodou tohto projektu.
V tomto výučbe prepneme LED diódu odoslaním príkazu zapnúť alebo vypnúť z nášho inteligentného telefónu. Budeme používať aplikáciu pre Android s názvom Bluetooth Terminal, ktorá dokáže odosielať a prijímať dáta cez Bluetooth. Ak odošleme z aplikácie znak „1“, svetlo sa rozsvieti na doske PIC a do telefónu dostaneme potvrdenie, že svetlo bolo zapnuté. Podobne môžeme poslať „0“ z telefónu, aby sme ho vypli. Týmto spôsobom môžeme ovládať LED svetlo na našej PIC doske, podobne ako v návode na UART, ale teraz už bezdrôtovo. Kompletný program a podrobné video nájdete na konci tohto tutoriálu.
Ďalej je uvedený základný blokový diagram nastavenia.
Požiadavky:
Hardvér:
- PIC16F877A Perf Board
- Modul Bluetooth HC-05 alebo HC-06
- Počítač (na programovanie)
- Mobilný telefón
- Programátor PICkit 3
Softvér:
- MPLABX
- Bluetooth terminál (mobilná aplikácia)
Bluetooth modul HC-06:
Bluetooth môže pracovať v nasledujúcich dvoch režimoch:
- Príkazový režim
- Prevádzkový režim
V príkazovom režime budeme môcť konfigurovať vlastnosti Bluetooth, ako je názov signálu Bluetooth, jeho heslo, prevádzková prenosová rýchlosť atď. Prevádzkový režim je režim, v ktorom budeme schopní odosielať a prijímať údaje medzi mikrokontrolérom PIC a modul Bluetooth. Preto sa v tomto výučbe budeme hrať iba s prevádzkovým režimom. Príkazový režim sa ponechá na predvolené nastavenia. Názov zariadenia bude HC-05 (používam HC-06) a heslo bude 0000 alebo 1234 a čo je najdôležitejšie, predvolená prenosová rýchlosť pre všetky moduly Bluetooth bude 9600.
Modul pracuje na 5V napájaní a signálne piny pracujú na 3,3V, preto je v samotnom module prítomný regulátor 3,3V. Preto si s tým nemusíme robiť starosti. Zo šiestich pinov budú v prevádzkovom režime použité iba štyri. Tabuľka pinových pripojení je uvedená nižšie
S.No |
Pripnúť na HC-05 / HC-06 |
Pripnúť názov na MCU |
Pripnúť číslo na PIC |
1 |
Vcc |
Vdd |
31 st kolík |
2 |
Vcc |
Gnd |
32 nd kolík |
3 |
Tx |
RC6 / Tx / CK |
25 th kolík |
4 |
Rx |
RC7 / Rx / DT |
26 th pin |
5 |
Štát |
NC |
NC |
6 |
EN (Povoliť) |
NC |
NC |
V našich ďalších projektoch sa dozviete viac o Bluetooth module HC-05 s ďalšími mikrokontrolérmi:
- Bluetooth ovládané autíčko pomocou Arduina
- Bluetooth riadený domáci automatizačný systém využívajúci 8051
- Hlasom ovládané svetlá pomocou Raspberry Pi
- Inteligentný telefón ovládaný FM rádiom pomocou Arduina a spracovania
- Robotické auto ovládané mobilným telefónom pomocou G-senzora a Arduina
Programovanie mikrokontroléra PIC na komunikáciu Bluetooth:
Rovnako ako všetky moduly (ADC, Timer, PWM) by sme mali tiež inicializovať náš modul Bluetooth. Inicializácia bude podobná inicializácii UART, ale musíme urobiť nejaké zmeny, aby Bluetooth fungovala bezchybne s našim PIC16F877A MCU. Definujme konfiguračné bity a začnime funkciou inicializácie Bluetooth.
Inicializácia Bluetooth:
Takmer všetky moduly Bluetooth na trhu pracujú s prenosovou rýchlosťou 9600, takže je veľmi dôležité nastaviť prenosovú rýchlosť rovnako ako prenosové rýchlosti modulov Bluetooth, tu nastavujeme SPBRG = 129, pretože pracujeme na frekvencii 20 MHz s 9600 ako prenosová rýchlosť. Vyššie uvedená inicializácia bude teda fungovať iba pre moduly Bluetooth pracujúce s prenosovou rýchlosťou 9600. Je tiež povinné mať povolený vysokorýchlostný prenosový bitový bit BRGH. Pomôže to pri nastavovaní presnej prenosovej rýchlosti.
// ****** Inicializujte Bluetooth pomocou USART ******** // void Initialize_Bluetooth () {// Nastavte piny RX a TX // TRISC6 = 1; TRISC7 = 1; // Nastavte prenosovú rýchlosť pomocou vyhľadávacej tabuľky v údajovom liste (pg114) // BRGH = 1; // Vždy používajte vysokorýchlostnú prenosovú rýchlosť s Bluetooth, inak to nebude fungovať SPBRG = 129; // Zapnúť Asyc. Sériový port // SYNC = 0; SPEN = 1; // Nastaviť 8-bitový príjem a prenos RX9 = 0; TX9 = 0; // Povoliť vysielanie a príjem // TXEN = 1; CREN = 1; // Povoliť globálne a ph. prerušenia // GIE = 1; PEIE = 1; // Povoliť prerušenia pre Tx. a Rx.// RCIE = 1; TXIE = 1; } // ___________ BT inicializované _____________ //
Ak máte modul BT, ktorý pracuje s rôznou prenosovou rýchlosťou, môžete sa pozrieť do vyhľadávacej tabuľky nižšie a zistiť svoju hodnotu pre SPBRG.
Načítanie údajov do Bluetooth:
Akonáhle je funkcia inicializovaná, máme v našom programe tri funkcie na odosielanie a prijímanie údajov z Bluetooth. Na rozdiel od UART tu musíme brať do úvahy niekoľko vecí, než budeme môcť prenášať alebo prijímať údaje. Modul Bluetooth má v sebe vysielaciu a prijímaciu medzipamäť, dáta, ktoré sa do nej pošlú, sa uložia do vyrovnávacej pamäte Tx. Tieto údaje sa nebudú vysielať (vysielať naživo), pokiaľ sa do modulu neodošle návrat vozíka. Preto, aby sme mohli prenášať údaje, musíme načítať vyrovnávaciu pamäť Rx BT a potom ju vysielať pomocou návratu vozíka.
Vyššie uvedenú prácu je možné ľahko dosiahnuť použitím nasledujúcich funkcií. Nasledujúcu funkciu je možné použiť, keď musíme do medzipamäte Rx načítať iba jeden znak. Načítame údaje do registra TXREG a čakáme na ich spracovanie kontrolou znakov TXIF a TRMT pomocou while slučiek.
// Funkcia na načítanie Bluetooth Rx. vyrovnávacia pamäť s jedným znakom.// void BT_load_char (char byte) {TXREG = byte; while (! TXIF); while (! TRMT); } // Koniec funkcie //
Funkcia uvedená nižšie sa používa na načítanie reťazca do vyrovnávacej pamäte Rx modulu Bluetooth. Reťazec je rozdelený na znaky a každý znak sa odošle do funkcie BT_load_char () .
// Funkcia načítania Bluetooth Rx. buffer s retazcom // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Koniec funkcie /
Vysielanie dát cez Bluetooth:
Doteraz sme práve prenášali informácie do vyrovnávacej pamäte Rx modulu HC-05. Teraz jej musíme dať príkaz, aby vysielal dáta vzduchom pomocou tejto funkcie.
// Funkcia vysielania údajov z RX. vyrovnávacia pamäť // void broadcast_BT () {TXREG = 13; __delay_ms (500); } // Koniec funkcie //
V tejto funkcii pošleme hodnotu 13 do registra TXREG. Táto hodnota 13 nie je nič iné ako desatinný ekvivalent prepravy (pozri tabuľku ASCII). Potom sa vytvorí malé oneskorenie pre spustenie vysielateľa.
Čítanie údajov z Bluetooth:
Podobne ako UART, aj nižšie uvedená funkcia sa používa na načítanie údajov z Bluetooth
// Funkcia na získanie znaku z Rx.buffer BT // char BT_get_char (void) {if (OERR) // kontrola chyby prebehu {CREN = 0; CREN = 1; // Reset CREN} if (RCIF == 1) // ak používateľ poslal znak vráti znak (hodnota ASCII) {while (! RCIF); spätný RCREG; } else // ak užívateľ neposlal žiadnu správu návrat 0 návrat 0; } // Koniec funkcie /
Ak používateľ odoslal údaje, táto funkcia vráti konkrétne údaje, ktoré je možné uložiť do premennej a spracovať. Pokiaľ užívateľ nič neposlal, funkcia vráti nulu.
Hlavná funkcia:
Použili sme všetky vyššie vysvetlené funkcie vo vnútri alebo v hlavnej funkcii. Zašleme úvodnú správu a potom počkáme, kým používateľ pošle nejaké hodnoty, na základe ktorých prepíname ČERVENÉ led svetlo pripojené k pinu RB3 na našej doske Perf.
void main (void) {// Deklarácie premenných rozsahu // int get_value; // Koniec deklarácie premennej // // Deklarácie I / O // TRISB3 = 0; // Koniec vyhlásenia I / O // Initialize_Bluetooth (); // umožní pripraviť naše bluetooth na akciu // Po zapnutí zobrazí úvodnú správu // BT_load_string ("Bluetooth je inicializovaný a pripravený"); broadcast_BT (); BT_load_string ("Stlačením 1 zapnete LED"); broadcast_BT (); BT_load_string ("Stlačením 0 vypnete LED"); broadcast_BT (); // Koniec správy // while (1) // Nekonečný lop {get_value = BT_get_char (); // Prečítajte si znak. prijaté cez BT // Ak dostaneme „0“ // if (get_value == „0“) {RB3 = 0; BT_load_string ("LED zhasla"); broadcast_BT (); } // Ak dostaneme „1“ // if (get_value == '1') {RB3 = 1; BT_load_string ("LED svietila"); broadcast_BT ();}}}
Skontrolujte celý program v oddiele kóde nižšie.
Schéma zapojenia a nastavenie hardvéru:
Obvodové spojenie pre tento projekt je veľmi jednoduché, my jednoducho majú k moci až k modulu Bluetooth a pripojiť Tx do 26 th pin PIC a Rx na 25 th pin PIC, ako je uvedené v schéme zapojenia nižšie:
Teraz poďme k hardvéru. Po dokončení pripojenia by malo vyzerať asi takto.
Ovládanie LED pomocou mobilnej aplikácie Bluetooth:
Poďme si pripraviť našu aplikáciu pre Android. Stiahnite si aplikáciu s názvom Bluetooth Terminal z App Store alebo použite tento odkaz. Po stiahnutí a nainštalovaní aplikácie zapnite svoju dosku PIC perf, ktorú používame od začiatku. Malá kontrolka LED na vašom module Bluetooth by mala blikať, čo znamená, že je zapnutý a aktívne hľadá telefón na nadviazanie spojenia.
Teraz choďte do nastavenia Bluetooth vo vašom telefóne a hľadajte nové zariadenie Bluetooth, ktoré by malo vidieť názov HC-05 alebo HC-06 podľa vášho modulu. Používam HC-06, preto môj telefón zobrazuje nasledujúci displej. Potom to skúste spárovať a požiada o heslo. Zadajte heslo ako 1234 (pre niektoré to môže byť 0000) a kliknite na OK, ako je uvedené nižšie.
Po úspešnom spárovaní otvorte aplikáciu Bluetooth Terminal, ktorú sme práve nainštalovali. Prejdite do možnosti nastavení a vyberte možnosť „Pripojiť zariadenie - zabezpečené“, ako je uvedené nižšie. Otvorí sa pop-box, kde budú uvedené všetky naše spárované zariadenia, ako je uvedené nižšie. Vyberte modul HC-05 alebo HC-06.
Akonáhle je spojenie nadviazané, musí sa indikátor Bluetooth modulu, ktorý doteraz blikal, stať konštantným, čo znamená, že sa úspešne pripojil k vášmu mobilu. Mali by sme dostať úvodnú správu z nášho programu, ako je uvedené nižšie.
Teraz stlačte "1", aby sa rozsvietilo LED svetlo, a stlačte "0", aby sa svetlo vyplo. Kompletná práca sa zobrazí na videu. Obrazovka vášho mobilného telefónu bude vyzerať asi takto, ako je uvedené nižšie.
Takže to je všetko, naučili sme sa, ako prepojiť modul Bluetooth s našim mikrokontrolérom PIC, teraz pomocou neho môžeme vyskúšať bezdrôtové projekty. Existuje veľa projektov, ktoré používajú Bluetooth, môžete ich vyskúšať alebo prísť s vlastným nápadom a zdieľať ich v sekcii komentárov. Skontrolujte tiež náš predchádzajúci projekt s aplikáciou Bluetooth Terminal a HC-05 ako Smart Phone Controlled Home Automation using Arduino and Smart Phone Controlled Digital Code Lock using Arduino.
Dúfam, že vám tento návod pomohol! Ak ste niekde uviazli, použite sekciu komentárov.