2024-08-07 07:15

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

本文来自微信公众号:电子工程世界 (ID:EEworldbbs),作者:御坂10032号


在物联网应用中,无线是不可或缺的一环,而这些应用不仅对功耗很敏感,对于成本也很严格。目前,绝大厂商都有自己的无线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,双击工程文件,并运行:


在使用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的开发板支持包,如图所示:


##三、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,如图:


(该引脚的来由是板载的温湿度传感器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章节,介绍了温度值转换实际温度的转换公式,如图:



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


雅特力AT32WB415系列测评


作者:KING_阿飞


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


在FreeRTOS中点灯


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


一、了解板子资源


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


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


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


二、移植FreeRTOS


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


然后在,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、ANT天线引脚(注:PB-02默认用的板载天线,无需外接)2RST复位3P20GPIO20,所有功能均可配置/AIO/麦克风偏置输出*注:不支持中断功能4P18GPIO18,所有功能均可配置/AIO/PGA差分正输入*注:不支持中断功能5P23


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


那么上电后什么现象呢?


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


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


图4开发板原理图


还能指望啥呢?


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


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


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


AT指令测试


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


1)AT指令


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


类型


指令格式


描述


查询指令


AT+?


查询命令中的当前值。


设置指令


AT+=


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


执行指令


AT+


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


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


2)查询名称


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


3)开关回显


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


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


4)重启模组


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


5)设置睡眠模式


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


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


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


2:进入深度睡眠模式


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


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


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


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


在用1_COMAT_V1008.hexf更新了固件后,所支持的指令明显得到增加,见图8至图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号拿到这个板子的。昨天研究了一下如何搭建开发环境。今天就整理了一下给大家做一个开箱和搭建环境的教程.


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


开箱


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


正面照


这款开发板的内核时基于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 Pro nRF52840 Mini蓝牙键盘


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


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


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


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


功能:


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


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


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


实现:


设置:


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


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


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


主循环:


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


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


回调:


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


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


设置:


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


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


主循环:


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


voidloop()


{


//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())


{


charch=(char)Serial.read();


//echo


Serial.write(ch);


blehid.keyPress(ch);


hasKeyPressed=true;


//Delay a bit after a report


delay(5);


}


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

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系hezuo@huxiu.com
如对本稿件有异议或投诉,请联系tougao@huxiu.com
正在改变与想要改变世界的人,都在 虎嗅APP
赞赏
关闭赞赏 开启赞赏

支持一下   修改

确定