- Requisiti:
- Programmazione del microcontrollore PIC per la comunicazione Bluetooth:
- Schema del circuito e configurazione hardware:
- Controllo del LED tramite l'applicazione mobile Bluetooth:
In questo tutorial impareremo come realizzare progetti PIC senza fili interfacciando un modulo Bluetooth (HC-06). Nel nostro precedente tutorial abbiamo già imparato come utilizzare il modulo USART nel nostro microcontrollore PIC e stabilito la comunicazione tra PIC e computer. Se sei un principiante assoluto, controlla qui per tutti i nostri tutorial PIC, da cui siamo partiti da zero, come l'apprendimento di MPLAB e XC8, interfacciamento LED, LCD, utilizzo di timer, ADC, PWM ecc.
Qui abbiamo utilizzato il popolare modulo Bluetooth HC-06. Utilizzando questo modulo possiamo ricevere e inviare informazioni in modalità wireless dal nostro MCU PIC a un'applicazione mobile o un computer. La comunicazione tra PIC e HC-06 viene stabilita utilizzando il modulo USART presente nel microcontrollore PIC. Puoi anche usare l'HC-05. Operiamo di nuovo sulla stessa modalità asincrona a 8 bit, ma questa volta modificheremo un po 'il nostro codice in modo che funzioni con il modulo Bluetooth. Quindi imparare in anticipo il tutorial UART è un ulteriore vantaggio per questo progetto.
In questo tutorial, attiveremo un LED inviando un comando di accensione o spegnimento dal nostro smartphone. Useremo un'applicazione Android chiamata Bluetooth Terminal che può inviare e ricevere dati tramite Bluetooth. Se inviamo un carattere "1" dall'app, la luce si accenderà nella scheda PIC e riceveremo una conferma al telefono che la luce è stata accesa. Allo stesso modo possiamo inviare "0" dal telefono per spegnerlo. In questo modo possiamo controllare la luce LED sulla nostra scheda PIC, simile al tutorial UART ma ora in modalità wireless. Il programma completo e il video dettagliato sono forniti alla fine di questo tutorial.
Di seguito è mostrato lo schema a blocchi di base per la configurazione.
Requisiti:
Hardware:
- Scheda PIC16F877A Perf
- Modulo Bluetooth HC-05 o HC-06
- Computer (per la programmazione)
- Cellulare
- Programmatore PICkit 3
Software:
- MPLABX
- Terminale Bluetooth (applicazione mobile)
Modulo Bluetooth HC-06:
Il Bluetooth può funzionare nelle due modalità seguenti:
- Modalità di comando
- Modalità operativa
In modalità comandi saremo in grado di configurare le proprietà Bluetooth come il nome del segnale Bluetooth, la password, la velocità di trasmissione di funzionamento ecc La modalità di funzionamento è quello in cui saremo in grado di inviare e ricevere dati tra il microcontrollore PIC e il modulo Bluetooth. Quindi in questo tutorial giocheremo solo con la modalità operativa. La modalità di comando verrà lasciata alle impostazioni predefinite. Il nome del dispositivo sarà HC-05 (sto usando HC-06) e la password sarà 0000 o 1234 e, cosa più importante, la velocità di trasmissione predefinita per tutti i moduli Bluetooth sarà 9600.
Il modulo funziona con alimentazione a 5 V e i pin del segnale funzionano a 3,3 V, quindi nel modulo stesso è presente un regolatore da 3,3 V. Quindi non dobbiamo preoccuparcene. Dei sei pin, solo quattro verranno utilizzati in modalità operativa. La tabella di collegamento dei pin è mostrata di seguito
S.No |
Pin su HC-05 / HC-06 |
Nome pin su MCU |
Numero pin in PIC |
1 |
Vcc |
Vdd |
31 st pin |
2 |
Vcc |
Gnd |
32 ° pin |
3 |
Tx |
RC6 / Tx / CK |
25 ° perno |
4 |
Rx |
RC7 / Rx / DT |
26 ° perno |
5 |
Stato |
NC |
NC |
6 |
EN (Abilita) |
NC |
NC |
Controlla i nostri altri progetti per saperne di più sul modulo Bluetooth HC-05 con altri microcontrollori:
- Macchinina controllata tramite Bluetooth con Arduino
- Sistema di automazione domestica controllato tramite Bluetooth utilizzando 8051
- Luci a controllo vocale utilizzando Raspberry Pi
- Radio FM controllata da smartphone utilizzando Arduino ed elaborazione
- Auto robot controllata da telefono cellulare utilizzando G-Sensor e Arduino
Programmazione del microcontrollore PIC per la comunicazione Bluetooth:
Come tutti i moduli (ADC, Timer, PWM) dovremmo inizializzare anche il nostro modulo Bluetooth. L'inizializzazione sarà simile all'inizializzazione UART, ma dobbiamo apportare alcune modifiche affinché il Bluetooth funzioni perfettamente con il nostro MCU PIC16F877A. Definiamo i bit di configurazione e iniziamo con la funzione di inizializzazione Bluetooth.
Inizializzazione Bluetooth:
Quasi tutti i moduli Bluetooth sul mercato funzionano a una velocità di trasmissione di 9600, è molto importante impostare la velocità di trasmissione uguale a quella dei moduli Bluetooth che operano con velocità di trasmissione, qui impostiamo SPBRG = 129 poiché stiamo operando a una frequenza di clock di 20Mhz con 9600 come baud rate. Quindi l'inizializzazione di cui sopra funzionerà solo per i moduli Bluetooth che funzionano a 9600 baud rate. È inoltre obbligatorio abilitare il bit BRGH del baud rate ad alta velocità. Ciò aiuterà a impostare una velocità di trasmissione accurata.
// ****** Inizializza il Bluetooth usando USART ******** // void Initialize_Bluetooth () {// Imposta i pin di RX e TX // TRISC6 = 1; TRISC7 = 1; // Imposta la velocità di trasmissione utilizzando la tabella di ricerca nel foglio dati (pg114) // BRGH = 1; // Usa sempre baud rate ad alta velocità con Bluetooth altrimenti non funzionerà SPBRG = 129; // Attiva Asyc. Porta seriale // SYNC = 0; SPEN = 1; // Imposta ricezione e trasmissione a 8 bit RX9 = 0; TX9 = 0; // Abilita trasmissione e ricezione // TXEN = 1; CREN = 1; // Abilita global e ph. interrompe // GIE = 1; PEIE = 1; // Abilita gli interrupt per Tx. e Rx.// RCIE = 1; TXIE = 1; } // ___________ BT inizializzato _____________ //
Se si dispone di un modulo BT che funziona a una velocità di trasmissione diversa, è possibile fare riferimento alla tabella di ricerca sottostante per scoprire il valore per SPBRG.
Caricamento dei dati in Bluetooth:
Una volta inizializzata la funzione, abbiamo tre funzioni nel nostro programma per inviare e ricevere dati dal Bluetooth. A differenza dell'UART, abbiamo poche cose da considerare qui prima di poter trasmettere o ricevere dati. Il modulo Bluetooth ha al suo interno un buffer di trasmissione e ricezione, i dati ad esso inviati verranno memorizzati nel buffer di trasmissione. Questi dati non verranno trasmessi (inviati in onda) a meno che non venga inviato un ritorno a capo al modulo. Quindi per trasmettere i dati dobbiamo caricare il buffer Rx di BT e poi trasmetterlo usando il ritorno a capo.
Il funzionamento di cui sopra può essere facilmente ottenuto utilizzando le seguenti funzioni. La funzione seguente può essere utilizzata quando dobbiamo caricare un solo carattere nel buffer Rx. Carichiamo i dati nel registro TXREG e aspettiamo che vengano elaborati controllando il flag TXIF e TRMT utilizzando i cicli while.
// Funzione per caricare il Bluetooth Rx. buffer con un carattere.// void BT_load_char (char byte) {TXREG = byte; while (! TXIF); while (! TRMT); } // Fine della funzione //
La seguente funzione viene utilizzata per caricare una stringa nel buffer Rx del modulo Bluetooth. La stringa viene suddivisa in caratteri e ogni carattere viene inviato alla funzione BT_load_char () .
// Funzione per caricare Bluetooth Rx. buffer con stringa // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Fine della funzione /
Trasmissione di dati tramite Bluetooth:
Finora abbiamo trasmesso le informazioni al buffer Rx del modulo HC-05. Ora dobbiamo istruirlo per trasmettere i dati via etere utilizzando questa funzione.
// Funzione per trasmettere dati da RX. buffer // void broadcast_BT () {TXREG = 13; __delay_ms (500); } // Fine della funzione //
In questa funzione inviamo un valore 13 nel registro TXREG. Questo valore 13 non è altro che l'equivalente decimale per il carrello (fare riferimento alla tabella ASCII). Quindi viene creato un piccolo ritardo per l'avvio dell'emittente.
Lettura dei dati da Bluetooth:
Simile a UART, la funzione seguente viene utilizzata per leggere i dati dal Bluetooth
// Funzione per ottenere un carattere da Rx.buffer di BT // char BT_get_char (void) {if (OERR) // controlla l'errore di over run {CREN = 0; CREN = 1; // Reimposta CREN} if (RCIF == 1) // se l'utente ha inviato un carattere restituisce il carattere (valore ASCII) {while (! RCIF); return RCREG; } else // se l'utente non ha inviato alcun messaggio return 0 return 0; } // Fine della funzione /
Se l'utente ha inviato un dato, questa funzione restituirà quei dati particolari che possono essere salvati in una variabile ed elaborati. Se l'utente non ha inviato nulla la funzione restituirà zero.
Funzione principale:
Abbiamo utilizzato tutte le funzioni sopra spiegate all'interno o nella funzione principale. Inviamo qualche messaggio introduttivo e poi aspettiamo che l'utente invii dei valori in base ai quali accendiamo il led ROSSO collegato al pin RB3 sulla nostra scheda Perf.
void main (void) {// Dichiarazioni di variabili di ambito // int get_value; // Fine della dichiarazione delle variabili // // Dichiarazioni di I / O // TRISB3 = 0; // Dichiarazione di fine I / O // Initialize_Bluetooth (); // prepariamo il nostro bluetooth pronto per l'azione // Mostra un messaggio introduttivo una volta acceso // BT_load_string ("Bluetooth inizializzato e pronto"); broadcast_BT (); BT_load_string ("Premere 1 per accendere il LED"); broadcast_BT (); BT_load_string ("Premere 0 per spegnere il LED"); broadcast_BT (); // Fine del messaggio // while (1) // Il lop infinito {get_value = BT_get_char (); // Leggi il carattere. ricevuto tramite BT // Se riceviamo uno '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("LED spento"); broadcast_BT (); } // Se riceviamo un "1" // if (get_value == "1") {RB3 = 1; BT_load_string ("LED acceso"); broadcast_BT ();}}}
Controlla il programma completo nella sezione del codice sottostante.
Schema del circuito e configurazione hardware:
I collegamenti dei circuiti per questo progetto sono molto semplici, dobbiamo semplicemente accendere il modulo Bluetooth e collegare il Tx al 26 ° pin del PIC e Rx al 25 ° pin del PIC come mostrato nello schema del circuito seguente:
Ora passiamo all'hardware. Una volta eseguita la connessione, dovrebbe essere simile a questo.
Controllo del LED tramite l'applicazione mobile Bluetooth:
Ora prepariamo la nostra applicazione Android. Scarica l'applicazione chiamata Bluetooth Terminal dall'App Store o utilizza questo collegamento. Una volta che l'applicazione è stata scaricata e installata, accendi la tua scheda PIC perf che stiamo usando dall'inizio. La piccola luce LED sul modulo Bluetooth dovrebbe lampeggiare per indicare che è acceso e sta attivamente cercando un telefono per stabilire una connessione.
Ora accedi alle Impostazioni Bluetooth del tuo telefono e cerca un nuovo dispositivo Bluetooth, dovresti essere in grado di vedere il nome HC-05 o HC-06 in base al tuo modulo. Sto usando HC-06, quindi il mio telefono mostra il seguente display. Quindi prova ad abbinarlo e ti chiederà una password. Immettere la password come 1234 (per alcuni potrebbe essere 0000) e fare clic su OK come mostrato di seguito.
Dopo che l'abbinamento è riuscito, apri l'applicazione Bluetooth Terminal che abbiamo appena installato. Entra nell'opzione delle impostazioni e seleziona "Connetti un dispositivo - Proteggi" come mostrato di seguito. Si aprirà una finestra pop in cui verranno elencati tutti i nostri dispositivi accoppiati come mostrato di seguito. Selezionare il modulo HC-05 o HC-06.
Una volta stabilita la connessione, la luce sul modulo Bluetooth che finora lampeggiava deve essere diventata costante per indicare che si è connesso con successo al tuo cellulare. E dovremmo ricevere il messaggio introduttivo dal nostro programma come mostrato di seguito.
Ora premi "1" per accendere la luce LED e premi "0" per spegnerla. La lavorazione completa verrà mostrata nel Video. Lo schermo del tuo cellulare avrà un aspetto simile a questo mostrato di seguito.
Quindi è tutto ragazzi, abbiamo imparato come interfacciare il modulo Bluetooth con il nostro microcontrollore PIC, ora con l'aiuto di questo possiamo provare progetti wireless. Ci sono molti progetti che utilizzano il Bluetooth, puoi provarli o inventare la tua idea e condividerli nella sezione dei commenti. Controlla anche il nostro progetto precedente con l'app terminale Bluetooth e HC-05 come l'automazione domestica controllata da smartphone utilizzando Arduino e la serratura a codice digitale controllata da smartphone utilizzando Arduino.
Spero che questo tutorial ti abbia aiutato! Se sei bloccato da qualche parte, usa gentilmente la sezione dei commenti.