查看“Microduino 姿态台灯/zh”的源代码
←
Microduino 姿态台灯/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{| style="width: 800px;" |- | ==概述== *项目名称:Microduino 体感台灯 *目的:通过Microduino姿态传感器(10DOF)体感控制自制的彩色台灯。 *难度:高级 *耗时:4小时 *制作者:Microduino Studio-YLB ==原理== 通过体感控制,那就必须用到无线通讯,Microduino无线通信方案非常多:nRF24、smartRF、Zigbee、BT等,这里,我们使用采用nRF24无线通讯方案。Microduino姿态传感器(10DOF)获取姿态数据,经过量化成颜色值(0-255)再发送给彩色台灯,台灯接收到数据后,点亮彩灯。台灯采用单总线WS2812彩灯,每个灯内置控制IC芯片,能自由、简单控制。 ==材料清单== *Microduino设备 {|class="wikitable" |- |模块||数量||功能 |- |[[Microduino-Core/zh]]||2||核心板 |- |[[Microduino-USBTTL/zh]]||1||下载程序 |- |[[Microduino-nRF24/zh]] ||2||无线通信 |- |[[Microduino-BM/zh]] ||2||电源管理 |- |[[Microduino-Lamp/zh]] ||1||彩灯 |} *其他设备 {|class="wikitable" |- |USB数据线||1||连接 |- |锂电池||2||供电 |- |高酒杯||1||台灯骨架 |- |灯罩||1||台灯外壳 |} ==文档== 程序下载:[https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_Advanced_Tutorial/mpu_ws2812 mpu_ws2812] ==台灯制作== *步骤一:准备一个高酒杯和一张灯罩,把台灯外形搭建起来。 [[File: Table lamp_cap.jpg||600px|center|thumb]] *步骤二:搭建硬件电路 **所需设备: {|class="wikitable" |- |模块||数量||功能 |- |[[Microduino-Core/zh]]||1||核心板 |- |[[Microduino-USBTTL/zh]]||1||下载程序 |- |[[Microduino-nRF24/zh]] ||1||无线通信 |- |[[Microduino-BM/zh]] ||2||电源管理L |- |[[Microduino-Lamp/zh]] ||1||彩灯 |- |电池||1||供电 |} 将所有模块无上下顺序叠加起来。 [[File: Table lamp_module.jpg||600px|center|thumb]] *步骤三:程序测试 需要用到_99_LCD_NeoPixel库文件,参考[[安装Arduino IDE Microduino程序库支持包]]。安装好硬件支持包后,打开示例库中的strandtest程序。 *程序说明: <source lang="cpp"> #define PIN 6 Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800); </source> PIN定义单总线灯的控制引脚,”60”定义了灯的数量,用户可根据自身情况更改。更改 编译通过后选择好板卡下载就行。下载成功后我们可以看到炫酷的效果。此时还没用到nRF24通讯模块。 ==体感遥控制作== 因为考虑到姿态是全方位的,所以考虑给它做个球形外壳,采用3D打印机打印。 *步骤一:搭建硬件电路 **所需设备: {|class="wikitable" |- |模块||数量||功能 |- |[[Microduino-Core/zh]]||1||核心板 |- |[[Microduino-nRF24/zh]] ||1||无线通信 |- |[[Microduino-BM/zh]] ||2||电源管理L |- |[[Microduino-10DOF/zh]] ||1||姿态检测 |- |电池||1||供电 |} 将所有模块无上下顺序叠加起来。 [[File: Table lamp_10dof_module.jpg||600px|center|thumb]] *步骤二:构建3D模型 根据搭建硬件电路的规格尺寸,采用SketchUp构建3D模型。 [[File: Table lamp_3D.jpg||600px|center|thumb]] *步骤三:采用3D打印机打印出模型,确定尺寸是否合适。 [[File: Table lamp_print.jpg||600px|center|thumb]] ==整体调试== *步骤一:下载程序 解压程序,分别打开两个程序,一个是发送,一个接收。 *程序说明: 发送端:"mpu.h"是姿态检测子程序,"nrf.h"是2.4G无线无线控制程序。 Microduino姿态传感器(10DOF)获取姿态数据,经过量化成颜色值(0-255)。 <source lang="cpp"> //=以下三行是用加速度计算三个轴和水平面坐标系之间的夹角 Angel_accX=atan(Ax/sqrt(Az*Az+Ay*Ay))*180/3.14; Angel_accY=atan(Ay/sqrt(Ax*Ax+Az*Az))*180/3.14; Angel_accZ=atan(Az/sqrt(Ax*Ax+Ay*Ay))*180/3.14; Angel_accX_send=map(abs(Angel_accX),0,90,0,255); Angel_accY_send=map(abs(Angel_accY),0,90,0,255); Angel_accZ_send=map(abs(Angel_accZ),0,90,0,255); </source> 接收端:接收到数据后,点亮彩灯。 <source lang="cpp"> Angel_accX=rec.rf_x; //接收请求时序赋值 Angel_accY=rec.rf_y; Angel_accZ=rec.rf_z; Serial.print(Angel_accX); Serial.print(","); Serial.print(Angel_accY); Serial.print(","); Serial.print(Angel_accZ); Serial.println(""); colorWipe(strip.Color(Angel_accX, Angel_accY, Angel_accZ), 10); </source> 2S内没接收到nrf的数据将关闭彩灯。 <source lang="cpp"> if(safe_ms>millis()) safe_ms=millis(); if(millis()-safe_ms>2000) { colorWipe(strip.Color(0, 0, 0), 50); } </source> 分别将下载到对应的硬件。在BM模块中接上电池,打开BM上的电源开关,若电池没电,直接插上MicroUSB就可以给电池充电,注意:BM更换电池后若不能启动电源,需要插上USB启动BM。滚动小球观察台灯变化。 [[File: Table lamp_ok.jpg||600px|center|thumb]] ==注意问题== *发送和接收端共用一个USBTTL模块,只是下载程序能用到。 *BM更换电池后若不能启动电源,需要插上USB启动BM。 |}
返回至
Microduino 姿态台灯/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息