ovc3860 + SoftwareSerial

chess
Offline
Зарегистрирован: 08.05.2017

Приветствую всех!

Задача: управлять bluetooth (далеее БТ) модулем средствами arduino pro mini (5в 16Мгц) вероятно с помощью библиотеки  SoftwareSerial.

Подключение: к пинам 10 и 11 arduino pro mini - к пинам rx/tx БТ модуля; Подключаю arduino через UART к ПК. Запитываю схему от 4в.

Скетч - "Стандартный пример" только меняю скорость как аппаратного так и програмного(softwareSerial) на 115200. Скетч реализует обмен между аппаратным и програмным портом в обе стороны как я понял.

Не работает:  как проверял - подключал БТ модуль к телефону и запускал на воспроизведение музыку -> отправлял AT команды для остановки, переключения треков и т.п. из терминала (монитор порта) - реакции и обратной связи нет.Проверял на другой плате arduino - тоже самое.

Если подключать модуль БТ без Arduino c помощью переходника UART к ПК, то на скорости 115200 двухсторонний обмен проходит, корректно управляется AT командами. (нужно средствами Arduino )

Прошу помощи.

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

SoftwareSerial скорость 115200 явно не по зубам. Попытайтесь на 9600.

chess
Offline
Зарегистрирован: 08.05.2017

andriano пишет:

SoftwareSerial скорость 115200 явно не по зубам. Попытайтесь на 9600.

уже думал об этом, вот только BT работает на 115200, а как его перенастроить\прошить под скорость ниже найти не могу, хотя в даташитах пишут что поддерживает скорость например 9600, но по умолчанию 115200. Это другая ветка к arduino не относиться. Устройство маленькое мегу с аппаратными использовать не могу.

Может кто сталкивался с методами понижения скорости на ВТ?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Пишут, что поменять baudrate (а также name, reconfigure modules class, sound settings) можно специальной утилитой:

http://kovo-blog.blogspot.com/2016/01/ovc3860-how-to-change-name.html

https://github.com/tomaskovacik/hw/blob/master/kicad/library/datasheet/OVC3860_revd_config_tool.exe

P.S. Обычно такие настройки делаются с помощью АТ-команд, но не в этом случае. Вот в этом документе написано, что "Persistent Store Keys (PSKeys) are necessary for configuring OVC3860 RevE bluetooth chip. They are stored in EEPROM which is connected to OVC3860 by IIC bus. When power on, the chip will retrieve these configuration and apply it.". То есть, настройки хранятся в чипе EEPROM, который распаян на модуле рядом с чипом OVC360 и подключён к нему по шине IIC.

chess
Offline
Зарегистрирован: 08.05.2017

Jeka_M, благодарю! читал мануал какраз на эту тему

https://www.mikrocontroller.net/attachment/261351/OVC3860_RevE_PSKeys_Setting_v1.2.pdf

Вдруг кому надо, отпишусь если получиться.

Немного беспокоит - RevE и RevD, надеюсь модуль не пожгет.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

andriano пишет:

SoftwareSerial скорость 115200 явно не по зубам. Попытайтесь на 9600.

Современный софтваре сериал на передачу работает и с такой скоростью, а вот с чтением могут быть обломы.

b707
Offline
Зарегистрирован: 26.05.2017

chess пишет:

вот только BT работает на 115200, а как его перенастроить\прошить под скорость ниже найти не могу, хотя в даташитах пишут что поддерживает скорость например 9600, но по умолчанию 115200.

Проверьте, нет ли на этом модуле автоподстройки скорости - на многих современных модулях есть. Для этого надо с ардуины посылать на модуль данные на нужной вам скорости (напр 9600). Через некоторое время модуль поймет, что с ним хотят общаться на 9600 и сам перейдет на эту скорость.

Что-то типа этого (надергал из чужого кода на скорую руку, не проверено - только для иллюстрации идеи

#include <SoftwareSerial.h>
SoftwareSerial bt(2, 3); // RX, TX
boolean ok = false;
String str = "";

void setup() {
Serial.begin(9600);
bt.begin(9600);
 while(! ok) 
  {  
    //посылаем команду
      bt.println("AT");
      str = "";
      delay(100); //Ждём ответа
      while(bt.available())
      {
        char ch=bt.read();
        str+=ch;
      } 
      if(str.indexOf(F("OK"))>-1)
        ok = true;
}
Serial.println("BT:9600 OK");
}

void loop() {
}

)

 

chess
Offline
Зарегистрирован: 08.05.2017

b707, Спасибо! Предлагаемый тобой вариант не пробовал.

1. Подключился через UART к модулю BT XS-3868 ver.3 , назначил COM1, перезагрузил ПК, запустил OVC3860_revd_config_tool.exe , отключил/подключил ногу GND, в программе индикация показала активное соединение, считал данные модуля, изменил скорость на 9600 и имя.

2. Подключил к arduino в соответствии с перым постом(как ранее) скорость естевственно перевел на 9600  - результат положительный, обмен в обе стороны, поуправлял плеером телефона, собственно что и требовалось.

Всем спасибо за помощь, тему можно закрывать.