HC-05 сбрасывает соединение, тогда двигатели постоянного тока не перестанут двигаться "вперед"
Это мой первый пост. Я обращаюсь к вам за помощью в решении моей проблемы, ребята. По сути, мой проект-это мобильное приложение для инвалидной коляски с управлением по Bluetooth. Все сделано, за исключением небольшой проблемы, обнаружившейся во время тестирования. После подключения всего этого инвалидная коляска перемещается в соответствии с кодом, который я написал. Однако через несколько секунд/мин HC-05 сбрасывает соединение, и инвалидная коляска движется сама по себе, двигаясь вперед. Надеюсь, вы понимаете, о чем я.
Когда я установил скорость = 100. Я думаю, что не сталкивался с такой проблемой, как выше (подтверждено).
Аппаратное обеспечение:
PowerBank
Arduino Uno
HC 05
Драйвер двигателя MDD20A
X2 Двигатель постоянного тока 24 В
Батарея X2 12V
//including the libraries
#include <SoftwareSerial.h> // библиотека программного обеспечения TX RX для bluetooth
//Инициализация контактов для модуля bluetooth
int bluetoothTx = 0; // bluetooth tx to 0 pin
int bluetoothRx = 1; // bluetooth rx to 1 pin
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
//Motor 1
int Motor1_Pin = 2;
int Enable1 = 3;
//Motor 2
int Motor2_Pin = 4;
int Enable2 = 5;
char command ; //переменная для хранения данных
int velocity = 0; //Переменная для управления скоростью двигателя
void setup()
{
//Установите скорость передачи данных последовательной связи и модуля Bluetooth на одинаковую скорость.
// Последовательная Настройка
Serial.begin(9600); // скорость связи по умолчанию модуля Bluetooth HC-06;
bluetooth.begin(9600);
// Motor Setup
pinMode(Motor1_Pin,OUTPUT);
pinMode(Enable1,OUTPUT);
pinMode(Motor2_Pin,OUTPUT);
pinMode(Enable2,OUTPUT);
//Setting the enable as HIGH.
digitalWrite(Enable1, LOW);
digitalWrite(Enable2, LOW);
}
void loop(){
if(bluetooth.available() > 0){ //Проверка наличия или отсутствия данных
command = bluetooth.read(); //Хранение данных в переменной 'command'
Serial.println(command); //Печать на последовательном мониторе
//Измените режим pin только в том случае, если новая команда отличается от предыдущей.
switch(command){
case 'F': //Перемещение автомобиля вперед
analogWrite(Enable1, 175);
analogWrite(Enable2, 175);
digitalWrite(Motor1_Pin, HIGH);
digitalWrite(Motor2_Pin, HIGH);
break;
case 'B': //Перемещение автомобиля Назад
analogWrite(Enable1, 175);
analogWrite(Enable2, 175);
digitalWrite(Motor1_Pin, LOW);
digitalWrite(Motor2_Pin, LOW);
break;
case 'L': //Перемещение автомобиля Влево
analogWrite(Enable1, 175);
analogWrite(Enable2, 100);
digitalWrite(Motor1_Pin, HIGH);
digitalWrite(Motor2_Pin, LOW);
break;
case 'R': //Перемещение автомобиля Вправо
analogWrite(Enable2, 175);
analogWrite(Enable1, 100);
digitalWrite(Motor2_Pin, HIGH);
digitalWrite(Motor1_Pin, LOW);
break;
case 'S': //Stop
analogWrite(Enable1, 0);
analogWrite(Enable2, 0);
digitalWrite(Motor1_Pin, 0);
digitalWrite(Motor2_Pin, 0);
break;
// case 'I': //Moving the Car Forward right
// digitalWrite(Motor2_Pin2, LOW);
// digitalWrite(Motor2_Pin1, LOW);
// analogWrite(enable1, 0);
// analogWrite(enable2, 0);
// break;
// case 'J': //Moving the Car backward right
// digitalWrite(Motor2_Pin2, LOW);
// digitalWrite(Motor2_Pin1, LOW);
// analogWrite(enable1, 0);
// analogWrite(enable2, 0);
// break;
// case 'G': //Moving the Car Forward left
// digitalWrite(Motor2_Pin2, LOW);
// digitalWrite(Motor2_Pin1, LOW);
// analogWrite(enable1, 0);
// analogWrite(enable2, 0);
// break;
// case 'H': //Moving the Car backward left
// digitalWrite(Motor2_Pin2, LOW);
// digitalWrite(Motor2_Pin1, LOW);
// analogWrite(enable1, 0);
// analogWrite(enable2, 0);
// break;
break;
//Controlling the Speed of Car
default: //Get velocity
if(command=='q'){
velocity = 255; //Full velocity
analogWrite(Enable2, velocity);
analogWrite(Enable1, velocity);
}
else{
//Chars '0' - '9' have an integer equivalence of 48 - 57, accordingly.
if((command >= 48) && (command <= 57)){
//Subtracting 48 changes the range from 48-57 to 0-9.
//Multiplying by 25 changes the range from 0-9 to 0-225.
velocity = (command - 48)*25;
analogWrite(Enable2, velocity);
analogWrite(Enable1, velocity);
}
}
}
}
}
@Peace You, 👍2
Обсуждение1 ответ
Предполагаю, что вы хотите, чтобы стул остановился, если связь потеряна. Реализован ли вывод "состояние" на вашем HC-05 и различает ли он подключенные и не подключенные (или что-то еще)? Если это первое, вы должны следить за состоянием этого контакта. В противном случае ваш Arduino и мобильное приложение должны договориться о протоколе "Вы там?"; рукопожатие, которое происходит каждые 0,5 секунды или около того (от стены угадайте!), И если контроллер стула не получил ответ чертовски близко сразу, он останавливается. Если мобильный телефон пропускает ответ, он должен отправить "стоп" (резервную копию, которая может не быть услышана контроллером кресла) и предупредить оператора. Было бы неплохо иметь сторожевой таймер (в аппаратном обеспечении) на стуле, который останавливает двигатели, если контроллер стула не сбрасывает его через короткие промежутки времени. Контроллер кресла-это программное обеспечение; программное обеспечение иногда выходит из строя. Вы хотели бы обнаружить это в аппаратном обеспечении вовремя, чтобы отрезать диск к стулу, прежде чем он ударится о препятствие или выедет на улицу.
- L298N, HC-05 Простой автомобиль с дистанционным управлением через Bluetooth, не работающий в Arduino
- Мой модуль Bluetooth HC-05 не работает
- Подключить один «главный» HC-05 к двум подчиненным одновременно.
- Модуль Bluetooth против беспроводного модуля Arduino
- Модуль HC-05 не получает команд и не спаривается
- Потребляемая Мощность Arduino
- Проблема чтения данных Arduino Bluetooth HC-05
- Буферизует ли модуль HC-05 полученные данные?
"HC-05 drops connection" Означает ли это, что он больше не подключен к телефону (я предполагаю)? Или это означает что - то другое?, @timemage
Да, это правда. Это как-то связано с ШИМ. Когда я устанавливаю скорость на 100, нет никаких проблем с подключением HC-05. Однако, как только я установил скорость на 175, это не идет гладко слишком долго, пока внезапно соединение HC-05 не сбрасывает соединение, а затем двигатель постоянного тока становится неисправным и приводит в движение свой собственный (например, застрявший вперед). Извините за опоздание. Я не понимал, что это маленькое поле для комментариев., @Peace You
Вы можете попробовать добавить некоторые конденсаторы рядом с VCC/GND на HC-05., @timemage