- Požadavky:
- Programování mikrokontroléru PIC pro komunikaci Bluetooth:
- Schéma zapojení a nastavení hardwaru:
- Ovládání LED pomocí mobilní aplikace Bluetooth:
V tomto výukovém programu se naučíme, jak rozeznat PIC projekty bezdrátově propojením Bluetooth modulu (HC-06). V našem předchozím tutoriálu jsme se již naučili Jak používat modul USART v našem mikrokontroléru PIC a navázali jsme komunikaci mezi PIC a počítačem. Pokud jste úplný začátečník, podívejte se zde na všechny naše výukové programy PIC, kde jsme začali od nuly, jako je učení MPLAB a XC8, propojení LED, LCD, používání časovačů, ADC, PWM atd.
Zde jsme použili oblíbený Bluetooth modul HC-06. Pomocí tohoto modulu můžeme přijímat a odesílat informace bezdrátově z našeho PIC MCU do mobilní aplikace nebo do počítače. Komunikace mezi PIC a HC-06 je navázána pomocí modulu USART přítomného v mikrokontroléru PIC. Můžete také použít HC-05. Opět fungujeme ve stejném asynchronním 8bitovém režimu, ale tentokrát náš kód trochu upravíme, aby fungoval s modulem Bluetooth. Proto je učení UART předem předem přidanou výhodou pro tento projekt.
V tomto tutoriálu přepneme LED zasláním příkazu zapnutí nebo vypnutí z našeho chytrého telefonu. Budeme používat aplikaci pro Android s názvem Bluetooth Terminal, která dokáže odesílat a přijímat data přes Bluetooth. Pokud z aplikace pošleme znak '1', světlo se rozsvítí na desce PIC a do telefonu dostaneme potvrzení, že světlo bylo zapnuto. Podobně můžeme vypnout „0“ z telefonu. Tímto způsobem můžeme ovládat LED světlo na naší desce PIC, podobně jako v tutoriálu UART, ale nyní bezdrátově. Kompletní program a podrobné video jsou uvedeny na konci tohoto tutoriálu.
Základní blokové schéma nastavení je uvedeno níže.
Požadavky:
Hardware:
- PIC16F877A Perf Board
- Modul Bluetooth HC-05 nebo HC-06
- Počítač (pro programování)
- Mobilní telefon
- Programátor PICkit 3
Software:
- MPLABX
- Bluetooth terminál (mobilní aplikace)
Bluetooth modul HC-06:
Bluetooth může pracovat v následujících dvou režimech:
- Příkazový režim
- Pracovní režim
V příkazovém režimu budeme moci konfigurovat vlastnosti Bluetooth, jako je název signálu Bluetooth, jeho heslo, přenosová rychlost atd. Provozní režim je režim, ve kterém budeme moci odesílat a přijímat data mezi mikrokontrolérem PIC a modul Bluetooth. Proto v tomto tutoriálu budeme hrát pouze s operačním režimem. Příkazový režim bude ponechán na výchozí nastavení. Název zařízení bude HC-05 (používám HC-06) a heslo bude 0000 nebo 1234 a co je nejdůležitější, výchozí přenosová rychlost pro všechny moduly Bluetooth bude 9600.
Modul pracuje na 5V napájení a signální piny pracují na 3,3V, proto je v modulu samotný regulátor 3,3V. Proto si s tím nemusíme dělat starosti. Ze šesti kolíků budou v provozním režimu použity pouze čtyři. Tabulka připojení kolíků je uvedena níže
S.No |
Připnout na HC-05 / HC-06 |
Připnout název na MCU |
Číslo PIN v 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 |
Stát |
NC |
NC |
6 |
EN (Povolit) |
NC |
NC |
Podívejte se na naše další projekty a dozvíte se více o modulu Bluetooth HC-05 s dalšími mikrokontroléry:
- Bluetooth řízené autíčko pomocí Arduina
- Bluetooth řízený domácí automatizační systém využívající 8051
- Hlasově ovládaná světla pomocí Raspberry Pi
- Rádio FM ovládané chytrým telefonem pomocí Arduina a zpracování
- Robotické auto ovládané mobilním telefonem pomocí G-senzoru a Arduina
Programování mikrokontroléru PIC pro komunikaci Bluetooth:
Stejně jako všechny moduly (ADC, Timer, PWM) bychom měli také inicializovat náš modul Bluetooth. Inicializace bude podobná inicializaci UART, ale musíme provést nějaké změny, aby Bluetooth fungoval bezchybně s naším PIC16F877A MCU. Pojďme definovat konfigurační bity a začneme s funkcí inicializace Bluetooth.
Inicializace Bluetooth:
Téměř všechny Bluetooth moduly na trhu fungují s přenosovou rychlostí 9600, je velmi důležité nastavit vaši přenosovou rychlost stejně jako u Bluetooth modulů, které pracují s přenosovou rychlostí, zde nastavujeme SPBRG = 129, protože pracujeme na frekvenci 20 MHz s 9600 jako přenosová rychlost. Výše uvedená inicializace proto bude fungovat pouze u modulů Bluetooth pracujících s přenosovou rychlostí 9600. Je také povinné mít povolen vysokorychlostní přenosovou rychlost BRGH. To pomůže při nastavení přesné přenosové rychlosti.
// ****** Inicializovat Bluetooth pomocí USART ******** // void Initialize_Bluetooth () {// Nastavit piny RX a TX // TRISC6 = 1; TRISC7 = 1; // Nastavte přenosovou rychlost pomocí vyhledávací tabulky v datovém listu (pg114) // BRGH = 1; // Vždy používejte vysokorychlostní přenosovou rychlost s Bluetooth, jinak to nebude fungovat SPBRG = 129; // Zapnout Asyc. Sériový port // SYNC = 0; SPEN = 1; // Nastavit 8bitový příjem a přenos RX9 = 0; TX9 = 0; // Povolit vysílání a příjem // TXEN = 1; CREN = 1; // Povolit globální a ph. přerušení // GIE = 1; PEIE = 1; // Povolit přerušení pro Tx. a Rx.// RCIE = 1; TXIE = 1; } // ___________ BT inicializováno _____________ //
Pokud máte modul BT, který pracuje s jinou přenosovou rychlostí, můžete se podívat do níže uvedené vyhledávací tabulky a zjistit svou hodnotu pro SPBRG.
Načítání dat do Bluetooth:
Jakmile je funkce inicializována, máme v našem programu tři funkce pro odesílání a příjem dat z Bluetooth. Na rozdíl od UART zde musíme vzít v úvahu několik věcí, než budeme moci vysílat nebo přijímat data. Modul Bluetooth má uvnitř vysílací a přijímací vyrovnávací paměť, data do něj odeslaná budou ukládána do vyrovnávací paměti Tx. Tato data nebudou vysílána (vysílána vzduchem), pokud nebude do modulu odeslán návrat vozíku. Abychom mohli přenášet data, musíme načíst vyrovnávací paměť Rx BT a poté ji vyslat pomocí carriage return.
Výše uvedené práce lze snadno dosáhnout pomocí následujících funkcí. Níže uvedenou funkci lze použít, když musíme do vyrovnávací paměti Rx načíst pouze jeden znak. Načteme data do registru TXREG a počkáme, až budou zpracována kontrolou příznaků TXIF a TRMT pomocí while smyček.
// Funkce pro načtení Bluetooth Rx. buffer s jedním znakem.// void BT_load_char (char byte) {TXREG = byte; while (! TXIF); while (! TRMT); } // Konec funkce //
Níže uvedená funkce slouží k načtení řetězce do vyrovnávací paměti Rx modulu Bluetooth. Řetězec je rozdělen na znaky a každý znak je odeslán do funkce BT_load_char () .
// Funkce pro načtení Bluetooth Rx. buffer s řetězcem // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Konec funkce /
Vysílání dat přes Bluetooth:
Dosud jsme právě přenášeli informace do vyrovnávací paměti Rx modulu HC-05. Nyní ji musíme poučit, aby vysílala data vzduchem pomocí této funkce.
// Funkce pro vysílání dat z RX. buffer // void broadcast_BT () {TXREG = 13; __delay_ms (500); } // Konec funkce //
V této funkci pošleme hodnotu 13 do registru TXREG. Tato hodnota 13 není nic jiného než desetinný ekvivalent pro přepravu (viz graf ASCII). Poté se vytvoří malé zpoždění pro zahájení vysílání.
Čtení dat z Bluetooth:
Podobně jako UART se níže uvedená funkce používá ke čtení dat z Bluetooth
// Funkce pro získání znaku z Rx.buffer BT // char BT_get_char (void) {if (OERR) // kontrola chyby běhu {CREN = 0; CREN = 1; // Reset CREN} if (RCIF == 1) // pokud uživatel poslal char, vrátí char (hodnota ASCII) {while (! RCIF); vrátit RCREG; } else // pokud uživatel neposlal žádnou zprávu návrat 0 návrat 0; } // Konec funkce /
Pokud uživatel odeslal data, tato funkce vrátí konkrétní data, která lze uložit do proměnné a zpracovat. Pokud uživatel nic neposlal, funkce vrátí nulu.
Hlavní funkce:
Použili jsme všechny výše vysvětlené funkce uvnitř nebo hlavní funkci. Zašleme úvodní zprávu a poté počkáme, až uživatel pošle nějaké hodnoty, na základě kterých přepínáme ČERVENÉ LED světlo připojené k pinu RB3 na naší desce Perf.
void main (void) {// Deklarace proměnných rozsahu // int get_value; // Konec deklarace proměnné // // Deklarace I / O // TRISB3 = 0; // Konec I / O deklarace // Initialize_Bluetooth (); // umožní připravit naše bluetooth na akci // Zobrazit jednou úvodní zprávu při zapnutí // BT_load_string ("Bluetooth inicializováno a připraveno"); broadcast_BT (); BT_load_string ("Stisknutím 1 zapnete LED"); broadcast_BT (); BT_load_string ("Stisknutím 0 zhasnete LED"); broadcast_BT (); // Konec zprávy // while (1) // Nekonečný lop {get_value = BT_get_char (); // Přečtěte si znak. přijato přes BT // Pokud obdržíme '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("LED zhasla"); broadcast_BT (); } // Pokud obdržíme '1' // if (get_value == '1') {RB3 = 1; BT_load_string ("LED svítí"); broadcast_BT ();}}}
Zkontrolujte celý program v oddíle kódu níže.
Schéma zapojení a nastavení hardwaru:
Obvodové spojení pro tento projekt je velmi jednoduché, my prostě mají k moci až k modulu Bluetooth a připojit Tx do 26 th pin PIC a Rx na 25 th pin PIC, jak je uvedeno ve schématu zapojení níže:
Nyní pojďme k hardwaru. Jakmile je připojení hotové, mělo by to vypadat nějak takto.
Ovládání LED pomocí mobilní aplikace Bluetooth:
Nyní si připravíme naši aplikaci pro Android. Stáhněte si aplikaci nazvanou Bluetooth Terminal z App Store nebo použijte tento odkaz. Jakmile je aplikace stažena a nainstalována, zapněte PIC perf board, který používáme od začátku. Malá kontrolka LED na modulu Bluetooth by měla blikat, což znamená, že je zapnutý a aktivně hledá telefon pro navázání spojení.
Nyní přejděte do nastavení Bluetooth v telefonu a vyhledejte nové zařízení Bluetooth, měli byste vidět název HC-05 nebo HC-06 podle vašeho modulu. Používám HC-06, proto můj telefon zobrazuje následující displej. Pak to zkuste spárovat a požádá o heslo. Zadejte heslo jako 1234 (pro některé to může být 0000) a klikněte na OK, jak je znázorněno níže.
Po úspěšném spárování otevřete aplikaci Bluetooth Terminal, kterou jsme právě nainstalovali. Přejděte do možnosti nastavení a vyberte „Připojit zařízení - zabezpečené“, jak je uvedeno níže. Tím se otevře vyskakovací okno, kde budou uvedena všechna naše spárovaná zařízení, jak je uvedeno níže. Vyberte modul HC-05 nebo HC-06.
Jakmile je spojení navázáno, světlo na Bluetooth modulu, který dosud blikal, musí být stálé, což znamená, že se úspěšně připojilo k vašemu mobilu. Měli bychom dostat úvodní zprávu z našeho programu, jak je uvedeno níže.
Nyní stiskněte '1' pro zapnutí LED světla a stiskněte '0' pro vypnutí světla. Kompletní práce se zobrazí ve videu. Níže bude vypadat obrazovka vašeho mobilního zařízení.
Takže to je vše, naučili jsme se, jak propojit modul Bluetooth s naším mikrokontrolérem PIC, nyní s pomocí toho můžeme vyzkoušet bezdrátové projekty. Existuje spousta projektů, které používají Bluetooth, můžete si je vyzkoušet nebo přijít s vlastním nápadem a sdílet je v sekci komentářů. Zkontrolujte také náš předchozí projekt s aplikací terminálu Bluetooth a HC-05 jako Smart Phone Controlled Home Automation using Arduino and Smart Phone Controlled Digital Code Lock using Arduino.
Doufám, že vám tento návod pomohl! Pokud jste někde uvízli, použijte sekci komentářů.