A6 GSM wemos d1

Estoy Tratando de hacer un servidor udp y luego de recibir un mensaje por UDP, arduino utilice el modulo A6 GSM para hacer una llamada y enviar un mensaje SMS.

ya hice lo del servidor UDP, pero no he podido hacer que llame con el A6 GSM.

Este codigo permite hacer llamada, pero tengo que desconectar y conectar el arduino de la pc y en ese momento a veces llama.

char phone_no[]="18093353345";

void setup()
{
Serial.begin(9600);  
delay(200);
Serial.println("AT");
delay(1000);
Serial.print("ATD");
Serial.println(phone_no);
//Serial.println(";");
delay(20000);
Serial.println("ATH");
}

void loop()
{
}

este codigo es el del servidor udp

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <WiFiClient.h>
char phone_no[]="18093303345";
const char* ssid = "nombredelwifi";
const char* password = "clave del wifi";

WiFiUDP Udp;
unsigned int localUdpPort = 5025;  // local port to listen on
 //IPAddress ipremota(10,0,0,5);  
IPAddress ipremota(10,0,0,5);  
 IPAddress PuertoRemoto(5020);
 IPAddress Iplocal(192,168,69,101);
 IPAddress Wifinet(255,255,255,0);
 IPAddress Ipgateway(192,168,69,1); 
 IPAddress Wifidns1(8,8,8,8);
 IPAddress Wifidns2(8,8,4,4);
 
char incomingPacket[255];  // buffer for incoming packets
char  replyPacket[] = "Hi there! Got the message :-)";  // a reply string to send back


void setup()
{
  Serial.begin(115200);
  Serial.println();

  Serial.printf("Connecting to %s ", ssid);
   WiFi.mode(WIFI_STA);
   //WiFi.mode(WIFI_AP);
 WiFi.softAPConfig(Iplocal,Wifinet,Ipgateway);
 // WiFi.config(Iplocal,Wifinet,Ipgateway);
  //WiFi.begin(ssid, password);
 
   WiFi.softAP(ssid, password);
  
 Serial.println("Wait 100 ms for AP_START...");
  delay(100);
 //WiFi.softAPConfig(Iplocal,Wifinet,Ipgateway);
 
 WiFi.begin(ssid, password); 
 while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" connected");
 
 
  Udp.begin(localUdpPort);
  Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);

}


void loop()
{
  int packetSize = Udp.parsePacket();
  if (packetSize)
  {
    // receive incoming UDP packets
    Serial.printf("Received %d bytes from %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
    int len = Udp.read(incomingPacket, 255);
    if (len > 0)
    {
 
      incomingPacket[len] = 0;
    }
    Serial.printf("UDP packet contents: %s\n", incomingPacket);
}
}

alguna solucion a este problema?

En el A6 de forma permanente o con un pulso inicial, es necesario conectar a VCC el terminal PWR_KEY para que sistema funcione.

Lo he conectado asi, como me indicas.

ademas de conectar
gnd al gnd del arduino
rx al tx del arduino
tx al rx del arduino

Quiero conectarlo a otros pines que no sean el rx y el tx del arduino. He probado el <SoftwareSerial.h> pero no me ha funcionado.

La idea es esperar el mensaje que llega por UDP que incluiria el telefono y el mensaje. Luego de esto separar el string y hacer una llamada y enviar el mensaje.

Alguna idea de como puedo hacerlo?