Arduino使用TinyML实现手势识别

什么是TinyML

TinyML是在Pete Warden于2014年加入Google时发现的,当时OK Google小组是如何使用在DSP上运行的仅14 KB的神经网络来处理Android智能手机的“ OK Google”唤醒词的。沃登的背景是从房子的侧面看的,所以看到在如此有限的空间中奔跑的东西激发了他的好奇心。

他最初致力于使TensorFlow在Android和iOS设备上运行,然后移至TensorFlow Lite,但随后尝试使用更小的设备。沃登在音频领域发现了Pixel的Music IQ用于预测性维护(例如PsiKick),在视觉方面,Qualcomm的Glance摄像头模块结合了图像传感器和运行计算机视觉算法的低功耗处理器。与同事交谈后,Warden专注于使神经网络在仅消耗1 mW功率且无需有线电源的设备上运行。

另一个限制是处理器的成本应低于1美元。 TinyML的主要用途是用于边缘设备,在这些边缘设备中,几乎无需维护即可部署传感器。关于运行TinyML的设备浮现的一句话是“撕开和黏贴传感器”。这是一个概念,该设备无需更换电池即可运行数年,并且可以放置和遗忘,除非需要从中获取数据。Warden提到可以在这类设备上使用的区域是在工业生产线上,不方便供电的地方。

硬件

Arduino IDE准备

安装库文件

下载示例程序

使用Arduino IDE串行绘图仪查看传感器数据

在Arduino上开始机器学习

捕获手势数据

前往Jupyter笔记本

运行设置环境

上载捕获数据

图形数据

基于.csv数据的训练神经网络

随机分配和拆分输入和输出对以进行训练

建立和训练模型

校验

使用测试数据运行

将训练好的模型转换为Tensor Flow Lite

将模型编码到Arduino头文件中

对IMU数据进行分类

编译并上传Sketch

详情参阅 - 亚图跨际

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Arduino Uno 单片机实现手势识别控制舵机旋转,需要使用以下组件: - 一块 Arduino Uno 单片机板 - 一个舵机 - 一个陀螺仪传感器模块(如 MPU6050) - 杜邦线若干 以下是实现手势识别控制舵机旋转的基本步骤: 1. 将舵机连接到 Arduino Uno 的数字引脚(如 9 号引脚),并将陀螺仪传感器模块连接到 Uno 的 I2C 接口(SDA 和 SCL 引脚)。 2. 在 Arduino IDE 中安装 MPU6050 库,用于读取陀螺仪传感器模块的数据。 3. 编写程序,读取陀螺仪传感器模块的数据,并根据数据的变化控制舵机的旋转。例如,可以根据陀螺仪传感器模块的数据判断手势类型(如上下左右),然后将舵机旋转到相应的位置。 以下是一个基本的手势识别控制舵机旋转的 Arduino Uno 程序示例: ```c++ #include <Wire.h> #include <MPU6050.h> #include <Servo.h> MPU6050 mpu; // 创建一个 MPU6050 对象 Servo myservo; // 创建一个舵机对象 void setup() { Wire.begin(); // 初始化 I2C 总线 mpu.initialize(); // 初始化 MPU6050 myservo.attach(9); // 将舵机连接到数字引脚 9 } void loop() { int16_t ax, ay, az, gx, gy, gz; // 定义变量存储陀螺仪传感器模块的数据 mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // 读取陀螺仪传感器模块的数据 // 根据陀螺仪传感器模块的数据判断手势类型,并控制舵机旋转 if (ay > 10000) { myservo.write(0); // 左侧手势,将舵机旋转到 0 度位置 } else if (ay < -10000) { myservo.write(180); // 右侧手势,将舵机旋转到 180 度位置 } else if (ax > 10000) { myservo.write(90); // 下侧手势,将舵机旋转到 90 度位置 } else if (ax < -10000) { myservo.write(90); // 上侧手势,将舵机旋转到 90 度位置 } delay(10); // 等待 10 毫秒 } ``` 在这个程序中,我们使用了 MPU6050 库和 Servo 库,需要在 Arduino IDE 中安装这两个库才能正常编译和上传。在 `setup()` 函数中,我们初始化了 I2C 总线和 MPU6050 传感器模块,并将舵机连接到数字引脚 9 上。在 `loop()` 函数中,我们读取了 MPU6050 传感器模块的加速度计数据,并根据数据的变化控制舵机的旋转。例如,当手势向左侧移动时,我们将舵机旋转到 0 度位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值