You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js/Express中接收ESP32+SIM800L发送的短信?

直接接收ESP32+SIM800L数据的无依赖方案

既然你不想依赖第三方短信服务或额外设备,最直接的方案是放弃短信传输逻辑,改用SIM800L的GPRS网络直接向你的Express后端发送HTTP请求——个人SIM卡只要开通了基础数据流量就能用,完全绕开短信通道的限制,也不需要任何中间服务。

具体实现步骤

1. ESP32端:通过SIM800L发送HTTP请求

SIM800L支持AT指令直接发起HTTP请求,你可以用AT指令集实现,也可以用封装好的Arduino库简化开发。以下是核心代码示例:

#include <SoftwareSerial.h>

SoftwareSerial sim800l(16, 17); // RX、TX引脚,根据实际接线调整

void setup() {
  sim800l.begin(9600);
  Serial.begin(115200);
  
  // 初始化GPRS连接
  sim800l.println("AT+CGATT=1"); // 附着GPRS网络
  delay(1000);
  sim800l.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\""); // 设置连接类型为GPRS
  delay(1000);
  sim800l.println("AT+SAPBR=3,1,\"APN\",\"CMNET\""); // 替换为你的运营商APN,联通填UNINET,电信填CTNET
  delay(1000);
  sim800l.println("AT+SAPBR=1,1"); // 激活GPRS连接
  delay(2000);
  
  // 发送POST请求到后端接口
  sim800l.println("AT+HTTPINIT"); // 初始化HTTP服务
  delay(1000);
  sim800l.println("AT+HTTPPARA=\"URL\",\"http://你的后端公网地址/api/receive-data\""); // 替换为实际接口地址
  delay(1000);
  sim800l.println("AT+HTTPPARA=\"CONTENT\",\"application/json\""); // 设置请求内容类型为JSON
  delay(1000);
  sim800l.println("AT+HTTPDATA=28,10000"); // 声明要发送28字节数据,超时10秒
  delay(1000);
  sim800l.println("{\"deviceId\":\"esp32_001\",\"temp\":25.6}"); // 自定义要发送的业务数据
  delay(2000);
  sim800l.println("AT+HTTPACTION=1"); // 执行POST请求
  delay(3000);
  
  // 打印后端响应
  while(sim800l.available()){
    Serial.write(sim800l.read());
  }
  
  sim800l.println("AT+HTTPTERM"); // 关闭HTTP服务
}

void loop() {
  // 这里可以添加定时上报或触发式上报逻辑
  delay(10000);
}

2. Express后端:编写接收接口

在你的Node.js/Express项目中添加POST接口,直接接收设备发送的数据:

const express = require('express');
const app = express();
const port = 3000;

app.use(express.json()); // 解析JSON格式请求体

// 设备数据接收接口
app.post('/api/receive-data', (req, res) => {
  const deviceData = req.body;
  console.log('收到设备数据:', deviceData);
  
  // 此处添加你的业务逻辑,比如存储到数据库、触发告警等
  
  res.status(200).json({ status: 'ok', msg: '数据已接收' });
});

app.listen(port, () => {
  console.log(`后端服务运行在 http://localhost:${port}`);
});

关键注意事项

  • 确保后端能被公网访问:如果设备不在局域网内,需要给后端做端口映射,或直接部署到云服务器。
  • 供电稳定:SIM800L模块需要5V/2A的稳定供电,避免因供电不足导致GPRS连接失败。
  • APN参数正确:不同运营商的APN不同,若连接失败可咨询运营商确认。

内容的提问来源于stack exchange,提问作者Jojo Maninang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 16:50:01