- Zahtjevi:
- Programiranje PIC mikrokontrolera za Bluetooth komunikaciju:
- Kružni dijagram i postavljanje hardvera:
- Upravljanje LED-om pomoću Bluetooth mobilne aplikacije:
U ovom uputstvu naučit ćemo kako bežično prepoznati PIC projekte povezivanjem Bluetooth modula (HC-06). U našem prethodnom vodiču već smo naučili kako koristiti USART modul u našem PIC mikrokontroleru i uspostavili smo komunikaciju između PIC-a i računala. Ako ste apsolutni početnik, ovdje potražite sve PIC tutorijale, gdje smo krenuli ispočetka, poput učenja MPLAB-a i XC8, povezivanja LED-a, LCD-a, korištenjem tajmera, ADC-a, PWM-a itd.
Ovdje smo koristili popularni Bluetooth modul HC-06. Korištenjem ovog modula možemo bežično primati i slati informacije s našeg PIC MCU-a na mobilnu aplikaciju ili računalo. Komunikacija između PIC-a i HC-06 uspostavlja se pomoću USART modula prisutnog u PIC mikrokontroleru. Također možete koristiti HC-05. Opet radimo na istom asinkronom 8-bitnom načinu, ali ovaj put ćemo malo izmijeniti svoj kod tako da radi s Bluetooth modulom. Stoga je prethodno učenje UART udžbenika dodatna prednost za ovaj projekt.
U ovom uputstvu uključit ćemo LED diodu slanjem naredbe za uključivanje ili isključivanje s našeg pametnog telefona. Koristit ćemo Android aplikaciju pod nazivom Bluetooth Terminal koja može slati i primati podatke putem Bluetootha. Ako iz aplikacije pošaljemo znak '1', svjetlo će se uključiti na PIC ploči i na telefon ćemo dobiti potvrdu da je svjetlo uključeno. Slično tome, s telefona možemo poslati '0' da bismo ga isključili. Na ovaj način možemo kontrolirati LED svjetlo na našoj PIC ploči, slično UART tutorialu, ali sada bežično. Kompletni program i detaljan videozapis dati su na kraju ovog vodiča.
Osnovni blok dijagram za postavljanje prikazan je u nastavku.

Zahtjevi:
Hardver:
- PIC16F877A Perf ploča
- Bluetooth modul HC-05 ili HC-06
- Računalo (za programiranje)
- Mobitel
- Programer PICkit 3
Softver:
- MPLABX
- Bluetooth terminal (mobilna aplikacija)
Bluetooth modul HC-06:
Bluetooth može raditi u sljedeća dva načina:
- Naredbeni način
- Način rada
U zapovjednom načinu moći ćemo konfigurirati Bluetooth svojstva poput naziva Bluetooth signala, njegove lozinke, brzine prijenosa itd. Način rada je onaj u kojem ćemo moći slati i primati podatke između PIC mikrokontrolera i Bluetooth modul. Stoga ćemo se u ovom uputstvu igrati samo s načinom rada. Način naredbe bit će prepušten zadanim postavkama. Naziv uređaja bit će HC-05 (koristim HC-06), a lozinka će biti 0000 ili 1234, a što je najvažnije zadana brzina prijenosa podataka za sve Bluetooth module bit će 9600.

