风筝
发表于: 2019-11-24 11:33:14 | 显示全部楼层

现今,Arduino已经成为快速原型开发和想法验证的首选开发平台。我们中的许多人都是从Arduino UNO开发板开始入门的,但是随着物联网、计算机视觉、人工智能、机器学习和其他未来技术的发展,朴实的Arduino UNO因其8位微控制器已不再能够应付。这就要求推出具有更加强大处理器的新开发板,这些处理器具有内置的Wi-Fi、蓝牙、GSM和其他无线功能,正如流行的MKR1000或MKR GSM1400。在这种背景下,Arduino最近推出了新款Nano,称为Arduino Nano 33。


Arduino Nano 33开发板共有两种类型,分别是Arduino Nano 33 IoTArduino Nano 33 BLE Sense。两个模块之间的主要区别在于Arduino Nano 33 BLE Sense模块具有一些内置传感器,而Arduino Nano 33 IoT没有。在本文中,我们将介绍Arduino Nano 33 BLE  Sense开发板,向您介绍其特性和功能,最后编写示例代码以读取传感器值并在串口监视器上显示。现在,让我们开始学习....!

Arduino-Nano-3-BLE-Sense-Board.jpg


Arduino Nano 33 BLE Sense开发板

这款“ 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 Sense硬件概述

刚看到该开发板时,您会发现很多组件堆挤在顶部。但是主控制器隐藏在右侧的金属外壳后面。该外壳装有Nordic nRF52840处理器,该处理器包含功能强大的Cortex M4F和用于BLE和Bluetooth 5通信的NINA B306模块。这使该板可在极低的功率下运行,并使用蓝牙5进行通信,非常适合家庭自动化和其他连接项目中的低功率网状网络应用。另外,由于nRF处理器支持ARM Mbed OS,因此它也提供了一些软件改进,我们将在后面讨论。下图标记了传感器、LED、按钮和其他重要内容。

Arduino-Nano-33-BLE-Sense-Hardware-Overview.jpg

从上图可以看出,该开发板上装有各种传感器,可以帮助您构建,而无需将板连接到任何外部传感器。该开发板旨在用于可穿戴设备和其他智能便携式设备,例如健身带、葡萄糖监测、计步器、智能手表、气象站、家庭安全等,您将在其中使用大多数此类传感器。像往常一样,所有这些传感器都有针对Arduino的预构建库,您可以随时使用。在本文的结尾,我们将从所有这些传感器读取值并将其显示在串口监视器上。下表列出了Arduino Nano 33 BLE Sense开发板上的传感器详细信息:

传感器名称
描述
加速度计、陀螺仪、磁力计
LPS22HB – ST
压力计
HTS221 – ST
温湿度传感器
APDS9960 – Avago Tech
接近、光线、颜色、手势
麦克风

这些传感器大多数来自意法半导体(ST Microelectronics),它们支持低功率运行,因此非常适合电池供电的设计。有关这些传感器的更多信息,您可以访问各自的数据手册。在Arduino Nano 33 BLE Sesne开发板上使用这些传感器时,请确保已将整个提供的库添加到Arduino IDE中。要添加库,您可以使用给定的链接转到相应的GitHub页面并下载ZIP文件,然后使用Sketch-> Include Library-> Add.ZIP Library,或者您也可以使用Arduino IDE上的库管理器添加这些库。


Arduino Nano 33 BLE Sense开发板技术规格:

由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 Sense的软件改进

就像所有Arduino开发板一样,可以使用Arduino IDE编程Arduino Nano 33 BLE Sense。但是,您必须先使用板管理器将板详细信息添加到IDE中,然后才能开始。我们知道nRF 52840可以使用ARM Mbed OS进行编程,这意味着我们的Arduino Nano 33开发板支持实时操作系统(RTOS)。使用Mbed OS编程,我们可以在程序中同时运行多个线程以执行多任务处理。而且,电路板的功耗将大大降低,每次我们调用delay函数功能时,电路板将在延迟时间内进入睡眠模式以节省功耗,并且一旦延迟结束便跳回运行状态。据报道,此操作将比普通的Arduino延迟操作少消耗4.5uA。


话虽这么说,Mbed OS与Arduino IDE的集成相对较新,要完全利用Mbed OS与Arduino IDE的全部功能,还需要一段时间。因此,为了快速启动,我们将编写一个程序以读取所有传感器的值并将其显示在串口监视器上。


为Arduino Nano 33 BLE Sense准备Arduino IDE

启动您的Arduino IDE,然后转到Tools -> Boards -> Board Manger启动Arduino板管理器。现在搜索“ Mbed OS”并安装软件包。安装需要一些时间才能完成。

Arduino-IDE-for-Arduino-Nano-33-BLE-Sense.png


安装完成后,关闭对话框,并使用micro USB电缆将Arduino 33开发板与笔记本电脑连接。一旦连接好开发板,窗口就会自动开始安装所需的驱动程序。然后打开您的Arduino IDE,然后选择Tools -> Board -> Arduino Nano 33。然后通过检查Tools -> Port,选择正确的COM端口,我的开发板连接到端口COM3,但是您的端口可能会有所不同。选择端口后,您的IDE右下角应如下所示

