В этом блоге я покажу вам, как построить робота, управляемого по Bluetooth, с помощью модуля Bluetooth HC-05 и микроконтроллера Arduino. Вы можете использовать любое мобильное приложение bluetooth, доступное в playstore, для подключения вашего мобильного телефона к модулю bluetooth.
Необходимые компоненты
- Arduino UNO
- HC-05
- Мотор-редукторы
- ИС L293D
Arduino UNO
Arduino — это электронная платформа с открытым исходным кодом, основанная на простом в использовании аппаратном и программном обеспечении. Платы Arduino способны считывать входные данные — свет на датчике, палец на кнопке или сообщение в Твиттере — и превращать их в выходные данные — активировать двигатель, включить светодиод, опубликовать что-то в Интернете. Для этого используется язык программирования Arduino (основанный на проводке) и программное обеспечение Arduino (IDE), основанное на обработке.
Модуль Bluetooth HC-05
HC-05 — это популярный беспроводной модуль, который может добавить двустороннюю (полнодуплексную) функциональность в ваши проекты. Вы можете использовать этот модуль для связи между двумя микроконтроллерами, такими как Arduino, или для связи с любым устройством с поддержкой Bluetooth, таким как телефон или ноутбук. Многие приложения для Android уже доступны, что значительно упрощает этот процесс.
Мотор-редукторы
Это двигатель постоянного тока с редуктором для уменьшения скорости и увеличения крутящего момента и мощности. Этот тип двигателей обычно используется в робототехнике.
ИС L293D
IC L293D — это интегральная схема драйвера двигателя с двойным Н-мостом, которая может управлять током до 600 мА при напряжении от 4,5 до 36 вольт.
В этом приложении Bluetooth нажатие 0
выключает двигатель, а нажатие 1
заставляет двигатель 1 вращаться вправо. Аналогично, при нажатии 2
, 3
и 4
, моторы 1 вращаются влево, мотор 2 вращается вправо и мотор 2 вращается влево, соответственно.
Код
int motorPin1 = 3;
int motorPin2 = 4;
int motorPin3 = 5;
int motorPin4 = 6;
int state;
int flag;
void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
state = Serial.read();
flag = 0;
}
if (state == '0') {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW );
if (flag = 0) {
Serial.println("MOTOR:off");
flag = 1;
}
}
else if (state == '1') {
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
if (flag == 0) {
Serial.println("MOTOR1:right");
flag = 1;
}
}
else if (state == '2') {
digitalWrite(3, HIGH);
digitalWrite(4, LOW );
if (flag == 0) {
Serial.println("MOTOR1:left");
flag = 1;
}
}
else if (state == '3') {
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
if (flag == 0) {
Serial.println("MOTOR2:right");
flag = 1;
}
}
else if (state == '4') {
digitalWrite(5, HIGH);
digitalWrite(6, LOW );
if (flag == 0) {
Serial.println("MOTOR2:LEFT");
flag = 1;
}
}
}