Responder una llamada telefónica con RN-52 y Arduino Mega 2560

2

Vengo de Stackoverflow y necesito una guía.

Mi objetivo : reproducir melodías (completadas) y responder / finalizar llamadas a través del 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 el RX del Mega 2560 (pines 0 y 1) para iniciar UART, sin embargo, cuando intento enviar el comando C al módulo, no ocurre nada (eso debería decirle a la RN52 que conteste la llamada).

Quizás : mi problema es poner el RN52 en modo de comando, pero tengo un GPIO9 molido (ponerlo en baja lo convierte en modo de comando).

Quizás : ¿no estoy enviando el comando correctamente? Utilicé Serial.println("C"); .

Espero que mi pregunta y lucha sea clara. Cualquier material de lectura que me señale en la dirección correcta sería muy apreciado. Me encantaría 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: enlace

EDIT (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, pero no se responde a la llamada. Y desafortunadamente no puedo conectarme a la serie RN52 para ver lo que se dice a través de CoolTerm al mismo tiempo, ya que el Arduino está usando la conexión (lea sobre esto en este foro).

GPIO7 NO está conectado a nada (solo abrir).

El RN52 está conectado a tierra y transmite las melodías correctamente a través de Bluetooth en mi iPhone. SIN EMBARGO, hay una mención sobre 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 están diciendo que hacer ... esto podría ser parte de mi problema.

ADDING SCHEMATIC (¡increíble, no tenía idea de que pudiera hacer esto! ¡Lo siento, lo incluiré en todas las publicaciones futuras!)

simular este circuito : esquema creado usando CircuitLab

    
pregunta ride_85027

2 respuestas

4
  Serial.begin(9600); //start talking to RN52

Creo que necesitas bajar GPIO7 para establecer la velocidad a 9600.

De la hoja de datos

  

GPIO7 Conducir este pin bajo establece la velocidad en baudios de UART en 9,600. Por defecto el   el pin es alto con una tasa de baudios de 115,200.

    
respondido por el RedGrittyBrick
1

Muy bien, he estado usando mucho el RN-52 últimamente, así que tengo algunas cosas:

  1. Supongo que en realidad no sé la respuesta a esta pregunta, pero ¿no se supone que no debe usar un dispositivo de 5V para comunicarse a través de UART con un dispositivo de 3.3V? Seguro que solo puedes alimentar el RN-52 con el Arduino Mega SOLAMENTE conectando la fuente de 3.3V al RN-52, pero si vas a usar el UART para enviar comandos desde un Arduino al RN-52, no lo hagas. ¿Necesitas un Arduino 3.3V? Eso es exactamente lo que uso con el RN-52. Utilizo Arduino Pro Micro de SparkFun 3.3V / 8MHz. Simplemente obtendría esa porque no necesita molestarse con una tabla de ruptura FTDI; simplemente conecte un cable USB directamente en él!

  2. Puedo controlar el RN-52 con esta configuración, y siempre he usado una velocidad en baudios de 115200 sin tocar ninguno de los pines GPIO. Le sugiero que haga lo mismo.

  3. Como todavía no lo he visto aquí, es posible que estés usando la línea serial incorrecta en el Arduino Mega, ¡que no deberías usar de todos modos! Por ejemplo, mi Arduino Pro Micro en 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") se aplican a los pines TX y RX que realmente están conectados al RN-52. Tendría que mirar las líneas seriales específicas de Mega, o cualquier Arduino que termine usando, para averiguar cómo inicializar correctamente la línea de comunicación serial correcta.

Ver esto video :

    
respondido por el user35557

Lea otras preguntas en las etiquetas