- Необхідні компоненти:
- Кругова діаграма:
- 8051 Мікроконтролер:
- Модуль Bluetooth HC-05:
- Схема драйвера двигуна L293D:
- Робота керованого роботом Android телефону:
- Пояснення коду:
У цьому проекті ми збираємося створити робота, керованого телефоном Android, за допомогою мікроконтролерів 8051 та модуля Bluetooth. Робот розроблений із використанням двигунів постійного струму, а напрямок руху двигунів постійного струму буде контролюватися командами, отриманими від програми Android. Статус робота надсилається назад у додаток Android. Цей проект також допоможе взаємодіяти модуль Bluetooth HC-05 з мікроконтролерами 8051. Ми вже використовували модуль Bluetooth для управління побутовою технікою з 8051.
Необхідні компоненти:
- 8051 мікроконтролер (AT89S52)
- Модуль Bluetooth HC-05
- L293D Драйвер двигуна
- Шасі робота
- Двигуни постійного струму (2)
- Колеса (2)
- Касторове колесо
- Провід перемички
- Додаток для Android терміналу Bluetooth
Кругова діаграма:
8051 Мікроконтролер:
Мікроконтролер 8051 - це 8-розрядний мікроконтролер, який має 128 байт мікросхеми оперативної пам'яті, 4K байт мікросхеми мікросхеми, два таймери, один послідовний порт і чотири 8-бітних порти. Мікроконтролер 8052 - це продовження мікроконтролера 8051. У цьому проекті ми використовуємо мікроконтролер AT89S52. У таблиці нижче показано порівняння 8051 членів сім'ї.
Особливість |
8051 |
8052 |
ПЗУ (у байтах) |
4K |
8 тис |
Оперативна пам'ять (байти) |
128 |
256 |
Таймери |
2 |
3 |
Штифти вводу / виводу |
32 |
32 |
Послідовний порт |
1 |
1 |
Джерела переривання |
6 |
8 |
Модуль Bluetooth HC-05:
HC-05 - це послідовний модуль Bluetooth. Його можна налаштувати за допомогою команд AT. Він може працювати в трьох різних конфігураціях (Master, Slave, Loop back). У нашому проекті ми будемо використовувати його як підлеглого. Особливості модуля HC-05 включають,
- Типова чутливість -80 дБм.
- Швидкість передачі даних за замовчуванням: 9600 біт / с, 8 біт даних, 1 стоп-біт, без паритету.
- Пін-код для автоматичного сполучення: пін-код за замовчуванням “1234”
- Він має 6 штифтів.
- Виводи Vcc та Gnd використовуються для живлення HC-05.
- Виводи Tx та Rx використовуються для зв'язку з мікроконтролером.
- Увімкнути штифт для активації модуля HC-05. коли він низький, модуль вимикається
- Державний штифт діє індикатор стану. Коли він не поєднаний / не підключений до будь-якого іншого пристрою Bluetooth, світлодіод постійно блимає. Коли він підключений / з'єднаний з будь-яким іншим пристроєм Bluetooth, світлодіод блимає з постійною затримкою 2 секунди.
Схема драйвера двигуна L293D:
L293D - це подвійна мікросхема драйвера двигуна H-мосту. Він діє як підсилювач струму, вихід L293D приводить двигуни постійного струму. Він містить два вбудовані схеми H-мосту. У звичайному режимі роботи він може одночасно приводити два двигуни постійного струму в обох напрямках. У таблиці нижче наведено контактний опис мікросхеми L293D. Ось декілька проектів із використанням драйвера двигуна L293D.
Опис штифта
No контакту |
Ім'я |
Функція |
1 |
Увімкнути 1,2 |
Увімкнути штифт для двигуна 1 |
2 |
Вхідні дані 1 |
Вхід 1 для двигуна 1 |
3 |
Результат 1 |
Вихід 1 для двигуна 1 |
4 |
Gnd |
Земля (0В) |
5 |
Gnd |
Земля (0В) |
6 |
Вихід 2 |
Вихід 2 для двигуна 1 |
7 |
Вхід 2 |
Вхід 2 для двигуна 1 |
8 |
Vcc 2 |
Напруга живлення для двигунів (5 В) |
9 |
Увімкнути 3,4 |
Увімкнути штифт для двигуна 1 |
10 |
Вхід 3 |
Вхід 1 для двигуна 2 |
11 |
Вихід 4 |
Вихід 1 для двигуна 2 |
12 |
Gnd |
Земля (0В) |
13 |
Gnd |
Земля (0В) |
14 |
Вихід 4 |
Вихід 2 для двигуна 2 |
15 |
Вхід 4 |
Вхід 2 для двигуна 2 |
16 |
Vcc 1 |
Напруга живлення (5 В) |
Робота керованого роботом Android телефону:
У цьому роботі, керованому смартфоном, користувач програми Android надсилає дані на мікроконтролер 8051 через модуль HC-05. Отримані дані порівнюються в мікроконтролері 8051 і відповідно приймається рішення. У таблиці нижче наведено напрямок двигунів та стан робота для різних отриманих символів.
Отриманий персонаж |
Двигун 1 |
Двигун 2 |
Статус робота |
f |
Вперед |
Вперед |
Рухається вперед |
b |
Відсталі |
Відсталі |
Рухається назад |
р |
Вперед |
Відсталі |
Рухається вправо |
л |
Відсталі |
Вперед |
Рухається вліво |
s |
Вимкнено |
Вимкнено |
Зупинився |
Додаток терміналу Bluetooth дозволяє наслідувати термінал Bluetooth. Ця програма підтримує двонаправлений зв’язок, і ця програма сумісна з більшістю пристроїв.
У кроках нижче показано, як встановити та використовувати цей додаток.
1. Завантажте та встановіть програму терміналу Bluetooth на свій телефон Android. Додаток можна завантажити за посиланням нижче.
play.google.com/store/apps/details?id=ptah.apps.bluetoothтермінал
2. Після встановлення програми відкрийте програму та увімкніть Bluetooth.
3. Виберіть пристрій і натисніть опцію підключення. Після успішного підключення ми можемо розпочати надсилання даних до модуля HC-05.
Перевірте пояснення коду нижче, щоб побачити, як символ надсилається та приймається мікроконтролером 8051 для обертання необхідних двигунів.
Пояснення коду:
Повна програма C та демонстраційне відео для цього проекту подано в кінці цього проекту. Код розділений на невеликі значущі фрагменти і пояснено нижче.
Для взаємодії L293D з мікроконтролерами 8051 ми повинні визначити контакти, на яких L293D підключений до мікроконтролера 8051. In1 штифт двигуна 1 підключений до P2.0, In2 штифт двигуна 1 підключений до P2.1, In1 штифт двигуна 2 підключений до P2.2, In2 штифт двигуна 2 підключений до P2.3
sbit m1f = P2 ^ 0; // in1 штифт двигуна1 sbit m1b = P2 ^ 1; // in2 штифт двигуна1 sbit m2f = P2 ^ 2; // in1 штифт двигуна2 sbit m2b = P2 ^ 3; // в2 штифт двигуна2
Далі ми повинні визначити деякі функції, які використовуються в програмі. Функція затримки використовується для створення заданої затримки часу. Функція Txdata використовується для передачі даних через послідовний порт. Функція Rxdata використовується для отримання даних із послідовного порту.
затримка порожнечі (без підпису int); // функція для створення char затримки rxdata (void); // функція прийому символу через послідовний порт 8051 void txdata (беззнаковий знак); // функція для відправки символу через послідовний порт 8051
У цій частині коду ми збираємося налаштувати мікроконтролер 8051 для послідовного зв'язку. Регістр TMOD завантажений 0x20 для таймера 1, режим 2 (автоматичне перезавантаження). Регістр SCON завантажується 0x50 для 8 бітів даних, 1 стоп-біт і ввімкнено отримання. Регістр TH1 завантажується 0xfd для швидкості передачі даних 9600 біт в секунду. TR1 = 1 використовується для запуску таймера.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; У цій частині коду повернутий символ функції rxdata зберігається у змінній 's' для подальшого використання.
s = rxdata (); // отримання послідовних даних від модуля Bluetooth hc-05
У цій частині коду ми маємо порівняти отриманий символ із попередньо призначеними символами для різних напрямків. Якщо отриманий символ - "f", то робот повинен рухатися вперед. Це досягається шляхом виведення штифтів m1f, m2f високими та m1b, м2b штифтів низькими. Після того, як це буде зроблено, далі ми повинні надіслати статус робота в додаток для Android. Це робиться за допомогою функції txdata . Той самий процес повторюється для різних отриманих персонажів, і рішення приймається відповідно. У таблиці 1 наведені різні значення m1f, m1b, m2f, m2b для різних напрямків руху робота.
if (s == 'f') // рухаємо обидва двигуни в напрямку вперед {m1f = 1; затримка (1); m1b = 0; затримка (1); m2f = 1; затримка (1); м2b = 0; затримка (1); for (i = 0; msg1! = '\ 0'; i ++) // відправити статус робота в додаток для Android через Bluetooth {txdata (msg1); }}
m1f |
m1b |
м2f |
м2б |
Обертання двигуна 1 |
Обертання двигуна 2 |
Статус робота |
1 |
0 |
1 |
0 |
вперед |
вперед |
Рухатися вперед |
0 |
1 |
0 |
1 |
зворотний |
зворотний |
Рухаючись назад |
1 |
0 |
0 |
1 |
вперед |
зворотний |
Рухаючись вправо |
0 |
1 |
1 |
0 |
зворотний |
вперед |
Рухаючись вліво |
0 |
0 |
0 |
0 |
зупинився |
зупинився |
зупинився |
Це ви можете обертати машину робота в будь-якому напрямку, керуючи чотирма двигунами за допомогою мікроконтролера 8051. Цим роботом також можна керувати за допомогою DTMF з 8051, якщо у вас немає телефону Android.
Також перевірте всі проекти робототехніки тут.