- Prasības:
- PIC mikrokontrollera programmēšana Bluetooth sakariem:
- Shēmas shēma un aparatūras iestatīšana:
- LED vadība, izmantojot Bluetooth mobilo lietojumprogrammu:
Šajā apmācībā mēs uzzināsim, kā izveidot PIC projektus bezvadu savienojot Bluetooth moduli (HC-06). Iepriekšējā apmācībā mēs jau esam iemācījušies, kā izmantot USART moduli mūsu PIC mikrokontrollerī un izveidota saziņa starp PIC un datoru. Ja esat absolūts iesācējs, skatiet šeit visas mūsu PIC apmācības, kurās mēs esam sākuši no nulles, piemēram, apgūstot MPLAB un XC8, saskaroties ar LED, LCD, izmantojot taimerus, ADC, PWM utt.
Šeit mēs izmantojām populāro Bluetooth moduli HC-06. Izmantojot šo moduli, mēs varam bezvadu režīmā saņemt un nosūtīt informāciju no mūsu PIC MCU uz mobilo lietojumprogrammu vai datoru. Saziņa starp PIC un HC-06 tiek izveidota, izmantojot PIC mikrokontrollerī esošo USART moduli. Varat arī izmantot HC-05. Mēs atkal darbojamies tajā pašā asinhronajā 8 bitu režīmā, taču šoreiz mēs nedaudz pārveidosim savu kodu tā, lai tas darbotos ar Bluetooth moduli. Tāpēc iepriekš apgūt UART apmācību ir šī projekta papildu priekšrocība.
Šajā apmācībā mēs pārslēdzam LED, nosūtot vai izslēdzot komandu no mūsu viedtālruņa. Mēs izmantosim Android lietojumprogrammu ar nosaukumu Bluetooth Terminal, kas var nosūtīt un saņemt datus, izmantojot Bluetooth. Ja mēs no lietotnes nosūtīsim simbolu “1”, PIC panelī tiks ieslēgta gaisma, un mēs saņemsim tālruņa apstiprinājumu, ka gaisma ir ieslēgta. Līdzīgi mēs varam nosūtīt “0” no tālruņa, lai to izslēgtu. Tādā veidā mēs varam kontrolēt mūsu PIC dēļa LED gaismu līdzīgi UART apmācībai, bet tagad bezvadu režīmā. Pilna programma un detalizēts video ir sniegts šīs apmācības beigās.
Iestatīšanas pamatbloka diagramma ir parādīta zemāk.
Prasības:
Aparatūra:
- PIC16F877A Perf Board
- HC-05 vai HC-06 Bluetooth modulis
- Dators (programmēšanai)
- Mobilais telefons
- PICkit 3 programmētājs
Programmatūra:
- MPLABX
- Bluetooth termināls (mobilā lietojumprogramma)
Bluetooth modulis HC-06:
Bluetooth var darboties šādos divos režīmos:
- Komandas režīms
- Darbības režīms
Jo Komandu režīmā , mēs varēsim konfigurēt Bluetooth īpašības, piemēram, nosaukumu Bluetooth signālu, tā parole, darbības bodu ātrums uc Darba režīms ir viens, kurā mēs varēsim sūtīt un saņemt datus starp PIC Microcontroller un Bluetooth moduli. Tāpēc šajā apmācībā mēs spēlējamies tikai ar darbības režīmu. Komandu režīmā tiks atstāti noklusējuma iestatījumi. Ierīces nosaukums būs HC-05 (es izmantoju HC-06), un parole būs 0000 vai 1234, un vissvarīgāk noklusējuma datu pārraides ātrums visiem Bluetooth moduļiem būs 9600.
Modulis darbojas ar 5V barošanu, un signāla tapas darbojas ar 3.3V, tāpēc pašā modulī ir 3.3V regulators. Tāpēc mums par to nav jāuztraucas. No sešiem tapām tikai četri tiks izmantoti darbības režīmā. Adatu savienojuma tabula ir parādīta zemāk
S.No |
Piespraužiet HC-05 / HC-06 |
Piespraust vārdu MCU |
PIN numurs PIC |
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 |
Valsts |
NC |
NC |
6 |
EN (iespējot) |
NC |
NC |
Pārbaudiet mūsu citus projektus, lai uzzinātu vairāk par Bluetooth moduli HC-05 ar citiem mikrokontrolleriem:
- Bluetooth kontrolēta rotaļlietu automašīna, izmantojot Arduino
- Bluetooth kontrolēta mājas automatizācijas sistēma, izmantojot 8051
- Balss vadāmas gaismas, izmantojot Raspberry Pi
- Viedtālrunis kontrolē FM radio, izmantojot Arduino un apstrādi
- Ar mobilo tālruni vadāma robotu automašīna, izmantojot G-Sensor un Arduino
PIC mikrokontrollera programmēšana Bluetooth sakariem:
Tāpat kā visiem moduļiem (ADC, Taimeris, PWM), mums vajadzētu arī inicializēt savu Bluetooth moduli. Inicializācija būs līdzīga UART inicializēšanai, taču mums ir jāveic dažas izmaiņas, lai Bluetooth darbotos nevainojami ar mūsu PIC16F877A MCU. Definēsim konfigurācijas bitus un sāksim ar Bluetooth inicializācijas funkciju.
Notiek Bluetooth inicializēšana:
Gandrīz visi tirgū esošie Bluetooth moduļi darbojas ar 9600 bitu pārraides ātrumu, ir ļoti svarīgi iestatīt savu bitu pārraides ātrumu tāpat kā Bluetooth moduļu darbības ātrumu, šeit mēs iestatām SPBRG = 129, jo mēs strādājam ar 20Mhz pulksteņa frekvenci ar 9600 kā pārraides ātrums. Tādējādi iepriekš minētā inicializācija darbosies tikai tiem Bluetooth moduļiem, kas darbojas ar 9600 bitu pārraides ātrumu. Obligāti ir jāiespējo arī ātrgaitas datu pārraides ātruma bits BRGH. Tas palīdzēs noteikt precīzu datu pārraides ātrumu.
// ****** Inicializējiet Bluetooth, izmantojot USART ******** // void Initialize_Bluetooth () {// Iestatiet RX un TX tapas // TRISC6 = 1; TRISC7 = 1; // Iestatiet datu pārraides ātrumu, izmantojot datu tabulas uzmeklēšanas tabulu (pg114) // BRGH = 1; // Vienmēr izmantojiet ātrgaitas datu pārraides ātrumu ar Bluetooth, jo citādi tas nedarbosies SPBRG = 129; // Ieslēdziet Asyc. Seriālais ports // SYNC = 0; SPEN = 1; // Iestatīt 8 bitu uztveršanu un pārraidi RX9 = 0; TX9 = 0; // Iespējot pārraidi un saņemšanu // TXEN = 1; CREN = 1; // Iespējot globālo un ph. pārtrauc // GIE = 1; PEIE = 1; // Iespējot pārtraukumus Tx. un Rx. // RCIE = 1; TXIE = 1; } // ___________ BT inicializēts _____________ //
Ja jums ir BT modulis, kas darbojas ar citu datu pārraides ātrumu, varat uzzināt zemāk esošo meklēšanas tabulu, lai uzzinātu SPBRG vērtību.
Datu ielāde Bluetooth:
Kad funkcija ir inicializēta, mūsu programmā ir trīs funkcijas, lai nosūtītu un saņemtu datus no Bluetooth. Atšķirībā no UART mums ir jāapsver dažas lietas, pirms mēs varam pārsūtīt vai saņemt datus. Bluetooth moduļa iekšpusē ir pārsūtīšanas un saņemšanas buferis, tam nosūtītie dati tiks saglabāti Tx buferī. Šie dati netiks apraidīti (nosūtīti ēterā), ja vien moduļam netiks nosūtīta pārvadājuma atgriešanās. Tādējādi, lai pārsūtītu datus, mums jāielādē BT Rx buferis un pēc tam jāpārraida, izmantojot karietes atgriešanos.
Iepriekš minēto darbu var viegli sasniegt, izmantojot šādas funkcijas. Zemāk redzamo funkciju var izmantot, ja Rx buferī mums jāielādē tikai viena rakstzīme. Mēs ielādējam datus TXREG reģistrā un gaidām, līdz tie tiks apstrādāti, pārbaudot karodziņā TXIF un TRMT, izmantojot while ciklus.
// Funkcija, lai ielādētu Bluetooth Rx. buferis ar vienu rakstzīmi.// void BT_load_char (char byte) {TXREG = baits; kamēr (! TXIF); kamēr (! TRMT); } // Funkcijas beigas //
Zemāk esošo funkciju izmanto, lai virkni ielādētu Bluetooth moduļa Rx buferī. Virkne ir sadalīta rakstzīmēs, un katra rakstzīme tiek nosūtīta uz funkciju BT_load_char () .
// Funkcija, lai ielādētu Bluetooth Rx. buferis ar virkni // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Funkcijas beigas /
Datu apraide, izmantojot Bluetooth:
Līdz šim mēs tikko pārsūtījām informāciju uz moduļa HC-05 Rx buferi. Tagad mums ir jāuzdod tai pārraidīt datus ēterā, izmantojot šo funkciju.
// Funkcija datu pārraidīšanai no RX. buferis // anulēta apraide_BT () {TXREG = 13; __kavēšanās_ms (500); } // Funkcijas beigas //
Šajā funkcijā mēs nosūtām TXREG reģistrā vērtību 13. Šī vērtība 13 ir nekas cits kā pārvadājuma decimālais ekvivalents (skat. ASCII diagrammu). Tad tiek izveidota neliela aizkave, lai raidorganizācija sāktu darboties.
Datu lasīšana no Bluetooth:
Līdzīgi kā UART, šī funkcija tiek izmantota, lai nolasītu datus no Bluetooth
// Funkcija, lai iegūtu char no Rx.buffer of BT // char BT_get_char (void) {if (OERR) // pārbaudiet, vai nav izpildīta kļūda {CREN = 0; CREN = 1; // Atiestatīt CREN} if (RCIF == 1) // ja lietotājs ir nosūtījis char, atgriež char (ASCII vērtību) {while (! RCIF); atgriešanās RCREG; } else // ja lietotājs nav nosūtījis ziņojumu, atgriezties 0 return 0; } // Funkcijas beigas /
Ja lietotājs ir nosūtījis datus, šī funkcija atgriež konkrētos datus, kurus var saglabāt mainīgajā un apstrādāt. Ja lietotājs neko nav nosūtījis, funkcija atgriezīs nulli.
Galvenā funkcija:
Mēs izmantojām visas iepriekš izskaidrotās funkcijas iekšpusē vai galvenajā funkcijā. Mēs nosūtām ievada ziņojumu un pēc tam gaidām, kamēr lietotājs nosūtīs dažas vērtības, pamatojoties uz kurām mēs pārslēdzam RED vadīto gaismu, kas savienota ar RB3 tapu, uz mūsu Perf dēļa.
void main (void) {// Apjoma mainīgo deklarācijas // int get_value; // Mainīgā lieluma deklarācijas beigas // I / O deklarācijas TRISB3 = 0; // I / O deklarācijas beigas // Initialize_Bluetooth (); // ļauj mūsu Bluetooth sagatavot darbībai // Ieslēdzot vienu reizi, parādiet ievada ziņojumu // BT_load_string ("Bluetooth inicializēts un gatavs"); apraide_BT (); BT_load_string ("Nospiediet 1, lai ieslēgtu LED"); apraide_BT (); BT_load_string ("Nospiediet 0, lai izslēgtu LED"); apraide_BT (); // ziņojuma beigas // while (1) // Bezgalīgais lop {get_value = BT_get_char (); // Lasīt char. saņemts caur BT // Ja mēs saņemam “0” // if (get_value == '0') {RB3 = 0; BT_load_string ("LED ir izslēgts"); apraide_BT (); } // Ja mēs saņemam “1” // if (get_value == '1') {RB3 = 1; BT_load_string ("LED ieslēdzas"); apraide_BT ();}}}
Pārbaudiet visu programmu zemāk esošajā sadaļā Kods.
Shēmas shēma un aparatūras iestatīšana:
Shēmas savienojumi šajā projektā ir ļoti vienkārša, mēs vienkārši ir pie varas pat Bluetooth moduli un pievienojiet Tx ar 26 th pin PIC un Rx uz 25 th pin PIC kā parādīts shēmas diagramma zemāk:
Tagad ļaujiet mums pāriet uz aparatūru. Kad savienojums ir izveidots, tam vajadzētu izskatīties apmēram šādi.
LED vadība, izmantojot Bluetooth mobilo lietojumprogrammu:
Ļaujiet mums sagatavot mūsu Android lietojumprogrammu. Lejupielādējiet lietojumprogrammu ar nosaukumu Bluetooth Terminal no App Store vai izmantojiet šo saiti. Kad lietojumprogramma ir lejupielādēta un instalēta, ieslēdziet PIC perf plāksni, kuru mēs izmantojam kopš sākuma. Jūsu Bluetooth moduļa mazajai LED gaismai vajadzētu mirgot, lai norādītu, ka tā ir ieslēgta un aktīvi meklē tālruni, lai izveidotu savienojumu.
Tagad ieejiet sava tālruņa Bluetooth iestatījumos un meklējiet jaunu Bluetooth ierīci. Jums vajadzētu būt iespējai redzēt nosaukumu HC-05 vai HC-06, pamatojoties uz jūsu moduli. Es izmantoju HC-06, tāpēc tālrunī tiek parādīts šāds displejs. Pēc tam mēģiniet izveidot paringu, un tas prasīs paroli. Ievadiet paroli kā 1234 (dažiem tas var būt 0000) un noklikšķiniet uz Labi, kā parādīts zemāk.
Pēc veiksmīgas atdalīšanas atveriet tikko instalēto lietojumprogrammu Bluetooth Terminal. Piekļūstiet iestatījumu opcijai un atlasiet “Savienot ierīci - droši”, kā parādīts zemāk. Tas atvērs uznirstošo lodziņu, kurā visas mūsu pārī savienotās ierīces tiks uzskaitītas, kā parādīts zemāk. Atlasiet moduli HC-05 vai HC-06.
Kad savienojums ir izveidots, līdz šim mirgojošajam Bluetooth moduļa apgaismojumam jābūt nemainīgam, lai norādītu, ka tas ir veiksmīgi izveidojis savienojumu ar jūsu mobilo tālruni. Un mums vajadzētu saņemt ievada ziņojumu no mūsu programmas, kā parādīts zemāk.
Tagad nospiediet '1', lai ieslēgtu LED gaismu, un nospiediet '0', lai izslēgtu gaismu. Pilnīgs darbs tiks parādīts videoklipā. Jūsu mobilās ierīces ekrāns izskatīsies šādi, kā parādīts zemāk.
Tā tas ir, puiši, mēs esam iemācījušies, kā savienot Bluetooth moduli ar mūsu PIC mikrokontrolleri, tagad ar šī palīdzību mēs varam izmēģināt bezvadu projektus. Ir daudz projektu, kas izmanto Bluetooth. Jūs varat tos izmēģināt vai nākt klajā ar savu ideju un kopīgot tos komentāru sadaļā. Pārbaudiet arī mūsu iepriekšējo projektu ar Bluetooth termināļa lietotni un HC-05, piemēram, viedtālruņa kontrolētu mājas automatizāciju, izmantojot Arduino un viedtālruņa kontrolētu digitālo kodu bloķēšanu, izmantojot Arduino.
Ceru, ka šī apmācība jums palīdzēja! Ja esat kaut kur iestrēdzis, lūdzu, izmantojiet komentāru sadaļu.