ESP32-S3-SIM7670G-4G 使用教程

说明

产品简介

ESP32-S3-SIM7670G-4G(以下统称开发板) 是一款微雪 (Waveshare) 设计的多功能、高性能的微控制器开发板。其中板载了 SIM7670G 4G通讯模组、OV通用摄像头接口、TF卡槽、RGB炫彩灯、18650电池槽、测量电池电压IC、太阳能充电接口等外设,采用的 ESP32-S3R2 是集成了低功耗 Wi-Fi 和 BLE5.0 的系统级芯片(SoC),此外还具有外部 16MB Flash 和 2MB PSRAM。Soc内部的硬件加密加速器、RNG、HMAC 和数字签名 (Digital Signature) 模块,可以满足物联网的安全要求。采用的 SIM7670G 4G通讯模组提供移动网络,结合ESP32-S3R2可实现随身WIFI、物联网数传等功能 。多种低功耗工作状态满足在物联网 (IoT)、移动设备、户外监控、智能家居等应用场景的功耗需求。

产品特性

  • 搭载高性能 Xtensa® 32位LX7双核处理器,主频高达 240 MHz
  • 支持 2.4 GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth® 5 (LE),板载天线
  • 内置 512KB 的 SRAM 和 384KB ROM,叠封 2MB PSRAM 和外接 16MB Flash

硬件说明

  • 板载贴片天线,使用0R短接可选外部天线,如图中⑲、⑳
  • 板载RGB炫彩灯珠,WS2812B驱动,如图中㉓
  • 板载Camera接口:使用24pin摄像头排线接口,如图中⑫

支持摄像头列表如下:


modelmax resolutioncolor typeLen Size
OV26401600 x 1200color1/4"
OV36602048 x 1536color1/5"
OV56402592 x 1944color1/4"
OV7670640 x 480color1/6"
OV7725640 x 480color1/4"
NT991411280 x 720color1/4"
GC032A640 x 480color1/10"
GC0308640 x 480color1/6.5"
GC21451600 x 1200color1/5"
BF3005640 x 480color1/4"
BF20A6640 x 480color1/10"
SC101IOT1280 x 720color1/4.2"
SC030IOT640 x 480color1/6.5"
SC031GS640 x 480color1/6"

  • 板载TF-Card卡槽,支持文件、图片存储,如图中⑬
  • 板载太阳能充电接口,如图中⑱
    • 可以通过背面输入选贴不同电阻切换太阳能输入电压
    • 当太阳能处于充电中时,板载绿色LED会亮起,如图中㉖、㉘
  • 板载电路开关,当使用18650供电时可通过开关控制电路通断,如图中㉛
  • 板载 USB 转 UART 芯片和自动下载电路,接上 Type-C 线缆后即可烧写程序和固件,如图中⑦
  • 板载使用 ESP32-S3 USB连接 A/SIM7670X USB接口,使用TinyUSB协议可实现ppp拨号上网,作为随身WIFI功能
  • 板载 18650 电池接口,接入 3.7V 单节18650锂电池,注意锂电池接口正负极标志
    • 当电池反接时板载黄色LED会亮起警告,如图中㉕
  • 开发板预留GPIO可用于外部器件连接,可以灵活配置成 I2C、SPI等外设功能,详细功能请参考GPIO占用说明
  • 板载 GNSS IPEX1代接口,上电后使用相关指令即可开启GNSS定位功能,如图中㉑
  • 板载拨码开关,便于控制Camera、USB HUB电路、4G模组的上电,可以控制4G模组的USB电路切换,如图中㉚
  • 板载LED灯说明:
    • 板载电池防反接LED,当电池反接亮起黄灯,如图中㉕
    • 板载太阳能充电LED,当太阳能输入电压有效时亮起绿灯,如图中㉖
    • 板载电源指示灯,接入电源开机时亮起蓝灯,如图中㉔
    • 板载模组网络指示灯,当模组开启后亮起红灯,注册到网络后200ms频闪,如图中㉗

硬件连接

本开发板ESP32-S3 UART转USB与4G模组USB供用一个TYPE-C口,用户可通过开发板背面拨码开关的 USB 通道来选择4G模组的USB与ESP32-S3的USB接口连接或是TYPE-C接口连接。 本功能常用在ESP32-S3使用TinyUSB通信4G模组时拨号上网,作为随身WIFI、无线热点等应用

ESP32-S3-SIM7670G-4G-details-8.jpg

太阳能充电说明

开发板背部太阳能输入选择电阻可以切换太阳能输入最大电压。默认使用0R电阻连接5V标识位置,支持5~6V电压输入的太阳能板。当使用更高电压输入的太阳能板时,应短接对应电压的焊点。

产品尺寸

开发环境配置

以下开发系统默认为Windows

ESP-IDF

  • 推荐使用VSC插件进行开发

使用VSCode插件开发

安装VSCode

  1. 打开VSCode官网的下载页面,选择对应系统和系统位数进行下载
  2. 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项

    • 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
    • 第三项开启后,选择打开方式时,可以直接选择VSCode

安装Espressif IDF插件

  • 注:当前插件最新版本为V1.6.0,为体验一致,用户可以选择与我们一样的版本
  1. 打开VSCode,使用快捷键Shift+Ctrl+X,进入插件管理器
  2. 在搜索栏中,输入Espressif IDF,选择对应的插件点击 install即可
  3. 使用快捷键F1,输入
    esp-idf: configure esp-idf extension

  4. 选择express(此教程针对第一次安装的用户,故只讲述初次的通用安装教程)
  5. 打开后显示该界面
  6. 选择下载服务器,我们推荐国内用户使用Espressif作为你的下载服务器
  7. 选择想要现在的ESP-IDF版本,我们选择最新的V5.0.1(注意ESP-IDF从V4.4版本后才开始支持ESP32-S3)
  8. 下面两个分别为ESP-IDF容器安装地址和ESP-IDF所需的工具安装地址,

    • 注意:如果之前有安装过ESP-IDF,或者失败过的,请务必彻底删除文件或者创建全新的无中文路径
  9. 配置完成后,点击 install 进行下载
  10. 进入下载页面,其会自动安装对应工具与环境,稍等片刻即可
  11. 安装完成后,会进入以下界面,说明安装完成

使用官方例程

  • ESP官方为我们提供大量的例程,并且写详细的使用方法与效果,点击此处查看
创建例程
  1. 使用快捷键F1,输入
    esp-idf:show examples projects

  2. 选择你当前的IDF版本
  3. 以Hello world例程为例
  4. ①选择对应例程
  5. ②其readme会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
  6. ③点击创建例程
  7. 选择放置例程的路径,要求无例程同名文件夹
修改COM口
  1. 此处显示使用对应的COM口,点击可以修改对应COM口
  2. 我们的CH343的COM为COM5,所以我们选择COM5,请根据自己CH343对应COM口进行选择
  3. 选择使用的工程或者例程
  4. 然后我们的COM口就修改好了
修改驱动对象
  1. 此处显示的是使用的驱动对象,点击可以修改对应驱动对象
  2. 选择使用的工程或者例程
  3. 点击后需要稍等片刻
  4. 选择我们需要驱动的对象,也就是我们的主芯片为ESP32S3
  5. 选择openocd的路径,这里对我们没有影响,所以我们随便选择一个即可
其余状态栏简介

  • ①SDK 配置编辑器,ESP-IDF很多功能与配置可以在其内修改
  • ②全部清理,清空所有编译文件,
  • ③编译
  • ④当前下载方式,默认为UART
  • ⑤烧录当前固件,请在编译后进行
  • ⑥打开串口监视器,用于查看串口信息
  • ⑦编译,烧录,打开串口监视器 一体按键(调试时最常用)
编译、烧录、串口监视
  1. 点击我们之前介绍的 编译,烧录,打开串口监视器按键
  2. 编译可能需要较长时间才能完成,尤其是在第一次编译时。

    • 在此过程中,ESP-IDF可能会占用大量CPU资源,因此可能会导致系统卡顿。
  3. 因为我们使用的是CH343为USB转串口芯片,并且板载自动下载电路,无需手动操作即可自动下载
  4. 下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示10S后重启



Arduino

  • 如果没用使用过arduino-esp32的基础建议仔细阅读官方文档,点击此处查看

安装Arduino IDE

  1. 打开官网软件下载页面,选择对应的系统和系统位数下载
  2. 可以选择直接下载,也可以选择捐赠并下载
  3. 运行安装程序,全部默认安装即可

在线安装arduino-esp32

  1. 打开首选项
  2. 添加对应的板管理链接,点击该按键
  3. 在第一个空白处,添加下文
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

  4. 保存设置
  5. 打开板管理器并搜索输入ESP32
  6. 等待下载
  7. arduino-esp32下载完成

离线安装arduino-esp32

  1. 离线包(提取码:1r4i)
    • 提取码:1r4i
  2. 将压缩包解压缩
  3. 将解压文件放在对应用户的arduino器件包目录
    C:\Users\{用户名}\AppData\Local\Arduino15\packages\
    以用户名为waveshare为例
    C:\Users\waveshare\AppData\Local\Arduino15\packages\
  4. 关闭全部arduino窗口,确保arduino关闭
  5. 打开arduino,并打开板管理器,看到esp32-arduino已经安装即可

使用Arduino例程

  1. 选择例程,这里我们选择获取芯片ID的例程
  2. 选择我们的板子为 ESP32S3 Dev Moudule
  3. 选择我们的端口号,这里我们选择CH343的COM5
  4. 点击下载按键,此时会自动编译并下载
  5. 下载完成
  6. 打开串口监视器
  7. 看到循环输出的芯片ID

Cat-1模组指令集

HTTP

AT指令

指令说明

返回值

AT+HTTPINIT

开启HTTP service

OK

AT+HTTPPARA="URL",https://www.waveshare.cloud/api/sample-test/

连接远端server

OK

AT+HTTPDATA=5,1000

输入数据

DOWNLOAD <键入 hello OK

AT+HTTPACTION=0

开始HTTP请求,0:GET;1:POST;2:HEAD;3:DELETE;4:PUT

OK

+HTTPACTION: 0,200,54

AT+HTTPTERM

关闭HTTP service

OK

AT+HTTPPARA

设置HTTP参数

OK

AT+HTTPHEAD

读取HTTP响应头信息

OK

AT+HTTPREAD

读取HTTP响应信息

OK

MQTT

AT指令

指令说明

返回值

AT+CMQTTSTART

开启MQTT服务

OK

AT+CMQTTACCQ=0,"Waveshare-7670X",0

申请MQTT client

OK

AT+CMQTTCONNECT=0,"tcp://mqtt.easyiothings.com",20,1

发送 MQTT 请求,连接私有MQTT服务器(MQTTS)

OK

AT+CMQTTTOPIC=0,8

输入消息发布主题

>A7670Pub OK

AT+CMQTTPAYLOAD=0,9

输入发布的消息内容

OK >waveshare

AT+CMQTTPUB=0,0,60

发布消息

OK +CMQTTPUB: 0,0

AT+CMQTTSUB=0,8,1

订阅消息主题

>A7670Sub OK +CMQTTSUBTOPIC: 0,0

[10:03:39.665]收←◆ +CMQTTRXSTART: 0,8,15 +CMQTTRXTOPIC: 0,8 A7670Sub +CMQTTRXPAYLOAD: 0,15 {"data":"test"} +CMQTTRXEND: 0

AT+CMQTTSTOP

停止MQTT服务

OK

AT+CMQTTREL

释放客户端

OK

AT+CMQTTUNSUBTOPIC

释放订阅主题

OK

AT+CMQTTUNSUB

释放订阅

OK


GNSS

AT+CGNSSPWR=1开启GNSS功能+CGNSSPWR: READY!
AT+CGNSSTST=1开启GNSS数据输出OK

例程讲解

ESP32-S3应用

Camera

本例程是基于ESP32的CameraWebServer例程

  • 首先需要设置WIFI名和密码,切换默认硬件为ESP32S3
  • 请打开开发板背面拨码开关的 CAM 开关,并接入支持的摄像头
  • 确认CameraPins
#define PWDN_GPIO_NUM     -1
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM     34
#define SIOD_GPIO_NUM     15
#define SIOC_GPIO_NUM     16
#define Y9_GPIO_NUM       14
#define Y8_GPIO_NUM       13
#define Y7_GPIO_NUM       12
#define Y6_GPIO_NUM       11
#define Y5_GPIO_NUM       10
#define Y4_GPIO_NUM       9
#define Y3_GPIO_NUM       8
#define Y2_GPIO_NUM       7
#define VSYNC_GPIO_NUM    36
#define HREF_GPIO_NUM     35
#define PCLK_GPIO_NUM     37

  • 烧录代码,打开终端访问提示的IP即可

TF-Card

  • 将TF-Card插入TF卡槽
  • 定义引脚
const int SDMMC_CLK = 5;
const int SDMMC_CMD = 4;
const int SDMMC_DATA = 6;
const int SD_CD_PIN = 46;

  • 烧写程序,打开终端显示文件内容

ESP32-S3-A-SIM7670X-4G-HAT 231115 01.png

RGB

本开发板使用一颗WS2812b炫彩灯珠,信号引脚为38

烧录示例代码后LED灯渐变

BAT

本开发板使用MAX17048作为电池电量测量IC

  • 首先确定I2C引脚

ESP32-S3-A-SIM7670X-4G-HAT 231115 03.png

  • 烧写代码更改阈值

ESP32-S3-A-SIM7670X-4G-HAT 231115 04.png

随身WIFI Demo应用

  • 本Demo应用使用TinyUSB协议栈与4G Cat-1模组通信,使用ppp拨号直接为ESP32-S3供网
  • 本Demo使用编译好的固件,请先下载Flash Tools下载工具
  • 打开Flash Tools工具,选择开发模式,选定该固件,地址为0x0,如图所示,插入SIM卡下载启动程序

  • 将开发板背面拨码开关4G开启,USB关闭,重新上电开发板,等待炫彩LED显示红色,打开手机连接WIFI:ESP32-S3-A-SIM7670X-4G-HAT,密码:12345678即可上网


Waveshare Cloud应用

请下载示例程序,打开GNSS-With-WaveshareCloud示例代码

本应用通过ESP32-S3软串口与SIM7670G通信,通过发送AT指令开启GNSS并解析NMEA GNSS数据上传至Waveshare Cloud,通过Web View地图页面显示开发板的具体位置

这里使用Waveshare Cloud提供的地图服务来作演示: 1.通过设备|设备属性页面创建任意类型的设备,并获取MQTT连接数据

2.将参数填入GNSS-With-WaveshareCloud程序中。

GNSS with wavesharecloud.png

FAQ

软件配置

问题:示例中ESP32-S3是如何通过4G模组的USB进行拨号上网的?

ESP32-S3通过串口、USB都可以进行ppp拨号上网,本示例中通过TinyUSB协议,使用枚举USB的地址进行拨号上网


问题:为什么要对应的版本库?

不同版本的库是基于不同版本的 ESP-IDF开发的,有较大差异,因此不兼容, 如果一定要使用别的版本库,原先程序可以正常运行的程序可能需要自行进行一些调整才可使用,不建议这样操作


问题:ESP32-S3拨号上网代码如何修改?

本示例中的代码通过esp-idf进行编译烧录,使用Arudino IDE需要进行移植tinyUSB和ppp数据包处理等


问题:能帮我看下代码吗?能否帮我修改代码?

本产品定位于开发板,并不是成品产品。关于产品生态属于是ESP32核心,生态很成熟,开发环境也很友好,我们不协助修改代码,请各位创客、极客自行发挥DIY能力,如有疑问可以询问工程师为您解答。
如您觉得我们的产品不错,希望批量定制硬件、定制外壳、定制软件等,欢迎联系销售


问题:代码可以协助修改么?

我们不协助修改和分析代码,请自行处理,抱歉!


问题:随身WIFI这个,打开网页好卡,你们那边会吗?

  • 测速软件会尽可能拉满速度,这个时候模组和ESP32-S3之间的数据包传输拉满,造成卡顿,Cat-1模组,速度有限,只做测试使用
  • 如果客机需求带宽太大可能会出现崩溃,介时可以从源码自行修改代码做处理


问题:是否可以通过模组本身连接WaveshareCloud并上报经纬度等数据?

目前开发板是通过软串口连接A/SIM7670X 4G模组的串口,通过AT指令打开GNSS功能后将模组收取到的卫星信号数据切换到模组的串口输出,此时发送AT指令给串口也可以通过,此时执行Publish指令可以将需要的数据上发,从平台监听的返回值要做好NMEA信号数据的过滤即可。



问题:针对随身WiFi例程,选择不同运营商如何手动设置模组APN?

使用随身WiFi例程默认设置为空,如果模组不能自动识别SIM卡APN运营商则需要修改提供的源码,参考ESP32-S3-A-SIM7670X-4G-example目录下README.md

具体步骤如:

1、参照开发环境配置的ESP-IDF篇,安装ESP-IDF开发环境以及vscode编程工具。

2、使用vscode打开示例程序,进入menuconfig手动设置APN。

Set esp32-s3-a-sim7670x-4g-apn.png

3、向开发板烧录程序,断电重启开发板即可。


提供的所有示例例程所使用的库都是从Arduino IDE library中下载安装的。库文件在不断更新迭代,通常缺少库直接在Arduino IDE中下载安装即可。



问题:收不到GPS信号,没有获取到位置信息怎么办?

  • 插上GPS天线到GNSS天线座子,并将接收器标签面朝下置于空旷的室外(注意阴雨天气测试不了),上电需要等待约1分钟才能接收到定位信号;
由于 GPS 室内搜星不稳定,请将模块或者天线放到阳台或窗户旁,或者直接在户外可视天空下进行实验.

Visible-sky.png


问题:这款开发板有没有将摄像头的视频通过4g远程传输的例程呢?

  • 这个没有现成的示例程序,请自行编程,二次开发实现
  • 模组只提供数据连接,ESP32采集摄像头是有一个视频流的,这个视频流暂时是用html显示,也就是直接显示到网页上
  • 业务逻辑不复杂情况下,通过TCP协议发送指令控制ESP32-S3连接的摄像头拍照是可行的,模组收到TCP server消息时会把内容打印到串口上,只需要对ESP32-S3编程读取模组的串口数据,并设定一些标识信号,如:TCP server发送take_photos字段,ESP32-S3读取模组串口,检测到字段后执行相应的程序如拍照,拍照完可以将图片数据转换base64格式打包,通过串口发送AT指令携带base64图片数据传输给模组,模组执行TCP任务,将数据传输到server
  • 如果把视频流数据通过模组映射出去就可以实现图传功能;理论是没问题的;需要搭建有公网IP的服务器等等,理论上关于4G图传是可以实现的,4G模组给ESP32-S3供网,将摄像头画面通过frp转发到公网的代理服务器,代理到公网服务器分配资源是可以做到远程摄像头功能
  • 其实这个性能是比较有限的,如果要稳定传输高清视频,建议用树莓派等linux主控+4/5G蜂窝模块方案


问题:为什么摄像头画面黑屏?

请和下图一样配置,尤其注意内存配置:

Flash Size: "16MB (128Mb)"
PSRAM: "OSPI PSRAM"
Flash Mode: "QI0 80MHz"

7670-CAM.png


问题:为什么烧录AP示例程序后,没有出现对应的热点?

要实现热点功能:

0) X7670X 要注册到网络和成功拨号上网
1) 将开发板背面拨码开关4G开启,USB关闭,重新上电开发板
2)  正确下载对应的固件,切记不要混淆A7670 和 SIM7670 固件,记得勾选
3)  验证阶段请用能打电话的手机卡,建议从手机取下验证过的卡,物理网卡限制多,容易被封号,验证功能没问题后再用



问题:怎么单独测试模组的打电话,定位等功能?

  • 将所有拨码开关打开

esp32-s3-7600-code.png

  • 参考上文步骤安装库后,可以用以下例程代码实现打电话,短信和定位等单个功能:
https://files.waveshare.com/wiki/ESP32-S3-A7670E-4G/code/Hard-serial-esp32-7670.zip

Esp-hard-demo.png


硬件功能

问题:ESP32-S3-SIM7670G-4G 不接电源时,用电池可以开机吗?

  • 1)首次上电池(也就是安装电池后)需要接电源激活保护机制(这个机制是防止反接用的),电池充满电后 ,可以无需接电源
  • 2)此外也可以放电激活,typec 接口除了可以充电,也可以给外部设备供电,让模块对外部设备供电,达到放电目的,也可以激活


问题:摄像头是否支持自动对焦?

配套的摄像头不支持自动对焦


问题:这款功耗多少,一个电池可以拍多久?

不同的应用场景,时间不一样,比方说持续拍照或视频,电流是1.8A(功耗是9W左右),这个电池是2600mAh 左右,那就是1.5h 左右
Esp32-7670-18650.jpg


问题:每个拨码开关的分别有功能?

每个拨码开关功能如下:
Esp32-dip.png


问题:esp32-s3-a7670e-4g这块开发版有多少io和外设可以自己定义?

浅色是板载摄像头,TF卡等外设占用,如果不用对应的外设功能,可以通过排针引出去做其他功能:


技术支持

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841


[教程导航]