7088| 16
|
[项目] 桌面彩色互动台灯 |
本帖最后由 神会找你 于 2020-5-14 15:15 编辑 桌面彩色互动台灯你的桌面上会不会缺少这样一个机器人宠物呢? 最近发现了一款红外手势传感器,立马就想着是不是可以动手实现我想要的互动机器人了在经历了一番折腾之后 于是,它就诞生啦
接下来,揭秘一下制作过程吧! 制作材料1、Arduino Nano V3 ×1 硬件部分3D建模在Fusion 360中设计车主体、灯架和电机固定支架等部分,(后来知道有现成的固定支架,但模型已经画好打印出来了就不想改了) 从光神王市场上找到了一款月球灯模型,灯罩部分用3D Bulider挖了两个槽,让它可以和车主体部分的尺寸吻合起来 第一次建模,献丑了 桌面彩色互动小车.zip 主体部分组装把打印好的车体和电机、轮子组装起来 组装完成! 电路焊制根据连线图: 用杜邦线将电机、红外手势传感器、灯带与电路连接起来。 电池
至此,硬件部分基本做完了,灯罩和灯架3D打印时间比较久,这段时间里我们可以先编写小灯的控制程序。 软件部分在开始软件部分前,首先需要安装好Arduino IDE, APDS-9960红外手势传感器库文件.zip DFRobot_NeoPixel库文件.zip 调教红外手势传感器:先来研究一下这款红外手势传感器可以识别哪些手势 首先打开C:\Program Files (x86)\Arduino\libraries\SparkFun_APDS9960\SparkFun_APDS9960.h,然后在SparkFun_APDS9960.h文件里调整一下手进入感应范围的阈值DEFAULT_GPENTH,就能让识别区域处在期望的范围内了。 注意:DEFAULT_GPENTH值域为0-255,越接近0意味着距离越远。我将手进入阈值DEFAULT_GPENTH设为100,大约距离传感器15cm处触发手势识别中断 除了感应区域,我们还需要调整一下识别灵敏度,默认值下的灵敏度太低了,好多次都识别失败,因此我更改了灵敏度,大大提高了识别正确率。此处的识别正确率以习惯的挥手速度为准,灵敏度越低意味着挥手速度要越慢。 在SparkFun_APDS9960.h文件里找到#define GESTURE_THRESHOLD_OUT,将后面的数值改小,手势识别的灵敏度就会相应提高,这里我设置成5。 至于#define GESTURE_SENSITIVITY_2对应的远、近手势识别的灵敏度在测试时感觉已经足够,因此没有做调整。 我们可以在手势传感器例程里尝试一下效果: 调教电机驱动两个N20电机都是通过HR8833电机驱动芯片来控制工作的,两个电机分别由IA1、IA2和IB1、IB2引脚来控制的。以IA1,IA2为例:当IA2置低电平,IA1输入PWM信号,则PWM信号的高电平部分的占空比可以控制转速,电机正转;当IA1置高电平,IA2输入PWM信号,则PWM信号的低电平部分的占空比可以控制转速,电机正转;当IA1置低电平,IA2输入PWM信号,则PWM信号的高电平部分的占空比可以控制转速,电机反转;当IA2置高电平,IA1输入PWM信号,则PWM信号的低电平部分的占空比可以控制转速,电机反转;
以下是电机驱动芯片的控制例程,可以对照看一下安装在车主体上之后的电机运动方向,然后自行定义一下前进、后退、左转、右转四个指令对应的电机控制指令。
编写控制程序在传感器和电机驱动芯片都调试完成之后,我们就可以开始编写综合的逻辑控制程序了。以下是我根据所需要的功能以及逻辑关联而画出来的程序框图
烧写程序选择开发板 Arduino Nano 合盖固定自己想办法把灯带从盖子上的小洞里穿过去,卡在灯带槽里,要是固定不牢或者怕灯带掉出来,也可以适当抹点胶。用螺丝将车主体和灯架固定住, 盖上脑阔,大功告成啦! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed