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

电路研究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;这使得几乎所…...

Reqable使用实践

一、背景 日常开发中&#xff0c;难免要抓取请求数据&#xff0c;查看接口数据&#xff0c;从而更好定位问题&#xff0c;基于这个原因&#xff0c;查找了一些抓包工具&#xff0c;例如&#xff1a; HttpCanary、 Steam 、Fiddler等&#xff0c;不是要钱&#xff0c;就是只对苹…...

【蓝桥杯嵌入式】2_LED

全部代码网盘自取 链接&#xff1a;https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码&#xff1a;3ii2 1、电路图 74HC573是八位锁存器&#xff0c;当控制端LE脚为高电平时&#xff0c;芯片“导通”&#xff0c;LE为低电平时芯片“截止”即将输出状态“锁存”…...

Flink 调用海豚调度器 SQL 脚本实现1份SQL流批一体化的方案和可运行的代码实例

目录 一、流批一体化概述 二、Flink 与海豚调度器结合实现流批一体化的好处 2.1 代码复用性增强 2.2 开发和维护成本降低 2.3 数据一致性保证 2.4 提高系统的灵活性和可扩展性 三、实现思路步骤 3.1 环境准备 3.2 编写 SQL 脚本并上传到海豚调度器 3.3 实现资源下载功…...

B树详解及其C语言实现

目录 一、B树的基本原理 二、B树操作过程图形化演示 三、B树的应用场景 四、C语言实现B树及示例 五、代码执行结果说明 六、应用实例&#xff1a;文件系统目录索引 七、总结 一、B树的基本原理 B树&#xff08;B-Tree&#xff09; 是一种自平衡的树数据结构&#xff0c;…...

【Go语言快速上手】第二部分:Go语言进阶

文章目录 并发编程goroutine&#xff1a;创建和调度 goroutinechannel&#xff1a;无缓冲 channel、有缓冲 channel、select 语句无缓冲 channel有缓冲 channelselect 语句 sync 包&#xff1a;Mutex、RWMutex、WaitGroup 等同步原语Mutex&#xff1a;互斥锁RWMutex&#xff1a…...

ARM64 Linux 内核学习指南:从基础到实践

前言 ARM64 作为当今主流的处理器架构&#xff0c;被广泛应用于移动设备、嵌入式系统和服务器领域。学习 ARM64 在 Linux 内核中的实现&#xff0c;不仅有助于深入理解操作系统底层机制&#xff0c;还能提升在内核开发、驱动编写、虚拟化等领域的专业能力。 本指南面向对 Lin…...

零基础都可以本地部署Deepseek R1

文章目录 一、硬件配置需求二、详细部署步骤1. 安装 Ollama 工具2. 部署 DeepSeek-R1 模型3. API使用4. 配置图形化交互界面&#xff08;可选&#xff09;5. 使用与注意事项 一、硬件配置需求 不同版本的 DeepSeek-R1 模型参数量不同&#xff0c;对硬件资源的要求也不尽相同。…...

掌握Spring @SessionAttribute:跨请求数据共享的艺术

SessionAttribute注解在Spring中的作用&#xff0c;就像是一个“数据中转站”。 在Web应用中&#xff0c;我们经常需要在多个请求之间共享数据。比如&#xff0c;用户登录后&#xff0c;我们需要在多个页面或请求中保持用户的登录状态。这时&#xff0c;SessionAttribute注解就…...

视频采集卡接口

采集卡的正面有MIC IN、LINE IN以及AUDIO OUT三个接口&#xff0c; MIC IN为麦克风输入&#xff0c;我们如果要给采集到的视频实时配音或者是在直播的时候进行讲解&#xff0c;就可以在这里插入一个麦克风&#xff0c; LINE IN为音频线路输入&#xff0c;可以外接播放背景音乐…...

64【32与64位程序的区别】

