- Zahteve:
- Programiranje mikrokrmilnika PIC za komunikacijo Bluetooth:
- Shema vezja in nastavitev strojne opreme:
- Upravljanje LED z mobilno aplikacijo Bluetooth:
V tej vadnici se bomo naučili, kako brezžično prepoznavati projekte PIC s povezovanjem modula Bluetooth (HC-06). V prejšnji vadnici smo se že naučili, kako uporabljati modul USART v našem mikrokrmilniku PIC in vzpostavili komunikacijo med PIC in računalnikom. Če ste absolutni začetnik, si oglejte tukaj vse vaje za PIC, kjer smo začeli od začetka, na primer učenje MPLAB in XC8, povezovanje LED, LCD, uporabo časovnikov, ADC, PWM itd.
Tu smo uporabili priljubljeni modul Bluetooth HC-06. Z uporabo tega modula lahko brezžično prejemamo in pošiljamo informacije iz našega PIC MCU v mobilno aplikacijo ali računalnik. Komunikacija med PIC in HC-06 se vzpostavi z uporabo modula USART, ki je prisoten v mikrokrmilniku PIC. Uporabite lahko tudi HC-05. Ponovno delujemo v istem asinhronem 8-bitnem načinu, vendar bomo tokrat nekoliko spremenili kodo, tako da bo delovala z modulom Bluetooth. Zato je predhodno učenje UART vaje dodatna prednost tega projekta.
V tej vadnici bomo vključili LED s pošiljanjem ukaza za vklop ali izklop iz našega pametnega telefona. Uporabili bomo aplikacijo Android, imenovano Bluetooth Terminal, ki lahko pošilja in prejema podatke prek Bluetootha. Če iz aplikacije pošljemo znak '1', se na plošči PIC prižge lučka in na telefon bomo dobili potrditev, da je lučka vklopljena. Podobno lahko s telefona pošljemo '0', da ga izklopimo. Na ta način lahko nadzorujemo LED lučko na naši plošči PIC, podobno kot pri UART, zdaj pa brezžično. Celoten program in podroben video je podan na koncu te vadnice.
Osnovni blok diagram za nastavitev je prikazan spodaj.
Zahteve:
Strojna oprema:
- PIC16F877A Perf Board
- Modul Bluetooth HC-05 ali HC-06
- Računalnik (za programiranje)
- Mobilni telefon
- Programer PICkit 3
Programska oprema:
- MPLABX
- Bluetooth terminal (mobilna aplikacija)
Bluetooth modul HC-06:
Bluetooth lahko deluje v naslednjih dveh načinih:
- Ukazni način
- Način delovanja
V ukaznem načinu bomo lahko konfigurirali lastnosti Bluetooth, kot so ime signala Bluetooth, njegovo geslo, hitrost prenosa itd. Način delovanja je tisti, v katerem bomo lahko pošiljali in prejemali podatke med mikrokrmilnikom PIC. in modul Bluetooth. V tej vadnici se bomo torej poigravali samo z načinom delovanja. Ukazni način bo prepuščen privzetim nastavitvam. Ime naprave bo HC-05 (uporabljam HC-06), geslo pa bo 0000 ali 1234, najpomembneje pa bo privzeta hitrost prenosa podatkov za vse module Bluetooth 9600.
Modul deluje na napajanje 5V, signalni zatiči pa na 3.3V, zato je v samem modulu prisoten regulator 3.3V. Zato nam ni treba skrbeti. Od šestih zatičev bodo v načinu delovanja uporabljeni le štirje. Tabela povezav z zatiči je prikazana spodaj
S. Št |
Pripnite na HC-05 / HC-06 |
Ime pripnite na MCU |
Številka PIN v PIC |
1. |
Vcc |
Vdd |
31 st zatič |
2. |
Vcc |
Gnd |
32 nd zatič |
3. |
Tx |
RC6 / Tx / CK |
25 TH zatič |
4. |
Rx |
RC7 / Rx / DT |
26 TH zatič |
5. |
Država |
NC |
NC |
6. |
SL (Omogoči) |
NC |
NC |
Oglejte si naše druge projekte, če želite izvedeti več o modulu Bluetooth HC-05 z drugimi mikrokrmilniki:
- Toy Car z nadzorom Bluetooth z uporabo Arduina
- Sistem za avtomatizacijo doma pod nadzorom Bluetooth z uporabo 8051
- Glasovno nadzorovane luči z uporabo Raspberry Pi
- FM radio, ki ga nadzira pametni telefon s pomočjo Arduina in obdelave
- Robotski avto, ki ga upravlja mobilni telefon z uporabo G-senzorja in Arduina
Programiranje mikrokrmilnika PIC za komunikacijo Bluetooth:
Kot vsi moduli (ADC, časovnik, PWM) bi morali tudi mi modul Bluetooth inicializirati. Inicializacija bo podobna inicializaciji UART, vendar moramo narediti nekaj sprememb, da bo Bluetooth brezhibno deloval z našim MCU PIC16F877A. Določimo konfiguracijske bite in začnimo s funkcijo inicializacije Bluetooth.
Inicializacija Bluetootha:
Skoraj vsi moduli Bluetooth na trgu delujejo s hitrostjo prenosa 9600, zelo pomembno je, da nastavite svojo hitrost prenosa enako kot hitrost prenosa podatkov modulov Bluetooth, tukaj nastavimo SPBRG = 129, saj delujemo na taktni frekvenci 20 MHz z 9600 kot hitrost prenosa. Zato bo zgornja inicializacija delovala samo za module Bluetooth, ki delujejo s hitrostjo 9600 baudov. Prav tako je obvezno omogočiti hitrost prenosa hitrosti BRGH. To bo pomagalo pri nastavitvi natančne hitrosti prenosa.
// ****** Inicializirajte Bluetooth s pomočjo USART ******** // void Initialize_Bluetooth () {// Nastavite nožice RX in TX // TRISC6 = 1; TRISC7 = 1; // Nastavite hitrost prenosa s pomočjo tabele za iskanje v obrazcu (pg114) // BRGH = 1; // Z Bluetooth vedno uporabljajte hitrost prenosa v hitrosti, sicer ne bo delovalo SPBRG = 129; // Vklopite Asyc. Zaporedna vrata // SYNC = 0; SPEN = 1; // Nastavimo 8-bitni sprejem in prenos RX9 = 0; TX9 = 0; // Omogoči prenos in sprejem // TXEN = 1; CREN = 1; // Omogoči globalno in ph. prekinitve // GIE = 1; PEIE = 1; // Omogoči prekinitve za Tx. in Rx.// RCIE = 1; TXIE = 1; } // ___________ BT inicializiran _____________ //
Če imate modul BT, ki deluje z različno hitrostjo prenosa, lahko v spodnji tabeli poiščete svojo vrednost za SPBRG.
Nalaganje podatkov v Bluetooth:
Ko je funkcija inicializirana, imamo v našem programu tri funkcije za pošiljanje in prejemanje podatkov iz Bluetootha. Za razliko od UART imamo tu nekaj stvari, ki jih moramo upoštevati, preden lahko pošljemo ali sprejmemo podatke. Modul Bluetooth ima vmesnik za oddajanje in sprejemanje, podatki, ki so mu poslani, bodo shranjeni v vmesnem pomnilniku Tx. Ti podatki se ne bodo predvajali (poslali v eter), razen če se modulu pošlje povratnica kočije. Zato moramo za prenos podatkov naložiti Rx medpomnilnik BT in ga nato oddati z vrnitvijo nosilca.
Zgornje delovanje lahko enostavno dosežemo z uporabo naslednjih funkcij. Spodnjo funkcijo lahko uporabimo, ko moramo v Rx vmesnik naložiti samo en znak. Podatke naložimo v register TXREG in počakamo, da se obdelajo s preverjanjem zastav TXIF in TRMT z uporabo zanke while.
// Funkcija za nalaganje Bluetooth Rx. medpomnilnik z enim znakom.// void BT_load_char (char byte) {TXREG = byte; medtem ko (! TXIF); medtem ko (! TRMT); } // Konec funkcije //
Spodnja funkcija se uporablja za nalaganje niza v medpomnilnik Rx modula Bluetooth. Niz je razdeljen na znake in vsak znak je poslan funkciji BT_load_char () .
// Funkcija za nalaganje Bluetooth Rx. medpomnilnik z nizom // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Konec funkcije /
Oddajanje podatkov prek povezave Bluetooth:
Do zdaj smo pravkar prenašali informacije v vmesni pomnilnik Rx modula HC-05. Zdaj mu moramo naročiti, naj s pomočjo te funkcije oddaja podatke po zraku.
// Funkcija za oddajanje podatkov iz RX. medpomnilnik // neveljavno oddajanje_BT () {TXREG = 13; __zakasnitev_ms (500); } // Konec funkcije //
Pri tej funkciji pošljemo vrednost 13 v register TXREG. Ta vrednost 13 ni nič drugega kot decimalni ekvivalent za prevoz (glej grafikon ASCII). Nato nastane majhna zakasnitev za izdajatelja televizijskih programov.
Branje podatkov iz Bluetootha:
Podobno kot UART se tudi spodnja funkcija uporablja za branje podatkov s povezave Bluetooth
// Funkcija pridobivanja znaka iz Rx.bufferja BT // char BT_get_char (void) {if (OERR) // preverjanje napake pri prekoračenju {CREN = 0; CREN = 1; // Ponastavi CREN} if (RCIF == 1) // če je uporabnik poslal char vrne char (vrednost ASCII) {while (! RCIF); vrnitev RCREG; } else // če uporabnik ni poslal nobenega sporočila return 0 return 0; } // Konec funkcije /
Če je uporabnik poslal podatke, bo ta funkcija vrnila tiste podatke, ki jih je mogoče shraniti v spremenljivko in obdelati. Če uporabnik ni poslal ničesar, funkcija vrne nič.
Glavna funkcija:
Uporabili smo vse zgoraj razložene funkcije znotraj ali glavne funkcije. Pošljemo nekaj uvodnih sporočil in nato počakamo, da uporabnik pošlje nekaj vrednosti, na podlagi katerih na naši plošči Perf preklopimo RDEČO led lučko, priključeno na pin RB3.
void main (void) {// Deklaracije spremenljivk obsega // int get_value; // Konec izjave spremenljivke // // V / I izjave // TRISB3 = 0; // Konec I / O izjave // Initialize_Bluetooth (); // omogočimo, da je naš bluetooth pripravljen za akcijo // po vklopu pokažemo nekaj uvodnega sporočila // BT_load_string ("Bluetooth Initialized and Ready"); oddaja_BT (); BT_load_string ("Pritisnite 1, da vklopite LED"); oddaja_BT (); BT_load_string ("Pritisnite 0, da izklopite LED"); oddaja_BT (); // Konec sporočila // while (1) // Neskončni lop {get_value = BT_get_char (); // Preberite znak. prejeto prek BT // Če prejmemo '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("LED izklopljena"); oddaja_BT (); } // Če prejmemo '1' // if (get_value == '1') {RB3 = 1; BT_load_string ("LED vklopljena"); oddaja_BT ();}}}
Preverite celoten program v spodnjem razdelku kode.
Shema vezja in nastavitev strojne opreme:
Circuit povezave za ta projekt je zelo preprosta, smo preprosto morali na oblast gor modul Bluetooth in priključite Tx na 26 th pin PIC in Rx na 25 th pin PIC, kot je prikazano na sliki vezje spodaj:
Zdaj pa nadaljujmo s strojno opremo. Ko je povezava končana, mora biti videti nekako tako.
Upravljanje LED z mobilno aplikacijo Bluetooth:
Zdaj pa pripravimo našo aplikacijo za Android. Prenesite aplikacijo z imenom Bluetooth Terminal iz trgovine App Store ali uporabite to povezavo. Ko je aplikacija prenesena in nameščena, vklopite svojo ploščo PIC perf, ki jo uporabljamo od začetka. Majhna LED-lučka na modulu Bluetooth bi morala utripati, kar pomeni, da je vklopljen in aktivno išče telefon za vzpostavitev povezave.
Zdaj pojdite v nastavitve Bluetooth v telefonu in poiščite novo napravo Bluetooth, da bi lahko videli ime HC-05 ali HC-06 glede na vaš modul. Uporabljam HC-06, zato moj telefon prikazuje naslednji zaslon. Nato se poskusite ločiti in vprašal bo za geslo. Vnesite geslo kot 1234 (za nekatere je lahko 0000) in kliknite V redu, kot je prikazano spodaj.
Po uspešnem odstranjevanju odprite aplikacijo Bluetooth Terminal, ki smo jo pravkar namestili. Pojdite v možnost nastavitev in izberite »Poveži napravo - varno«, kot je prikazano spodaj. Odpre se pojavno okno, v katerem bodo navedene vse naše seznanjene naprave, kot je prikazano spodaj. Izberite modul HC-05 ali HC-06.
Ko je povezava vzpostavljena, mora lučka modula Bluetooth, ki je do zdaj utripala, postati stalna, kar pomeni, da se je uspešno povezal z vašim mobilnim telefonom. In dobili bi uvodno sporočilo našega programa, kot je prikazano spodaj.
Zdaj pritisnite "1", da vklopite LED lučko, in "0", da izklopite luč. Celotno delo bo prikazano v videoposnetku. Zaslon vašega mobilnega telefona bo videti približno tako, kot je prikazano spodaj.
Tako je, fantje, naučili smo se, kako povezati modul Bluetooth z našim mikrokrmilnikom PIC, zdaj pa lahko s pomočjo tega preizkusimo brezžične projekte. Obstaja veliko projektov, ki uporabljajo Bluetooth, lahko jih preizkusite ali izmislite svojo idejo in jih delite v razdelku za komentarje. Preverite tudi naš prejšnji projekt z aplikacijo terminala Bluetooth in HC-05, kot sta pametna telefonska nadzorna avtomatizacija doma z uporabo Arduino in pametna telefonska nadzorna digitalna koda za zaklepanje z uporabo Arduino
Upam, da vam je ta vadnica pomagala! Če ste se kje zataknili, vljudno uporabite oddelek za komentarje.