- Követelmények:
- PIC mikrokontroller programozása a Bluetooth kommunikációhoz:
- Áramkör és hardver beállítása:
- A LED vezérlése Bluetooth mobil alkalmazással:
Ebben az oktatóanyagban megtudhatjuk, hogyan lehet vezeték nélküli PIC-projekteket készíteni a Bluetooth modul (HC-06) összekapcsolásával. Korábbi oktatóanyagunkban már megtanultuk, hogyan kell használni az USART modult a PIC mikrovezérlőnkben, és kiépítettük a kommunikációt a PIC és a Computer között. Ha teljesen kezdő vagy, akkor nézd meg itt az összes PIC-oktatóanyagot, ahol a semmiből kezdtük, például az MPLAB és az XC8 megtanulása, az interfész LED, az LCD, az időzítők, az ADC, a PWM stb.
Itt a népszerű HC-06 Bluetooth modult használtuk. E modul használatával vezeték nélkül fogadhatunk és küldhetünk információkat a PIC MCU-ról egy mobilalkalmazásba vagy egy számítógépbe. A kommunikáció a PIC és a HC-06 között a PIC mikrokontrollerben lévő USART modul segítségével jön létre. Használhatja a HC-05 készüléket is. Ismét ugyanazon az aszinkron 8 bites üzemmóddal működünk, de ezúttal kicsit módosítjuk a kódunkat, hogy az a Bluetooth modullal is működjön. Ezért az UART oktatóanyag előzetes megtanulása további előnyt jelent a projekt számára.
Ebben az oktatóanyagban egy LED-et kapcsolunk be azáltal, hogy bekapcsoljuk vagy kikapcsoljuk az intelligens telefonunk parancsát. A Bluetooth Terminal nevű Android alkalmazást fogjuk használni, amely Bluetooth-on keresztül küldhet és fogadhat adatokat. Ha egy karaktert „1” küldünk az alkalmazásból, akkor a lámpa bekapcsol a PIC-táblán, és visszaigazolást kapunk a telefonra arról, hogy a lámpa fel van kapcsolva. Hasonlóképpen a 0-t is elküldhetjük telefonról, hogy kikapcsoljuk. Így vezérelhetjük a PIC-táblánk LED-fényét, hasonlóan az UART oktatóanyagához, de most vezeték nélkül. A teljes program és a részletes videó az oktatóanyag végén található.
A beállítás alapvető blokkvázlata az alábbiakban látható.
Követelmények:
Hardver:
- PIC16F877A Perf Board
- HC-05 vagy HC-06 Bluetooth modul
- Számítógép (programozáshoz)
- Mobiltelefon
- PICkit 3 programozó
Szoftver:
- MPLABX
- Bluetooth terminál (mobil alkalmazás)
HC-06 Bluetooth modul:
A Bluetooth a következő két módban működhet:
- Parancs mód
- Működési mód
A Command Mode képesek leszünk, hogy konfigurálja a Bluetooth tulajdonságok, mint a neve a Bluetooth jel, annak a jelszót, az operációs adatátviteli sebesség stb üzemmód az, ahol leszünk képesek adatokat küldeni és fogadni a PIC mikrokontroller és a Bluetooth modult. Ezért ebben az oktatóanyagban csak az Üzemmóddal fogunk játszani. A Parancs mód az alapértelmezett beállításokra marad. Az eszköz neve HC-05 lesz (én HC-06-ot használok), a jelszó pedig 0000 vagy 1234 lesz, és ami a legfontosabb: az összes Bluetooth modul alapértelmezett átviteli sebessége 9600 lesz.
A modul 5 V-os tápfeszültségen működik, és a jelcsapok 3,3 V-on működnek, ezért magában a modulban van egy 3,3 V-os szabályozó. Ezért nem kell aggódnunk miatta. A hat csap közül csak négyet használunk Üzemmódban. A tűcsatlakozási táblázat az alábbiakban látható
S.No |
Tű a HC-05 / HC-06-ra |
PIN-kód rögzítése az MCU-n |
PIN szám a PIC-ben |
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. |
Állapot |
NC |
NC |
6. |
EN (engedélyezés) |
NC |
NC |
Nézze meg más projektjeinket, hogy többet tudjon meg a HC-05 Bluetooth modulról más mikrovezérlőkkel:
- Bluetooth vezérlésű játékautó Arduino használatával
- Bluetooth vezérlésű otthoni automatizálási rendszer a 8051 használatával
- Hangvezérelt fények Raspberry Pi használatával
- Intelligens telefon által vezérelt FM rádió Arduino és Processing használatával
- Mobiltelefon vezérelt robotautó a G-Sensor és az Arduino segítségével
PIC mikrokontroller programozása a Bluetooth kommunikációhoz:
Mint minden modulhoz (ADC, Timer, PWM), itt is inicializálnunk kell a Bluetooth modulunkat. Az inicializálás hasonló lesz az UART inicializálásához, de változtatnunk kell azért, hogy a Bluetooth hibátlanul működjön a PIC16F877A MCU-val. Határozzuk meg a konfigurációs biteket, és kezdjük a Bluetooth inicializáló funkcióval.
A Bluetooth inicializálása:
A piacon szinte az összes Bluetooth modul 9600 átviteli sebességgel működik, nagyon fontos, hogy az átviteli sebességet ugyanúgy állítsa be, mint a Bluetooth modulok átviteli sebességét használó sebességet, itt állítjuk be az SPBRG = 129 értéket, mivel 20 MHz-es órajel-frekvencián működünk 9600 adatátviteli sebességként. Ezért a fenti inicializálás csak a 9600 baud sebességgel működő Bluetooth moduloknál fog működni. Kötelező a nagy sebességű átviteli sebességű BRGH bit engedélyezése is. Ez segít a pontos adatátviteli sebesség beállításában.
// ****** Inicializálja a Bluetooth-ot az USART használatával ******** // void Initialize_Bluetooth () {// Állítsa be az RX és TX csapjait // TRISC6 = 1; TRISC7 = 1; // Állítsa be az adatátviteli sebességet az adatlap keresési táblázatának használatával (pg114) // BRGH = 1; // Mindig nagy sebességű adatátviteli sebességet használjon Bluetooth-kapcsolattal, különben ez nem fog működni SPBRG = 129; // Kapcsolja be az Asyc szolgáltatást. Soros port // SYNC = 0; SPEN = 1; // 8 bites vétel és átvitel beállítása RX9 = 0; TX9 = 0; // Adás és vétel engedélyezése // TXEN = 1; CREN = 1; // Globális és ph engedélyezése. megszakítja // GIE = 1; PEIE = 1; // Megszakítások engedélyezése a Tx számára. és Rx. // RCIE = 1; TXIE = 1; } // ___________ BT inicializálva _____________ //
Ha van egy BT modulja, amely más átviteli sebességgel működik, akkor az SPBRG értékének megismeréséhez használja az alábbi keresési táblázatot.
Adatok betöltése a Bluetooth-ra:
A funkció inicializálása után a programban három funkcióval rendelkezünk adatok küldésére és fogadására a Bluetooth-on keresztül. Az UART-tól eltérően itt néhány dolgot figyelembe kell vennünk, mielőtt adatokat továbbíthatunk vagy fogadhatunk. A Bluetooth modulban van egy Adás és Vétel puffer, a neki elküldött adatok a Tx pufferben lesznek tárolva. Ezeket az adatokat csak akkor sugározzák (küldik levegőben), ha a kocsivisszát elküldik a modulnak. Ennélfogva az adatok továbbításához be kell töltenünk a BT Rx pufferét, majd a kocsivissza segítségével továbbítani.
A fenti munka könnyen megvalósítható a következő funkciók használatával. Az alábbi függvény akkor használható, ha csak egy karaktert kell betöltenünk az Rx pufferbe. Betöltöttük az adatokat a TXREG regiszterbe, és várjuk, amíg azok feldolgozásra kerülnek a TXIF és a TRMT jelzőn, a while ciklusok segítségével.
// Funkció a Bluetooth Rx betöltésére. puffer egy karakterrel.// void BT_load_char (char byte) {TXREG = byte; míg (! TXIF); míg (! TRMT); } // Funkció vége //
Az alábbi funkcióval egy karakterláncot tölthet be a Bluetooth modul Rx pufferjébe. A karakterlánc karakterekre van osztva, és mindegyik karakter a BT_load_char () függvénybe kerül.
// Funkció a Bluetooth Rx betöltésére. puffer stringgel // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Funkció vége /
Adatok közvetítése Bluetooth-on keresztül:
Mostanáig csak továbbítottuk az információt a HC-05 modul Rx pufferjébe. Most meg kell utasítanunk, hogy e funkció használatával sugározza az adatokat levegőn.
// Funkció adatküldéshez RX-ből. puffer // érvénytelen broadcast_BT () {TXREG = 13; __késleltesms (500); } // Funkció vége //
Ebben a függvényben 13 értéket küldünk a TXREG regiszterbe. Ez a 13. érték nem más, mint a szállítás decimális egyenértéke (lásd az ASCII táblázatot). Ezután egy kis késés jön létre a műsorszolgáltató elindításához.
Adatok olvasása Bluetooth-ról:
Az UART-hoz hasonlóan az alábbi funkciót használjuk az adatok olvasására a Bluetooth-ról
// Funkció egy char megszerzéséhez a BT Rx.buferjétől // char BT_get_char (void) {if (OERR) // ellenőrizze a túlfutási hibát {CREN = 0; CREN = 1; // CREN visszaállítása} if (RCIF == 1) //, ha a felhasználó char-t küldött, adja vissza a char (ASCII érték) {while (! RCIF); visszatér RCREG; } else // ha a felhasználó nem küldött üzenetet return 0 return 0; } // Funkció vége /
Ha a felhasználó adatokat küldött, akkor ez a függvény azt az adatot adja vissza, amely egy változóba menthető és feldolgozható. Ha a felhasználó nem küldött semmit, a függvény nullát ad vissza.
Fő funkció:
A fent ismertetett összes funkciót használtuk a belső vagy a fő funkción belül. Küldünk néhány bevezető üzenetet, majd megvárjuk, amíg a felhasználó elküld néhány értéket, amelyek alapján a Perf táblánkon az RB3 tűhöz csatlakoztatott RED led lámpát kapcsoljuk.
void main (void) {// Scope változó deklarációk // int get_value; // A változó deklarációjának vége I / O deklarációk TRISB3 = 0; // I / O deklaráció vége // Initialize_Bluetooth (); // készen áll a bluetooth működésre kész állapotára // Bemutató üzenet megjelenítése egyszer a bekapcsoláskor // BT_load_string ("Bluetooth inicializált és kész"); broadcast_BT (); BT_load_string ("Nyomja meg az 1 gombot a LED bekapcsolásához"); broadcast_BT (); BT_load_string ("Nyomja meg a 0 gombot a LED kikapcsolásához"); broadcast_BT (); // Üzenet vége // while (1) // A végtelen lop {get_value = BT_get_char (); // Olvassa el a karaktert. BT-n keresztül kapott // Ha '0' // -t kapunk, if (get_value == '0') {RB3 = 0; BT_load_string ("a LED kikapcsolt"); broadcast_BT (); } // Ha '1'-et kapunk // if (get_value ==' 1 ') {RB3 = 1; BT_load_string ("a LED bekapcsol"); broadcast_BT ();}}}
Ellenőrizze a teljes programot az alábbi Kód szakaszban.
Áramkör és hardver beállítása:
Circuit kapcsolatokat ez a projekt nagyon egyszerű, csak meg kell kapcsolja be a Bluetooth modult és csatlakoztassa a Tx 26 -én csap a PIC és Rx a 25 th pin PIC bemutatott kapcsolási rajz az alábbi:
Most folytassuk a hardverrel. Miután a kapcsolat létrejött, valami ilyennek kell lennie.
A LED vezérlése Bluetooth mobil alkalmazással:
Most készítsük elő Android-alkalmazásunkat. Töltse le az App Store-ból a Bluetooth Terminal nevű alkalmazást, vagy használja ezt a linket. Miután letöltötte és telepítette az alkalmazást, kapcsolja be a PIC perf tábláját, amelyet kezdettől fogva használunk. A Bluetooth-modul kicsi LED-fényének villognia kell, jelezve, hogy be van kapcsolva, és aktívan keresi a telefont a kapcsolat létrehozásához.
Most lépjen be a telefon Bluetooth-beállításaiba, és keressen új Bluetooth-eszközt, így láthatja a HC-05 vagy HC-06 nevet a modulja alapján. HC-06-ot használok, ezért a telefonom a következő kijelzőt mutatja. Ezután próbáljon meg párosítani vele, és jelszót fog kérni. Írja be a jelszót 1234-ként (egyeseknél 0000 lehet), majd kattintson az OK gombra az alábbiak szerint.
Miután a párosítás sikeres volt, nyissa meg az imént telepített Bluetooth Terminal alkalmazást. Nyissa meg a beállítási lehetőséget, és válassza az „Eszköz csatlakoztatása - Biztonságos” lehetőséget az alábbiak szerint. Ez megnyit egy popdobozt, ahol az összes párosított eszközünk fel lesz sorolva az alábbiak szerint. Válassza ki a HC-05 vagy HC-06 modult.
A kapcsolat létrejötte után a Bluetooth-modul eddig villogó fényének állandónak kell lennie, jelezve, hogy sikeresen csatlakozott a mobilhoz. És be kell szereznünk a bevezető üzenetet a programunkból, az alábbiak szerint.
Most nyomja meg az '1' gombot a LED-világítás bekapcsolásához, majd nyomja meg a '0' gombot a fény kikapcsolásához. A teljes munka a videóban lesz látható. A mobil képernyője az alábbiak szerint fog kinézni.
Tehát srácokról van szó, megtanultuk, hogyan kell összekapcsolni a Bluetooth modult a PIC mikrovezérlőnkkel, most ennek segítségével kipróbálhatjuk a vezeték nélküli projekteket. Számos olyan projekt létezik, amely Bluetooth-ot használ. Kipróbálhatja őket, vagy előállhat saját ötletével, és megoszthatja őket a megjegyzés részben. Ellenőrizze korábbi projektünket a Bluetooth terminálalkalmazással és a HC-05-gyel is, például az intelligens telefon vezérelt otthoni automatizálást az Arduino használatával és az intelligens telefon által vezérelt digitális kódzárat az Arduino segítségével.
Remélem, ez a bemutató segített neked! Ha elakadt valahol, kérjük, használja a megjegyzés részt.