- Вимоги:
- Програмування мікроконтролера PIC для зв'язку Bluetooth:
- Електрична схема та налаштування обладнання:
- Керування світлодіодом за допомогою мобільного додатка Bluetooth:
У цьому підручнику ми дізнаємося, як розробити проекти PIC бездротовим способом, взаємодіючи модуль Bluetooth (HC-06). У нашому попередньому навчальному посібнику ми вже дізналися, як використовувати модуль USART у нашому мікроконтролері PIC та встановили зв'язок між PIC та комп'ютером. Якщо ви абсолютно новачок, перевірте тут усі наші підручники з PIC, де ми почали з нуля, наприклад, вивчення MPLAB та XC8, взаємодія світлодіодів, РК-дисплея, використання таймерів, АЦП, ШІМ тощо
Тут ми використали популярний модуль Bluetooth HC-06. Використовуючи цей модуль, ми можемо отримувати та надсилати інформацію бездротово від нашого мікроконтролера PIC на мобільний додаток або комп’ютер. Зв'язок між PIC та HC-06 встановлюється за допомогою модуля USART, присутнього в мікроконтролері PIC. Ви також можете використовувати HC-05. Ми знову працюємо в тому ж асинхронному 8-бітному режимі, але цього разу ми трохи змінимо наш код, щоб він працював з модулем Bluetooth. Отже, попереднє вивчення підручника з UART є додатковою перевагою цього проекту.
У цьому підручнику ми будемо перемикати світлодіод, надсилаючи команду увімкнення або вимкнення зі нашого смарт-телефону. Ми використовуватимемо програму Android під назвою Bluetooth Terminal, яка може надсилати та отримувати дані через Bluetooth. Якщо ми надішлемо символ «1» із програми, світло буде ввімкнено на платі PIC, і ми отримаємо підтвердження телефону, що світло ввімкнено. Подібним чином ми можемо відправити "0" з телефону, щоб вимкнути його. Таким чином ми можемо керувати світлодіодним світлом на нашій платі PIC, подібним до підручника UART, але тепер бездротовим. Повна програма та докладне відео наведено в кінці цього посібника.
Основна блок-схема для налаштування показана нижче.
Вимоги:
Обладнання:
- PIC16F877A Перф. Дошка
- Модуль Bluetooth HC-05 або HC-06
- Комп’ютер (для програмування)
- Мобільний телефон
- Програміст PICkit 3
Програмне забезпечення:
- MPLABX
- Термінал Bluetooth (мобільний додаток)
Модуль Bluetooth HC-06:
Bluetooth може працювати в наступних двох режимах:
- Командний режим
- Режим роботи
У командному режимі ми зможемо налаштувати такі властивості Bluetooth, як назва сигналу Bluetooth, його пароль, операційна швидкість передачі даних тощо. Режим роботи - це той, в якому ми зможемо надсилати та отримувати дані між мікроконтролером PIC та модуль Bluetooth. Отже, у цьому підручнику ми будемо гратись лише з робочим режимом. Командний режим залишатиметься за замовчуванням. Ім'я пристрою буде HC-05 (я використовую HC-06), а пароль буде 0000 або 1234, а головне швидкість передачі даних за замовчуванням для всіх модулів Bluetooth буде 9600.
Модуль працює від джерела живлення 5 В, а сигнальні штирі працюють від 3,3 В, отже, регулятор 3,3 В присутній у самому модулі. Тому нам не потрібно про це турбуватися. З шести штифтів лише чотири будуть використовуватися в робочому режимі. Таблиця штифтових з'єднань показана нижче
С.Ні |
Прикріпити на HC-05 / HC-06 |
Закріпіть ім'я на MCU |
Номер PIN-коду в PIC |
1 |
Vcc |
Vdd |
31 - й контактний |
2 |
Vcc |
Gnd |
32- й штифт |
3 |
Tx |
RC6 / Tx / CK |
25- й штифт |
4 |
Rx |
RC7 / Rx / DT |
26- й штифт |
5 |
Держава |
NC |
NC |
6 |
UK (Увімкнути) |
NC |
NC |
Перегляньте наші інші проекти, щоб дізнатись більше про модуль Bluetooth HC-05 з іншими мікроконтролерами:
- Іграшковий автомобіль, керований Bluetooth, за допомогою Arduino
- Система домашньої автоматизації, керована Bluetooth, за допомогою 8051
- Голосове управління підсвічуванням за допомогою Raspberry Pi
- FM-радіо, кероване смарт-телефоном за допомогою Arduino та обробки
- Автомобіль-робот, керований мобільним телефоном за допомогою G-Sensor та Arduino
Програмування мікроконтролера PIC для зв'язку Bluetooth:
Як і всі модулі (АЦП, Таймер, ШІМ), ми також повинні ініціалізувати наш модуль Bluetooth. Ініціалізація буде схожа на ініціалізацію UART, але нам потрібно внести деякі зміни, щоб Bluetooth працював бездоганно з нашим мікроконтролером PIC16F877A. Давайте визначимо біти конфігурації і почнемо з функції ініціалізації Bluetooth.
Ініціалізація Bluetooth:
Майже всі модулі Bluetooth на ринку працюють зі швидкістю передачі даних 9600, дуже важливо встановити свою швидкість передачі даних так само, як і для модулів Bluetooth, що працюють із швидкістю передачі даних, тут ми встановлюємо SPBRG = 129, оскільки ми працюємо на тактовій частоті 20 МГц з 9600 як швидкість передачі даних. Отже, зазначена вище ініціалізація працюватиме лише для модулів Bluetooth, що працюють зі швидкістю 9600 бод. Також обов’язковим є ввімкнення бітової швидкості передачі даних BRGH. Це допоможе встановити точну швидкість передачі даних.
// ****** Ініціалізація Bluetooth за допомогою USART ******** // void Initialize_Bluetooth () {// Встановлення штифтів RX і TX // TRISC6 = 1; TRISC7 = 1; // Встановіть швидкість передачі даних, використовуючи таблицю пошуку в таблиці (pg114) // BRGH = 1; // Завжди використовуйте високошвидкісну швидкість передачі даних з Bluetooth, інакше це не буде працювати SPBRG = 129; // Увімкнути Asyc. Послідовний порт // SYNC = 0; SPEN = 1; // Встановлюємо 8-бітний прийом і передачу RX9 = 0; TX9 = 0; // Увімкнути передачу та прийом // TXEN = 1; CREN = 1; // Увімкнути глобальні та ph. переривання // GIE = 1; PEIE = 1; // Увімкнути переривання для Tx. і Rx.// RCIE = 1; TXIE = 1; } // ___________ BT ініціалізований _____________ //
Якщо у вас є модуль BT, який працює з іншою швидкістю передачі даних, тоді ви можете звернутися до таблиці пошуку нижче, щоб дізнатися своє значення для SPBRG.
Завантаження даних у Bluetooth:
Після ініціалізації функції у нашій програмі є три функції для надсилання та отримання даних від Bluetooth. На відміну від UART, у нас тут є що розглянути, перш ніж ми зможемо передавати або отримувати дані. Модуль Bluetooth має буфер передачі та прийому всередині нього, дані, надіслані йому, будуть зберігатися в буфері Tx. Ці дані не передаватимуться (передаватимуться в ефірі), якщо на модуль не буде надіслано повернення каретки. Отже, для передачі даних ми повинні завантажити буфер Rx BT, а потім транслювати його за допомогою повернення каретки.
Вищезазначеної роботи можна легко досягти, використовуючи такі функції. Наведену нижче функцію можна використовувати, коли нам потрібно завантажити лише один символ у буфер Rx. Ми завантажуємо дані в регістр TXREG і чекаємо, поки вони будуть оброблені, перевіряючи прапорець TXIF і TRMT, використовуючи цикли while.
// Функція завантаження Bluetooth Rx. буфер з одним символом.// void BT_load_char (char байт) {TXREG = байт; в той час як (! TXIF); while (! TRMT); } // Кінець функції //
Функція нижче використовується для завантаження рядка в буфер Rx модуля Bluetooth. Рядок розбивається на символи, і кожен символ надсилається до функції BT_load_char () .
// Функція завантаження Bluetooth Rx. буфер із рядком // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // Кінець функції /
Трансляція даних через Bluetooth:
Дотепер ми щойно передавали інформацію в буфер Rx модуля HC-05. Тепер ми повинні доручити йому транслювати дані в ефірі за допомогою цієї функції.
// Функція трансляції даних з RX. буфер // недійсна трансляція_BT () {TXREG = 13; __delay_ms (500); } // Кінець функції //
У цій функції ми надсилаємо значення 13 до реєстру TXREG. Це значення 13 є не що інше, як десятковий еквівалент для перевезення (див. Таблицю ASCII). Тоді для мовлення створюється невелика затримка.
Зчитування даних з Bluetooth:
Подібно до UART, наведена нижче функція використовується для зчитування даних з Bluetooth
// Функція отримання символу з Rx.buffer BT // char BT_get_char (void) {if (OERR) // перевірка на помилку перебігу {CREN = 0; CREN = 1; // Скинути CREN} if (RCIF == 1) // якщо користувач надіслав char повернути char (значення ASCII) {while (! RCIF); повернути RCREG; } else // якщо користувач не надіслав жодного повідомлення return 0 return 0; } // Кінець функції /
Якщо користувач надіслав дані, ця функція поверне ті дані, які можна зберегти у змінній та обробити. Якщо користувач нічого не надіслав, функція поверне нуль.
Основна функція:
Ми використовували всі описані вище функції всередині або основні функції. Ми надсилаємо деяке вступне повідомлення, а потім чекаємо, поки користувач надішле деякі значення, на основі яких ми перемикаємо ЧЕРВОНИЙ світлодіод, підключений до штифта RB3 на нашій платі Perf.
void main (void) {// Оголошення змінної сфери // int get_value; // Кінець оголошення змінної // // Декларації вводу-виводу // TRISB3 = 0; // Кінець декларації вводу-виводу // Initialize_Bluetooth (); // давайте підготуємо наш bluetooth до дії // Показати деяке вступне повідомлення після ввімкнення живлення // BT_load_string ("Bluetooth Initialized and Ready"); трансляція_BT (); BT_load_string ("Натисніть 1, щоб увімкнути світлодіод"); трансляція_BT (); BT_load_string ("Натисніть 0, щоб вимкнути світлодіод"); трансляція_BT (); // Кінець повідомлення // while (1) // Нескінченний лоп {get_value = BT_get_char (); // Прочитайте знак. отримано через BT // Якщо ми отримаємо '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("світлодіод вимкнено"); трансляція_BT (); } // Якщо ми отримаємо '1' // if (get_value == '1') {RB3 = 1; BT_load_string ("світлодіод увімкнено"); трансляція_BT ();}}}
Перевірте повну програму в розділі коду нижче.
Електрична схема та налаштування обладнання:
Схема підключення для цього проекту дуже проста, нам просто потрібно увімкнути модуль Bluetooth і підключити Tx до 26- го виводу PIC і Rx до 25- го виводу PIC, як показано на схемі нижче:
Тепер перейдемо до апаратного забезпечення. Після підключення це повинно виглядати приблизно так.
Керування світлодіодом за допомогою мобільного додатка Bluetooth:
Тепер давайте підготуємо наш додаток для Android. Завантажте програму під назвою Bluetooth Terminal з магазину програм або скористайтеся цим посиланням. Після того, як додаток буде завантажено та встановлено, увімкніть свою платформу PIC, якою ми користуємось з самого початку. Маленький світлодіодний індикатор на вашому модулі Bluetooth повинен блимати, що вказує на те, що він увімкнений і активно шукає телефон для встановлення зв’язку.
Тепер, зайшовши в Налаштування Bluetooth свого телефону та шукаючи новий пристрій Bluetooth, ви зможете побачити назву HC-05 або HC-06 на основі вашого модуля. Я використовую HC-06, отже, на моєму телефоні відображається такий дисплей. Потім спробуйте розірвати його, і він запитає пароль. Введіть пароль як 1234 (для деяких це може бути 0000) і натисніть OK, як показано нижче.
Після успішного розбору відкрийте програму Bluetooth Terminal, яку ми щойно встановили. Зайдіть у параметр налаштувань і виберіть «Підключити пристрій - безпечно», як показано нижче. Після цього відкриється спливаюче вікно, де будуть перелічені всі наші спарені пристрої, як показано нижче. Виберіть модуль HC-05 або HC-06.
Після встановлення з'єднання індикатор модуля Bluetooth, який мигав до цього часу, повинен стати постійним, що вказує на те, що він успішно підключився до вашого мобільного. І ми повинні отримати вступне повідомлення від нашої програми, як показано нижче.
Тепер натисніть «1», щоб увімкнути світлодіодне світло, і натисніть «0», щоб вимкнути світло. Повна робота буде показана у відео. Екран вашого мобільного телефону буде виглядати приблизно так, як показано нижче.
Отже, хлопці, ми дізналися, як зв’язати модуль Bluetooth з нашим мікроконтролером PIC, тепер за допомогою цього ми можемо спробувати бездротові проекти. Є безліч проектів, які використовують Bluetooth, ви можете спробувати їх або придумати власну ідею та поділитися ними у розділі коментарів. Також перевірте наш попередній проект за допомогою термінального додатка Bluetooth та HC-05, наприклад, автоматизованої автоматизованої домашньої автоматизації за допомогою Arduino та блокування цифрового коду за допомогою смарт-телефону за допомогою Arduino.
Сподіваюся, цей посібник вам допоміг! Якщо ви десь застрягли, будь ласка, скористайтеся розділом коментарів.