EEWorld 电子工程世界

文章数:10694 被阅读:13280547

推荐内容
账号入驻

无线开发板哪家强?工程师测给你看

最新更新时间:2024-08-07
    阅读数:
更多精彩内容 请点击上方 蓝字 关注我们吧!

在物联网应用中,无线是不可或缺的一环,而这些应用不仅对功耗很敏感,对于成本也很严格。目前,绝大厂商都有自己的无线MCU产品,每家无线MCU各具特色,也是竞争比较激烈的一块市场。

不过,虽然说工程师选择变多了,但也容易眼花缭乱。在实际开发中,也有会面对许多问题。今天,我们就“下了血本”,搞到一些形态各异的无线开发板,包括蓝牙、Wi-Fi或者蓝牙带CAN的开发板,让工程师实际上手试用产品,并给出自己的实际开发体验。

Beetle ESP32 C6迷你开发板测评


作者:DavidZH

更多相关测评: https://www.eeworld.com.cn/a9yLaLG

开 箱

有幸获得EEWORLD 的FireBeetle 2 ESP32 C6 Mini 开发板, 和一个一元硬币的大小差不多,这么小的板子看看隐藏了多大的智慧;

一、板载资源了解

正面可以看见一个RST 复位按键+一个BOOT 按键,采用TYPE-C 口方式;反面则集成锂电池充电管理芯片TP4057 和LDO RT9080;

通过资料了解FireBeetle 2 ESP32 C6 Mini 是采用乐鑫的ESP32C6 20MHZ 的WIFI 6 ,且支持TWT 的低功耗,因此板载的预留BAT 接口,可以对WIFI 6 的低功耗特性进行测试;

外围的晶振配合电容组成了最小系统;

二、板载外设

麻雀虽小,五脏俱全;FireBeetle 2 ESP32 C6 Mini  虽然体积小,但外设资源却不少;

如图所示可以看出ADC, UART, I2C, SPI, JTAG.SDIO 都有,虽然采用复用,对于单独进行验证芯片还是不错的选择;

按照如上的外设资源进行逐个验证。

三、 MCU 资源

FireBeetle 2 ESP32 C6 Mini 的最大特点是采用ESP32 C6, WIFI6 的特性中有TWT 的低功耗,相对于WIFI 4或者WIFI5 在IOT 的应用中有天然优势;

另外该芯片支持多种协议,在后期进行Matter over wifi 或者Matter over Thread  也是不错的选择,但具体是否能有描述的这么第的功耗,需要进一步验证;

  • 搭载ESP32-C6芯片,支持Wi-Fi、BLE、Zigbee、Thread通讯协议

  • 支持Wi-Fi 6协议,更低延迟,更低功耗

  • 超低功耗,deep-sleep 14uA

  • 集成锂电池充电功能

  • 支持电池电压检测,了解设备电量信息

主控ESP32 C6 支持的无线 特性如下:

  • WIFI协议:IEEE 802.11b/g/n/ax

    • IEEE 802.11ax (20 MHz-only non-AP mode)

  • WIFI频宽:2.4 GHz 频带支持 20 MHz 和 40 MHz 频宽

  • WIFI模式:Station 模式、SoftAP 模式、SoftAP+Station 模式和混杂模式

  • WIFI频率:2.4GHz

  • 帧聚合: TX/RX A-MPDU, TX/RX A-MSDU

  • 蓝牙

  • 蓝牙协议:Bluetooth 5、Bluetooth mesh

  • 蓝牙频率:125 Kbps、500 Kbps、1 Mbps、2 Mbps

目前依然是延续了乐鑫的产品,WiFi+蓝牙的SOC; 对于是否支持WiFi的WPA3 加密,以及相关应用协议的支持和蓝牙5 支持的应用有待探索。

Arduino 开发环境搭建

FireBeetle 2 ESP32 C6 Mini 采用的是乐鑫ESP32 C6 ,主要的开发环境有如下几种;

  • ESP-IDF+VSCODE

  • ESP-IDF+Platform IO

  • Micropython 及其类似

  • Arduino

以上四种方式都可以对ESP32-C6 进行软件开发和验证, 主要看自己的熟悉程度;

以下以Arduino 为IDE 的开发环境进行搭建;主要是官方和第三方都有非常多库可以直接用;

