50元内自制短信转发器(Air780E+ESP32C3)

这是什么

短信转发器这个东西一般是给备用卡,开一个保号套餐,然后用来接收验证码短信之类的东西来用的。市面上的方案大部分都是用一个安卓手机,开着有这类功能的一个软件来实现。本篇文章给大家另一个实现思路,使用4G cat1模组+wifi来实现相同的功能。

方案选择

因为4G cat1模组本身就是可编程的,所以有两种方案:

  1. 4G cat1模组自行处理接收短信+推送到服务器的功能。这个方案的问题在于:备用卡大部分为保号套餐,不带流量。所以此方案pass

  2. 外接一个wifi板子,使用wifi芯片通过AT命令控制4G cat1模组,并使用wifi芯片上传消息到服务器

本文采用的是第二种方案

准备材料

  • 合宙ESP32-C3开发板简约款(合宙淘宝/拼多多官方店9.9元包邮的简约款即可,不用买经典款)
  • 合宙Air780E开发板(购买途径同上)
  • 焊接工具与必要的排针、排母(上面板子应该附赠排针的)
  • 用来接收短信用的卡
  • 2.4G Hz的wifi,用来联网
  • 对接的服务器有几个选择
    • LuatOS社区提供的推送服务器(点击GitHub图标即可登录,然后点击左边的消息通道新建一个推送方式)
    • server酱(免费用户每天只能发送五条)
    • 你也可以对接自己的推送服务器,但是代码要自己稍微改改

硬件对接

由于Air780E需要按下开机键才能开机,而我们需要上电即开机,所以可以短接此处的焊盘,实现Air780E开发板上电即开机的功能:

接着,我们需要将Air780E开发板ESP32-C3开发板电源引脚相连(5V与GND)、将ESP32-C3开发板UART1Air780E开发板MAIN_UART相连,引脚如下(两组的实际位置是相同的):

分别将两块板子焊接上排针与排母,像这样(能一对一插上就行):

接着别忘了再给Air780开发板上插上SIM卡

全搞定后,直接对齐插上去就行了:

刷入固件与脚本

接下来需要为esp32c3刷入写好的固件与脚本

如果不会烧录,请先看一下esp32c3烧录教程

这里我们需要使用新版的V10xx固件,可以直接去下载快照版固件

脚本可以在这个仓库下载:chenxuuu/sms_forwarding – GitHub

我们需要修改脚本中的notify.lua,按注释要求改为自己的逻辑:

--你的wifi名称和密码
local wifiName = ""
local wifiPasswd = ""

--这里默认用的是LuatOS社区提供的推送服务,无使用限制
--官网:https://push.luatos.org/ 点击GitHub图标登陆即可
--支持邮件/企业微信/钉钉/飞书/电报/IOS Bark

--是否使用server酱,false则使用LuatOS社区提供的推送服务
local useServerChan = false

--LuatOS社区提供的推送服务 https://push.luatos.org/
--这里填.send前的字符串就好了
--如:https://push.luatos.org/ABCDEF1234567890ABCD.send/{title}/{data} 填入 ABCDEF1234567890ABCD
local luatosPush = "ABCDEF1234567890ABCD"

--server酱的配置,免费用户每天仅可发送五条推送消息
--server酱的SendKey,如果你用的是这个就需要填一个
--https://sct.ftqq.com/sendkey 申请一个
local serverKey = ""

如果需要用自己的推送服务,还可以把下面的http请求改成自己服务器支持的格式

测试功能

烧录脚本和固件后,可以看到设备的日志,正常连上wifi与连上了基站

[time] I/user.air780    got recv    AT
[time] I/user.air780    check sim card
[time] D/wlan esp_wifi_init ret 0
[time] D/wlan wifi event 2
[time] D/wlan esp_wifi_start ret 0
[time] D/wlan esp_wifi_connect ret 0
[time] I/user.wlan  wait for IP_READY
[time] I/user.air780    got recv    AT+CPIN?
[time] I/user.air780    configrate
[time] D/wlan wifi event 4
[time] D/wlan wifi station start
[time] D/wlan wifi connected!!!
[time] I/user.air780    got recv    AT+CMGF=0
[time] D/wlan ip event 0
[time] D/wlan IP_EVENT_STA_GOT_IP 192.168.0.128
[time] I/user.wlan  ready !!
[time] I/user.notify    wait for a new sms~
[time] I/user.air780    got recv    AT+CSCS="UCS2"
[time] D/sntp time sync done
[time] I/user.air780    got recv    AT+CNMI=2,2,0,0,0
[time] I/user.air780    wait for connection
[time] I/user.air780    got recv    AT+CGATT?
[time] I/user.air780    connection status   true
[time] I/user.air780    connected! wait sms

