Нужна помощь с bluetooth hc-05

radio-active
Offline
Зарегистрирован: 31.03.2017

Всем привет.
Заниматься Arduino стал 1 мес назад, поэтому знаний и опыта пока нет.

Создаю проект:
Без ключевой доступ к авто.
1. Работает по RFID метке.
2. ХОЧУ сделать от  bluetooth модуля.

ЗАДАЧА:
Модуль hc-05, я так понимаю должен быть в режиме MASTER, постоянно ищет устройство с заданным в нем MAC адресом.
При нахождении устройства - открывает авто
При потере связи - закрывает.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Принято к сведению.

Когда у Вас появятся вопросы, не стесняйтесь их задавать.

radio-active
Offline
Зарегистрирован: 31.03.2017

Да вот как раз в том и проблема, что не знаю даже с чего начать....

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

radio-active пишет:

Да вот как раз в том и проблема, что не знаю даже с чего начать....

Принято к сведению.

Когда созреете до вопросов, - задавайте.

 

PS. Начинать принято с начала.

PPS. Обычно задача решается в 4 этапа, первый из них - понять задачу.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

 

1. Узнать MAC адресс  любым удобным способом.

2. Убедится что сам НС-05 инициализирован с МК

void BT_reset(){   // сброс модуля BT
  digitalWrite(KEY_pin, LOW);
  digitalWrite(RST_pin, LOW);
  pinMode(RST_pin, OUTPUT);
  digitalWrite(RST_pin, LOW);
  delay(300);
  pinMode(RST_pin, INPUT);
  digitalWrite(RST_pin, HIGH);
  delay(800);
}
void BT_init(){
  BT_OK = false;
  BT_err = true;
  digitalWrite(KEY_pin, HIGH);
  delay(300);
  Serial.write("AT\r\n");   //посылаем запрос в BT модуль
  char recvChar;
  char str[2];
  int i = 0;
  old_mil = millis();
  while(!Serial.available()){
    if((millis() - old_mil > 3000) ||  Serial.available()){
      return; 
    }
  }
  while (Serial.available()) {
    recvChar = Serial.read();
    str[i]=recvChar;
    i++;
    delay(10);
  }
  digitalWrite(KEY_pin, LOW);
  if ((str[0]=='O') && (str[1]=='K')){  // если подключён
    BT_OK = true;
    BT_err = false;
    LED.print("BT_connected", 0, 5);
  }
  else{                                 // не подключён
    BT_err = true;
  }
  delay(500);
}

и отвечает на команду (строка 06).

3. Дальше посылаем команду в блютус

void OBD_init(){
  //uint32_t o_bt = millis();
  //uint8_t b;
  OBD_err = true;
  OBD_OK = false;
  digitalWrite(KEY_pin, HIGH);
  delay(500);
  Serial.write("AT+PAIR=000d,18,000001,10\r\n"); // тут МАС
  delay(300);
  Serial.write("AT+LINK=000d,18,000001\r\n");  // и тут
...............................

и ждать ответа - да-> да_нет-> нет

А вот в какое уст-во посылать и что оно должно ответить это уже не ко мне.

Есть большая вероятность что придётся стоять у машины, крутить головой как лошара, и ждать пока блюпупы попросыпаются и начнуть договариваться о делах своих.