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

请求修改单片机SIM拨号代码:实现3分钟内同时拨打5个号码

修改后的代码(3分钟内自动拨打5个号码)
#include <SoftwareSerial.h>
SoftwareSerial sim(10, 11);

// 定义电话号码数组(直接存储号码,无需额外引号)
String numbers[] = {
  "+639*********",  // 替换为第一个目标号码
  "+639*********",  // 替换为第二个目标号码
  "+639*********",  // 替换为第三个目标号码
  "+639*********",  // 替换为第四个目标号码
  "+639*********"   // 替换为第五个目标号码
};

const int totalNumbers = 5;                // 号码总数
const unsigned long callDuration = 30000;  // 单号码通话时长(30秒,可按需调整)
const unsigned long totalCycleTime = 180000; // 总时长限制(3分钟=180000毫秒)
int ledPin = 9;                            // LED状态指示引脚

void setup() {  
  Serial.begin(9600);
  Serial.println("系统启动...");
  sim.begin(9600);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  delay(1000);
  
  // 启动自动批量拨打流程
  startAutoCalling();
}

void loop() {
  // 拨打完成后可添加循环逻辑,或保持空函数
}

void startAutoCalling() {
  unsigned long startTime = millis();
  for (int i = 0; i < totalNumbers; i++) {
    // 检查总耗时是否超过3分钟,超时则终止
    if (millis() - startTime >= totalCycleTime) {
      Serial.println("总时长已达3分钟,停止拨打");
      digitalWrite(ledPin, LOW);
      return;
    }
    
    Serial.print("正在拨打第");
    Serial.print(i+1);
    Serial.print("个号码: ");
    Serial.println(numbers[i]);
    
    callNumber(numbers[i]);   // 拨打当前号码
    delay(callDuration);      // 维持通话时长
    hangUp();                 // 挂断当前通话
    delay(2000);              // 拨打下一个号码前的间隔(可调整)
  }
  
  Serial.println("5个号码已全部拨打完成");
  digitalWrite(ledPin, LOW);
}

void callNumber(String number) {
  // 发送标准AT拨号指令:ATD<号码>;
  sim.print("ATD");
  sim.print(number);
  sim.println(";");
  
  digitalWrite(ledPin, HIGH); // 通话时点亮LED
  delay(1000); // 等待模块响应拨号请求
}

void hangUp() {
  sim.println("ATH"); // 发送AT挂断指令
  digitalWrite(ledPin, LOW); // 挂断后熄灭LED
  delay(1000); // 等待模块响应挂断请求
}

关键修改说明

  • 移除手动输入逻辑:删除原代码中串口选择号码的交互,改为启动后自动执行批量拨打。
  • 修正AT命令格式:原代码中号码带多余引号导致拨号失败,现在使用ATD<号码>;的标准格式,确保SIM模块正确识别指令。
  • 时长精准控制:
    • 总时长限制为3分钟,每次拨打前检查耗时,超时自动停止。
    • 单号码通话时长设为30秒,加上拨号、挂断和间隔时间,总耗时约170秒,符合3分钟要求(可根据需求调整callDuration)。
  • 状态可视化:LED在通话时点亮、挂断后熄灭,直观显示当前状态。
  • 完善通话管理:新增hangUp()函数发送挂断指令,避免线路持续占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:12:35