一、安装Arduino 开发环境;

在Arduino 官方下载,选择V2.3 以上版本,否则无法支持到ESP32 C6 芯片;

二、安装ESP32-C6 的相关支持;

在开发板中选择ESP32 然后安装3.0 的版本;3.0 的版本才支持ESP32 C6, 更新会花费很长时间, 由于网络原因可能要很久;

可以在Windows 的Microsoft store 中安装Watt Tookit  工具,可以加速, 具体功能自行研究。

三、Arduino 的配置:

将Beetle ESP32 C6 Mini  Mini  通过TypeC 口与PC 相连;打开Arduino 后进行配置;

1、选择开发板类型和COM 口;

在文件-示例中可以看见相关例子;

在工具中有烧录的相关配置,一般默认就可以;

新建工程BeetleESP32C6 保存; 会出现:BeetleESP32C6 和libraries 文件夹,前者放ino 的编程文件, 后者放库文件(IDE 自己安装的库或者第三方库都可以)

工程文件:

点击下载,即可以完成将生成的可执行文件下载到ESP32 C6;

我们可以发现Arduino  的工程目录下并没有生成可执行文件, 需要进行如下操作;

在工具-导出已经编译的二进制文件;

此时在工作目录下就有生成相应的可执行文件;可以采用乐鑫的官方工具进行烧录;

还有就是如果按照官方的开发板支持包,可以在Arduino 中直接寻找,不用在网上胡乱搜索;在首选项->其他开发板管理;

连接Beetle ESP32 C6 Mini 与USB 转UART 功能;

外设之 SPI 驱动ST7789 TFT

Beetle ESP32 C6 Mini  的SPI 外设有一组硬件的资源如下:

SCK->GPIO23

MOSI->GPIO22

MISO->GPIO21

CS 则可以设计为任何其他GPIO 管脚;

对于TFT 屏幕驱动,一般会选择LVGL+TFT_eSPI 实现,通过查询可以知道TFT_eSPI 目前还没有支持到Esp32-C6 所有直接采用ST7789 库来驱动。

总结:对于驱动屏幕而言,最好是采用RTOS+GUI 进行事件调度。

N32WB45xL-EVB全功能评估板测评


作者:yang8555u

更多相关测评: https://www.eeworld.com.cn/aKqnjr5

一、开箱

前几日收到了寄过来的开发板,今日终于有空来做一个开发板的分享。
拆开快递后,是一个印有国民技术商标的白色纸盒,内附国民技术的开发板N32WB452一枚及配件USB-A转USB MINIUSB连接线。

包裹的红色泡沫棉我已经去掉啦,开发板到手很开心,开箱图如下:

可以看到开发板已经板载了NS-LINK调试器(在左下角),左侧中部区域则是开发板的主控,N32WB452LEQ6,QFN88脚封装。板子上还自带蓝牙天线、触摸按键、多路LED灯、蜂鸣器、SPI-FLASH、电位器等一系列外设,方便用户评估开发板的各项外色号,如GPIO,I2C,SPI,BLE,UART等等。N32WB452LEQ6作为一个双核MCU,为M4+M0的架构,主频最大可达144MHz,144KB的RAM和512KB的ROM,可谓资源丰富,非常适合做智能指纹锁、蓝牙网关等应用。

开发板正面图如下:

开发板反面图如下:

二、下载配套资料

