Grove Arduino 101入门套件:开箱即用的物联网与传感器开发指南

发布时间:2026/8/2 11:44:27
Grove Arduino 101入门套件:开箱即用的物联网与传感器开发指南 1. 项目概述为什么选择Grove Arduino 101入门套件如果你刚接触电子制作和物联网面对一堆零散的杜邦线、面包板、电阻电容还有那些引脚密布的传感器是不是感觉头大不知道从何下手我刚开始玩Arduino的时候也经历过这个阶段接线错误、接触不良是家常便饭大部分时间都花在了排查硬件连接上严重打击了学习的热情。今天要聊的这个Grove Arduino Genuino 101入门套件就是为解决这个“入门劝退”痛点而生的。简单来说这套件把Arduino 101开发板和一个精心挑选的传感器/执行器模块集合在一起并且最关键的是所有模块都采用了Grove连接系统。Grove是什么你可以把它理解为电子元件的“乐高”。每个Grove模块都有一个标准的4针接口VCC GND 信号1 信号2你只需要用一根配套的4芯线像插USB一样“咔哒”一声就把传感器和主板连起来了完全不用考虑正负极、信号线接哪个引脚、会不会短路这些问题。对于新手这简直是福音能让你把99%的精力聚焦在代码逻辑和创意实现上而不是繁琐的硬件接线。那么核心的Arduino/Genuino 101又是什么来头它是Arduino官方与英特尔合作推出的一款非常特别的开发板。它基于英特尔的Curie模块核心是一颗32位的Intel Quark微控制器但它的杀手锏是板载了一个**6轴加速度计/陀螺仪IMU和一个低功耗蓝牙BLE**模块。这意味着你拿到手的就是一个自带运动感知和无线通信能力的“超级Arduino”无需额外购买任何模块就能直接做体感控制、姿态识别、蓝牙遥控等项目。这在当时的入门级开发板中是独一份的即使放到现在其集成度也颇具竞争力。所以这套入门套件的价值在于“开箱即用”的硬件连接便利性 “自带Buff”的核心板强大功能。它非常适合学生、创客新手、以及想快速验证物联网和交互创意原型的设计师。接下来我们就从开箱到做出第一个有趣的项目一步步拆解。2. 套件深度开箱与核心模块解析当你拿到这个套件打开盒子里面通常包含以下几大类物品。我们不止是清点更要理解每一样东西的用途和背后的设计逻辑。2.1 核心大脑Arduino/Genuino 101开发板这块板子是整个套件的灵魂。外观上和经典的Arduino Uno很像接口布局也兼容这意味着很多Uno的盾板Shield理论上也能用。但我们得关注它独特的地方处理器与内存Intel Curie模块包含一个32位Intel Quark x86核心主频32MHz和一个32位ARC架构的传感器协处理器主频32MHz。配备384KB Flash和80KB SRAM。相比Uno的ATmega328P16MHz 32KB Flash 2KB SRAM性能有显著提升能处理更复杂的逻辑和算法。板载传感器BMI1606轴惯性测量单元IMU。这玩意儿集成了3轴加速度计和3轴陀螺仪。加速度计测量线性运动比如倾斜、震动陀螺仪测量角速度比如旋转。两者数据融合就能精确计算出板子的姿态俯仰、横滚、偏航。很多手机里的“摇一摇”、“屏幕旋转”就是靠它实现的。在101上你可以通过专门的库如CurieIMU直接读取这些数据无需任何外接模块。无线通信蓝牙4.1BLE。低功耗蓝牙的特点是省电适合电池供电的设备间歇性传输少量数据比如传感器读数。你可以用101板子创建一个BLE外设Peripheral比如一个温湿度计然后用手机作为Central去连接并读取数据。这为物联网项目打开了大门。兼容性与编程它完全兼容Arduino IDE使用标准的Arduino编程语言基于C/C。在IDE的板卡管理器中添加“Intel Curie Boards”支持后就能像给Uno编程一样给它写代码、上传。这种“软”兼容极大地降低了学习迁移成本。注意由于英特尔已经逐步停止对Curie模块的深度支持在较新版本的Arduino IDE2.x及以上中可能需要手动添加一个旧的板卡支持网址或者使用1.8.x版本的IDE会更稳定。这是一个重要的实操避坑点。2.2 连接桥梁Grove扩展板与线缆套件里会有一块Grove Base Shield。这块板子直接插在101开发板上将101的IO引脚数字口、模拟口、I2C、UART转换成多个标准的Grove 4针接口。接口分类扩展板上通常会用颜色或文字标注接口类型数字口D标有D2, D3, D4...等用于连接数字传感器如按钮、触摸传感器、继电器或执行数字输出的设备如LED。模拟口A标有A0, A1, A2...等用于连接模拟传感器如旋钮、光线传感器、声音传感器读取连续的电压值。I2C口I2C通常有1-2个标为I2C。这是双线串行总线可以一个接口挂载多个设备每个设备有唯一地址。套件中的LCD屏、三轴加速度计外置的等模块通常接在这里。UART口串口标为UART或TX/RX用于与其他串口设备通信。线缆一捆4芯Grove连接线。线的一端是母头另一端是公头。连接时母头插在扩展板的接口上公头插在传感器模块上。防呆设计想插反都难。2.3 感知与执行Grove模块全家福套件包含的模块可能略有不同但核心模块通常包括这些我们按功能分组理解1. 基础输入模块感知世界按钮模块最简单的数字输入按下为高/低电平。触摸传感器检测人体触摸比按钮更酷的交互方式。旋钮电位器经典的模拟输入旋转改变电阻值从而改变输出电压常用于调节参数如音量、亮度。光线传感器模拟模块检测环境光强度。输出电压随光线变强而升高。声音传感器模拟模块检测环境声音大小注意是幅度不是频率。可用于声控开关。温度传感器常见的是基于热敏电阻的模拟模块或者更高精度的数字模块如DHT11但需注意它虽是数字信号但用的单总线协议不是标准I2C通常接数字口。2. 高级传感器模块增强感知三轴加速度计这是一个外置的I2C接口加速度计如ADXL345。你可能会问板子不是自带6轴IMU了吗为什么还给一个这是因为板载的IMUBMI160主要服务于姿态算法而外置的ADXL345这类模块通常有更丰富的可配置范围量程可选±2g, ±4g, ±8g, ±16g和不同的精度适合需要专门高精度加速度测量的场景也方便你学习通用的I2C传感器驱动方法。温湿度传感器如DHT11提供数字式的温度和湿度读数。3. 输出模块影响世界LED发光二极管最简单的数字输出亮与灭。蜂鸣器可以发出不同频率的声音做警报或简单音乐。OLED液晶屏0.96寸I2C接口128x64像素。这是套件里的“大杀器”可以显示文字、图形让你的项目立刻拥有可视化界面成就感倍增。继电器模块数字控制用低电压5V控制高电压如220V交流电电路的通断。安全警告使用继电器涉及强电务必在完全理解电路安全知识并有成人指导的情况下操作严禁直接触摸强电部分4. 交互与扩展舵机这是一个模拟舵机如SG90通过PWM信号控制旋转角度0-180度。虽然控制信号是数字PWM但它本身是一个执行机构。你可以用它做机械臂、云台等。通过这套模块组合你已经可以构建无数经典项目环境监测站温湿度光线OLED显示、声光互动装置声音控制LED、蓝牙遥控小车101做遥控器通过BLE发送指令、姿态控制游戏手柄用板载IMU等等。3. 开发环境搭建与首个程序“Hello World”工欲善其事必先利其器。在写代码前我们需要把软件环境搭好。这里会遇到一些Arduino 101特有的问题我会把踩过的坑都告诉你。3.1 Arduino IDE的安装与板卡支持配置安装Arduino IDE前往Arduino官网下载IDE。对于Arduino 101我强烈建议使用经典的1.8.x版本如1.8.19兼容性最好。新版的2.0 IDE虽然界面更现代但对一些老板卡的支持有时会出现问题。添加板卡支持打开Arduino IDE点击文件-首选项。在“附加开发板管理器网址”中填入以下网址如果已有其他用逗号隔开https://downloads.arduino.cc/packages/package_intel_index.json点击确定。安装Curie核心点击工具-开发板-开发板管理器...。在搜索框中输入“Curie”。找到“Intel Curie Boards by Intel”选择版本通常安装最新稳定版点击“安装”。这个过程需要下载几百MB的文件请保持网络通畅。选择开发板与端口安装完成后在工具-开发板中选择“Arduino/Genuino 101”。用USB线将101开发板连接到电脑。在工具-端口中会多出一个串口如COM3或/dev/tty.usbmodem1411选择它。实操心得如果在新版IDE中找不到“Intel Curie Boards”或者安装失败可以尝试手动添加旧的板卡定义库但这比较麻烦。最省事的办法就是退回Arduino IDE 1.8.x。这是经过大量社区验证的最稳定方案。3.2 驱动安装问题排查Windows用户特别注意在Windows上首次连接Arduino 101时系统可能会无法自动安装驱动导致端口列表里找不到设备。现象设备管理器中看到“未知设备”或“CDC Serial”带黄色叹号。解决方案右键点击该设备选择“更新驱动程序”。选择“浏览我的电脑以查找驱动程序”。导航到你的Arduino IDE安装目录下的drivers文件夹例如C:\Program Files (x86)\Arduino\drivers。让Windows在此文件夹中搜索安装。安装成功后设备管理器里会显示为“Arduino 101 (COMx)”。3.3 从“Blink”到“Sensor Blink”验证之旅第一个程序永远是让板载的“L”灯闪烁这是电子世界的“Hello World”。标准Blink在IDE中点击文件-示例-01.Basics-Blink。这个程序会让连接到13号引脚的LED闪烁。对于101板载的“L”灯正好在13号引脚。直接点击上传向右箭头图标。如果看到“L”灯开始规律闪烁并且IDE下方显示“上传成功”恭喜你环境和板子基本正常。Grove LED Blink现在我们引入Grove系统。用一根Grove线将LED模块连接到扩展板的D3口任意数字口都行这里以D3为例。修改Blink程序void setup() { pinMode(3, OUTPUT); // 将D3引脚设置为输出模式对应你连接的端口 } void loop() { digitalWrite(3, HIGH); // 点亮LED delay(1000); // 等待1秒 digitalWrite(3, LOW); // 熄灭LED delay(1000); // 等待1秒 }上传程序你应该看到外接的Grove LED开始闪烁。这一步验证了Grove扩展板和模块的连接是正常的。交互式Blink用按钮控制我们再增加一个输入模块。将按钮模块接到D4口LED保持接D3。程序升级为用按钮控制LEDconst int buttonPin 4; // 按钮接D4 const int ledPin 3; // LED接D3 int buttonState 0; // 存储按钮状态 void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); // 按钮是输入 } void loop() { buttonState digitalRead(buttonPin); // 读取按钮状态 if (buttonState HIGH) { // 假设按钮按下为HIGH digitalWrite(ledPin, HIGH); // 开灯 } else { digitalWrite(ledPin, LOW); // 关灯 } }上传后按下按钮LED亮松开LED灭。至此一个完整的“输入-处理-输出”交互链路就跑通了。这虽然简单但它是所有复杂项目的基石。4. 核心模块实战与代码深度剖析掌握了基础我们来深入玩转套件里几个最有特色的模块理解其原理和代码写法。4.1 点亮世界之窗OLED屏幕显示OLED屏是项目“颜值”担当。它使用I2C通信因此需要接在扩展板的I2C接口上。在编程前需要先安装库。安装库在Arduino IDE中点击项目-加载库-管理库...搜索“SSD1306”或“Adafruit SSD1306”和“Adafruit GFX”。安装由Adafruit或ThingPulse维护的版本。接线将OLED模块的Grove线插到扩展板的I2C口通常标为I2C。基础显示程序#include Wire.h #include Adafruit_GFX.h #include Adafruit_SSD1306.h #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // 有些屏有复位引脚没有就设为-1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, Wire, OLED_RESET); void setup() { Serial.begin(9600); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // I2C地址通常是0x3C或0x3D Serial.println(F(SSD1306 allocation failed)); for(;;); // 初始化失败就停在这里 } display.clearDisplay(); // 清屏 display.setTextSize(2); // 设置字体大小 display.setTextColor(SSD1306_WHITE); // 设置颜色单色屏只有白 display.setCursor(0, 0); // 设置光标起始位置(0,0) display.println(Hello,); // 打印文字 display.println(Grove 101!); display.display(); // 将缓存内容显示到屏幕上这句必须要有 delay(2000); } void loop() { // 可以在这里做动态显示比如滚动文字、画图 display.clearDisplay(); display.setCursor(0, 0); display.println(Time:); display.println(millis() / 1000); // 显示运行秒数 display.display(); delay(100); }代码解析#include引入必要的库。Adafruit_SSD1306 display(...)初始化一个显示对象。display.begin()尝试与屏幕通信地址0x3C是常见值如果不行可以试试0x3D。所有绘图、写字操作都是在内存的“显示缓存”中进行的只有调用display.display()后才会一次性更新到实际屏幕上。这是一种避免屏幕闪烁的常见技术双缓冲。display.clearDisplay()和display.display()通常成对出现先清空缓存再画新内容最后更新显示。4.2 感知运动奥秘板载6轴IMU的使用这是Arduino 101的精华所在。我们使用官方提供的CurieIMU库。#include CurieIMU.h void setup() { Serial.begin(9600); while (!Serial); // 等待串口连接只在调试时需要 CurieIMU.begin(); // 初始化IMU CurieIMU.setAccelerometerRange(2); // 设置加速度计量程为±2g CurieIMU.setGyroRange(250); // 设置陀螺仪量程为250度/秒 } void loop() { int ax, ay, az; // 加速度值 int gx, gy, gz; // 陀螺仪值 // 读取加速度单位可能是mg取决于量程和库版本 CurieIMU.readAccelerometer(ax, ay, az); // 读取陀螺仪单位可能是mdps CurieIMU.readGyro(gx, gy, gz); Serial.print(Accel: ); Serial.print(ax); Serial.print(, ); Serial.print(ay); Serial.print(, ); Serial.print(az); Serial.print( | ); Serial.print(Gyro: ); Serial.print(gx); Serial.print(, ); Serial.print(gy); Serial.print(, ); Serial.println(gz); delay(100); // 每100ms读取一次 }上传代码打开串口监视器工具-串口监视器波特率设为9600晃动开发板你会看到六组数据在快速变化。加速度计数据反映你移动板子的“力度”和方向陀螺仪数据反映旋转的“速度”。进阶应用——姿态角欧拉角计算 原始数据不易理解我们更常需要的是俯仰角Pitch、横滚角Roll和偏航角Yaw。CurieIMU库提供了传感器数据融合算法可以直接读出这些角度。但请注意由于101没有磁力计其偏航角Yaw会随着时间漂移陀螺仪积分误差不够准确。但对于俯仰和横滚效果很好。#include CurieIMU.h float pitch, roll, yaw; // 姿态角 void setup() { Serial.begin(9600); CurieIMU.begin(); CurieIMU.autoCalibrateGyroOffset(); // 自动校准陀螺仪零偏很重要 CurieIMU.setGyroRate(25); // 设置数据输出率 CurieIMU.setAccelerometerRate(25); CurieIMU.setGyroRange(250); CurieIMU.setAccelerometerRange(2); // 启用姿态解算引擎 CurieIMU.setDetectionThreshold(CURIE_IMU_TAP, 50); // 示例参数并非必须 } void loop() { // 检查是否有新的姿态数据可用 if (CurieIMU.dataReady()) { CurieIMU.readEulerAngles(pitch, roll, yaw); // 读取欧拉角 Serial.print(Pitch: ); Serial.print(pitch); Serial.print( Roll: ); Serial.print(roll); Serial.print( Yaw: ); Serial.println(yaw); } delay(50); }这个程序可以让你直观地看到板子像飞机一样“抬头”、“侧滚”的角度。你可以用它做一个“水平仪”或者体感控制器。4.3 无线连接初探蓝牙低功耗BLE基础让101通过BLE与手机通信是另一个激动人心的功能。Arduino 101的BLE功能通过CurieBLE库实现。概念上101可以作为外设Peripheral 提供服务的设备如心率带或中心设备Central 搜索连接外设的设备如手机。我们这里做一个简单的“外设”提供一个可读写的特征值Characteristic。#include CurieBLE.h BLEPeripheral blePeripheral; // 创建一个BLE外设对象 BLEService ledService(19B10000-E8F2-537E-4F6C-D104768A1214); // 自定义服务UUID // 创建一个可读写的特征用于控制LED BLECharCharacteristic switchCharacteristic(19B10001-E8F2-537E-4F6C-D104768A1214, BLERead | BLEWrite); const int ledPin 13; // 使用板载LED void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // 设置BLE设备的本地名称和广播的服务 blePeripheral.setLocalName(Grove101_LED); blePeripheral.setAdvertisedServiceUuid(ledService.uuid()); // 将特征添加到服务再将服务添加到外设 blePeripheral.addAttribute(ledService); blePeripheral.addAttribute(switchCharacteristic); // 设置特征值的初始值 switchCharacteristic.setValue(0); // 开始广播等待中心设备连接 blePeripheral.begin(); Serial.println(BLE LED Peripheral started, waiting for connections...); } void loop() { // 监听BLE事件 BLECentral central blePeripheral.central(); // 如果有中心设备连接 if (central) { Serial.print(Connected to central: ); Serial.println(central.address()); // 当连接保持时 while (central.connected()) { // 检查中心设备是否向特征写了新值 if (switchCharacteristic.written()) { // 读取写入的值1个字节 int value switchCharacteristic.value(); Serial.print(Received value: ); Serial.println(value); if (value 1) { digitalWrite(ledPin, HIGH); Serial.println(LED ON); } else if (value 0) { digitalWrite(ledPin, LOW); Serial.println(LED OFF); } } } // 连接断开 Serial.print(Disconnected from central: ); Serial.println(central.address()); } }在手机端你需要一个BLE调试App如nRF Connect、LightBlue。打开App搜索设备找到“Grove101_LED”连接后找到对应的服务UUID: 19B10000...和特征UUID: 19B10001...。向这个特征写入01十六进制或0x01板载LED就会亮起写入00LED熄灭。这就实现了一个最简单的手机蓝牙遥控灯。5. 综合项目实战环境监测与蓝牙上报系统现在我们把多个模块组合起来做一个有实用价值的综合项目一个能本地显示温湿度、光线并能通过蓝牙将数据发送到手机的环境监测站。所需模块Arduino 101 Grove扩展板 OLED屏 温湿度传感器如DHT11 光线传感器 按钮模块用作模式切换。接线OLED屏 - I2C口DHT11 - 数字口 D2注意DHT11是单总线需接数字口并上拉电阻很多Grove模块已集成光线传感器 - 模拟口 A0按钮 - 数字口 D3代码框架与思路引入所有必要库Wire,Adafruit_SSD1306,Adafruit_GFX,DHT(用于DHT11)CurieBLE。定义引脚和全局变量。在setup()中初始化串口、屏幕、传感器、BLE。设计两种模式通过按钮切换模式0本地显示模式。在OLED屏上实时刷新显示温度、湿度、光线强度。模式1蓝牙广播模式。屏幕可能显示“BLE Mode”同时通过BLE以一定间隔向连接的手机发送传感器数据包。在loop()中读取按钮状态实现模式切换。读取所有传感器数据。根据当前模式选择是更新屏幕显示还是打包数据通过BLE发送。关键代码片段模式切换与BLE数据发送#include CurieBLE.h // ... 其他库和定义 BLEPeripheral blePeripheral; BLEService envService(181A); // 标准环境传感服务UUID // 创建特征温度、湿度、光照均为可读、通知 BLEFloatCharacteristic tempChar(2A6E, BLERead | BLENotify); // 温度 BLEFloatCharacteristic humidChar(2A6F, BLERead | BLENotify); // 湿度 BLEUnsignedShortCharacteristic lightChar(2AFB, BLERead | BLENotify); // 光照自定义或近似 int displayMode 0; // 0本地显示 1BLE发送 unsigned long lastSendTime 0; const long sendInterval 2000; // BLE发送间隔2秒 void setup() { // ... 初始化屏幕、传感器等 // BLE设置 blePeripheral.setLocalName(EnvMonitor101); blePeripheral.setAdvertisedServiceUuid(envService.uuid()); blePeripheral.addAttribute(envService); envService.addCharacteristic(tempChar); envService.addCharacteristic(humidChar); envService.addCharacteristic(lightChar); blePeripheral.begin(); } void loop() { // 1. 读取按钮切换模式 if (digitalRead(buttonPin) HIGH) { delay(50); // 简单消抖 if (digitalRead(buttonPin) HIGH) { displayMode 1 - displayMode; // 在0和1之间切换 Serial.print(Mode switched to: ); Serial.println(displayMode); while(digitalRead(buttonPin) HIGH); // 等待按钮释放 } } // 2. 读取传感器数据 float t readTemperature(); float h readHumidity(); int l analogRead(lightPin); // 3. 根据模式处理 if (displayMode 0) { // 本地显示模式 updateLocalDisplay(t, h, l); // 如果之前是BLE模式现在断开连接 if (blePeripheral.connected()) { // 可以主动断开或停止广播这里简单处理 } } else { // BLE广播模式 updateDisplayForBLEMode(); // 屏幕显示“BLE Active”等 // 处理BLE连接与数据发送 BLECentral central blePeripheral.central(); if (central central.connected()) { unsigned long currentTime millis(); if (currentTime - lastSendTime sendInterval) { tempChar.setValue(t); humidChar.setValue(h); lightChar.setValue(l); lastSendTime currentTime; Serial.println(Data sent via BLE); } } } delay(100); // 主循环延迟 }在手机BLE App中连接“EnvMonitor101”订阅启用通知温度、湿度、光照特征就能实时收到数据更新。这个项目综合运用了数字/模拟输入、I2C显示、传感器驱动、状态机和BLE通信是一个非常好的练手项目。6. 进阶思路、常见问题与资源获取玩转了套件内的模块你可能还想探索更多。这里提供一些方向和避坑指南。6.1 资源扩展与项目灵感更多Grove模块Seeed StudioGrove生态的创建者提供了上百种Grove模块从气体传感器、GPS、电机驱动到LoRa无线模块应有尽有。你的Grove扩展板是通用的可以接入这些模块极大扩展项目可能性。兼容第三方库Arduino 101本质上是一个Arduino兼容板社区里海量的Arduino库只要不依赖特定硬件如AVR特有寄存器很多都可以尝试在101上使用。例如驱动WS2812 RGB灯带的Adafruit_NeoPixel库网络服务的ArduinoHttpClient库等。项目灵感体感游戏手柄利用板载IMU通过BLE连接电脑或手机模拟游戏手柄的加速度和陀螺仪数据。智能门磁报警器用101的BLE做信标结合磁力传感器Grove磁力模块当门被打开时手机收到通知。植物浇水提醒器土壤湿度传感器Grove监测湿度低于阈值时OLED屏显示警告并通过BLE发送提醒到手机。6.2 常见问题与排查避坑指南上传程序失败提示“编程器未响应”或“找不到设备”检查驱动Windows用户务必确认驱动已正确安装见3.2节。检查端口确保IDE中选择的端口是正确的。检查板卡类型确认在工具-开发板中选的是“Arduino/Genuino 101”而不是Uno或其他。尝试复位在上传瞬间点击上传后约1秒内快速按一下101板上的物理复位按钮RST。这有时能解决通信同步问题。更换USB线或接口有些USB线只能充电不能传数据。OLED屏幕不显示或乱码检查I2C地址使用一个简单的I2C扫描程序确认你的屏幕地址是0x3C还是0x3D并修改代码中的begin()函数参数。检查库确保安装了正确且兼容的SSD1306库。有时不同厂商的屏幕初始化序列略有不同。检查接线确认Grove线插在了扩展板的I2C口并且接触良好。DHT11等传感器读数失败或为NaN检查引脚确认代码中定义的引脚与实际连接的Grove端口一致例如接在D2口代码就要是#define DHTPIN 2。增加延迟DHT11两次读取之间需要至少2秒的间隔。在loop()中读取后加一个delay(2000)。检查库版本尝试使用DHT sensor library by Adafruit它维护得比较好。BLE连接不稳定或无法发现检查手机App和系统权限确保手机蓝牙已打开且App有定位权限在Android上扫描BLE需要定位权限。简化代码初期可能因为代码逻辑复杂导致BLE栈处理不过来。尝试用最基础的BLE示例程序测试。注意广播间隔CurieBLE库的广播和连接参数可能不是最优的。如果距离稍远就断连可以尝试在setup()中增加blePeripheral.setAdvertisingInterval(100);单位是0.625ms100约等于62.5ms来增加广播密度。板载IMU数据跳动大或不准确执行校准在setup()中调用CurieIMU.autoCalibrateGyroOffset();和CurieIMU.autoCalibrateAccelerometerOffset();进行自动校准。将板子静止水平放置几秒钟。软件滤波对读取到的原始数据ax, ay, az, gx, gy, gz进行简单的软件滤波比如移动平均滤波可以显著平滑数据。理解数据特性加速度计对震动非常敏感陀螺仪存在温漂。对于要求高的应用需要更复杂的传感器融合算法如卡尔曼滤波、互补滤波但这超出了入门范围。这个套件最大的优势在于它用Grove系统扫清了硬件连接的障碍又用Arduino 101板载的高级功能为你打开了物联网和交互感知的大门。从点亮第一个LED到让传感器数据在手机端呈现每一步的成就感都是实实在在的。希望这篇超详细的指南能成为你探索创客世界的坚实跳板。记住最好的学习就是动手去做遇到问题就查资料、问社区每一个坑踩过去都是你的经验值。