Как я могу подключить ESP32 к GSM-модулю A6? - PullRequest
0 голосов
/ 23 марта 2020

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

С этим существом сказал, что я работаю над проектом, который использует 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\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + WriteAPIKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(thingSpeakData.length());
    client.print("\n\n");

    client.print(thingSpeakData);

  }
client.stop();

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

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

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

1 Ответ

0 голосов
/ 23 марта 2020

В прилагаемой документации показаны выводы ESP32S для HW Serial 0 RX / TX на выводе GIPO01 / GIPO03, HW Serial 1 RX / TX на выводе GIPO09 / GIPO10. Если вы сейчас не подключили ни одного HW, почему бы не попробовать c config с serial1
Прочтите об этом: https://github.com/G6EJD/ESP32-Using-Hardware-Serial-Ports и используйте последний базовый пакет ESP32 (на сегодняшний день 23.3.2020 - это 1.04, в предыдущих выпусках были проблемы с serial. Не забудьте настроить Последовательность, приведенная в статье, сильно отличается от 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 Fla sh - попробуйте Serial3.

...