在国民技术的FTP站点中(ftp://58.250.18.138),可以下载N32WB452的各项资料。
以WIN10为例,在此电脑中添加网络位置

点击后,填写ftp://58.250.18.138/:

一路点下来,并命名好,即可看到文件夹:

开发板的相关资料在ftp://58.250.18.138/国民技术产品资料/无线连接产品/N32WB452xx_V2.0.0

将其复制到本地电脑中即可。

三、运行例程

keil默认大家都会装,就不再说明,本次我用的是MDK 5.37版本。
在如图所示目录中,安装开发板的Keil支持包,即Nationstech.N32WB452_DFP.1.0.3.pack

安装完毕后,打开RT-Thread例程,RT_Thread1_ThreadCreation,双击工程文件,并运行:

在左侧APP目录中,添加printf打印函数,以方便观察程序运行时间

在使用USB数据线连接开发板后,编译并下载至开发板,即可看到D1/D10两个LED灯交替闪烁,并在串口调试助手中有数据打印出:

串口助手界面:

成功!例程已经成功运行在开发板上了!

在RT-Thread完整版中点灯及ADC的使用

上一次发帖,我曾经请教过论坛里的各位,想试图找到N32WB452的RT-Thread的完整版系统SDK,可惜收获的回答是No。在获得这个回答后,曾考虑过移植RT-Thread到N32WB452上,但发现,RTThread的官方移植的N32G457的SDK也是可以直接下到N32WB452里的,个人推测因为都是国民技术的芯片,且寄存器、处理器内核都是一样的,所以能通用。当然了,N32WB452对比N32G457,多出了蓝牙外设,蓝牙外设的有关例程暂时只支持keil,不支持RT-Thread Studio,我尝试移植蓝牙组件到RT-Thread SDK下使用,暂时没有成功,因为牵涉到太多文件的修改,这个就放在后期再做尝试。

回到主题,本期及后几期帖子,都会评测RT-Thead在N32WB452上的相关运行实验。

##一、创建工程
在RT-Thread官网,下载RT-Thread Studio,并在SDK管理器中,下载N32G45X的开发板支持包,如图所示:

下载完成后,即可创建RT-Thread新工程,如图:

##二、修改工程文件
在board.h中,修改FLASH大小为512,如图:

打开drv_gpio.c文件,将PIN_NUBERS一栏由64改为100,否则,某些引脚我们想使用的时候将找不到,如图:

##三、GPIO的使用
参考N32WB452的原理图,可以知道在开发板中央的四个LED灯D1/D10/D11/D12和轻触按钮K04的位号及对应连接的引脚,考虑到使用方便,我们将其在main.c中预先声明。

可见我们已经声明了对应的引脚,这些对应数字的来源请参考drv_gpio.c中的定义。
接下来就是以RT-Thread的PIN设备的方法进行点灯,首先设置D12引脚为输出模式,然后在while循环中,不断重复引脚高电平与低电平。延时设定为200毫秒切换一次,如果需要修改,修改speed变量即可。D1/D10/D11点灯的方式与D12一致,便不再赘述。
##四、ADC的使用
关于RT-Thread的ADC,咱还没整明白,所以这部分依旧采用N32的官方库函数进行开发。
本次ADC的测量,是测量开发板板载的电位器的电压,电位器的位号为RP1,通过查询原理图,我们可以得知电位器的ADC测量引脚为PB2。
则在库函数中,初始化并配置PB2引脚,并以0.5秒的频率不断输出ADC的测量值,及对应转换的电压(不准,离万用表测量的电压有20-40mv的偏差)。

在RT-Thread中使用I2C读取温湿度传感器数据

本期主题是通过RT-Thread的I2C API,对板载的HDC2010温湿度传感器读取数据和手头上自备的一个HDC1080温湿度传感器读取数据。

默认N32的工程已经创建好,就不再重复描述。

#一、I2C配置
在工程根目录,打开RT-Thread Settings,如图:

打开后,开启软件模拟I2C选项,如图:

在硬件菜单配置中,使能软件模拟的I2C1,并设定引脚为47脚和48,如图:

(该引脚的来由是板载的温湿度传感器HDC2010对应的I2C2_SDA/I2C2_SCL引脚,并参考drv_gpio.c)。
在开发板上J24/J23处,安装短路帽。

#二、HDC2010温湿度传感器驱动编写
参考HDC2010的官方手册,链接为:http://www.ti.com/cn/lit/gpn/hdc2010 。HDC2010的湿度精度为±2%,温度精度为典型值 ±0.2°C,算是性价比很高的一款器件。

在手册中,列出了HDC2010的I2C地址,我们右移一位后可得通信I2C地址为0x40(RT-Thread可自动移位地址以完成读写)

手册中详细罗列了I2C读取的时序、操作。

在7.6章节,可以看到公开的寄存器地址及其说明,在本次实验中,我们需要的用到温度相关寄存器,湿度相关寄存器,配置相关寄存器,器件ID相关寄存器。其他寄存器暂未用到。

7.6.2章节,介绍了温度值转换实际温度的转换公式,如图:

7.6.3章节,介绍了湿度值转换实际温度的转换公式,如图:

7.6.17章节,介绍了配置的各个选项及其说明,如图:

在充分阅读手册后,我们的HDC2010驱动编写将会更加得心应手。

雅特力AT32WB415系列测评


作者:KING_阿飞

更多相关测评: https://www.eeworld.com.cn/aC04GuL

在FreeRTOS中点灯

很荣幸能获得雅特力AT32WB415系列蓝牙BLE 5.0 MCU的评测机会,为此按照我以前的评测的习惯,附上我的Github:,所有评测代码均开源分享。

一、了解板子资源

雅特力的单片机,这次是我第一次使用,按照我之前的经验。一定要去看数据手册,这个很重要。资料地址:雅特力科技 : 32位微控制器的创新领导者! (arterytek.com) 相比其他国产MCU厂商,雅特力的资料库十分齐全,便于我们开发,这里给雅特力点赞????????????

我们知道在这次给我送测的板子,是板载下载器的。

具体的芯片资源,我就不在这里给出,感兴趣的小伙伴可以去官网查看。

二、移植FreeRTOS

  1. 我们首选下载FreeRTOS的源文件,我们可以去FreeRTOS的官网下载:https://www.freertos.org 也可以在官方给的中间件中找到对应的源文件,这里我使用官网下载的最新源码包(FreeRTOS LTS 202012.04)进行移植。

  2. 然后在,keil中添加文件FreeRTOS的文件,将相关文件添加。注意:内存那里我们悬着heap_4,虽然我们芯片是ARM-M4带MPU,但是不支持FPU,所以我们这里使用CM3的port。


3.还要再添加一个FreeRTOSConfig.h文件,可以去Github上面看我的(My_AT32WB415_Demo\Middlewares\freertos\FreeRTOS\FreeRTOS-Kernel\include)。

4.最后记得把FreeRTOS的头文件引入。

三、点灯

代码大家直接去Github上面就可以看到,在这里我就不放出。

移植MCU控制蓝牙,蓝牙固件烧录

一、蓝牙固件代码烧录

雅特力AT32WB415是合体芯片,一个MCU加一个蓝牙,中间连接了一个串口,带2个UART, 其中UART21与MCU USART3连接。我们可以通过ArteryICPProgrammer这个软件烧入固件代码。这里我用到的版本是V3.0.03,第一次下载请给AT-Link固件升级一下,这个软件就可以升级。

页面中 第一个固件就是蓝牙的,另一个就是我们MCU的固件。

官方的蓝牙固件包在其页面下就可以找到雅特力科技 : 32位微控制器的创新领导者! (arterytek.com)

该工程是ARM9的工程,需要安装Legacy Support才能够编译, 用户可根据自己的环境在以下

路径进行下载: www2.keil.com/mdk5/legacy,这里我把我编译的bin文件放在仓库中,大家需要的可以自取。

官方文件中的指南里面就讲的比较清楚,我在这里不过多赘述。讲几个需要注意的点:蓝牙的地址是0x000000的、在复位是应该有一个时序的问题,需要先复位MCU在复位蓝牙、我们手机的蓝牙必须使用类似LightBlue这类的软件才可以连接,直接是无法连接上,这部分我也没有涉及过,属于知识盲区了。希望有人可以在这方面研究一下。

二、MCU代码的移植

其实在,官方里面的文档也写了,我们没必要继续重复造轮子了(其实就是懒????)

具体的移植步骤就不多说,也比较简单,有问题可以在评论区提出。这里讲一些我在移植过程中的问题,这样的效果更好。

FreeRTOS卡死:在Debug发现会一直等待,研究发现是官方的at32_button_press这个按键检测的函数里面的延时是delay_ms,这里我改成FreeRTOS里面的延时。

所有的代码我也不在这里放出来了,全部在Github上有,而且能够看到每次的变化,也知道我添加了哪些文件。

WDT 看门狗分析及应用

一、看门狗

看门狗由一个12位的递减计数器和一个8位的预分频器所组成,它由低速内部LICK提供时钟;因为这个时钟独立于主时钟,所以它可运行于深睡眠和待机模式。它可以被当成看门狗用于在发生错误时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过用户系统数据可以配置看门狗是否自启动。在调试模式下,计数器可以被冻结。

我们关注一下命令寄存器和重装载寄存器。

我们再看一下,喂狗超时时间计算,先看一张表:

再看计算公式:

安信可蓝牙开发板PB-02-Kit 测评



作者:jinglixixi

更多相关测评: https://www.eeworld.com.cn/a0enfTK

开箱上电

安信可PB-02-Kit蓝牙开发板是基于安信可PB-01模组而开发的,主打目标是智能照明。PB-02-Kit自带板载天线,RGB灯珠和冷暖灯珠,以供开发者调节和测试。

PB-02-Kit支持BLE Mesh组网,支持使用AT指令,支持SDK二次开发,支持天猫精灵语音直连控制,支持安卓/IOS APP控制以及微信小程序控制。

PB-02共有六路 PWM,可自行调节 RGB七彩灯和两路冷暖灯珠调节,并将模组的全部可用 IO 以排针的方式引出,以便于开发者的开发和调试。

此外,它集成丰富的资源,包括 AT 指令、SDK 二次开发,支持蓝牙 mesh 组网,以及安卓/IOS APP控制以及微信小程序控制,还支持天猫精灵语音直连控制;多个开发板互联,可用于 Mesh 组网调试,2.54mm 排针引出全部 GPIO/PWM/SPI/ADC 等接口,可自由搭配外设。

在软件开发方面,它支持以Keil进行开发,并提供UART 接口来烧录固件。

该开发板配备的硬件资源有:

1)标准 micro USB

