- Arduino Nano 33 BLE感应
- Arduino Nano 33 BLE Sense硬件概述
- Arduino Nano 33 BLE感的软件改进
- 为Arduino Nano 33 BLE Sense准备Arduino IDE
- 程序读取传感器数据并在串行监视器上显示
- Arduino Nano 33 BLE-上传代码
Arduino已成为快速原型开发和想法验证的首选开发平台。我们中的许多人本来会以Arduino UNO开发板开始的,但是今天,随着我们朝着物联网,计算机视觉,人工智能,机器学习和其他未来技术发展,朴实的Arduino UNO不再能够应付其8位微控制器。这就要求推出具有更强大处理器的新板,这些处理器具有内置的Wi-Fi,蓝牙,GSM和其他无线功能,例如流行的MKR1000或MKR GSM 1400。在这种情况下,Arduino最近发布了其Nano的新版本,称为Arduino Nano 33。
共有两种类型的Arduino Nano 33板,即Arduino Nano 33 IoT和Arduino Nano 33 BLE感。两个模块之间的主要区别是Arduino Nano 33 BLE感应模块具有一些内置传感器(稍后将进行详细介绍),而Arduino Nano 33 IoT没有它们。在本文中,我们将回顾Arduino Nano 33 BLE感应板,向您介绍其功能和特性,最后编写示例代码以读取传感器值并在串行监视器上显示。因此,让我们开始学习….!
Arduino Nano 33 BLE感应
名称“ Arduino Nano 33 BLE Sense”令人耳目一新,但名称本身却提供了一些重要信息。之所以称为“ Nano”,是因为其尺寸,引脚排列和形状因子与经典的Arduino Nano非常相似,实际上它计划在您现有的项目中替代Arduino Nano,但是要注意的是,这个新模块可以在3.3V,而经典的Nano工作在5V。因此,我认为这是名称“ 33”的来历,以表示该电路板采用3.3V工作。然后名称“ BLE”表示该模块支持低功耗蓝牙(BLE5 5.0)名称“ sense”表示它具有板载传感器,如加速度计,陀螺仪,磁力计,温度和湿度传感器,压力传感器,接近传感器,颜色传感器,手势传感器,甚至是内置麦克风。稍后我们将介绍BLE和其他传感器的详细信息,但是现在这就是Arduino Nano 33 BLE感应板拆箱后的样子。
Arduino Nano 33 BLE Sense硬件概述
在板子的最初外观中,您会发现很多组件挤在顶部,其中大部分是我之前讲过的传感器。但是主脑隐藏在右侧的金属外壳后面。该外壳装有Nordic nRF52840处理器,该处理器包含功能强大的Cortex M4F和用于BLE和Bluetooth 5通信的NINA B306模块。这使开发板可以在非常低的功耗下运行,并使用蓝牙5进行通信,非常适合家庭自动化和其他连接项目中的低功耗网格网络应用。另外,由于nRF处理器支持ARM Mbed OS它还提供了一些软件改进,我们将在后面讨论。下图标记了您应该在板上知道的传感器,LED,按钮和其他重要内容。
从上图可以看到,该板上装有传感器的电源,可以帮助您构建盒子的右侧,而无需将板连接到任何外部传感器。该评估板旨在用于可穿戴设备和其他智能便携式设备,例如健身带,血糖监测,计步器,智能手表,气象站,家庭安全等,您将在其中使用大多数此类传感器。像往常一样,所有这些传感器都有针对Arduino的预构建库,您可以随时使用。在本文的结尾,我们将从所有这些传感器读取值并将其显示在串行监视器上。下表列出了Arduino Nano 33 BLE感应板上的传感器详细信息及其所需的库
传感器名称 |
参量 |
链接 |
LSM9DSI –意法半导体 |
加速度计,陀螺仪,磁力计 |
LSMDSI数据表 Arduino_LSM9DS1库 |
LPS22HB –意法半导体 |
压力 |
LPS22HB资料表 Arduino_LPS22HB库 |
HTS221 –意法半导体 |
温湿度 |
LPS22HB资料表 Arduino_HTS221库 |
APDS9960 – Avago Tech。 |
接近度,光线,颜色,手势 |
LPS22HB资料表 Arduino_APDS9960库 |
MP34DT05 –意法半导体 |
麦克风 |
MP34DT05资料表 内置PDM库 |
这些传感器大多数来自意法半导体(ST Microelectronics),它们支持低功率运行,因此非常适合电池供电的设计。几乎没有人会熟悉APDS9960传感器,因为它已经可以作为一个接续模块使用,并且我们以前也将APDS9960传感器与Arduino一起使用。有关这些传感器的更多信息,您可以访问各自的数据表,并确保已将整个提供的库添加到Arduino IDE中,以开始在Arduino Nano 33 BLE感应板上使用它们。要添加库,您可以使用给定的链接转到相应的GitHub页面并下载ZIP文件,然后使用Sketch-> Include Library-> Add.ZIP Library,或者您也可以使用Arduino IDE上的库管理器并添加这些库库。
Arduino Nano 33 BLE感应板技术规格:
由Nordic nRF52840处理器提供支持的Arduino Nano 44 BLE板具有以下技术规格
- 工作电压:3.3V
- USB输入电压:5V
- 输入引脚电压:4.5V至21V
- 芯片:NINA-B3 – RF52840
- 时钟:64MHz
- 闪存:1MB
- SRAM:256 KB
- 无线连接:蓝牙5.0 / BLE
- 接口:USB,I2C,SPI,I2S,UART
- 数字输入/输出引脚:14
- PWM引脚:6(8位分辨率)
- 模拟引脚:8个(可配置10位或12位)
Arduino Nano 33 BLE感的软件改进
就像那里的所有Arduino开发板一样,可以使用Arduino IDE编程Arduino Nano 33 BLE感应。但是,在开始之前,您必须使用板管理器并将板详细信息添加到您的IDE中。我们知道nRF 52840可以使用ARM Mbed OS进行编程,这意味着我们的Arduino Nano 33开发板支持实时操作系统(RTOS)。使用Mbed OS编程,我们可以在程序中同时运行多个线程以执行多任务处理。而且,电路板的功耗将大大降低,每次我们调用延迟功能时,电路板将在延迟时间内进入发痒模式以节省功率,并且一旦延迟结束便跳回运行状态。据报道,该操作将比普通的Arduino延迟操作消耗4.5uA的电流。
话虽这么说,Mbed OS与Arduino IDE的集成相对较新,要完全利用Mbed OS与Arduino IDE的全部功能,还需要一段时间。因此,为了快速启动,我们将编写一个程序以读取所有传感器的值并将其显示在串行监视器上。
为Arduino Nano 33 BLE Sense准备Arduino IDE
启动您的Arduino IDE,然后转到工具->板->板管理器以启动Arduino板管理器。现在搜索“ Mbed OS”并安装软件包。安装需要一些时间才能完成。
安装完成后,关闭对话框并使用micro USB电缆将Arduino 33板连接到笔记本电脑。一旦连接好板子,窗口就会自动开始为板子安装所需的驱动程序。然后打开您的Arduino IDE,然后选择工具->板-> Arduino Nano33。然后通过检查工具->端口,选择正确的COM端口,我的连接到端口COM3,但是您的端口可能会有所不同。选择端口后,您的IDE右下角应如下所示
现在,为了快速检查是否一切正常,我们可以使用一个示例程序,让我们尝试在文件->示例-> PDM-> PDMSerialPlotter中提供的示例程序。该程序将使用板载麦克风来收听音频并将其绘制在串行绘图仪上。您可以上传程序并检查开发板和IDE是否正常工作。
现在,如果您遇到了一个非常缓慢的编译过程,那么您并不孤单,包括我在内的许多人都将面临这个问题,在撰写本文时,似乎还没有解决方案。编译和上传简单程序大约需要2-3分钟,而当我尝试一些BLE程序或尝试使用Mbed OS时,编译时间增加到10分钟以上,这并不鼓励我尝试任何进一步的操作。这是因为Mbed OS与Arduino IDE集成在一起,所以我们希望来自出色的Arduino社区的人能够为此提供解决方案。
程序读取传感器数据并在串行监视器上显示
如果我们不使用板上的BLE或核心Mbed OS功能,则编译时间是合理的。因此,我写了一个简单的草图来读取所有传感器值并将其显示在串行监视器上,如下所示
这样做的完整代码在本页底部,但是请确保您已安装上述所有库。代码说明如下。
通过包含所有必需的头文件来启动程序。在这里,我们将使用除麦克风以外的所有四个传感器
#include //包含9轴IMU的库#include //包含用于读取压力的库#include //包含用于读取温度和湿度的库#include //包含用于颜色,接近度和手势识别的库
在设置功能中,我们以9600的波特率初始化串行监视器,以显示所有传感器值,还初始化所有必需的库。安装程序中的代码如下所示
void setup(){Serial.begin(9600); //如果(!IMU.begin()),则串行监视器显示所有传感器值//初始化IMU传感器{Serial.println(“无法初始化IMU!”); while(1);} if(!BARO.begin())//初始化压力传感器{Serial.println(“未能初始化压力传感器!”); while(1);} if(!HTS.begin())//初始化温度和湿度传感器{Serial.println(“未能初始化温度和湿度传感器!”); while(1);} if(!APDS.begin())//初始化颜色,接近度和手势传感器{Serial.println(“未能初始化颜色,接近度和手势传感器!”); 而(1);}}
在循环功能内部,我们从库中读取所需的传感器值,然后将其打印在串行监视器上。可以从每个库的示例程序中引用语法,我们已经阅读了加速度计,陀螺仪,磁力计,压力,温度,湿度和接近传感器的值,并将其显示在串行监视器上。测量加速度计值的代码如下所示,同样,我们可以测量所有传感器。
//如果(IMU.accelerationAvailable()){IMU.readAcceleration(accel_x,accel_y,accel_z); Serial.print(“ Accelerometer =”); Serial.print(accel_x); Serial.print(“,”); Serial.print(accel_y); Serial.print(“,”); Serial.println(accel_z); }延迟(200);
Arduino Nano 33 BLE-上传代码
将代码上传到Nano 33类似于其他任何主板,但是请注意,该主板有两个COM端口。当您单击上载按钮时,Arduino IDE会编译代码,然后通过软件命令自动重置板,这会将板置于引导加载程序模式并上载代码。因此,上传完成后,您可能会注意到Arduino IDE已自动将其COM端口更改为其他数字,并且您可能想在打开串行监视器之前将其更改回原来的端口。
因此,到目前为止,这几乎是我对Arduino Nano 33板的经验,我将在以后的某个时间尝试使用其传感器和BLE功能构建一些东西。您在董事会的经历如何?您希望我用它构建什么?将答案留在评论部分,我们将讨论更多。