简介

M100M-C系列 DTU是由银尔达(yinerda)推出的工业级的单TTL串口DTU 。小巧、稳定、可靠。适合设备控制,状态检测,传感器数据采集等通过4G网络与服务器通讯的场景。

测试发短信

进入对应的手册,查看教程

合宙官方教程文档

要注意:

AT固件不支持RS485发送,支持TTL,RS232等发送。
短信需要手机卡才支持,普通物联网卡不支持发短信。
Air724支持移动、联通、电信卡都支持。
Air780支持移动和联通卡,==不支持电信==。
AT\r 测试
ATE0\r 关闭回显
AT+ICCID\r 确认SIM卡插好了
AT+CGATT? 查看网络连接, +CGATT: 1 是正常
AT+CSMS=1 设置短信服务, +CSMS: 1,1,1

在线 Unicode 编码转换,可以实现中文转 Unicode实际测试,发中文手机会收到乱码,所以还是发英文短信。

AT+CMGF=1 //设置为TEXT模式
OK
AT+CSMP=17,167,0,0 //配置当前TEXT模式参数,17,短信首字节167,短信有效期,12小时 + ( (vp – 143 )×30分钟即24小时
OK
AT+CSCS? //查询使用的字符集
+CSCS: “IRA”              //使用IRA字符集
OK
AT+CMGS="180xxxx1447"     //给180xxxx1447发英文短信注:180xxxx1447是发送目的号码,请按照实际填写,不要照抄
>HELLO!                   //出现>号后,输入要发送的短信内容(长度限制最大为180)
0X1A(hex发送)                  //十六进制方式发送 0x1A(注:此命令后面不跟回车换行)
+CMGS: 73  //73为序号,非固定,短消息发送成功
OK

在单片机中使用

参考教程:air780e发送中文短信 STM32 HAL库

实际使用

#include <stdint.h>
#include <stdio.h>
#include <string.h>

#include "cmsis_os2.h"
#include "usart.h"

/**
 * @brief 通过AIR780E 4G模块发送短信
 *
 * 此函数用于向指定的电话号码发送一条文本短信。它会依次配置短信模式、字符集、短信参数,
 * 然后输入目标号码和短信内容,并以 Ctrl+Z 结束发送流程。
 *
 * @param number 目标手机号码字符串(例如:"13800138000")
 * @param note   要发送的短信内容字符串
 */
void air780e_4g_send_note(char *number, char *note)
{
    char cmd[128] = {0};
    uint8_t ctrl_z = 0x1A;

    // 设置短信模式
    HAL_UART_Transmit(&huart1, "AT+CMGF=1\r\n", strlen("AT+CMGF=1\r\n"), 1000);
    osDelay(1000);

    // 设置字符集
    HAL_UART_Transmit(&huart1, "AT+CSCS=\"GSM\"\r\n", strlen("AT+CSCS=\"GSM\"\r\n"), 1000);
    osDelay(1000);

    // 设置短信参数
    HAL_UART_Transmit(&huart1, "AT+CSMP=17,167,0,0\r\n", strlen("AT+CSMP=17,167,0,0\r\n"), 1000);
    osDelay(1000);

    // 设置接收号码
    snprintf(cmd, sizeof(cmd), "AT+CMGS=\"%s\"\r\n", number);
    HAL_UART_Transmit(&huart1, cmd, strlen(cmd), 1000);
    osDelay(2000);  // 需要等待模块返回 "> "

    // 发送短信内容
    HAL_UART_Transmit(&huart1, note, strlen(note), 1000);

    // 发送Ctrl+Z结束
    HAL_UART_Transmit(&huart1, &ctrl_z, 1, 1000);
    osDelay(5000);  // 发送后需要足够时间等待响应
}

在需要的地方调用,用于发送英文短信

            // 发送短信给紧急联系人
            elog_info("SMS", "Sending manual emergency SMS to xxxxxxxxxx");
            air780e_4g_send_note(phone_number, alarm_report);
            elog_info("SMS", "Manual emergency SMS sent successfully");