2)以2.54mm 间距排针来提供 PWM/SPI/GPIO/ADC 接口

3)自带 R/G/B 三合一灯珠和冷/暖灯珠

4)自带复位按键和1个用户按键

开发板的几何尺寸为30mm(W)*45.5mm(H),外观如图1和图2所示。

图1开发板正面

图2开发板背面

开发板各管脚的功能定义为:

序号

引脚名称

功能说明

1

ANT

天线引脚(注:PB-02 默认用的板载天线,无需外接)

2

RST

复位

3

P20

GPIO20,所有功能均可配置/ AIO /麦克风偏置输出 *注:不支持中断功能

4

P18

GPIO18,所有功能均可配置/ AIO / PGA 差分正输入 *注:不支持中断功能

5

P23

GPIO23,所有功能均可配置 *注:不支持中断功能和ADC 功能。

6

SW1

6 SW1 GPIO24,所有功能均可配置/测试模式启动配置[0]。

7

SW2

GPIO25, 所有功能均可配置/测试模式启动配置[1], 此引脚 高电平上拉,开机启动进入测试模式。

8

P31

GPIO31,所有功能均可配置 *注:不支持中断功能和 ADC 功能

9

P14

GPIO14,所有功能均可配置/ AIO

10

P15

GPIO15,所有功能均可配置/ AIO

