Как я могу подключить ESP32 к GSM-модулю A6?

Я действительно нуждаюсь в помощи с этой проблемой и, как наиболее часто советовали, я исследовал и исследовал и исследовал в течение нескольких дней, и я не могу понять, что не так ...

С учетом сказанного, я работаю над проектом, в котором используется ESP-32S ( распиновка ) и GSM-модуль A6. ( распиновка ) Я пытаюсь подключить их, чтобы A6 отправлял данные в ThingSpeak ... Моя проблема в том, что я не могу заставить его работать ... У меня точно такая же конфигурация между ними с использованием ESP8266 и он подключается и работает, но с ESP32S он просто не работает ...

Ниже приведен код, который я использовал для подключения 32 к A6, и все говорит об успехе и прохождении, но он не изменит никаких значений ThingSpeak, используя любые методы ...

#define TINY_GSM_MODEM_A6

#include "TinyGsmClient.h"
#include "ThingSpeak.h"


#define SerialMon Serial

HardwareSerial SerialAT(1);

bool modemConeted;

// Your GPRS credentials
// Leave empty, if missing user or pass
const char apn[]  = "wireless.twilio.com";
const char user[] = "";
const char pass[] = "";

bool dataSent = false;

TinyGsm modem(SerialAT);

TinyGsmClient client(modem);

void setup(){
  SerialMon.begin(9600);
  delay(1000);
  gsmModSetup();
}

void gsmModSetup() {

  // Set GSM module baud rate
  SerialAT.begin(9600, SERIAL_8N1, 27, 26, false); //27 and 26 are the pins on the ESP32S connected to the U_Rxd/U_Txd pins of A6
  delay(3000);

  SerialMon.println("Initializing modem...");
  modem.init();
  delay(3000);

  String modemInfo = modem.getModemInfo();
  SerialMon.print("Modem: ");

  SerialMon.println(modemInfo);


  SerialMon.print("Waiting for network...");
  if (!modem.waitForNetwork()) {
    SerialMon.println(" fail");
    delay(10000);
    return;
  }
  SerialMon.println(" OK");
  SerialMon.print("Connecting to ");
  SerialMon.print(apn);

  if (!modem.gprsConnect(apn, user, pass)) {
    SerialMon.println(" fail");
    delay(5000);
    return;
  }
  SerialMon.println(" OK");
}

void loop(){

}

Я использую карту Twilo Sim, которая загружена данными (как сказано выше, она работает с esp8266, поэтому не SIM-карта и не плата). Единственная часть этого кода, которая не проходит, - это часть, которая говорит, что GPRS-соединение. это никогда не говорит, проходит или не проходит Он просто сидит минут пять, потом продолжается.

После этого я пытаюсь отправить сообщение в ThingSpeak, и оно дает сообщение об ошибке ThingSpeak ERROR-307, что означает, что не удалось подключиться к ThingSpeak ... Я пробовал 2 разных способа

Что я нахожу легкий и нормальный способ

ThingSpeak.setField(1, temp);
ThingSpeak.setField(2, h);
ThingSpeak.setField(3, p);
ThingSpeak.setField(4, pt);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);

и более сложный способ подключения к серверу отправляет команду GET со всеми значениями вместе со строками.

if (client.connect(thingSpeakAddress, 80))
  {
    client.print("POST /update HTTP/1.1
");
    client.print("Host: api.thingspeak.com
");
    client.print("Connection: close
");
    client.print("X-THINGSPEAKAPIKEY: " + WriteAPIKey + "
");
    client.print("Content-Type: application/x-www-form-urlencoded
");
    client.print("Content-Length: ");
    client.print(thingSpeakData.length());
    client.print("

");

    client.print(thingSpeakData);

  }
client.stop();

Но ни одна из них не работает, и я не знаю, что делать ... Мой A6 ​​подключен к 32 с помощью GPIO26, а 27 - к выводам A6 U_Rxd / U_Txd. Все доски имеют общую точку соприкосновения.

Любые дополнительные руководства для чтения или код для изменения или библиотеки, которые можно попробовать, были бы чрезвычайно полезны, так как мои дни копания приносили только разочарование, поскольку одна попытка за другой терпит неудачу. читатели этого - моя последняя надежда в решении этой проблемы, которая мешает моему дальнейшему прогрессу.

(Любые вопросы о чем-либо на моем конце, пожалуйста, задавайте. -Спасибо)

Всего 1 ответ


В прилагаемой документации показаны выводы ESP32S для HW Serial 0 RX / TX на выводе GIPO01 / GIPO03, HW Serial 1 RX / TX на выводе GIPO09 / GIPO10 Если вы сейчас не подключили ни одного HW, почему бы не попробовать базовую конфигурацию с serial1
Прочтите об этом: https://github.com/G6EJD/ESP32-Using-Hardware-Serial-Ports и используйте последний базовый пакет ESP32 (на сегодняшний день 23.3.2020 - это 1.04, в предыдущих выпусках были проблемы с последовательным интерфейсом. Не забывайте настроить серийный номер, приведенный в статье, он отличается от esp8266 (!) так много о совместимости кода. Если вы используете код на обеих платформах, вам придется работать с

#ifdef ESP32
          //configure serial for esp32
#elif ESP8266
        //configure serial for esp8266
#else
#error "Hardware not supported"
#endif

Вот небольшая тестовая процедура для просто последовательной связи. Если вы введете что-то в строку ввода последовательного монитора, это должно быть отражено в окне вывода.

#include <HardwareSerial.h>

void setup() {
  Serial.begin(9600);
  // set the data rate for the HardwareSerial port
  Serial2.begin(9600);
}

void loop() {
  if (Serial2.available()) {
    Serial.write(Serial2.read());
  }
  if (Serial.available()) {
    Serial2.write(Serial.read());
  }
}

Затем вы можете расширить serial2 до ваших настроек. Если это не удается, это может быть связано с: U1UXD не используется и может быть использован для ваших проектов. Некоторые платы используют этот порт для доступа к SPI Flash, поэтому попробуйте Serial3.


Есть идеи?

10000