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

SIM7600 4G模块与Arduino通过PHP向服务器传数据故障求助

关于SIM7600 4G模块通过Arduino向PHP服务器传输数据的问题

我已将TEL0124 SIM7600 4G LTE模块连接至Arduino板,能够发送AT指令并收到OK响应,但无法通过PHP调用向服务器传输数据。此前使用的SIM800、SIM900等GSM模块已无法正常工作,因此更换为4G LTE版本,现寻求可行的传输方案。

原代码示例

void setup()
{
    Serial.begin(115200);
    Serial1.begin(115200);
    sendData("AT+CCID/r", 3000, DEBUG);
    sendData("AT+CREG?/r", 3000, DEBUG);
    sendData("AT+CGATT=1/r", 1000, DEBUG);
    sendData("AT+CGACT=1,1/r", 1000, DEBUG);
    sendData("AT+CGDCONT=1,\"IP\",\"TM\"/r", 1000, DEBUG);
    sendData("AT+CIPSTART=\"TCP\",\"www.sxxxxde/data2mysql.php?key=xxx",80/r", 2000, DEBUG);
    Serial.println("4G HTTP Test Begin!");
}  
void loop()
  string http_str  = "AT+HTTPPARA=\"URL\","HTTPP:www.sxxxxde.de/data2mysql.php?key=xxxx&ID=9999A0200A1300A21024A324A426A510A614A714A828A90A10A110A120"\"\r";
    Serial.println(http_str);
    sendData("AT+HTTPINIT\r", 2000, DEBUG);
    sendData(http_str, 2000, DEBUG);
    sendData("AT+HTTPACTION=0\r", 3000, DEBUG);
    sendData("AT+HTTPTERM\r", 3000, DEBUG);}
String sendData(String command, const int timeout, boolean debug){
  String response = "";
  Serial1.println(command);    
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (Serial1.available())
    {
      char c = Serial1.read();
      response += c;
    }
  }
 

代码中的关键问题

  • AT指令换行符错误:所有/r需改为\r,模块仅识别\r作为指令结束标记
  • AT+CIPSTART语法错误:TCP连接只需指定域名和端口,无需拼接PHP路径,正确格式为AT+CIPSTART="TCP","www.sxxxxde.de",80\r
  • http_str字符串格式错误:C++字符串引号不匹配,URL前缀应为http://而非HTTPP:,正确指令格式为AT+HTTPPARA="URL","http://www.sxxxxde.de/data2mysql.php?key=xxxx&ID=9999A0200A1300A21024A324A426A510A614A714A828A90A10A110A120"\r
  • loop函数语法问题:缺少起始大括号,string需改为Arduino专用的String类型
  • sendData函数缺失返回值:函数声明为String类型,但未添加return response;语句,无法获取模块响应用于调试

修正后的完整代码

#define DEBUG true

void setup()
{
    Serial.begin(115200);
    Serial1.begin(115200);
    
    // 基础网络附着配置
    sendData("AT+CCID\r", 3000, DEBUG);
    sendData("AT+CREG?\r", 3000, DEBUG);
    sendData("AT+CGATT=1\r", 1000, DEBUG);
    sendData("AT+CGDCONT=1,\"IP\",\"TM\"\r", 1000, DEBUG); // 确认APN"TM"为SIM卡正确值
    sendData("AT+CGACT=1,1\r", 1000, DEBUG);
    
    Serial.println("4G HTTP Test Begin!");
}  

void loop()
{
    String http_str = "AT+HTTPPARA=\"URL\",\"http://www.sxxxxde.de/data2mysql.php?key=xxxx&ID=9999A0200A1300A21024A324A426A510A614A714A828A90A10A110A120\"\r";
    Serial.println(http_str);
    
    // HTTP请求流程
    sendData("AT+HTTPINIT\r", 2000, DEBUG);
    sendData(http_str, 2000, DEBUG);
    sendData("AT+HTTPACTION=0\r", 5000, DEBUG); // 延长超时时间确保请求完成
    sendData("AT+HTTPTERM\r", 3000, DEBUG);
    
    delay(5000); // 间隔5秒再次发送
}

String sendData(String command, const int timeout, boolean debug){
  String response = "";
  Serial1.println(command);    
  long int time = millis();
  
  while ( (time + timeout) > millis())
  {
    while (Serial1.available())
    {
      char c = Serial1.read();
      response += c;
    }
  }
  
  if(debug){
    Serial.println("Response:");
    Serial.println(response);
  }
  
  return response;
}

调试与验证建议

  • 查看sendData输出的响应信息:重点关注AT+HTTPACTION=0的返回,若返回OK后跟随+HTTPACTION: 0,200,...表示请求成功;若为其他错误码(如601、603),需检查网络连接或服务器配置
  • 手动验证服务器脚本:通过浏览器直接访问PHP URL,确认数据能正常写入MySQL
  • 确认APN正确性:若网络附着失败,联系SIM卡运营商获取正确APN参数,替换代码中的TM
  • 检查信号强度:发送AT+CSQ\r查看信号值,确保模块处于信号良好的环境

内容的提问来源于stack exchange,提问作者Zeiti Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:37:14