11

P34

GPIO34,所有功能均可配置 *注:不支持中断功能和 ADC 功能

12

P00

GPIO00,所有功能均可配置/ JTAG_TDO *注:不支持 ADC 功能

13

P01

GPIO01,所有功能均可配置/ JTAG_TDI *注:不支持 ADC 功能

14

P02

GPIO02,所有功能均可配置/ JTAG_TMS *注:不支持 ADC 功能

15

P03

GPIO03,所有功能均可配置/ JTAG_TCK *注:不支持 ADC 功能

16

TM

烧录模式选择,此引脚高电平上拉,开机启动进入烧录模式

17

TXD

串口 URAT_TXD

18

RXD

串口 URAT_RXD

19

GND

接地

20

3V3

电源供电,典型值 3.3V

那么上电后什么现象呢?

结果是没有什么变化,即使是电源指示灯被点亮也没有。

图3上电效果

随后又查看了一下原理图,还别说就是没有电源指示灯!

图4开发板原理图

还能指望啥呢?

看设备管理器吧,还别说有一个虚拟出的串口,见图5所示。

图5虚拟串口

这个串口又会带来啥信息呢?

设置好参数并打开串口,所给出的信息也不过如此,见图6所示。

图6上电效果

AT指令测试

在初始的开发板上是支持AT指令测试的,只用借助串口调试工具即可。

1) AT指令

AT 指令可以细分为三种格式类型:


类型



指令格式



描述



查询指令



AT+?



查询命令中的当前值。



设置指令



