解码4G模组:ADC示例的深度解析

今天我们要学的是Air724UG软件的ADC示例,我已整理成文分享给大家。

一、简介

ADC通常指模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。本文介绍如何用Air724开发板,和PC端搭建一个ADC电压采集的功能演示。

二、演示功能概述

本教程教你如何使用开发板 ADC 功能。

功能定义:

1、使用ADC引脚读取电压值

2、读取供电电压

3、读取模块温度

三、准备硬件环境

3.1 开发板准备

使用 Air724UG-NFM 开发板,如下图所示:

图片

此开发板的详细使用说明参考:
https://docs.openluat.com/air724ug/product/

Air724UG 产品手册 中的 《EVB_Air724UG_AXX开发板使用说明》,写这篇文章时最新版本的使用说明为:《EVB_Air724UG_A14开发板使用说明》;开发板使用过程中遇到任何问题,可以直接参考这份使用说明文档。

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 使用跳线帽获取开发板电位器和热敏电阻电压

图片

 

图片

图片

 

图片

完毕。 

### STM32 实现语音聊天方案 #### 1. 方案概述 为了实现在STM32平台上进行语音聊天的功能,可以考虑结合语音编码解码技术和无线通信模块来完成。具体来说,可以通过麦克风采集声音信号并将其数字化处理后发送给接收方,在接收端再通过扬声器播放出来。 #### 2. 系统架构设计 整个系统的硬件框架主要由以下几个部分组成: - **主控制器**:选用STM32F103C8T6作为核心处理器[^3]。 - **音频输入设备**:使用MEMS麦克风或其他类型的模拟麦克风获取用户的语音数据。 - **音频输出设备**:配备小型喇叭或耳机接口用于回放接收到的声音信息。 - **编解码芯片**:例如ISD1760等专用IC负责将模拟音频流转化为适合传输的数据包形式,并能在另一侧做相反操作恢复原始音质。 - **无线收发组件**:Wi-Fi模组ESP8266或者蓝牙BLE模块nRF52832可用于建立远程连接通道传递经过压缩后的音频帧序列[^2]。 #### 3. 软件流程描述 程序运行逻辑大致分为三步走: - 数据捕捉阶段:启动ADC采样机制读取来自MIC的即时电平变化情况; - 编辑打包环节:调用特定算法库(如Speex)对上述所得样本实施量化、预测差分运算等一系列预处理措施形成紧凑型二进制串列; - 发送接收过程:借助选定的无线电协议栈把最终产物推送至目标节点处等待解析执行重构成连续波形供监听者感知。 ```cpp // 示例代码片段展示如何初始化 ADC 和 SPI 接口配置 void setup() { // 初始化 ADC 模块参数设置 adc_init(); // 设置SPI波特率及模式选项 spi_setup(SPI_SPEED, MODE_0); } void loop() { uint16_t sample; // 获取当前时刻 MIC 输入值 sample = read_adc_value(MIC_CHANNEL); // 对采集到的数据应用某种编码方式转换成可传送格式 encode_audio(sample); // 将编码好的数据经由指定信道发出 send_via_wireless(encoded_data); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值