- Необходими компоненти:
- Електрическа схема:
- 8051 микроконтролер:
- Bluetooth-модул HC-05:
- L293D IC драйвер на двигателя:
- Работа на Android Phone Controlled Robot:
- Обяснение на кода:
В този проект ще изградим робот, контролиран от Android Phone, използващ 8051 микроконтролери и Bluetooth модул. Роботът е проектиран с помощта на постояннотокови двигатели и посоката на постояннотоковите двигатели ще се контролира от командите, получени от приложението за Android. Състоянието на робота се изпраща обратно към приложението за Android. Този проект ще помогне и за свързване на Bluetooth-модул HC-05 с микроконтролери 8051. Вече използвахме Bluetooth модул за управление на домакински уреди с 8051.
Необходими компоненти:
- 8051 микроконтролер (AT89S52)
- Bluetooth-модул HC-05
- L293D Двигател на двигателя
- Роботно шаси
- DC двигатели (2)
- Джанти (2)
- Кастор колело
- Джъмперни проводници
- Bluetooth терминал android приложение
Електрическа схема:
8051 микроконтролер:
Микроконтролерът 8051 е 8-битов микроконтролер, който има 128 байта чип RAM, 4K байта чип ROM, два таймера, един сериен порт и четири 8 битови порта. 8052 микроконтролер е разширение на 8051 микроконтролер. В този проект използваме микроконтролер AT89S52. Таблицата по-долу показва сравнението на 8051 членове на семейството.
Особеност |
8051 |
8052 |
ROM (в байтове) |
4K |
8K |
RAM (байтове) |
128 |
256 |
Таймери |
2 |
3 |
I / O щифтове |
32 |
32 |
Сериен порт |
1 |
1 |
Прекъсване на източници |
6 |
8 |
Bluetooth-модул HC-05:
HC-05 е сериен Bluetooth модул. Може да се конфигурира с помощта на AT команди. Може да работи в три различни конфигурации (Master, Slave, Loop back). В нашия проект ще го използваме като роб. Характеристиките на модула HC-05 включват,
- Типична чувствителност -80dBm.
- Скорост на предаване по подразбиране: 9600bps, 8 бита за данни, 1 стоп бит, без паритет.
- Пин код за автоматично сдвояване: ПИН код по подразбиране „1234“
- Той има 6 щифта.
- Vcc и Gnd щифтове се използват за захранване на HC-05.
- Tx и Rx щифтовете се използват за комуникация с микроконтролера.
- Разрешаване на щифт за активиране на модула HC-05. когато е ниско, модулът е деактивиран
- Държавен щифт действа индикатор за състояние. Когато не е сдвоено / свързано с друго Bluetooth устройство, LED мига непрекъснато. Когато е свързано / сдвоено с друго Bluetooth устройство, светодиодът мига с постоянно забавяне от 2 секунди.
L293D IC драйвер на двигателя:
L293D е двоен H-мостов двигател с интегрална схема. Това действа като усилвател на ток, изходът на L293D задвижва DC двигателите. Той съдържа две вградени вериги за H-мост. В общ режим на работа той може да задвижва два постояннотокови мотора едновременно в двете посоки. Таблицата по-долу показва пиновото описание на L293D IC. Ето някои проекти, използващи L293D Motor Driver.
Описание на щифта
ПИН No. |
Име |
Функция |
1 |
Активирайте 1,2 |
Разрешаване на щифт за мотор 1 |
2 |
Вход 1 |
Вход 1 за мотор 1 |
3 |
Изход 1 |
Изход 1 за мотор 1 |
4 |
Gnd |
Земя (0V) |
5 |
Gnd |
Земя (0V) |
6 |
Изход 2 |
Изход 2 за мотор 1 |
7 |
Вход 2 |
Вход 2 за мотор 1 |
8 |
Vcc 2 |
Захранващо напрежение за двигатели (5V) |
9 |
Активирайте 3,4 |
Разрешаване на щифт за мотор 1 |
10 |
Вход 3 |
Вход 1 за мотор 2 |
11. |
Изход 4 |
Изход 1 за мотор 2 |
12 |
Gnd |
Земя (0V) |
13 |
Gnd |
Земя (0V) |
14. |
Изход 4 |
Изход 2 за мотор 2 |
15 |
Вход 4 |
Вход 2 за мотор 2 |
16. |
Vcc 1 |
Захранващо напрежение (5V) |
Работа на Android Phone Controlled Robot:
В този робот, контролиран от Smart Phone, потребителят на приложението за Android изпраща данните към микроконтролера 8051 чрез модул HC-05. Получените данни се сравняват в 8051 микроконтролер и решението се взема съответно. Таблицата по-долу показва посоката на двигателите и състоянието на робота за различни получени знаци.
Получен знак |
Двигател 1 |
Двигател 2 |
Състояние на робота |
е |
Напред |
Напред |
Движи се напред |
б |
Назад |
Назад |
Движи се назад |
r |
Напред |
Назад |
Движи се надясно |
л |
Назад |
Напред |
Премества се наляво |
с |
Изключено |
Изключено |
Спряна |
Приложението 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; // in2 щифт на мотора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, m2b щифтове ниски. След като това стане, следва да изпратим състоянието на робота до приложението за Android. Това се прави с помощта на функцията txdata . Същият процес се повтаря за различни получени знаци и съответно се взема решение. Таблица 1 показва различни стойности на m1f, m1b, m2f, m2b за различни посоки на движение на робота.
if (s == 'f') // преместете двата двигателя в посока напред {m1f = 1; забавяне (1); m1b = 0; забавяне (1); m2f = 1; забавяне (1); m2b = 0; забавяне (1); for (i = 0; msg1! = '\ 0'; i ++) // изпращаме статус на робота към приложението за Android чрез Bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Въртене на мотор 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.
Също така проверете всички проекти за роботика тук.