接下来我们发一条短信试试,脚本内部对长短信进行了处理,所以长短信也可以完美支持。可以看到设备端的日志:

[time] I/user.air780    connected! wait sms
[time] I/user.sms   recv    13112341234 这是一条长短信【领5G流量活动推荐】尊敬的客户:您目前的手机支持5G网络,现邀请您参与“用5G网络,领5G流量”活动。即日起,使用5G 22/10/28,11:39:38+32    true    2   1
[time] I/user.air780    found a long sms    2   1
[time] I/user.sms   recv    13112341234 网络流量,次月即可领取流量。多用多领,最高可领取5GB国内通用流量。活动参与请点击xxx我们百倍努力,只为您10分满意。【中国移动】  22/10/28,11:39:38+32    true    2   2
[time] I/user.air780    a part of long sms  2   2
[time] I/user.air780    got a long sms  这是一条长短信【领5G流量活动推荐】尊敬的客户:您目前的手机支持5G网络,现邀请您参与“用5G网络,领5G流量”活动。即日起,使用5G网络流量,次月即可领取流量。多用多领,最高可领取5GB国内通用流量。活动参与请点击xxx我们百倍努力,只为您10分满意。【中国移动】
[time] I/user.notify    got sms 13112341234 这是一条长短信【领5G流量活动推荐】尊敬的客户:您目前的手机支持5G网络,现邀请您参与“用5G网络,领5G流量”活动。即日起,使用5G网络流量,次月即可领取流量。多用多领,最高可领取5GB国内通用流量。活动参与请点击xxx我们百倍努力,只为您10分满意。【中国移动】
[time] I/http HTTP POST
[time] D/http esp_http_client_perform 0
[time] I/user.notify    pushed sms notify   200 {"code":0,"message":"","data":{"pushid":"xxxxxx","readkey":"xxxxxxxx","error":"SUCCESS","errno":0}} 13112341234 这是一条长短信【领5G流量活动推荐】尊敬的客户:您目前的手机支持5G网络,现邀请您参与“用5G网络,领5G流量”活动。即日起,使用5G网络流量,次月即可领取流量。多用多领,最高可领取5GB国内通用流量。活动参与请点击xxx我们百倍努力,只为您10分满意。【中国移动】
[time] I/user.notify    wait for a new sms~

同时我们收到了推送来的消息:

如果是server酱,那么是这样的:

16 Comments

  1. Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition

    里面的1001固件总是下载失败是为什么啊 波特率921600 简约版c3 usb口换了 官网的1001可以烧录但是这个不行 luatoos版本2.1.72

      1. Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition

        就是您文章里说的下载快照版固件连接里的 官网的是说的在https://gitee.com/openLuat/LuatOS/releases里面下载的编号为1001的固件

  2. Google Chrome 107.0.0.0 Google Chrome 107.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7

    按照博主的教程 已成功,测试我的移动卡短信接收正常,民生通讯的卡貌似不支持电信制式的
    如果可以使用流量发短信,那就可以做成便携设备了,虽然便携没啥用哈哈哈哈

    1. Firefox 106.0 Firefox 106.0 Windows 10 x64 Edition Windows 10 x64 Edition

      电信短信走的cdma2000/volte
      air780不支持volte,cdma2000更不用说了,基本没什么模组会支持
      所以电信卡想收短信,需要开通volte功能,然后用air724这类支持volte的模组才可以

  3. Google Chrome 107.0.0.0 Google Chrome 107.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition

    按教程焊好,联通卡没问题,插电很快就能收到短信。
    香港移动会连续刷屏10分钟左右如下日志
    [2022-11-14 17:52:08.478] I/user.air780 connection status false
    [2022-11-14 17:52:09.276] I/user.air780 got recv AT+CGATT?
    才能收到
    I/user.air780 connection status true

    香港卡插手机上2分钟内就有信号。是板子的天线太小了吗?

  4. Google Chrome 107.0.0.0 Google Chrome 107.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7

    跟风买了两块芯片,今天拿出来按博主的教程,正常收到短信了!如果支持一下接到电话也推消息,就好了~

发表评论

您的电子邮箱地址不会被公开。