Preparing-Arduino-IDE-for-Arduino-Nano-33-BLE-Sense.png


现在,为了快速检查是否一切正常,我们可以使用一个示例程序,让我们尝试在Examples -> PDM -> PDMSerialPlotter中提供的示例程序。该程序将使用板载麦克风来收听音频并将其绘制在串口绘图仪上。您可以上传程序并检查开发板和IDE是否正常工作。


如果这时您遇到了令人难以置信的编译缓慢,包括我在内的许多人都将遇到这个问题,在撰写本文时,似乎还没有解决方案。编译和上传简单程序大约需要2-3分钟,而当我尝试一些BLE程序或尝试使用Mbed OS时,编译时间增加到10分钟以上,这不允许我尝试任何进一步的操作。这是因为Mbed OS与Arduino IDE集成在一起,希望来自出色的Arduino社区为此提供解决方案。


读取传感器数据并在串口监视器上显示

如果我们不使用开发板上的BLE或Mbed OS功能,则编译时间是合理的。因此,我写了一个简单的草图来读取所有传感器值并将其显示在串口监视器上,如下所示

Program-to-read-sensor-data.png

本页底部提供了执行相同操作的完整代码,但请确保已安装上述所有库。代码说明如下。


通过包含所有必需的头文件来启动程序。在这里,我们将使用除麦克风以外的所有四个传感器

  1. #include <Arduino_LSM9DS1.h> //Include the library for 9-axis IMU
  2. #include <Arduino_LPS22HB.h> //Include library to read Pressure
  3. #include <Arduino_HTS221.h> //Include library to read Temperature and Humidity
  4. #include <Arduino_APDS9960.h> //Include library for colour, proximity and gesture recognition
复制代码

setup函数中,我们以9600波特率初始化串口监视器,以显示所有传感器值,然后初始化所有必需的库。程序中的代码如下所示

  1. void setup(){
  2.   Serial.begin(9600); //Serial monitor to display all sensor values
  3.   if (!IMU.begin()) //Initialize IMU sensor
  4.   { Serial.println("Failed to initialize IMU!"); while (1);}
  5.   if (!BARO.begin()) //Initialize Pressure sensor
  6.   { Serial.println("Failed to initialize Pressure Sensor!"); while (1);}
  7.   if (!HTS.begin()) //Initialize Temperature and Humidity sensor
  8.   { Serial.println("Failed to initialize Temperature and Humidity Sensor!"); while (1);}
  9.   if (!APDS.begin()) //Initialize Colour, Proximity and Gesture sensor
  10.   { Serial.println("Failed to initialize Colour, Proximity and Gesture Sensor!"); while (1);}
  11. }
复制代码

在loop函数中,我们从库中读取所需的传感器值,然后将其打印在串口监视器上。可以从每个库的示例程序中引用语句,我们读取了加速度计、陀螺仪、磁力计、压力、温度、湿度和接近传感器的值,并将其显示在串口监视器上。测量加速度计值的代码如下所示,同样,我们可以测量所有传感器。

  1. //Accelerometer values
  2.   if (IMU.accelerationAvailable()) {
  3.     IMU.readAcceleration(accel_x, accel_y, accel_z);
  4.     Serial.print("Accelerometer = ");Serial.print(accel_x); Serial.print(", ");Serial.print(accel_y);Serial.print(", ");Serial.println(accel_z);
  5.   }
  6. delay (200);
复制代码

Arduino Nano 33 BLE-上传代码

将代码上传到Nano 33类似于其他开发板,但是请注意,该主板有两个COM端口。当您单击上载按钮时,Arduino IDE会编译代码,然后通过软件命令自动复位开发板,这将使其处于引导加载程序模式并上传您的代码。因此,上传完成后,您可能会注意到Arduino IDE已自动将其COM端口更改为另一个数字,并且您可能想在打开串口监视器之前将其更改回原来的端口。

Arduino-Nano-33-BLE.jpg


因此,到目前为止,这几乎是对Arduino Nano 33开发板的经验,我将在以后的某个时间尝试使用其传感器和BLE功能构建一些东西。您对该开发板的经历如何?您希望我用它制作什么?欢迎在本帖下面进行回复。


代码

本文使用的完整代码如下: main.rar (805 Bytes, 下载次数: 54)

跳转到指定楼层
xiaohua
发表于: 2019-12-11 17:09:37 | 显示全部楼层

你好,可以讲一下BLE的使用方法吗,例如一些简单的BLE上传程序。
回复

使用道具 举报

capslock
发表于: 2021-8-6 16:28:34 | 显示全部楼层

已经找不到Mbed OS这个库了
回复

使用道具 举报

风筝
发表于: 2021-8-11 17:18:36 | 显示全部楼层

capslock 发表于 2021-8-6 16:28
已经找不到Mbed OS这个库了

可以在github下载
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-25 16:35 , Processed in 0.040061 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表