AT+=<…>



设置用户自定义的参数值。



执行指令


AT+


执行某些参数不可变的功能。

当只输入“AT”指令,则返回“OK”,见图1所示。

图1“AT”指令

2)  查询名称

使用“AT+NAME?”指令可进行名称查询,返回的内容为“ai-Thinker”,见图2所示。

图2查询名称

3)  开关回显

使用“ATE0”指令可关闭回显,用“ATE1”指令则打开回显,指令的执行结果如图3和图4所示。

注:打开回显 (参数将会保存到芯片内,下次上电无需再行设置。)

图3关闭回显

图4打开回显

4)   重启模组

使用“AT+RST”指令可重启模组,其返回内容如图5所示。

图5重启模组

5)  设置睡眠模式

睡眠模式共有3种模式,即:

0:进入浅睡眠并且下次上电不会自动进入浅睡眠状态(AT+SLEEP=0)

1:进入浅睡眠并且下次上电会自动进入浅睡眠状态

2:进入深度睡眠模式

在进入深度睡眠模式后会将模块RX设为唤醒引脚,UART发送任意数据即可唤醒模块。

注:进入深度睡眠模式后模组将不能收发数据

使用“AT+SLEEP”指令可设置睡眠模式,其返回内容如图6所示。

图6设置睡眠模式

遗憾的是,对于其它的指令几乎就没有什么相应了。例如对波特率的设置,则会出现报错,什么对波特率是不能设置的。

图7波特率设置

在用1_COMAT_V1008.hexf更新了固件后,所支持的指令明显得到增加,见图8至图10所示。

图8HELP指令

图9 GMR指令

图10查询波特率

串行通讯及使用

串行通讯是一种主要的数据传送方式,也是在没有显示器件的情况下仅有的调试观察手段。

1. 串口通讯的初始化

要使用串口通信必须对串口进行初始化,其初始化的函数为:

int hal_uart_init(uart_Cfg_t cfg){
if(m_uartCtx.enable)
return PPlus_ERR_BUSY;
memset(&m_uartCtx, 0, sizeof(m_uartCtx));
if(cfg.hw_fwctrl)
return PPlus_ERR_NOT_SUPPORTED;
m_uartCtx.cfg = cfg;
uart_hw_config();
m_uartCtx.enable = TRUE;
hal_pwrmgr_register(MOD_UART, NULL, uart_hw_config);
return PPlus_SUCCESS;
}

2.字节数据发送

在串口通信中,最主要的函数是字节数据发送,它可以解决常规print函数所不能解决的问题,因为print函数所输出的内容通常是字符型的,而进行外设控制其指令多是二进制的指令,为此只有字节数据发送函数可以解决此类问题。

使用该函数可产生下图所示的输出效果,说明发送字节数据成功。

有了发送字节数据的基础,要想用其控制MP3语音播放模块便也不难了,只需将控制指令存放到数组中,然后按序输出即可。

当然,在输出字符串类的信息时还是使用LOG比较方便。

SparkFun Pro nRF52840 Mini蓝牙开发板测评


作者:御坂10032号

更多相关测评: https://www.eeworld.com.cn/ar5yT8O

开箱及其搭建开发环境

大家好,很荣幸能够获取到这次来之不易的测评机会。由于快递原因我是在21号拿到这个板子的。 昨天研究了一下如何搭建开发环境。今天就整理了一下给大家做一个开箱和搭建环境的教程.

这篇报告包括以下两个部分:

  1. 开箱

  2. 搭建开发环境(这款开发板实际上中文资料不是很多。所以在花费了一些时间来整理资料)

正面照

背面照:

这款开发板的内核时基于Arm Cortex-M4. 具有1MB的Flash 和 256K的Ram. 同时支持低功耗蓝牙。以及蓝牙5的Mesh. 同时支持USB模式。 外设提供了对UART 和 I2C以及SPI,ADC. PWM,RTC 和PWM的支持。数据参考

这款开发板还是非常小巧的,上电后需要手动将开关拨动到On。这时芯片才会正常工作,同时这个开发板提供了一个外部供电的小插槽,可以非常方便的使用电池供电,比如一节18650电池。电压范围在2.5到3.6V

环境搭建

本文默认你已经安装好了Arduino IDE