很多人可能有一个观念&#xff0c;那就是64位的程序NB&#xff0c;有技术含量&#xff0c;但是要说nb在哪&#xff0c;很多人又说不上来&#xff0c;本节来对这个问题做一个探讨 下图中左边的是加载的64程序&#xff0c;右边的是32位程序&#xff0c; 在上一节课我们已经理解…...

ai智能DeepSeek 在 Cursor 中的配置与应用实践

DeepSeek 是一款高效的深度搜索引擎&#xff0c;能够为开发者提供更智能、更精准的搜索体验。在数据量大、查询复杂的场景中&#xff0c;DeepSeek 能够帮助提升查询的响应速度和精确度。本文将介绍 DeepSeek 在 Cursor 中的配置与应用&#xff0c;帮助开发者理解如何在实际开发…...

Deepseek的起源与发展

文章目录 前言一、Deepseek的起源二、DeepSeek的发展脉络三、Deepseek的突破与优势(1)功能强大:核心能力与应用场景(2)性能优势:效率与效果的革命性提升四、Deepseek开源引发关注前言 DeepSeek 在网络安全领域带来的新机遇,DeepSeek 从崭露头角到引领 AI 领域的重大变革,已…...

ubuntu conda运行kivy时报“No matching FB config found”

错误描述&#xff1a;本人使用ubuntu自带的python环境运行kivy是没有问题的&#xff0c;就是在使用conda时发生了错误&#xff0c;去网上寻找报错原因&#xff0c;却一直没有头绪&#xff08;这个问题有诸多问题导致的&#xff0c;不敢说用我的这个方法100%能好&#xff09; 1…...

1-1二分查找

二分查找 1 基础版1.1 算法描述1.2 算法流程图1.3 算法实现1.3.1 Java实现 2 改动版2.1 算法描述2.2 算法流程图2.3 算法实现2.3.1 Java实现 2.4 改进点分析2.4.1 区间定义差异2.4.2 核心改进原理2.4.3 数学等价性证明 3 平衡版3.1 算法描述3.2 算法流程图3.3 算法实现3.3.1 Ja…...

【如何掌握CSP-J 信奥赛中的深搜算法】

CSP-J 信奥赛中的深搜&#xff08;深度优先搜索&#xff09;算法是一个重要知识点&#xff0c;以下是一些学习深搜算法的建议&#xff1a; 理解基础概念 定义与原理&#xff1a;深度优先搜索是一种用于遍历或搜索图、树等数据结构的算法。它从起始节点开始&#xff0c;沿着一条…...

Unity笔试常考

线程同步的几种方式 1.信号量pv操作 2.互斥加锁 3.条件变量 五层网络协议指的是哪五层 1.应用层 2.运输层 3.网络层 4.链路层 5.物理层 TCP和UDP区别 tcp 面向连接&#xff0c;保证发送顺序&#xff0c;速度慢&#xff0c;必须在线&#xff0c;三次握手&#xff0c;4次挥手…...

知识图谱智能应用系统:基于人工智能的知识提取架构

在知识图谱智能应用系统中,知识提取是将非结构化数据(如文本、文档)转化为结构化知识的关键步骤。通过人工智能技术,系统能够自动识别文本中的实体、关系、属性和事件,并将其转化为可用于知识图谱构建的三元组数据。以下是对知识提取架构的详细描述,包括环境准备、数据标…...

Qt:Qt基础介绍

目录 Qt背景介绍 什么是Qt Qt的发展史 Qt支持的平台 Qt版本 Qt的优点 Qt的应用场景 Qt的成功案例 Qt的发展前景及就业分析 Qt背景介绍 什么是Qt Qt是⼀个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供了建立艺术级图形界面所需的所有功能。它是完全面向…...

【deepSeek R1】Ollama 更改模型安装位置 以及应用安装位置

