Я пришел из Stackoverflow и нуждаюсь в некотором руководстве.
Моя цель : стримить мелодии (выполнено) и отвечать/завершать вызовы через RN-52 (не выполнено)
Моя проблема : я запутался в функциях RX/TX/CTS/RTS RN-52 ( техническое описание ).
Я пытался : подключить RX и TX RN52 к TX и RX Mega 2560 (контакты 0 и 1), чтобы инициировать UART, однако, когда я пытаюсь отправить команду C
в модуль, ничего не происходит (это должно сказать RN52 ответить на звонок).
Возможно : моя проблема заключается в переводе RN52 в командный режим, но у меня есть заземление GPIO9 (низкое значение делает его командным режимом).
Возможно : я неправильно отправляю команду? я использовал Serial.println("C");
.
Я надеюсь, что мой вопрос и борьба ясны. Буду очень признателен за любой материал для чтения, указывающий мне в правильном направлении. Я хотел бы заставить это работать, но я хотел бы узнать, как это работает еще больше. Заранее спасибо и счастливого Нового Года!
Полезная ссылка: https://learn.sparkfun.com/tutorials/rn-52-bluetooth-hookup-guide/c
РЕДАКТИРОВАТЬ (схема, дополнительная информация)
Вот мой код для использования двух кнопок для ответа или отклонения вызова.
#include <SoftwareSerial.h>//not sure if this is needed...read about it during a tutorial?
const int answerButton = 52; //button to answer
const int endButton = 53; //button to end
void setup(){
Serial.begin(9600); //start talking to RN52
pinMode(answerButton,INPUT); //set buttons to input
pinMode(endButton,INPUT);
}
void loop(){
int answer = digitalRead(answerButton); //read the state of the buttons
int endCall = digitalRead(endButton);
if (answer == 1){ //if depressed, print C (command to answer the call)
Serial.print("C");
delay(2000);
}
if (endCall == 1){ //if depressed, print E (command to end/reject call)
Serial.print("E");
delay(2000);
}
delay(1);//for stability...although I'm not entirely sure this is needed :)
}
Когда я использую это, я вижу, что светодиод RX загорается, но на вызов не отвечают. И, к сожалению, я не могу одновременно подключиться к последовательному порту RN52, чтобы посмотреть, что он говорит через CoolTerm, так как Arduino использует это соединение (читайте об этом на этом форуме).
GPIO7 ни к чему не подключен (просто открыт).
RN52 заземлен и правильно воспроизводит музыку через Bluetooth на моем iPhone. ОДНАКО в таблице данных (таблица 1-3) есть упоминание о заземлении или отправке сигнала на GPIO2, но я не могу понять, что они говорят делать ... это может быть частью моей проблемы.
ДОБАВЛЯЕМ СХЕМУ (круто, понятия не имел, что смогу это сделать! Извините, буду включать во все будущие посты!)
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Serial.begin(9600); //start talking to RN52
Я думаю, вам нужно потянуть GPIO7 вниз, чтобы установить скорость 9600.
Из таблицы
GPIO7 Установка на этом выводе низкого уровня устанавливает скорость передачи UART на 9600 бод. По умолчанию контакт имеет высокий уровень со скоростью 115 200 бод.
Serial.println("C");
и принимать входящий вызов. Теперь мне нужно взглянуть на это "рукопожатие". Спасибо вам за помощь! Я проголосую за вас, как только наберу 15 повторений. Ваше здоровье!\r\n
, и вам нужно только \r
«Каждая команда заканчивается возвратом каретки (\ r)». цитата со страницы 19 dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/Bluetooth/…Хорошо, в последнее время я часто использую RN-52, поэтому у меня есть несколько вещей:
Думаю, я на самом деле не знаю ответа на этот вопрос, но разве вы не должны использовать устройство 5 В для связи через UART с устройством 3,3 В? Конечно, вы можете просто подключить RN-52 к Arduino Mega, ТОЛЬКО подключив питание 3,3 В к RN-52, но если вы собираетесь использовать UART для отправки команд с Arduino на RN-52, не делайте этого. Вам нужна Arduino 3,3 В? Это именно то, что я использую с RN-52. Я использую Arduino Pro Micro 3,3 В/8 МГц от SparkFun . Я бы просто взял его, потому что вам не нужно возиться с коммутационной платой FTDI; просто подключите USB-кабель прямо к нему!
Я могу управлять RN-52 с помощью этой настройки, и я всегда использовал скорость передачи 115200, не касаясь ни одного из контактов GPIO. Я бы посоветовал вам сделать то же самое.
Поскольку я еще не видел, чтобы это обсуждалось здесь, вы можете использовать неправильную последовательную линию на Arduino Mega, которую вам в любом случае не следует использовать! Например, мой конкретный Arduino Pro Micro имеет две разные последовательные линии. Serial.begin(115200)
и Serial.println("C")
соответствуют USB-связи устройства с компьютером. Serial1.begin(115200)
и Serial1.println("C")
применить к контактам TX и RX, которые на самом деле подключены к RN-52. Вам нужно будет посмотреть на конкретные последовательные линии Mega или любого другого Arduino, который вы в конечном итоге используете, чтобы выяснить, как правильно инициализировать правильную последовательную линию связи.
Проверьте это видео :
Красный Песчаный Кирпич
поездка_85027
Джо Хасс
поездка_85027