项目简介
本项目借助Arduino Nano 33 BLE Sense和web界面实现对虚拟门的控制。通过捕获并分类加速度计和陀螺仪的数据,利用蓝牙与Arduino通信,依据识别出的手势完成门的打开或关闭操作。
项目的主要特性和功能
- 数据捕获:
imu_capture
文件夹中的代码可捕获IMU传感器数据并输出到串行端口,这些包含加速度计和陀螺仪读数的数据用于后续训练和分类,需保存为.csv格式。 - 手势分类:
imu_classifier
文件夹利用机器学习模型,依据传感器数据对执行的手势进行分类。当检测到正确手势,会通过蓝牙发送“true”消息,触发web页面上的门打开。 - 模型训练:
model_training
文件夹内的Jupyter笔记本提供了详细的手势识别模型训练步骤,可在Google Colab平台运行。同时包含两个样本.csv文件,用于训练model.h
文件。 - Web页面控制:Web页面支持通过蓝牙与Arduino连接并控制门,接收来自Arduino的开关门命令,门在打开10秒后自动关闭。
安装使用步骤
- 搭建Arduino IDE环境,准备好Arduino Nano 33 BLE Sense板。
- 利用Arduino IDE上传
imu_capture.ino
草图。 - 执行手势捕获IMU数据,每个手势至少重复10次以提升模型精度。
- 将串行输出导出为.csv文件,保存捕获的数据。
- 打开
model_training
文件夹中的arduino_gesture_model_training.ipynb
文件,在Google Colab中按步骤训练机器学习模型,并将模型导出为model.h
文件,放置于imu_classifier
文件夹。 - 上传
imu_classifier.ino
草图。 - 将
index.html
和images
文件夹托管在web服务器,或在本地web浏览器中打开index.html
文件。 - 在web浏览器中打开网页。
- 点击“连接到Arduino”按钮,通过蓝牙连接Arduino。
- 若连接成功,网页会显示相关提示,更改门图像不透明度并将连接按钮变为断开连接按钮。执行手势,识别正确时门打开,10秒后自动关闭。
注意事项
确保在web页面代码(index.html
)和Arduino草图(imu_classifier.ino
)中调整蓝牙服务和特性UUID,以适配你的具体设置。另外,修改imu_classifier.ino
以反映你的训练模型。
依赖项
此项目依赖以下技术、硬件和库: - Arduino IDE - Arduino Nano 33 BLE板 - Arduino_LSM9DS1库 - TensorFlow Lite Micro库 - Arduino的蓝牙低功耗(BLE)库 - 支持JavaScript和蓝牙的Web浏览器
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】