最近为rtthread社区和国民技术n32g45x系列单片机联合举办比赛的关系,涉及到给n32g45x-evk开发板进行蓝牙通信扩展的问题。我这里最后用到的是esp32-devkit-v4乐鑫官方开发板,准备了两个小小的esp32开发板,因为命题为mesh组网。
不过,因为国民技术开发板和rtthread社区比赛参加人数众多的关系,我收到的是一块n32g45x-evk板子,所以mesh方案只好放弃先。
最终方案改为,n32g45x-evk开发板用串口连接一个esp32小模组,进行串口透传spp,来和手机端的蓝牙APP进行交互,实现控制n32g45x-evk开发板上的LED闪烁。
下面先处理一下esp32开发板,实现spp功能,并和手机APP先调试好数据的收发。
Esp32模块作为蓝牙通信使用的方式很多,乐鑫官方idf原生SDK,microPython固件和arduino库都可以实现。因为个人还没体验过arduino的开发模式,所以这里就用arduino2.0版本的IDE来试试看,esp32模块和开发板在arduinoIDE下是如何使用的。
首先到arduino官网https://www.arduino.cc/en/software/去下载2.0版本的arduinoIDE,目前还不是正式版,而是rc5。
下载后,直接安装好IDE,如下图显示。
安装完成后,点击完成按钮,arduinoIDE直接运行,如下图。
同时,可以看看安装目录下的文件结构,显然arduinoIDE是用nodejs+electron实现的。
因为IDE内建的是arduino生态的板子和有关的库,而esp32模块和开发板并不包含在内。这里还需要单独安装好esp32的工具链和官方SDK等工具,如下图。
乐鑫官方提供了多个版本,这里我试过好几个都很难下载,最后安装好的是1.03版本的包,如下图。
一切准备好后,就可以开始实现spp串口透传功能。主要是利用Serial2SerialBT这个库例程,如下图所示。
然后可以把这个例程简单修改下,实现我们要的spp功能,烧录则如下图。
烧录成功后,就可以用putty等PC机的串口工具来连接esp32开发板,显示如下图。
手机端运行一个蓝牙串口APP,如下图所示。
APP进行搜索,连接,配对,数据收发等,这里不再赘述。 以上步骤完成后,esp32模块已经实现了串口透传,便可以跟n32g45x-evk开发板直接用串口连接起来,进行数据通信了。 n32g45x-evk开发板上的程序开发,可以分为两步走,先用PC机上的USB串口工具如xcom等和n32g457-evk开发板调通串口通信功能,然后把USB串口模块替换为esp32模块就行了。 如果为了分辨USB串口通信和esp32ble串口数据透传的差异,可以在esp32ble串口透传功能spp的实现代码中,加上如“serial”之类的标志性字符串,以示区别。
|