Modul radi na napajanju od 5 V, a signalne iglice rade na naponu od 3,3 V, stoga je u samom modulu prisutan regulator od 3,3 V. Stoga se zbog toga ne trebamo brinuti. Od šest pinova, samo četiri će se koristiti u načinu rada. Tablica pin priključaka prikazana je u nastavku
|
S.Br |
Prikvačite na HC-05 / HC-06 |
Prikvačite ime na MCU |
Broj pin u PIC-u |
|
1 |
Vcc |
Vdd |
31. st. Pin |
|
2 |
Vcc |
Gnd |
32 nd pin |
|
3 |
Tx |
RC6 / Tx / CK |
25 th pin |
|
4 |
Rx |
RC7 / Rx / DT |
26 th pin |
|
5 |
država |
NC |
NC |
|
6 |
HR (Omogući) |
NC |
NC |
Pogledajte naše druge projekte kako biste saznali više o Bluetooth modulu HC-05 s drugim mikrokontrolerima:
- Automobil s igračkama kojim upravlja Bluetooth pomoću Arduina
- Bluetooth automatizirani sustav kućne automatizacije koji koristi 8051
- Svjetla kontrolirana glasom pomoću Raspberry Pi
- FM radio kontroliran pametnim telefonom pomoću Arduina i obrade
- Robotski automobil kojim upravlja mobitel pomoću G-senzora i Arduina
Programiranje PIC mikrokontrolera za Bluetooth komunikaciju:
Kao i svi moduli (ADC, Timer, PWM), i mi bismo trebali inicijalizirati naš Bluetooth modul. Inicijalizacija će biti slična inicijalizaciji UART-a, ali moramo napraviti neke promjene da bi Bluetooth besprijekorno radio s našim PIC16F877A MCU. Definirajmo konfiguracijske bitove i započnimo s funkcijom inicijalizacije Bluetooth-a.
Inicijalizacija Bluetootha:
Gotovo svi Bluetooth moduli na tržištu rade sa brzinom prijenosa od 9600, vrlo je važno postaviti brzinu prijenosa kao onu za Bluetooth module koji rade brzinom prijenosa, ovdje postavljamo SPBRG = 129, jer radimo na taktnoj frekvenciji od 20 MHz s 9600 kao brzina prijenosa. Stoga će gornja inicijalizacija raditi samo za Bluetooth module koji rade na brzini od 9600 baud. Također je obavezno omogućiti brzi prijenos brzine prijenosa BRGH. To će vam pomoći u postavljanju točne brzine prijenosa.
// ****** Inicijalizirajte Bluetooth pomoću USART ******** // void Initialize_Bluetooth () {// Postavite pinove RX i TX // TRISC6 = 1; TRISC7 = 1; // Postavite brzinu prijenosa podataka pomoću tablice potrage u podatkovnom listu (pg114) // BRGH = 1; // Uvijek koristite brzu brzinu prijenosa s Bluetoothom, inače neće raditi SPBRG = 129; // Uključi Asyc. Serijski priključak // SYNC = 0; SPEN = 1; // Postavljanje 8-bitnog prijema i prijenosa RX9 = 0; TX9 = 0; // Omogući prijenos i prijem // TXEN = 1; CREN = 1; // Omogući globalni i ph. prekida // GIE = 1; PEIE = 1; // Omogući prekide za Tx. i Rx.// RCIE = 1; TXIE = 1; } // ___________ BT inicijalizirano _____________ //
Ako imate BT modul koji radi s različitom brzinom prijenosa, tada možete potražiti donju tablicu kako biste saznali svoju vrijednost za SPBRG.

