- Необходимые компоненты:
- Принципиальная электрическая схема:
- 8051 Микроконтроллер:
- Модуль Bluetooth HC-05:
- Микросхема драйвера двигателя L293D:
- Работа робота, управляемого телефоном Android:
- Объяснение кода:
В этом проекте мы собираемся построить робота под управлением Android Phone с использованием микроконтроллеров 8051 и модуля Bluetooth. Робот спроектирован с использованием двигателей постоянного тока, а направление двигателей постоянного тока будет контролироваться командами, полученными от приложения Android. Статус робота отправляется обратно в приложение Android. Этот проект также поможет для сопряжения Bluetooth-модуля HC-05 с микроконтроллерами 8051. Мы уже использовали модуль Bluetooth для управления бытовой техникой с 8051.
Необходимые компоненты:
- Микроконтроллер 8051 (AT89S52)
- Модуль Bluetooth HC-05
- Драйвер двигателя L293D
- Шасси робота
- Двигатели постоянного тока (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 |
Контакты ввода / вывода |
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 - это ИС драйвера двигателя с двойным Н-мостом. Он действует как усилитель тока, выход L293D управляет двигателями постоянного тока. Он содержит две встроенные схемы H-моста. В обычном режиме работы он может управлять двумя двигателями постоянного тока одновременно в обоих направлениях. В таблице ниже показано описание контактов микросхемы L293D. Вот несколько проектов, использующих драйвер двигателя L293D.
Описание контакта
№ контакта |
имя |
Функция |
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 |
Статус робота |
ж |
Вперед |
Вперед |
Движется вперед |
б |
Назад |
Назад |
Движется назад |
р |
Вперед |
Назад |
Движется вправо |
л |
Назад |
Вперед |
Двигается влево |
s |
Выключено |
Выключено |
Остановлен |
Приложение терминала Bluetooth позволяет нам имитировать терминал Bluetooth. Это приложение поддерживает двунаправленную связь, и это приложение совместимо с большинством устройств.
Следующие шаги показывают, как установить и использовать это приложение.
1. Загрузите и установите приложение Bluetooth-терминал на свой телефон Android. Приложение можно скачать по ссылке ниже.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
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
сбит m1f = P2 ^ 0; // вывод in1 сбита двигателя1 m1b = P2 ^ 1; // вывод in2 сбита двигателя1 m2f = P2 ^ 2; // in1 пин мотора2 сбит m2b = P2 ^ 3; // вывод in2 двигателя 2
Далее нам нужно определить некоторые функции, которые используются в программе. Функция задержки используется для создания заданной временной задержки. Функция Txdata используется для передачи данных через последовательный порт. Функция Rxdata используется для получения данных из последовательного порта.
недействительная задержка (беззнаковое целое); // функция для создания задержки char rxdata (void); // функция получения символа через последовательный порт 8051 void txdata (unsigned char); // функция для отправки символа через последовательный порт 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.
Также проверьте здесь все проекты робототехники.