首页 > 解决方案 > 使用 ESP32+Sim800L 向 Firebase 发送传感器数据

问题描述

我有一块 TTGO T-CALL ESP32+Sim800L 板,我想将加速度计数据发送到 Firebase。我正在使用支持 Sim800L 的 SSL/https 连接的 TinyGSM 库。我目前正在发送虚拟数据以查看它是否有效,但它给了我一个失败的标志。为什么它不向 Firebase 发送数据?

#define FIREBASE_HOST "https://XXXXXXXXXXXXXXXXXfirebaseio.com/"
#define FIREBASE_AUTH "XXXXXXXXXXXXXXXXXXXXhevKwQ3LALblGclqCk"

FirebaseData firebaseData;

void setup()
{
// Set console baud rate
Serial.begin(115200);
// Set-up modem reset, enable, power pins
pinMode(MODEM_PWKEY, OUTPUT);
pinMode(MODEM_RST, OUTPUT);
pinMode(MODEM_POWER_ON, OUTPUT);
digitalWrite(MODEM_PWKEY, LOW);
digitalWrite(MODEM_RST, HIGH);
digitalWrite(MODEM_POWER_ON, HIGH);

// Set GSM module baud rate and UART pins
SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
delay(3000);

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

SerialMon.print("Connecting to APN: ");
SerialMon.print(apn);
  if (!modem.gprsConnect(apn, gprsUser, gprsPass)) {
    SerialMon.println(" fail");
  }else {
    SerialMon.println(" OK");

    Firebase.begin(FIREBASE_HOST,FIREBASE_AUTH);
    SerialMon.println(" Connection to Firebase Successful");
}
}

void loop()
{
String data = "5";
bool res = Firebase.pushString(firebaseData,"/ax", data);
Serial.println("Data sent");
Serial.println(res); 
Serial.println(firebaseData.errorReason());
delay(1000);

}

这是输出:

标签: firebaseiotgsmesp32sim800

解决方案


我没有在网上找到很多资源,但是,我确实做到了这一点,并且我为任何需要帮助的人创建了一个GitHub 存储库。

基本上,由于 Firebase 仅接受 Https 请求,因此无法在大多数微控制器和 GSM 模块上制定该请求。为了规避这个问题,我创建了一个 php 服务器,我可以向它发送 HTTP POST 请求,脚本可以从中获取数据并使用 php firebase 库将其推送到 Firebase。


推荐阅读