Učitavanje podataka u Bluetooth:
Jednom kada je funkcija inicijalizirana, u našem programu imamo tri funkcije za slanje i primanje podataka s Bluetootha. Za razliku od UART-a, ovdje moramo razmotriti nekoliko stvari prije nego što možemo poslati ili primiti podatke. Bluetooth modul ima spremište za primanje i primanje unutar njega, podaci poslani njemu pohranit će se u Tx međuspremnik. Ti se podaci neće emitirati (slati u eter), osim ako se modulu ne pošalje povratak kočije. Stoga, da bismo mogli prenijeti podatke, moramo učitati Rx međuspremnik BT-a i zatim ga emitirati pomoću vraćanja nosača.
Gore navedeni rad može se lako postići korištenjem sljedećih funkcija. Sljedeća se funkcija može koristiti kada moramo učitati samo jedan znak u Rx međuspremnik. Učitavamo podatke u TXREG registar i čekamo dok se ne obrade provjerom zastavice TXIF i TRMT pomoću while petlji.
// Funkcija učitavanja Bluetooth Rx-a. međuspremnik s jednim znakom.// void BT_load_char (char byte) {TXREG = byte; dok (! TXIF); dok (! TRMT); } // Kraj funkcije //
Ispod se koristi funkcija za učitavanje niza u Rx međuspremnik Bluetooth modula. Niz se dijeli na znakove i svaki se znak šalje funkciji BT_load_char () .
// Funkcija učitavanja Bluetooth Rx. međuspremnik sa nizom // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Kraj funkcije /
Emitiranje podataka putem Bluetootha:
Do sada smo upravo prenijeli informacije u Rx međuspremnik modula HC-05. Sada ga moramo uputiti da emitira podatke putem zraka pomoću ove funkcije.
// Funkcija emitiranja podataka s RX-a. međuspremnik // poništeno emitiranje_BT () {TXREG = 13; __zakasniti_ms (500); } // Kraj funkcije //
U ovoj funkciji šaljemo vrijednost 13 u TXREG registar. Ova vrijednost 13 nije ništa drugo do decimalni ekvivalent za prijevoz (pogledajte ASCII tablicu). Tada se stvara mala odgoda za emitera da započne.
Čitanje podataka s Bluetootha:
Slično UART-u, donja funkcija koristi se za čitanje podataka s Bluetootha
// Funkcija za dobivanje znaka iz Rx.buffer-a BT-a // char BT_get_char (void) {if (OERR) // provjeravamo li grešku prekomjernog pokretanja {CREN = 0; CREN = 1; // Resetiraj CREN} if (RCIF == 1) // ako je korisnik poslao char vraća char (ASCII vrijednost) {while (! RCIF); povratak RCREG; } else // ako korisnik nije poslao poruku return 0 return 0; } // Kraj funkcije /
Ako je korisnik poslao podatke, ova će funkcija vratiti te određene podatke koji se mogu spremiti u varijablu i obraditi. Ako korisnik nije poslao ništa, funkcija će vratiti nulu.
Glavna funkcija:
Koristili smo sve gore objašnjene funkcije unutar ili glavnu funkciju. Šaljemo uvodnu poruku, a zatim čekamo da korisnik pošalje neke vrijednosti na temelju kojih prebacujemo CRVENO led svjetlo povezano s RB3 pinom na našoj Perf ploči.
void main (void) {// Deklaracije varijable opsega // int get_value; // Kraj deklaracije varijable // // I / O deklaracije // TRISB3 = 0; // Kraj I / O deklaracije // Initialize_Bluetooth (); // dopuštamo da naš bluetooth bude spreman za akciju // Pri uključivanju pokažite uvodnu poruku // BT_load_string ("Bluetooth inicijaliziran i spreman"); emitiranje_BT (); BT_load_string ("Pritisnite 1 za uključivanje LED diode"); emitiranje_BT (); BT_load_string ("Pritisnite 0 za isključivanje LED diode"); emitiranje_BT (); // Kraj poruke // while (1) // Beskonačni lop {get_value = BT_get_char (); // Pročitajte char. primljeno putem BT // Ako primimo '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("LED isključen"); emitiranje_BT (); } // Ako primimo '1' // if (get_value == '1') {RB3 = 1; BT_load_string ("LED uključena"); emitiranje_BT ();}}}
Potpuni program provjerite u odjeljku koda ispod.
Kružni dijagram i postavljanje hardvera:
Krugova veze za ovaj projekt je vrlo jednostavna, mi jednostavno moramo vlast gore Bluetooth modul i spojiti TX do 26 -og pin od PIC-a i Rx do 25 -og pin od PIC-a kao što je prikazano na slici krug ispod:

Krenimo sada na hardver. Nakon što je veza završena, trebala bi izgledati otprilike ovako.

Upravljanje LED-om pomoću Bluetooth mobilne aplikacije:
Pripremimo sada našu Android aplikaciju. Preuzmite aplikaciju zvanu Bluetooth Terminal iz Trgovine aplikacija ili upotrijebite ovu vezu. Nakon što se aplikacija preuzme i instalira, uključite svoju PIC perf ploču koju koristimo od početka. Mala LED lampica na vašem Bluetooth modulu trebala bi treptati da bi označila da je uključen i da aktivno traži telefon za uspostavljanje veze.
Sada uđite u Bluetooth postavke svog telefona i potražite novi Bluetooth uređaj kako biste trebali vidjeti naziv HC-05 ili HC-06 na temelju vašeg modula. Koristim HC-06, stoga moj telefon prikazuje sljedeći zaslon. Zatim se pokušajte razdvojiti i tražit će lozinku. Unesite lozinku kao 1234 (za neke može biti 0000) i kliknite U redu kao što je prikazano u nastavku.


Nakon uspješnog uklanjanja otvorite aplikaciju Bluetooth Terminal koju smo upravo instalirali. Uđite u opciju postavki i odaberite "Povezivanje uređaja - sigurno" kao što je prikazano u nastavku. Otvorit će se skočni okvir u kojem će biti navedeni svi upareni uređaji kao što je prikazano u nastavku. Odaberite modul HC-05 ili HC-06.


Nakon uspostavljanja veze, svjetlo na Bluetooth modulu koji je do sada treptao sigurno je postalo konstantno što ukazuje na to da se uspješno povezao s vašim mobitelom. I trebali bismo dobiti uvodnu poruku iz našeg programa kao što je prikazano dolje.
Sada pritisnite '1' da biste uključili LED svjetlo i pritisnite '0' da biste isključili svjetlo. Kompletni rad bit će prikazan u videu. Zaslon vašeg mobitela izgledat će otprilike ovako prikazano dolje.


Dakle, to je to, ljudi, naučili smo kako povezati Bluetooth modul s našim PIC mikrokontrolerom, a sada uz pomoć toga možemo isprobati bežične projekte. Postoji mnogo projekata koji koriste Bluetooth, možete ih isprobati ili smisliti vlastitu ideju i podijeliti ih u odjeljku za komentare. Također provjerite naš prethodni projekt s aplikacijom za Bluetooth terminal i HC-05 poput pametne telefonije kontrolirane kućne automatizacije pomoću Arduina i pametnim telefonom kontrolirane digitalne šifre pomoću Arduino.
Nadam se, ovaj vam je vodič pomogao! Ako ste negdje zapeli, poslužite se odjeljkom za komentare.