SparkFun Pro nRF52840 Mini蓝牙开发板 ADC

Arduino实现ADC的功能非常简单,所以近几篇类似IIC,USART,SPI等外设的功能。我们都快速实现。并且使用对应协议的传感器来实现Demo功能。

今天要实现的是使用这块开发板上的ADC功能来读取气体质量传感器的电压输出,并且通过串口发送给上位机。

根据原理图得知, 这款开发板上一共有8个Pin可以用于ADC的输入,如下图所示

数据手册上也是清楚的说明了当前的ADC,大意是说,12位的ADC具有8个通道

接下来我们开始编码部分。Sparkfun其实也为我们提供了Demo示例。通过下图我们可以打开官方提供的demo

SparkFun Pro nRF52840 Mini 蓝牙键盘

本章我们将学习如是使用SparkFun Pro nRF52840 Mini 来快速构建一个HID设备蓝牙键盘。

在开始之前,说一句题外话。 不得不说这个nRF52840 的Arduino库实在是太好用了, 如果自己DIY的话,非常推荐购买这个芯片的单片机来DIY具有蓝牙功能的作品。

在上章节我们已经详细的介绍了如何使用SparkFun Pro nRF52840 Mini实现蓝牙数据的发送,那么本节我们看下如何基于上节的代码实现蓝牙键盘的功能

本章提供的代码是一个演示使用nRF52840模块的HID键盘应用程序的示例。HID键盘在各种电子设备中广泛使用,从计算机到智能手机,为用户提供无缝的输入体验。

功能:

  1. 蓝牙连接: 代码建立了BLE连接,使Bluefruit52模块能够与其他蓝牙设备进行无线通信

  2. HID键盘仿真: 通过HID功能,模块可以仿真标准键盘,从而向连接的设备发送按键信息。

  3. LED控制: 代码包括根据连接设备发送的命令来控制LED的功能,展示了双向通信的可能性。


实现:

  1. 设置:

    • 代码初始化Bluefruit模块,并设置必要的BLE服务,包括设备信息服务(DIS)和HID。

    • 它配置广告数据包以宣布HID键盘服务,并开始广告以进行设备发现。

    • 连接间隔和功率设置经过优化,以实现性能和兼容性。

  2. 主循环:

    • 循环检查来自串行监视器的键盘输入。当输入字符时,它将使用HID功能将其作为按键发送。

    • 代码处理按键按下和释放,确保键盘行为正常。

  3. 回调:

    • 定义一个回调函数来回显当前的蓝牙连接状态。

接下来我将介绍如何实现上述涉及的功能

设置:

我们可以保留上节的大部分功能函数,仅仅需要在初始化蓝牙连接之后,初始化HID设备

上图为对比HID的初始化和没有HID的初始化。左侧为带HID设备的初始化,右侧为仅仅只有蓝牙功能的初始化。而实现这么多功能只需要引入bluefruit.h 库, bluefruit.h 内封装了我们所需的所有功能

主循环:

在程序的主循环中,程序会一直从串口检测是否有数据输入,如果有数据输入的话,则把数据的输入作为键盘的输入。并且发送的远程的蓝牙设备同时改变按键的按下状态,使其在下一次循环的时候释放这个按键并且等待下一次按下。

void loop() 
{
// Only send KeyRelease if previously pressed to avoid sending
// multiple keyRelease reports (that consume memory and bandwidth)
if ( hasKeyPressed )
{
hasKeyPressed = false;
blehid.keyRelease();
// Delay a bit after a report
delay(5);
}
if (Serial.available())
{
char ch = (char) Serial.read();
// echo
Serial.write(ch);
blehid.keyPress(ch);
hasKeyPressed = true;// Delay a bit after a report
delay(5);
}

setKeyboardLedCallback function主要是用于蓝牙的状态显示,当蓝牙未连接的时候,LED会一直处于闪烁状态。当蓝牙连接成功之后LED将停止闪烁。

· END ·


欢迎将我们设为“ 星标 ”,这样才能第一时间收到推送消息。
扫码关注: 汽车开发圈 ,回复“ 驾驶

领取自动驾驶、辅助驾驶等方面免费资料包!



扫码添加小助手回复“进群”

和电子工程师们面对面交流经验


最新有关EEWorld 电子工程世界的文章

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved