当前位置: 首页 > news >正文

电路研究9.3——合宙Air780EP中的AT开发指南(含TCP 示例)

       根据合宙的AT研发推荐, AT指令基本上也简单看完了,这里开始转到AT的开发了。

        AT 命令采用标准串口进行数据收发,将以前复杂的设备通讯方式转换成简单的串口编程, 大大简化了产品的硬件设计和软件开发成本,这使得几乎所有的网络模组如 GPRS3G/4G 、 NB-IoT、蓝牙、WiFi GPS 等模组都采用 AT 命令。 随着物联网时代的发展,AT 命令被广泛的用于单片机(MCU+ 网络模块这样的物联网开发模式。但这种开发模式单片机是必不可少的部分,因而会使产品的成本相应的高些。 AT 固件是标准固件,所以能支持的驱动也比较少,只有模块状态灯、摄像头扫码、SD 卡等外设驱动功能。要想要支持更多的外设建议用 LuatOS 二次开发固件进行二次开发。        

        根据介绍AT指令需要MCU+GPRS的配合,我们这里也考虑到是否使用到stm32了。根据我们这里使用的GPRS模块本身具备的功能,具备了我们需要的功能了,所以我们这里考虑直接使用AT指令了。

        AT 命令语法介绍:

        本手册中所有命令行必须以"AT""at"作为开头,以回车(<CR>)作为结尾。响应通常紧随命令之后,它的样式是“<回车><新行><响应内容><回车><新行>”(<CR><LF><响应内 容><CR><LF>) 。整本手册里,只有<响应内容>被自始至终介绍,而<回车><新行>被有意省略了。合宙无线模块提供的 AT 命令包含符合 GSM07.05GSM07.07 ITU-T Recommendation V.25ter 的命令。

        之前也在AT指令学习中提到过下面这些:所有 AT 命令从语法上可以分为三类:基础类“S 参数类以及扩展类,分别介绍如下:

        基础类 AT 命令 :这类 AT 命令具有“AT<x><n>”或者“AT&<x><n>”格式,其中“<x>”是命令;“<n>” 可以是一个或者多个参数。例如:“ATE<n>”,该命令用于为 DCE 开关回显功能,即 DCE 会依据“<n>”值决定是否把接收的字符回显给 DTE“<n>”是选配参数,若没有 赋值,模块将使用默认值。

        参数类 AT 命令:这类 AT 命令格式为“ATS<n>=<m>”,其中“<n>”S 寄存器的索引;“<m>”是赋予 的值。“<m>” 是选配参数,若没有赋值,模块将使用默认值。

        扩展类 AT 命令 一般来讲,扩展类命令依据功能可以分为以下几种类型:
        
AT 开发基本架构
        
AT 开发优缺点
         AT 开发的优势 AT 指令作为单片机和通信模块的桥梁,很好的兼顾了单片机开发的特点,
又满足了产品联网的需求。 AT 指令是一种通用的使用方式,在无线模块领域也流行了 20
年。
        AT 开发的缺点 :成本相应的高些,能支持的驱动也比较少。
        确实这个,感觉上选用AT指令的会少一些,不过以前到是用过AT指令来着,不过是构建在stm32的基础之上的。我们这里因为用到了GPRS,所以只能是通过STM32控制GPRS或者直接写到GPRS里面,这个因为GPRS的功能可能够了吧。
         9.2 AT 固件
        这个需要购买GPRS器件,应该附带了固件库吧。
        9.3 AT 命令手册
        之前研究的就是这个手册,之后使用会用到之前研究的,或许需要调整更改吧。
        9.4 AT 开发环境搭建
        这个暂时我们没有Air780EP 开发板,所以先学习一下使用,不做测试了。好像虚拟串口,所以我们研究一下虚拟串口:
        下面是我在网上找的一个虚拟串口工具,我试了试,没有深入研究,不过可以虚拟出来串口,放在了百度网盘的分享里面,不大也就5M左右,供大家研究。
        通过网盘分享的文件:VSPD6.9虚拟串口破解汉化版.zip
链接: https://pan.baidu.com/s/1E-bh5_l38KReuUdLlvNR1g?pwd=4iqg 提取码: 4iqg
        9.5 AT 开发应用指南
        9.5.1 TCP(SSL) 应用指南
        TCP 示例
        开机:这个之前也讲过怎么开机,这里再列出来: 通过拉低 powerkey2 秒进行开机,开机以后通过串口循环发送 AT 直到收到 OK ,如果 90 没有收到 OK 请拉低 RESET_IN_N 引脚 150ms 以上。这个也就是模块的开机了,我当时设计时候没有接触RESET_IN_N 引脚,所以这里就断电试试吧,如果不行我再飞线拉低RESET_IN_N 引脚好了。
         查询 SIM 卡状态: 发送 AT+CPIN? 查询 SIM 卡状态【看起来是已多次发送AT+CPIN?】,直到收到+CPIN: READY ,模块主动上报 SIM REMOVED 和查询返回 +CME ERROR: 10 是模块没有检测到 SIM 卡,如果 10s 内没有收到建议重启模块,如果重启问题依旧需要检查卡是否有插好,或者排查板子的硬件连接。
         查询模块信号强度: 一般信号强度 18 以上才能稳定通讯; 11-17 能连接,会有断网的可能, 10 以下基本连接不 上,在不能联网的情况下,可以先参考一下信号强度如何。
         5.1 查询信号质量: AT+CSQ
        
使用这个指令查询一下是否满足通腾讯条件。
查询网络注册情况: AT+CGATT? 查询是否注册网络收到 +CGATT: 1 值是 1 即为注册成功,正常情况下注册时间不会超过两分钟,如果超过两分钟没有注册可以 进入飞行模式五秒后退出再查询,或者直接重启模块。 值是 0 则没有注册成功。                 
        8.2 GPRS 附着分离: AT+CGATT
        设置命令用于将 MT 附着 GPRS 业务,或将 MT 从 GPRS 业务分离。查询命令返回当前的 GPRS 附着状态。
这个 GPRS 附着分离,之前觉得没所谓了,所以并没深入关注,只是点到了,折现查询就不太清楚了。
        激活网络:
AT+CSTT 配置网络,非私有 APN 以外 Cat1 的固件支持根据卡自动配置 APN ,直接输入
AT+CSTT 即可,模块会按照自动获取的 APN 设置 CSTT APN AT+CIICR 激活网络,在 IP START 的状态使用 AT+CIICR 激活网络 AT+CIFSR 查询是否获取 IP ,如果成功就可以开始配置 TCP 连接了,如果不成功使用 AT+CIPSHUT 关闭移动网络,从 AT+CSTT 重新进行。一定要查询一次再进行服务器连接。
         12.2 启动任务并设置接入点 APN 、用户名、密码: AT+CSTT
        
12.4 激活移动场景 ( 或发起 GPRS CSD 无线连接 ) AT+CIICR
12.5 查询本地 IP 地址: AT+CIFSR
这个几个AT指令不知道是否使用过,之前举例,不过没记在心里呢。
连接 TCP: 此处使用的是非 SSL 连接, TCP/UDP 测试网页 TCP/UDP 测试网页 使用 AT+CIPSTART 来建立连接。
         12.9 建立 TCP 连接或注册 UDP 端口号: AT+CIPSTART
根据 AT+CIPSTART 建立了连接。
发送数据: AT+CIPSEND 可以发送定长或不定长数据,收到 > 以后就可以发送数据(最大 1460 字节)。 如果是定长数据,输入数据达到长度会向服务器自动发送数据。 如果是不定长数据,输入数据后发送十六进制 1A 结束发送,发送完 1A 以后设备会向服务器 发送 1A 之前的所有数据。 定长数据,假设这里发送 10 个字节数据AT+CIPSEND=10
         12.14 发送数据: AT+CIPSEND
这里是发送数据的了。
不定长数据 直接发送 AT+CIPSEND ,会返回一个 > 符号,之后可以输入数据,数据输入完毕后,发送十 六进制的 1A ,结束发送,模块会将输入的数据发送到服务器 发送 AT+CIPSEND 后,可以看到返回了一个 >,后续输入的内容没有返回值,此时再发送十六进制的 1A 来结束发送,才会收到返的  SEND OK
         其他说明: 最新的 AT 固件支持开机直接发送 AT+CIPSTART 联网,不过不推荐使用,推荐根据状态机一 步一步实现。
        这个可以考虑使用,毕竟我们打算不采用MCU单片机来控制呢。
        补:今天先这样,之后再把 TCP 使用 SSL 示例贴出来。

相关文章:

电路研究9.3——合宙Air780EP中的AT开发指南(含TCP 示例)

根据合宙的AT研发推荐&#xff0c; AT指令基本上也简单看完了&#xff0c;这里开始转到AT的开发了。 AT 命令采用标准串口进行数据收发&#xff0c;将以前复杂的设备通讯方式转换成简单的串口编程&#xff0c; 大大简化了产品的硬件设计和软件开发成本&#xff0c;这使得几乎所…...

Qt 数据库SQLite 使用【01】基本功能

1.开发背景 Qt 开发过程中难免需要存储数据&#xff0c;可以选择保存到本地文件&#xff0c;但是查找比较麻烦&#xff0c;所以就有了数据库&#xff0c;主要是方便查找数据&#xff0c;增删改查等操作&#xff0c;而 SqLite 属于数据库中轻量级的存在&#xff0c;适合本地数据…...

stm32小白成长为高手的学习步骤和方法

我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解&#xff0c;请立即阅读STM32的文档&#xff0c;以获取最基本的知识点。STM32单片机自学教程 这篇博文也是一篇不错的入门教程&#xff0c;初学者可以看看&#xff0c;讲的真心不错。 英文好的同学&#xf…...

大模型产品Deepseek(五)、本地安装部署(Docker方式)

DeepSeek 本地部署指南 DeepSeek是一款高效的智能搜索与推荐引擎,除了通过云端API提供服务外,它还支持本地部署,让开发者可以完全控制数据和计算资源。通过本地部署,您可以将DeepSeek集成到内部系统中,在私有环境下运行模型,减少对外部API的依赖,同时提升数据隐私性与响…...

Kafka 的消费offset原来是使用ZK管理,现在新版本是怎么管理的?

目录 基于 ZooKeeper 管理消费 offset 原理 缺点 新版本基于内部主题管理消费 offset 原理 优点 示例代码(Java) 在 Kafka 早期版本中,消费者的消费偏移量(offset)是存储在 ZooKeeper 中的,但由于 ZooKeeper 并不适合高频读写操作,从 Kafka 0.9 版本开始,消费偏…...

基于改进型灰狼优化算法(GWO)的无人机路径规划

内容&#xff1a; 基于改进型灰狼优化算法的无人机轨迹规划 GWO是一种群体智能优化算法&#xff0c;模仿灰狼的社会等级和狩猎行为。原始的GWO有一些局限性&#xff0c;比如容易陷入局部最优&#xff0c;收敛速度慢等&#xff0c;所以改进型的GWO可能通过不同的策略来优化这些…...

JS中|=是什么意思?

在JavaScript中&#xff0c;| 是一个位运算符的复合赋值操作&#xff0c;具体表示按位或赋值运算。这个操作符会对两个操作数进行按位或&#xff08;|&#xff09;运算&#xff0c;然后将结果赋值回左操作数。 let a 5; // 二进制表示为 0101let b 3; // 二进制表示为 0011a …...

快速上手Vim的使用

Vim Linux编辑器-vim使用命令行模式下所有选项都可以带数字底行模式可视块模式&#xff08;ctrlV进入&#xff09; Linux编辑器-vim使用 Vim有多种模式的编辑器。能帮助我们很快的进行代码的编辑&#xff0c;甚至完成很多其他事情。 默认情况下我们打开vim在命令模式下&#x…...

RPA与深度学习结合

什么是RPA RPA即机器人流程自动化&#xff08;Robotic Process Automation&#xff09;&#xff0c;它是一种利用软件机器人模拟人类在计算机上的操作&#xff0c;按照预设的规则自动执行一系列重复性、规律性任务的技术。这些任务可以包括数据录入、文件处理、报表生成、系统…...

在阿里云ECS上一键部署DeepSeek-R1

DeepSeek-R1 是一款开源模型&#xff0c;也提供了 API(接口)调用方式。据 DeepSeek介绍&#xff0c;DeepSeek-R1 后训练阶段大规模使用了强化学习技术&#xff0c;在只有极少标注数据的情况下提升了模型推理能力&#xff0c;该模型性能对标 OpenAl o1 正式版。DeepSeek-R1 推出…...

长安汽车发布“北斗天枢2.0”计划,深蓝汽车普及全民智驾

2月9日&#xff0c;长安汽车智能化战略“北斗天枢2.0”计划暨深蓝汽车全场景智能驾驶解决方案发布会在重庆盛大召开。此次发布会标志着长安汽车正式迈入智能化战略的新纪元&#xff0c;携手众多“中国智驾合伙人”&#xff0c;共同开启全民智驾元年。 发布会上&#xff0c;长安…...

Aitken 逐次线性插值

Aitken 逐次线性插值 用 Lagrange 插值多项式 L n ( x ) L_n(x) Ln​(x)计算函数近似值时&#xff0c;如需增加插值节点&#xff0c;那么原来算出的数据均不能利用&#xff0c;必须重新计算。为克服这个缺点&#xff0c;可用逐次线性插值方法求得高次插值。 令 I i 1 , i 2…...

docker 安装 Prometheus、Node Exporter 和 Grafana

Docker Compose 配置文件 docker-compose.yml services:prometheus:image: prom/prometheus:latestcontainer_name: prometheusvolumes:- ./prometheus.yml:/etc/prometheus/prometheus.yml # 挂载配置文件 - prometheus_data:/prometheus # 持久化数据存储 command:- --…...

【LeetCode 热题100】74:搜索二维矩阵(二分、线性两种方式 详细解析)(Go 语言实现)

&#x1f680; 力扣热题 74&#xff1a;搜索二维矩阵&#xff08;详细解析&#xff09; &#x1f4cc; 题目描述 力扣 74. 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵 matrix &#xff1a; 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的…...

元数据、数据元、数据元素、数据项 和 主数据的概念

一、元数据 1.概念 元数据&#xff0c;又称中介数据、中继数据&#xff0c;为描述数据的数据。主要是描述数据属性的信息&#xff0c;用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。 2.实例 数据库中&#xff0c;表的名称、表字段名、其他相关的描述信息&a…...

阿里云cdn怎样设置图片压缩

阿里云 CDN 提供了图像加速服务&#xff0c;其中包括图像压缩功能。通过设置图片压缩&#xff0c;可以显著减小图片文件的体积&#xff0c;提升网站加载速度&#xff0c;同时减少带宽消耗。九河云来告诉你如何进行图片压缩吧。 如何设置阿里云 CDN 图片压缩&#xff1f; 1. 登…...

白话文实战Nacos(保姆级教程)

前言 上一篇博客 我们创建好了微服务项目,本篇博客来体验一下Nacos作为注册中心和配置中心的功能。 注册中心 如果我们启动了一个Nacos注册中心,那么微服务比如订单服务,启动后就可以连上注册中心把自己注册上去,这过程就是服务注册。每个微服务,比如商品服务都应该注册…...

7. 基于DeepSeek和智谱清言实现RAG问答

课件链接&#xff1a;https://cloud.189.cn/t/VNvmyimY7Vna&#xff08;访问码&#xff1a;e4cb&#xff09;天翼云盘是中国电信推出的云存储服务&#xff0c;为用户提供跨平台的文件存储、备份、同步及分享服务&#xff0c;是国内领先的免费网盘&#xff0c;安全、可靠、稳定、…...

【数据结构】双向链表(真正的零基础)

链表是一种物理存储单元上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过指针的链接来实现的&#xff01;在上篇我们学习了单向链表&#xff0c;而单向链表虽然空间利用率高&#xff0c;插入和删除也只需改变指针就可以达到&#xff01;但是我们在每次查找、删除、访问..…...

【生产变更】- Oracle RAC添加配置ipv6地址

【生产变更】- Oracle RAC添加配置ipv6地址 一、概述二、环境检查及备份2.1 检查并备份系统层面IP配置2.2 检查并备份监听配置2.3 检查并备份网卡配置2.4 检查并备份/etc/hosts三、集群层面配置3.1 检查集群配置3.2 停止集群组件3.3 Bond0网卡设置3.4 /etc/hosts文件配置3.5 重…...

Ai无限免费生成高质量ppt教程(deepseek+kimi)

第一步&#xff1a;打开deepseek官网&#xff08;DeepSeek) 1.如果deepseek官网网络繁忙&#xff0c;解决方案如下&#xff1a; (1)使用easychat官网&#xff08;EasyChat&#xff09;使用deepseek模型&#xff0c;如图所示&#xff1a; &#xff08;2&#xff09;本地部署&…...

python全栈-python基础

python基础 文章目录 python基础python入门基础概念序列列表元组 -- 不可变序列字典字典的本质集合 控制语句选择结构 - 条件判断结构循环结构zip()推导式 函数及原理参数LEGB规则 面向对象私有属性和私有方法面向对象的特征重写__str__()方法super获得父类的定义特殊方法和运算…...

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…...

力扣 零钱兑换

完全背包&#xff0c;动态规划例题。 题目 这题跟完全背包跟完全平方数有点相似。在完全平方数中&#xff0c;用一个dp数组去取得目标金额的每一步的最优&#xff0c;当前状态可能来自上一个dp&#xff0c;也有可能比上一个dp更小&#xff0c;因此往回退一步加一做比较。在完全…...

C# OpenCV机器视觉:OSTU算法实现背景差分的自适应分割

在一个热闹的科技公司里&#xff0c;阿强是一个负责图像分析的员工。他的日常工作就是从各种复杂的图像中提取出有用的信息&#xff0c;可这可不是一件轻松的事情哦 最近&#xff0c;阿强接到了一个艰巨的任务&#xff1a;要从一堆嘈杂的监控图像中分离出运动的物体&#xff0c…...

快速搭建 Elasticsearch 8 集群:零基础实战与升级注意事项

引言 随着大数据技术的飞速发展,Elasticsearch 成为许多应用场景中不可或缺的技术,它以其高效的全文搜索引擎和分布式存储架构在企业和个人项目中占据了一席之地。无论是在日志分析、实时搜索还是数据可视化中,Elasticsearch 都发挥着重要的作用。 在这篇文章中,我们将为…...

基于扑克牌分发效果制作时的问题总结

其基本效果如图 1. 在overlay模式下直接使用position来移动 实现代码 public class Card : MonoBehaviour {public RectTransform target;public Button cardButton;private bool isPack false;public List<RectTransform> cards new List<RectTransform>(…...

老榕树的Java专题:Redis 从入门到实践

一、引言 在当今的软件开发领域&#xff0c;数据的高效存储和快速访问是至关重要的。Redis&#xff08;Remote Dictionary Server&#xff09;作为一个开源的、基于内存的数据结构存储系统&#xff0c;因其高性能、丰富的数据类型和广泛的应用场景&#xff0c;成为了众多开发者…...

【玩转 Postman 接口测试与开发2_019】第15章:利用 Postman 初探 API 性能测试(含实战截图)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十五章 API 接口性能测试1 性能负载的类型2 Postman 负载配置3 Postman 性能测试实战3.1 Fixed 型负载下的性能测试3.2 基于数据驱动的 Postman 接口性能测试 4 性能测试的注意事项 写在前面 终于来到了…...

在 Qt 开发中,可以将 QML 封装成库

在 Qt 开发中&#xff0c;可以将 QML 封装成库&#xff0c;以便在多个项目中复用 QML 组件或模块。下面通过一个简单的例子说明如何将 QML 封装成库并在其他项目中使用。 1. 创建 QML 库项目 首先&#xff0c;我们创建一个新的 Qt 项目&#xff0c;专门用于封装 QML 组件。假…...