【deepSeek R1】Ollama 更改模型安装位置 以及应用安装位置 本地版部署deepSeek R1 可以参考文章 3分钟教你搭建属于自己的本地大模型 DeepSeek R1 Ollama 是一个开源工具&#xff0c;旨在帮助用户轻松在本地计算机上运行、部署和管理大型语言模型&#xff08;LLMs&#xff09;…...

让office集成deepseek,支持office和WPS办公软件!(体验感受)

导读 AIGC:AIGC是一种新的人工智能技术&#xff0c;它的全称是Artificial Intelligence Generative Content&#xff0c;即人工智能生成内容。 它是一种基于机器学习和自然语言处理的技术&#xff0c;能够自动产生文本、图像、音频等多种类型的内容。这些内容可以是新闻文章、…...

DKG(Distributed Key Generation)协议

一、DKG是什么 DKG(分布式密钥生成)提供了一种去中心化的方法,使各个参与方在不相互信任的情况下生成共享密钥,以确保安全通信和多方参与的机密性。 DKG技术的关键思想是使用多方计算(secure multiparty computation)和秘钥共享(secret sharing)的概念。 秘钥共享 则…...

动态规划问题——青蛙跳台阶案例分析

问题描述&#xff1a; 一只青蛙要跳上n级台阶&#xff0c;它每次可以跳 1级或者2级。问&#xff1a;青蛙有多少种不同的跳法可以跳完这些台阶&#xff1f; 举个例子&#xff1a; 假设台阶数 n 3 &#xff0c;我们来看看青蛙有多少种跳法。 可能的跳法&#xff1a; 1. 跳1级…...

Spring(26) spring-security-oauth2 官方表结构解析

目录 一、什么是 spring-security-oauth2&#xff1f;二、spring-security-oauth2 的表结构2.1 oauth_client_details 客户端详细信息表2.2 oauth_access_token 认证授权Token记录表2.3 oauth_refresh_token 刷新授权Token记录表2.4 oauth_code 授权Code记录表 一、什么是 spri…...

MySQL 数据库编程-C++

目录 1 数据库基本知识 1.1 MYSQL常见命令 1.2 SQL注入 1.3 ORM框架 1 数据库基本知识 MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成&#xff1a…...

【大数据技术】搭建完全分布式高可用大数据集群(Flume)

搭建完全分布式高可用大数据集群(Flume) apache-flume-1.11.0-bin.tar.gz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群 Flume 的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/software目录下,软件安装至/opt目…...

疯狂前端面试题(二)

一、Webpack的理解 Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。Webpack 能够将各种资源&#xff08;JavaScript、CSS、图片、字体等&#xff09;视为模块&#xff0c;并通过依赖关系图将这些模块打包成一个或多个最终的输出文件&#xff08;通常是一个或几个…...

kafka专栏解读

kafka专栏文章的编写将根据kafka架构进行编写&#xff0c;即先编辑kafka生产者相关的内容&#xff0c;再编写kafka服务端的内容&#xff08;这部分是核心&#xff0c;内容较多&#xff0c;包含kafka分区管理、日志存储、延时操作、控制器、可靠性等&#xff09;&#xff0c;最后…...

深入探究 C++17 std::is_invocable

文章目录 一、引言二、std::is_invocable 概述代码示例输出结果 三、std::is_invocable 的工作原理简化实现示例 四、std::is_invocable 的相关变体1. std::is_invocable_r2. std::is_nothrow_invocable 和 std::is_nothrow_invocable_r 五、使用场景1. 模板元编程2. 泛型算法 …...

OpenCV:图像修复

目录 简述 1. 原理说明 1.1 Navier-Stokes方法&#xff08;INPAINT_NS&#xff09; 1.2 快速行进方法&#xff08;INPAINT_TELEA&#xff09; 2. 实现步骤 2.1 输入图像和掩膜&#xff08;Mask&#xff09; 2.2 调用cv2.inpaint()函数 2.3 完整代码示例 2.4 运行结果 …...