- Bedarf:
- Programmierung des PIC-Mikrocontrollers für die Bluetooth-Kommunikation:
- Schaltplan und Hardware-Setup:
- LED-Steuerung mit Bluetooth Mobile Application:
In diesem Tutorial erfahren Sie, wie Sie PIC-Projekte drahtlos erkennen, indem Sie ein Bluetooth-Modul (HC-06) anschließen. In unserem vorherigen Tutorial haben wir bereits gelernt, wie das USART-Modul in unserem PIC-Mikrocontroller verwendet wird, und die Kommunikation zwischen PIC und Computer hergestellt. Wenn Sie ein absoluter Anfänger sind, finden Sie hier alle PIC-Tutorials, in denen wir von vorne begonnen haben, z. B. das Erlernen von MPLAB und XC8, das Anschließen von LED, LCD, die Verwendung von Timern, ADC, PWM usw.
Hier haben wir das beliebte Bluetooth-Modul HC-06 verwendet. Mit diesem Modul können wir Informationen drahtlos von unserer PIC-MCU empfangen und an eine mobile Anwendung oder einen Computer senden. Die Kommunikation zwischen PIC und HC-06 wird über das im PIC-Mikrocontroller vorhandene USART-Modul hergestellt. Sie können auch den HC-05 verwenden. Wir arbeiten wieder im gleichen asynchronen 8-Bit-Modus, aber dieses Mal werden wir unseren Code ein wenig ändern, damit er mit dem Bluetooth-Modul funktioniert. Daher ist das vorherige Lernen des UART-Tutorials ein zusätzlicher Vorteil für dieses Projekt.
In diesem Tutorial schalten wir eine LED um, indem wir einen Befehl von unserem Smartphone aus ein- oder ausschalten. Wir werden eine Android-Anwendung namens Bluetooth Terminal verwenden, die Daten über Bluetooth senden und empfangen kann. Wenn wir ein Zeichen '1' von der App senden, wird das Licht auf der PIC-Karte eingeschaltet und wir erhalten eine Bestätigung an das Telefon zurück, dass das Licht eingeschaltet wurde. Ebenso können wir '0' vom Telefon senden, um es auszuschalten. Auf diese Weise können wir das LED-Licht auf unserer PIC-Karte steuern, ähnlich wie im UART-Tutorial, aber jetzt drahtlos. Das vollständige Programm und das detaillierte Video finden Sie am Ende dieses Tutorials.
Das grundlegende Blockdiagramm für das Setup ist unten dargestellt.
Bedarf:
Hardware:
- PIC16F877A Perf Board
- Bluetooth-Modul HC-05 oder HC-06
- Computer (zum Programmieren)
- Mobiltelefon
- PICkit 3 Programmierer
Software:
- MPLABX
- Bluetooth-Terminal (mobile Anwendung)
Bluetooth-Modul HC-06:
Bluetooth kann in den folgenden zwei Modi betrieben werden:
- Befehlsmodus
- Betriebsart
Im Befehlsmodus können wir die Bluetooth-Eigenschaften wie den Namen des Bluetooth-Signals, sein Passwort, die Baudrate usw. konfigurieren. Im Betriebsmodus können wir Daten zwischen dem PIC-Mikrocontroller senden und empfangen und das Bluetooth-Modul. Daher werden wir in diesem Tutorial nur mit dem Betriebsmodus spielen. Der Befehlsmodus wird auf die Standardeinstellungen zurückgesetzt. Der Gerätename lautet HC-05 (ich verwende HC-06) und das Kennwort lautet 0000 oder 1234, und vor allem beträgt die Standardbaudrate für alle Bluetooth-Module 9600.
Das Modul wird mit 5 V versorgt und die Signalpins werden mit 3,3 V betrieben, daher ist im Modul selbst ein 3,3 V-Regler vorhanden. Daher brauchen wir uns darüber keine Sorgen zu machen. Von den sechs Pins werden im Betriebsmodus nur vier verwendet. Die Pin-Verbindungstabelle ist unten dargestellt
S.No. |
Pin auf HC-05 / HC-06 |
Pin-Name auf der MCU |
PIN-Nummer in PIC |
1 |
Vcc |
Vdd |
31 st pin |
2 |
Vcc |
Gnd |
32 nd pin |
3 |
Tx |
RC6 / Tx / CK |
25 th Stift |
4 |
Rx |
RC7 / Rx / DT |
26 th Stift |
5 |
Zustand |
NC |
NC |
6 |
DE (Aktivieren) |
NC |
NC |
In unseren anderen Projekten erfahren Sie mehr über das Bluetooth-Modul HC-05 mit anderen Mikrocontrollern:
- Bluetooth-gesteuertes Spielzeugauto mit Arduino
- Bluetooth-gesteuertes Hausautomationssystem mit 8051
- Sprachgesteuerte Lichter mit Raspberry Pi
- Smartphonegesteuertes FM-Radio mit Arduino und Verarbeitung
- Handygesteuertes Roboterauto mit G-Sensor und Arduino
Programmierung des PIC-Mikrocontrollers für die Bluetooth-Kommunikation:
Wie alle Module (ADC, Timer, PWM) sollten wir auch unser Bluetooth-Modul initialisieren. Die Initialisierung ähnelt der UART-Initialisierung, wir müssen jedoch einige Änderungen vornehmen, damit Bluetooth mit unserer PIC16F877A-MCU einwandfrei funktioniert. Definieren wir die Konfigurationsbits und beginnen mit der Bluetooth-Initialisierungsfunktion.
Bluetooth initialisieren:
Fast alle Bluetooth-Module auf dem Markt arbeiten mit einer Baudrate von 9600. Es ist sehr wichtig, dass Ihre Baudrate der von Bluetooth-Modulen mit Baudrate entspricht. Hier setzen wir SPBRG = 129, da wir mit einer Taktfrequenz von 20 MHz arbeiten 9600 als Baudrate. Daher funktioniert die obige Initialisierung nur für Bluetooth-Module, die mit einer Baudrate von 9600 arbeiten. Es ist auch obligatorisch, dass das Hochgeschwindigkeits-Baudratenbit BRGH aktiviert ist. Dies hilft bei der Einstellung einer genauen Baudrate.
// ****** Bluetooth mit USART initialisieren ******** // void Initialize_Bluetooth () {// Setze die Pins von RX und TX // TRISC6 = 1; TRISC7 = 1; // Stellen Sie die Baudrate mithilfe der Nachschlagetabelle im Datenblatt ein (S. 114) // BRGH = 1; // Verwenden Sie immer eine Hochgeschwindigkeits-Baudrate mit Bluetooth, sonst funktioniert es nicht. SPBRG = 129; // Asyc einschalten. Serielle Schnittstelle // SYNC = 0; SPEN = 1; // 8-Bit-Empfang und -Sendung setzen RX9 = 0; TX9 = 0; // Senden und Empfangen aktivieren // TXEN = 1; CREN = 1; // Aktiviere global und ph. Interrupts // GIE = 1; PEIE = 1; // Interrupts für Tx aktivieren. und Rx.// RCIE = 1; TXIE = 1; } // ___________ BT initialisiert _____________ //
Wenn Sie ein BT-Modul haben, das mit einer anderen Baudrate arbeitet, können Sie anhand der folgenden Nachschlagetabelle Ihren Wert für das SPBRG ermitteln.
Laden von Daten in Bluetooth:
Sobald die Funktion initialisiert ist, haben wir drei Funktionen in unserem Programm, um Daten von Bluetooth zu senden und zu empfangen. Im Gegensatz zu UART müssen wir hier einige Dinge beachten, bevor wir Daten senden oder empfangen können. Das Bluetooth-Modul verfügt über einen Sende- und Empfangspuffer. Die an es gesendeten Daten werden im Sendepuffer gespeichert. Diese Daten werden nicht gesendet (auf Sendung gesendet), es sei denn, ein Wagenrücklauf wird an das Modul gesendet. Um Daten zu übertragen, müssen wir daher den Empfangspuffer von BT laden und ihn dann mit Wagenrücklauf senden.
Das obige Arbeiten kann leicht erreicht werden, indem die folgenden Funktionen verwendet werden. Die folgende Funktion kann verwendet werden, wenn nur ein Zeichen in den Empfangspuffer geladen werden muss. Wir laden die Daten in das TXREG-Register und warten, bis sie verarbeitet sind, indem wir das Flag TXIF und TRMT mit while-Schleifen aktivieren.
// Funktion zum Laden des Bluetooth Rx. Puffer mit einem Zeichen.// void BT_load_char (Zeichenbyte) {TXREG = Byte; while (! TXIF); while (! TRMT); } // Funktionsende //
Die folgende Funktion wird verwendet, um eine Zeichenfolge in den Empfangspuffer des Bluetooth-Moduls zu laden. Die Zeichenfolge wird in Zeichen aufgeteilt und jedes Zeichen wird an die Funktion BT_load_char () gesendet.
// Funktion zum Laden von Bluetooth Rx. Puffer mit String // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Funktionsende /
Datenübertragung über Bluetooth:
Bisher haben wir gerade Informationen in den Empfangspuffer des HC-05-Moduls übertragen. Jetzt müssen wir es anweisen, die Daten mit dieser Funktion über Funk zu übertragen.
// Funktion zum Senden von Daten von RX. buffer // void Broadcast_BT () {TXREG = 13; __delay_ms (500); } // Funktionsende //
In dieser Funktion senden wir einen Wert 13 in das TXREG-Register. Dieser Wert 13 ist nichts anderes als das Dezimaläquivalent für die Beförderung (siehe ASCII-Tabelle). Dann wird eine kleine Verzögerung für den Start des Senders erzeugt.
Daten von Bluetooth lesen:
Ähnlich wie bei UART wird die folgende Funktion verwendet, um Daten von Bluetooth zu lesen
// Funktion zum Abrufen eines Zeichens aus Rx.buffer von BT // char BT_get_char (void) {if (OERR) // auf Überlauffehler prüfen {CREN = 0; CREN = 1; // CREN zurücksetzen} if (RCIF == 1) // Wenn der Benutzer ein Zeichen gesendet hat, wird das Zeichen zurückgegeben (ASCII-Wert) {while (! RCIF); return RCREG; } else // wenn der Benutzer keine Nachricht gesendet hat return 0 return 0; } // Funktionsende /
Wenn der Benutzer Daten gesendet hat, gibt diese Funktion die bestimmten Daten zurück, die in einer Variablen gespeichert und verarbeitet werden können. Wenn der Benutzer nichts gesendet hat, gibt die Funktion Null zurück.
Hauptfunktion:
Wir haben alle oben erläuterten Funktionen innerhalb oder Hauptfunktion verwendet. Wir senden eine Einführungsnachricht und warten dann darauf, dass der Benutzer einige Werte sendet, anhand derer wir das ROTE LED- Licht umschalten, das mit dem RB3-Pin auf unserer Perf-Platine verbunden ist.
void main (void) {// Gültigkeitsbereichsvariablendeklarationen // int get_value; // Ende der Variablendeklaration // // E / A-Deklarationen // TRISB3 = 0; // Ende der E / A-Deklaration // Initialize_Bluetooth (); // Lass uns unser Bluetooth einsatzbereit machen // Zeige beim Einschalten eine einleitende Meldung // BT_load_string ("Bluetooth initialisiert und bereit"); Broadcast_BT (); BT_load_string ("Drücken Sie 1, um die LED einzuschalten"); Broadcast_BT (); BT_load_string ("Drücken Sie 0, um die LED auszuschalten"); Broadcast_BT (); // Ende der Nachricht // while (1) // The infinite lop {get_value = BT_get_char (); // Lies das Zeichen. empfangen über BT // Wenn wir eine '0' erhalten // if (get_value == '0') {RB3 = 0; BT_load_string ("LED ausgeschaltet"); Broadcast_BT (); } // Wenn wir eine '1' erhalten // if (get_value == '1') {RB3 = 1; BT_load_string ("LED leuchtet"); Broadcast_BT ();}}}
Überprüfen Sie das vollständige Programm im folgenden Codeabschnitt.
Schaltplan und Hardware-Setup:
Schaltungsverbindungen für dieses Projekt sind sehr einfach, wir nur an der Macht haben, bis das Bluetooth - Modul und schließen Sie das Tx an die 26 - ten Stift von PIC und Rx zum 25 - ten Stift von PIC, wie unten im Schaltplan gezeigt:
Fahren wir nun mit der Hardware fort. Sobald die Verbindung hergestellt ist, sollte sie ungefähr so aussehen.
LED-Steuerung mit Bluetooth Mobile Application:
Lassen Sie uns jetzt unsere Android-Anwendung fertig machen. Laden Sie die Anwendung Bluetooth Terminal aus dem App Store herunter oder verwenden Sie diesen Link. Schalten Sie nach dem Herunterladen und Installieren der Anwendung Ihr PIC-Perf-Board ein, das wir von Anfang an verwenden. Die kleine LED an Ihrem Bluetooth-Modul sollte blinken, um anzuzeigen, dass es eingeschaltet ist und aktiv nach einem Telefon sucht, um eine Verbindung herzustellen.
Rufen Sie nun die Bluetooth-Einstellungen Ihres Telefons auf und suchen Sie nach einem neuen Bluetooth-Gerät. Sie sollten den Namen HC-05 oder HC-06 basierend auf Ihrem Modul sehen können. Ich verwende HC-06, daher zeigt mein Telefon die folgende Anzeige an. Versuchen Sie dann, damit zu arbeiten, und es wird nach einem Passwort gefragt. Geben Sie das Passwort als 1234 ein (für einige ist es möglicherweise 0000) und klicken Sie wie unten gezeigt auf OK.
Öffnen Sie nach erfolgreichem Paring die gerade installierte Bluetooth-Terminal-Anwendung. Rufen Sie die Einstellungsoption auf und wählen Sie "Gerät anschließen - Sicher" (siehe unten). Dadurch wird ein Popup-Fenster geöffnet, in dem alle gekoppelten Geräte wie unten gezeigt aufgelistet werden. Wählen Sie das Modul HC-05 oder HC-06.
Sobald die Verbindung hergestellt ist, muss das Licht am Bluetooth-Modul, das bisher blinkte, konstant geworden sein, um anzuzeigen, dass eine erfolgreiche Verbindung zu Ihrem Mobiltelefon hergestellt wurde. Und wir sollten die Einführungsbotschaft aus unserem Programm erhalten, wie unten gezeigt.
Drücken Sie nun '1', um das LED-Licht einzuschalten, und drücken Sie '0', um das Licht auszuschalten. Die komplette Arbeit wird im Video gezeigt. Ihr mobiler Bildschirm sieht ungefähr so aus (siehe unten).
Das ist es also, Leute, wir haben gelernt, wie man ein Bluetooth-Modul mit unserem PIC-Mikrocontroller verbindet. Jetzt können wir mit dieser Hilfe drahtlose Projekte ausprobieren. Es gibt viele Projekte, die Bluetooth verwenden. Sie können sie ausprobieren oder sich eine eigene Idee einfallen lassen und diese im Kommentarbereich teilen. Überprüfen Sie auch unser vorheriges Projekt mit der Bluetooth-Terminal-App und HC-05 wie Smart Phone Controlled Home Automation mit Arduino und Smart Phone Controlled Digital Code Lock mit Arduino.
Hoffe, dieses Tutorial hat dir geholfen! Wenn Sie irgendwo stecken geblieben sind, benutzen Sie bitte den Kommentarbereich.