tag 标签: 通信模组

相关博文
  • 2025-1-25 18:20
    402 次阅读|
    0 个评论
    七、多串口 7.1 简介 前面已经介绍了串口的基本用法,本文将使用两个串口(UART1、UART2)进行分别通信的演示。 7.2 介绍多串口如何接线 大家可先跳转至 3.5 介绍串口如何接线中查看单串口的接线说明,在学会了 UART1 接线和 UART2 接线后,只需将这两个通用串口同时接上对应位置即可。 7.3 初始化 UART1 串口和 UART2 串口 7.4 注册接收数据的回调函数 7.5 发送数据 本文中字符串编码格式为 UTF-8 编码格式,SSCOM 串口调试工具的编码格式为 GB2312,所以导致无法正确显示字符串中的中文,需要注意。 7.5.1 发送普通字符串 7.5.2 发送十六进制的数据串 7.5.3 发送 json 格式的数据 7.6完整例程 代码运行结果: 八、UART 电平 8.1 介绍 UART 电平 UART 电平是指串行通信中使用的电压电平标准。常见的串口电平标准有 RS-232、TTL 和 RS-485 等。 1、RS-232 电平:RS-232 是一种常用的串口通信标准,它使用负逻辑电平,即逻辑 1 用 -3V 到 -15V 表示,逻辑 0 用 +3V 到 +15V 表示。RS-232 电平适用于短距离、低速率的通信。 2、TTL 电平:TTL(Transistor-Transistor Logic)电平是一种常见的数字电路电平标准,它使用正逻辑电平,即逻辑 1 用 +5V 表示,逻辑 0 用 0V 表示。TTL 电平适用于短距离、高速率的通信。 3、RS-485 电平:RS-485 是一种常用的串口通信标准,它使用差分电平,即逻辑 1 用 +2V 到 +6V 表示,逻辑 0 用 -2V 到 -6V 表示。RS-485 电平适用于长距离、高速率的通信。 在串口通信中,选择合适的电平标准非常重要,它直接影响到通信的可靠性和稳定性。 Air724UG 模块的 UART IO 电压默认为 1.8V,如果要和 3.3V/5V 的 MCU 或其他串口外设通信,必须要加电平转换电路 8.2 电平转换参考电路设计 8.3 常见问题 1、串口电平电压过低或过高可能会导致什么问题? 如果电压过低,可能会导致接收器无法正确识别信号,如果过高,可能会导致信号损坏或损坏接收器。概述:可能会导致串口无法正常通讯,或通讯数据会突然出现乱码,数据错乱等问题。 九、常见问题 9.1 模块串口接收到乱码是什么情况? 串口接收到乱码通常是由于数据格式不匹配或信号干扰等原因引起的。以下是一些可能导致乱码的情况及其解决方法: 1、波特率不一致 - 情况:发送方和接收方的波特率设置不同。- 解决:确保两端的波特率设置一致。 2、数据位、停止位或校验位不匹配 - 情况:数据格式不一致,例如数据位数、停止位或是否使用校验位。- 解决:确认发送和接收的设置一致。例如,常用设置为8个数据位、1个停止位、无校验。 3、信号干扰 - 情况:外部干扰导致信号失真。- 解决:使用屏蔽线缆,缩短线缆长度,避免在电磁干扰强的环境中使用。 4、接线错误 - 情况:TX(发送)和RX(接收)线接反。- 解决:检查接线,确保正确连接。 5、设备未正确初始化 - 情况:发送设备未配置好,导致数据格式不正确。- 解决:检查发送设备的初始化代码和配置,确保正确设置。 6、缓冲区溢出 - 情况:接收端处理速度慢,导致数据被覆盖。- 解决:提高接收端处理速度,或者增加缓冲区大小。 7、电源问题 - 情况:设备供电不足或不稳定。- 解决:检查电源供应,确保设备正常供电。 8、数据编码不一致 - 情况:发送和接收使用不同的字符编码(如ASCII与UTF-8)。- 解决:确保两端使用相同的字符编码。 9、物理连接问题 - 情况:接口接触不良或线缆损坏。- 解决:检查串口连接,确保接触良好,必要时更换线缆。 10、串口驱动问题 - 情况:驱动程序不兼容或未正确安装。- 解决:检查并更新串口驱动程序。 9.2 使用 RS485 连接模块,出现漏发,接收不到的情况是怎么回事? 出现漏发和接收不到的情况,大概率是因为模块转向时间设置的问题,模块收不到数据可能是因为没有设置转向脚,导致只能发不能收,出现漏发的情况,大概率是因为转向时间设置和设备的实际转向存在偏差导致漏数据的情况,可以通过 uart.set_rs485_oe()接口调整转向时间,通常 9600 波特率设置 3500us 的转向时间。 9.3 模块串口接收不到数据/模块发的数据收不到? 如果出现模块串口接收不到数据的情况,首先排查软件方面逻辑是否写的正确,可以按照 Uart 的 demo 进行测试,如果 demo 也不行的话,排查下模块端和设备端是否为 rx-tx,tx-rx 这样的接法,避免 rx-rx,tx-tx,如果接线也都正常的话确定下波特率方面,如果有条件的话,可以直接通过逻辑分析仪/示波器检测模块的 rx/tx 脚看是否收到数据或者发送数据。
  • 2025-1-25 17:51
    390 次阅读|
    0 个评论
    五、RS485 通信 5.1 简单介绍下 RS485 物联网(IoT)在工业场景中的应用越来越广泛,而 RS485 是一种常见的通信协议,广泛应用于工业自动化和物联网系统中。RS485 是一种串行通信标准,主要用于长距离、多节点通信。适用于工业环境中的传感器、执行器、控制器等设备之间的数据传输,且支持多点通信,可以连接多个设备,实现分布式控制。因为具有较好的抗干扰能力,也很适用于噪声环境下的通信。RS485 支持长距离传输,通常可达 1200 米,适用于工业现场中的远程监控和控制。 RS485 是一种半双工通信协议。半双工通信协议允许数据在两个方向上传输,但同一时间只能在一个方向上传输数据。在 RS485 通信中,当发送数据时,只能发送数据而不能接收数据;当接收数据时,只能接收数据而不能发送数据。 比如:在 RS485 通信中,通常使用一个引脚(如 A 或 RX )作为发送引脚,另一个引脚(如 B 或 TX )作为接收引脚。当发送数据时,发送引脚输出高电平或低电平,接收引脚不工作;当接收数据时,接收引脚输出高电平或低电平,发送引脚不工作。有的也有单独一根线专门用于控制收发逻辑,输出高低电平,负责管理 RS485 的通讯,包括发送、接收、处理错误等数据。 优点: 抗干扰能力强:RS485 采用差分信号传输,抗干扰能力强,适用于工业环境中的噪声干扰。 传输距离远:RS485 支持长距离传输,适用于工业现场中的远程监控和控制。 多节点通信:RS485 支持多点通信,可以连接多个设备,实现分布式控制。 兼容性好:RS485 是一种标准化的通信协议,具有较好的兼容性,可以与其他设备进行通信。 成本较低:RS485 模块和电缆的成本相对较低,适用于工业现场中的成本控制。 缺点: 信号衰减:随着距离的增加,信号衰减会加剧,影响通信质量。 速率限制:RS485 的传输速率相对较低,通常在 9600bps 到 115200bps 之间,适用于低速数据传输。 电气特性要求:RS485 对电气特性有较高的要求,需要使用特定的电缆和连接器。 布线复杂:RS485 需要使用双绞线进行布线,布线复杂度较高。 5.2 硬件展示 724UG 开发板 +RS485-TTL+RS485-USB RS485-USB 接线方式: 注意:上面的硬件使用的 RS485-TTL 为硬件自动转换,实际使用根据硬件设置去选择 gpio 转换或者硬件自动转换 5.3 初始化 uart 5.4 注册接收数据的回调函数 5.5 发送数据 本文中字符串编码格式为 UTF-8 编码格式,SSCOM 串口调试工具的编码格式为 GB2312,所以导致无法正确显示字符串中的中文,需要注意。 5.5.1 发送普通字符串 5.5.2 发送十六进制的数据串 5.5.3 发送 json 格式的数据 5.6 完整例程 代码运行结果: uart.write(UART_ID, common.utf8ToGb2312("合宙模块Air724UG")) 向串口发送对应的字符串数据,uart.on() 会事先注册一个接收数据的回调函数,当指定的串口 UART_ID 接收到数据时,该回调函数会被自动触发并执行,log.info("testUart.read bin",data) log.info("testUart.read hex",data:toHex()) 会将接收到的数据打印出来,此时我们通过串口调试工具,选择对应的端口,即可看到对应的打印信息。 5.7 温湿度传感器例程 5.7.1 硬件展示 使用的硬件为 sht20 温湿度传感器 +724UG 开发板 +RS485-TTL sht20温湿度传感器 接线方式 5.7.2 代码展示 本示例是利用 sht20 温湿度传感器 +724UG 开发板 +RS485-TTL 通过 485 做的一个采集温湿度的 demo,主要逻辑是通过发送 16 进制数据 0x01,0x04,0x00,0x01,0x00,0x02,0x20,0x0B 来获取温湿度 然后对获取数据进行 modbus 校验,然后对数据进行解析,根据公式计算出实际温湿度 通过 json.encode()把表内的数据转换成 json 类型打印出来 六、USB 虚拟串口 6.1 介绍 USB 虚拟串口 USB 虚拟串口是一种将 USB 接口转换为串行通信接口的技术。它允许计算机通过 USB 接口与其他设备进行串行通信,如调制解调器、打印机、扫描仪等。USB 虚拟串口通常由一个 USB 转串行适配器和一个驱动程序组成。 并且虚拟串口通常没有波特率要求,因为它们是软件模拟的串行通信接口,不依赖于物理硬件。然而,在实际应用中,虚拟串口仍然需要遵守一些基本的通信协议,比如数据位、停止位和校验位等。 USB 虚拟串口的主要功能包括: 串行通信:USB 虚拟串口可以模拟串行通信接口,实现数据的串行传输。它支持各种串行通信协议,如 RS-232、RS-485 等。 传输可靠:传统的串口连接线容易受到干扰,而 USB 虚拟串口采用的 USB 技术可以更好地抵抗干扰,提高了通信的可靠性。 串行控制:USB 虚拟串口可以控制串行通信参数,如波特率、数据位、停止位、奇偶校验等。它还支持串行通信的流控制和错误处理。 使用方便:USB 虚拟串口无需再使用传统的串口连接线,只需要一个标准的 USB 数据线即可连接计算机和外部设备,使得设备连接更加方便 USB 虚拟串口广泛应用于各种领域,如工业自动化、物联网、智能家居等。它为各种设备提供了便捷的串行通信解决方案,提高了系统的灵活性和可靠性。 6.2 虚拟通讯串口-端口位置说明 首先通过带有 DM、DP 的 USB 数据线两端连接 模块 和 Windows7 及以上系统的电脑。 然后将模块开机,就可以从电脑的设备管理器中看到端口处多出来 4 个 USB 端口。 驱动装好之后会枚举出 4 个 USB 接口,其中 LUAT USB Device 1 AT (COM6)为虚拟 AT 口,MODEM 为日志口,AP,和 CP 口为底层日志口 6.3 初始化 USB_UART 6.4 注册接收数据的回调函数 6.5 发送数据 本文中字符串编码格式为 UTF-8 编码格式,SSCOM 串口调试工具的编码格式为 GB2312,所以导致无法正确显示字符串中的中文,需要注意。 6.5.1 发送普通字符串 6.5.2 发送十六进制的数据串 6.5.3 发送 json 格式的数据 6.6 完整例程 代码运行结果: 本文未完,请看下篇!
  • 2025-1-25 17:29
    356 次阅读|
    0 个评论
    Air724UG作为一款高性价比的4G模组,无疑是物联网项目开发的理想选择。下文我们成功展示了如何利用Air724UG模组的UART接口进行基本的网络通信操作。希望今天的分享对你有所帮助。 一、串口(uart)概述 UART(通用异步接收器/发送器)是一种串行通信协议,因其多功能性和简单性而被广泛使用。与 I2C 和 SPI 不同,UART 只需要两条线即可运行:TX(发送)和 RX(接收)。该协议允许异步通信,也就是说发送器和接收器之间无需共享时钟。数据被组织成数据包,每个数据包包含一个起始位、5 到 9 个数据位、一个可选的奇偶校验位和1个、2个或者1.5个停止位。 优点: 简单:UART 通信协议相对简单,易于实现和调试。 适用性广泛:UART 被广泛应用于各种设备之间的通信,具有较好的兼容性。 距离:UART 通信距离较远,适用于需要长距离传输的场景。 缺点: 速度较低:UART 通信速度相对较低,不适用于对速度要求较高的应用。 双工:UART 通信是双工的,可以进行低速双工传输数据,进行数据的发送和接收。 不可靠:由于 UART 是异步通信,可能会受到噪声和干扰的影响,导致数据传输不可靠。 二、演示功能概述 本文主要教你使用 Air724UG 开发板对串口(uart)进行一个测试,其中包含了串口,RS485,usb 虚拟串口,多串口,串口电平转换等内容,其中对 RS485 有一个搭配温湿度传感器做的一个温湿度传感器 demo 三、准备硬件环境 3.1 开发板准备 在开始之前,需要准备一套 Air724UG 开发板,目前推出两种 Air724UG 开发板(开发板和核心板),开发板的优势在于大多数管脚接口都引出来了,例如 sd 卡,camera,屏幕等接口,实际使用都是一样的,在使用时可根据自身需求选择开发板。 1)如果你选择的是Air724UG开发板: 此开发板的详细使用说明参考: https://docs.openluat.com/air724ug/product/ Air724UG产品手册中的 《EVB_Air724UG_AXX开发板使用说明》,写这篇文章时最新版本的使用说明为:《EVB_Air724UG_A14开发板使用说明》;开发板使用过程中遇到任何问题,可以直接参考这份使用说明文档。 2)如果你选择的是Air724UG核心板: 下方资料可供你参考查阅: https://docs.openluat.com/air724ug/product/ Air724UG产品手册中的Air724UG-核心板硬件资料 3.2 SIM 卡 在中国大陆环境下,使用移动,电信,联通的物联网卡或者手机卡都可以。 3.3 数据通信线 1)USB 数据线 2)由于本篇教程和串口相关,所以需要准备 USB 转 TTL 工具或者串口线。例如 CH340、FT232 等,本文使用的是高速串口 3.4 PC 电脑 PC 电脑推荐使用 win7 及以上版本,Air724UG 驱动下载地址: 8910驱动: https://doc.openluat.com/wiki/21?wiki_page_id=6908 3.5 介绍串口如何接线 Air724UG 模组有 5 个串口,分别为 UART1,UART2,UART3,HOST UART 和 ZSP UART 调试串口。 其中对于 Luat 开发方式,UART1 可以用作一个通用的串口来连接其他的串口设备。 UART2 可以用来射频校准,同时 UART2 还用来和内部的蓝牙进行通讯,如果用到了蓝牙功能,则 UART2 不可 再用作其他用途。 UART3 是一个通用串口,可以用作外接 GPS 等外设。 HOST UART 用来软件调试时输出 AP trace。 ZSP UART 用来软件调试时输出 CP trace。 其中 HOST UART 和 ZSP UART 不能作为普通串口使用,只用于调试输出底层日志。 1)如果你想了解这 5 个串口对应于模组的哪个管脚,请看下方图片: 2)如果你只想知道 Air724UG 开发板的串口引出位置,请看下方图片: 3)接下来进行接线操作,注意模块与 MCU 之间要交叉接线,即 TX 接 RX,RX 接 TX,GND 接 GND 。由于本文只需用到 UART1 和 UART2 两个通用串口,因此下表中只列出了这两个通用串口的模块引脚编号及模块与 MCU 之间接线说明。 四、准备软件环境 4.1 源码及工具 Air724UG模块使用固件: 固件地址: https://docs.openluat.com/air724ug/luatos/firmware/ 选择最新版本CORE_V4030,本文使用的固件版本是:LuatOS-Air_V4030_RDA8910_BT_FLOAT.pac 将固件和脚本烧录到模块中,使用说明参考: Luatools 下载和详细使用 https://docs.openluat.com/Luatools/ 串口工具本文选用的是 sscom 4.2 uart 库接口描述 uart 库即串口操作库,该库为内部库,所以在程序中使用时无需 require 调用,本文只是简单介绍 uart 库中常用接口描述,其余接口描述请参考:uart 接口文档 4.2.1 配置串口参数 4.2.2 写串口 4.2.3 读串口 4.2.4 关闭串口 4.2.5 注册串口事件回调 4.2.6 485 转向控制 4.2.7 从串口读取单字符 4.3 初始化 uart 使用 UART1 串口 使用 UART2 串口 4.4 注册接收数据的回调函数 uart.on 函数用于注册一个接收事件的回调函数,当指定的串口 UART_ID 接收到数据时,该回调函数会被自动触发并执行。回调函数通过 uart.on(UART_ID, "receive", read)定义,并处理接收到的数据。数据的读取是通过 uart.read()函数进行的,uart.read()函数是非阻塞的,它是直接从现有缓存区中直接读取数据。 4.5 发送数据 本文中字符串编码格式为 UTF-8 编码格式,SSCOM 串口调试工具的编码格式为 GB2312,所以导致无法正确显示字符串中的中文,需要注意。 4.5.1 发送普通字符串 4.5.2 发送十六进制的数据串 4.5.3 发送 json 格式的数据 4.6 完整例程 代码运行结果: uart.write(UART_ID, common.utf8ToGb2312("合宙模块Air724UG"))向串口发送对应的字符串数据,uart.on()会事先注册一个接收数据的回调函数,当指定的串口 UART_ID 接收到数据时,该回调函数会被自动触发并执行,log.info("testUart.read bin",data) log.info("testUart.read hex",data:toHex())会将接收到的数据打印出来,此时我们通过串口调试工具,选择对应的端口,即可看到对应的打印信息。 本文未完,请看下篇!
  • 2025-1-25 16:14
    375 次阅读|
    0 个评论
    本文将通过Air201+扩展板读写外部flash的演示,教你使用SPI示例,可根据实际需求灵活应用。 我们先了解一些相关基础知识: SPI (Serial Peripheral Interface)——是一种同步串行通信协议,广泛应用于微控制器和外围设备之间的数据传输。它由摩托罗拉公司开发,具有全双工通信能力,即可以同时进行数据的发送和接收。 SPI通信通常涉及四条信号线: MOSI (Master Out Slave In): 主设备发送数据,外设接收数据。 MISO (Master In Slave Out): 外设发送数据,主设备接收数据。 SCLK (Serial Clock): 由主设备生成的时钟信号,用于同步数据传输。 CS/SS (Chip/Slave Select): 选择特定的从设备进行通信。 SPI的优点包括简单的硬件连接、高速数据传输和全双工通信。其缺点是通常需要更多的引脚,尤其是在多个从设备的情况下,每个从设备需要一个独立的CS引脚。此外,SPI没有标准化的协议层,因此设备间的兼容性需要仔细管理。 接下来,我们讲解SPI示例的具体使用。 1. 搭建环境 可以在LuaTools项目管理中新建一个项目,重新选择底层CORE和脚本;或者在原有项目的基础上,不更换CORE,将原来的脚本删除,添加为demo/spi的脚本。 1.1 硬件准备: Air201 PCBA Air201-BTB扩展板(带一个FPC线) SIM卡 带有数据通信功能的数据线 Win10及以上PC Flash模块:本文使用W25Q系列SPI Flash。 Air201通过FPC线连接BTB扩展板,BTB扩展板再连接FLASH模块。 SPI管脚定义详见: https://docs.openluat.com/air201/luatos/hardware/design/btb/#spi 完整接线如下所示: 1.2 软件准备: LuaTools调试工具: https://docs.openluat.com/Luatools API接口说明: https://docs.openluat.com/air201/luatos/api/core/spi 最新固件: https://gitee.com/openLuat/LuatOS-Air201/tree/master/core 最新脚本: https://gitee.com/openLuat/LuatOS-Air201/tree/master/demo/spi 2. 示例代码介绍 使用克隆的代码进行测试,代码路径: LuatOS-Air201\demo\spi 程序流程如下图所示: 2.1 初始化配置 SPI使用的是SPI0,CS使用的GPIO8,在初始化阶段,通常会将CS(GPIO8)拉高,表示当前没有选中任何从设备。 2.2 向FLASH写入数据 查看W25QX系列FLASH模块数据手册的命令集,先写使能命令0x06,再写页数据到地址0x000001。 2.3 从FLASH读取数据 查看W25QX系列FLASH模块数据手册的命令集,使用0x03命令,读取0x000001地址的数据,完成操作后关闭SPI。 2.4 完整例程展示 3. 代码烧录 新同学可以查看参考详细烧录教程: https://docs.openluat.com/Luatools/ 固件版本不变的情况下,直接选择下载脚本即可。 4. 展示效果 至此我们已经使用Air201的SPI接口,成功完成了对W25Q64 Flash存储器的读写操作。 今天的分享就到这里了 更多实用示例带你开启应用之门 下一期见~
  • 热度 2
    2025-1-25 15:56
    263 次阅读|
    0 个评论
    一、简介 ADC通常指模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。本文介绍如何用Air724开发板,和PC端搭建一个ADC电压采集的功能演示。 二、演示功能概述 本教程教你如何使用开发板 ADC 功能。 功能定义: 1、使用ADC引脚读取电压值 2、读取供电电压 3、读取模块温度 三、准备硬件环境 3.1 开发板准备 使用 Air724UG-NFM 开发板, 3.2 数据通信线 USB数据线或者USB转TTL数据线使用普通的就行,暂无特别要求; 3.3 PC 电脑 WINDOWS 系统,其他暂无特别要求; 3.4 直流稳压电源准备 在需要直流稳压电源的场景(例如 adc 测量外部输入的模拟电压),使用功耗分析仪 Air9000P,如下图所示: 四、准备软件环境 4.1 源码和工具 724UG 模块使用固件为: LuatOS-Air_V4030_RDA8910_TTS_NOLVGL_FLOAT.pac 本教程使用的 demo: https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/adc 将固件和脚本烧录到模块中,使用说明参考: https://docs.openluat.com/Luatools/ 4.2 烧录代码 首先,确保你的 Luatools 的版本大于或者等于 3.0.6 版本. 在 Luatools 的左上角上有版本显示的,如图所示: Luatools 版本没问题的话, 就点击 Luatools 右上角的“项目管理测试”按钮,如下图所示: 这时会弹出项目管理和烧录管理的对话框,如下图: 选择对应的项目烧录代码。 五、ADC 功能软硬件资料 5.1 首先了解一下开发板上 ADC 采集电压电路的设计 当前 Air724UG 模块以及开发板上预留了两路外置 ADC 供用户调试使用,分别是 ADC2 和 ADC3,其中 ADC2 采集的电压为一个 10K 的普通电阻和一个 10K 的 NTC 热敏电阻将 1.8V 电压分压所得的电压,ADC3 采集的电压为一个 10K 的普通电阻和一个 10K 的电位器将 1.8V 电压分压所得的电压: 5.2 相关 API 介绍 ADC 相关 API: https://doc.openluat.com/wiki/31?wiki_page_id=3909 获取供电电压,模块温度相关 API: https://doc.openluat.com/wiki/31?wiki_page_id=3953 六、功能示例 6.1 核心代码 6.2 效果展示 烧录代码后通过 ADC 引脚读取电压 6.3 读取供电电压 6.4 读取模块温度 6.5 输入电压范围 724UG 的 ADC 输入范围为 0-5V,调用 adc.open(id,scale)时,使用 scale 参数可以调整范围。 七、总结 本教程简单举例了如何读取 adc 输入电压、读取供电电压、读取 CPU 温度,除此之外,adc 可以将各种连续变化的模拟信号(如温度、湿度、压力、电压、电流等)转换为离散的数字信号,本模块内部 ADC 精度 11bits,对许多应用已经足够,如温湿度传感器、压力传感器、音频信号处理等,然而对于需要更高精度的应用,可以外挂更高精度的 ADC,如16 位、24 位等。使用过程中需注意量程范围,不可超出量程。 八、常见问题 1、ADC 测量电压来回跳变,为什么? 答:看外部输入电压是否与模块共地,保持参考电压一致。 2、为什么开发板测试打印出来的电压值与实际用万用表测量的电压值误差较大? 答:由于标准开发板设计目的主要为了方便功能性演示,内部还没有做有相应的优化处理,需要用户在使用时,按照实际的板子走线,阻抗,以及压降等添加相应的压差补偿。 九、扩展 9.1 使用跳线帽获取开发板电位器和热敏电阻电压
相关资源