Vengo de Stackoverflow y necesito orientación.
Mi objetivo : transmitir melodías (completado) y responder/finalizar llamadas a través de la RN-52 (no completado)
Mi problema : me estoy confundiendo con las funciones RX/TX/CTS/RTS del RN-52 ( hoja de datos ).
He intentado : Conectar el RX y TX del RN52 al TX y RX del Mega 2560 (pines 0 y 1) para iniciar UART sin embargo, cuando intento enviar el comando al C
módulo, no ocurre nada (eso debería decirle al RN52 para contestar la llamada).
Tal vez : mi problema es poner el RN52 en modo de comando, pero tengo GPIO9 conectado a tierra (ponerlo bajo lo convierte en modo de comando).
Tal vez : ¿No estoy enviando el comando correctamente? Yo Serial.println("C");
solía
Espero que mi pregunta y lucha sea clara. Cualquier material de lectura que me dirija en la dirección correcta sería muy apreciado. Me encantaría hacer que esto funcione, pero me encantaría aprender cómo funciona aún más. ¡Gracias de antemano y feliz año nuevo!
Enlace útil: https://learn.sparkfun.com/tutorials/rn-52-bluetooth-hookup-guide/c
EDITAR (diagrama, información adicional)
Aquí está mi código para usar dos botones para responder o rechazar una llamada.
#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 :)
}
Cuando uso esto, veo que el LED RX se ilumina, sin embargo, la llamada no se responde. Y desafortunadamente no puedo conectarme a la serie RN52 para ver lo que dice a través de CoolTerm al mismo tiempo ya que Arduino está usando la conexión (lea sobre eso en este foro).
GPIO7 NO está conectado a nada (solo abierto).
El RN52 está conectado a tierra y transmite melodías correctamente a través de Bluetooth en mi iPhone. SIN EMBARGO, se menciona la conexión a tierra o el envío de una señal en GPIO2 en la hoja de datos (tabla 1-3), pero no puedo comprender lo que dicen que hacer... esto podría ser parte de mi problema.
AÑADIR ESQUEMA (increíble, ¡no tenía idea de que podía hacer esto! Lo siento, ¡lo incluiré en todas las publicaciones futuras!)
simular este circuito : esquema creado con CircuitLab
Serial.begin(9600); //start talking to RN52
Creo que necesita bajar GPIO7 para establecer la velocidad en 9600.
De la hoja de datos
GPIO7 Conducir este pin bajo establece la tasa de baudios de UART en 9600. Por defecto, el pin es alto con una velocidad de transmisión de 115.200.
Serial.println("C");
y aceptar una llamada entrante. Ahora tendré que echarle un vistazo a este asunto del "apretón de manos". ¡Gracias por la ayuda! Te votaré una vez que alcance las 15 repeticiones. ¡Salud!\r\n
y solo necesita \r
"Cada comando termina con el retorno de carro (\ r)". cita de la página 19 de dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/Bluetooth/…Muy bien, he estado usando mucho el RN-52 últimamente, así que tengo algunas cosas:
Supongo que en realidad no sé la respuesta a esta pregunta, pero ¿no se supone que no debes usar un dispositivo de 5 V para comunicarte a través de UART con un dispositivo de 3,3 V? Seguro que podría alimentar el RN-52 con el Arduino Mega SOLAMENTE conectando el suministro de 3.3V al RN-52, pero si va a usar el UART para enviar comandos desde un Arduino al RN-52, no ¿Necesitas un Arduino de 3,3 V? Eso es exactamente lo que uso con el RN-52. Yo uso Arduino Pro Micro 3.3V/8MHz de SparkFun. Me quedaría con esa porque no necesitas molestarte con una placa de conexión FTDI; ¡simplemente conecte un cable USB directamente en él!
Puedo controlar el RN-52 con esta configuración, y siempre he usado una velocidad de transmisión de 115200 sin tocar ninguno de los pines GPIO. Te sugiero que hagas lo mismo.
Como todavía no lo he visto discutido aquí, es posible que esté usando la línea serial incorrecta en el Arduino Mega, ¡que no debería usar de todos modos! Por ejemplo, mi Arduino Pro Micro particular tiene dos líneas seriales diferentes. Serial.begin(115200)
y Serial.println("C")
corresponden a la comunicación USB del dispositivo con la computadora. Serial1.begin(115200)
y Serial1.println("C")
aplicar a los pines TX y RX que están realmente conectados al RN-52. Tendría que mirar las líneas seriales específicas del Mega, o cualquier Arduino que termine usando, para descubrir cómo inicializar correctamente la línea de comunicación serial correcta.
Mira esto este video :
rojoarenosoladrillo
paseo_85027
joe hass
paseo_85027