一把指南伞

本帖最后由 Boris_Liu 于 2015-7-30 13:14 编辑

一把指南伞【背景】近两个月以来,上海总是各种大雨小雨不断。一把伞就成了我们出行随身携带的日常配备。于是对伞的功能产生了兴趣。在网上看到一款日本设计师Yang Ze-Siao设计的日伞夜灯-DSNL。它采用了多功能太阳电池板和发光二级管融合设计,白天用伞遮挡太阳,同时能存储太阳能,晚上可以当作照明灯具使用。看到后非常喜欢,这让我萌生了自己也动手改造伞的想法。

日本设计师设计的Yang Ze-Siao 日伞夜灯—DSNL(白天遮挡太阳,存储太阳能,晚上当作.jpeg (35.84 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 15:32 上传

一个下雨夜晚,城市里的人们行走的脚步总是匆匆的,特别是来到一个陌生的环境,如果急切的低头看手机寻找方向,面对来往的车辆,多少会有些危险。于是想到了用电子罗盘和LED灯带组合设计一款能在夜间指引方向的指南伞,它能快速地给行人指引方向,也可以给夜间行驶的车辆以灯光的提示,保证出行的安全。
【设计思路】

33.png (116.73 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 17:26 上传

相对于一个特定的区域,地理北极的朝向是恒定的。利用这个原理,我们读取电子罗盘的六轴矢量参数,经过一定的公式转化,将地理北极的方向,用航向角表示。(水平面上地理北极与电子罗盘标定的X轴的夹角)。 将伞的360°等分为10份,即以每36°代表一个方位并用三颗灯珠表示。最后将实时的地理北极方向,用该方位的灯带表示出来。因能力非常有限,可能会有不少疏漏,希望大家能够批评指正。
【所需硬件清单】1. RGB LED 灯带2. 六轴电子罗盘LSM303DLH3. DFRduino Pro Mini V1.34. 电源开关模块5. 3.7V mini电池注:所有的硬件均可以在DFRobot商城购买。
【制作过程】Step1. 测试电子罗盘 先测试电子罗盘的功能,将六轴矢量数据转化为航向角,在串口中打印出来。水平放置芯片,观察X轴是否与北方重叠。360°转动电子舵盘,观察串口数值的返回过程。(关于电子罗盘的倾角补偿方法,写在了后面的【硬件回顾】中。)
电路连接图:

总设计图B.png (66.17 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-30 12:06 上传

备注:一.对于arduino pro mini而言,它默认的I2C接口为A4(SDA),A5(SCL)。二.因为arduino pro mini不具备USB的转换芯片,因此用户无法直接用USB线来烧录程序。需要FTDI才能烧入程序和进行串口调试。三.FTDI下载器的驱动已经集成在Arduino IDE的drivers目录下,无须另外下载。安装驱动时,请选择从FTDI USB Drivers文件夹中安装。
下载程序测试代码在附件中下载。位置为umbrella文件夹>>el-compass_test.ino。测试时需导入LSM303DLH库
电子罗盘相关语句分析语句:Wire.begin()说明: 开启I2C总线 (主设备)。因为LSM303DLH是通过I2C和Arduino进行通讯的。语句:LSM303DLH compass; 说明:初始化电子罗盘,建立一个类型为LSM303DLH, 名为compass的对象。这里的对象的名字可自行更改。语句:compass.read();说明:读取LSM303DLH的六轴参数,并将它们赋值给compass.m.x/y/z(三个矢量方向的磁场值),compass.a.x/y/z (三个矢量方向的加速度值) ,便于我们后面调用这些参数。将弧度值转化为用0~360°表示:int compass_angle=round(atan2(H_y,H_x)*180/PI); //转化为角度if(compass_angle<0) compass_angle+=360; //转化为(0~360°)
测试效果:根据电子罗盘上标准的三个地磁矢量的方向水平放置芯片。观察串口的返回值,x轴方向与地磁北极重合时,串口返回0。逆时针转动芯片,正西方为90,南方为180。依次返回值会不断变大到360°

211111111.png (37.83 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 17:01 上传

Step2. RBG灯带的焊接和使用
以三颗LED灯为一组对灯带进行裁剪。

灯带1.png (115.85 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 17:18 上传

拼接时留意选取灯带的正确方向

image2993.png (104.15 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 18:20 上传

焊接,并用热熔胶封闭接口(防水)

灯带2.png (144.14 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 17:18 上传

焊接后的效果

image3004.png (74.05 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 18:07 上传

对灯带编号从灯带上与控制板连接的第一颗LED算起,每三颗LED灯编为一组记作LEDs_0, 依次为LEDs_1...一直到LEDs_9。电路连线图:

灯带测试CCC.png (75.09 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-30 12:08 上传

下载测试程序测试代码在附件中下载。位置为umbrella文件夹>>LED_strip_test.ino。测试时需导入Adafruit_NeoPixel库灯带程序相关语句分析语句1:Color(uint8_t r, uint8_t g, uint8_t b)说明:显示灯珠的颜色 (三个参数分别表示红,绿,蓝三色的亮度;取值范围是(0~255))如表示红色:Color(255,0,0);蓝色: Color(0,0,255); 紫色:Color(255,0,255);为蓝色和红色的混合
语句2:setPixelColor(uint16_t n, uint32_t c)说明:设置某一颗灯珠的颜色,其中n为灯珠的编号(第一颗灯珠为0,按顺序依次为1,2,3....), c为灯珠的颜色参数,即Color(uint8_t r, uint8_t g, uint8_t b)
测试效果通过改变测试程序loop()中colorwipe()函数中的参数a 和b的。来控制点亮不同编组的灯珠。例:如果想点亮LEDs_0灯组,则void loop(){colorWipe(Color(255,0,0),0 ,3, 50); clear(100);}

灯带3.png (174.38 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 17:18 上传

Step3. 对芯片做去针脚处理并焊接所需的接线
为了能美观,用电烙铁加焊锡将针脚去掉,改用直接焊接接线

remove1.png (151.95 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 17:18 上传

去针脚后的效果

remove2.png (214.77 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 17:18 上传

对控制器去针脚,但保留用于程序烧写和串口调试的针脚。

remove3.png (197.86 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-29 17:18 上传

Step4. 连接各个元器件,并安装到伞内
总装电路图:

总设计图B.png (66.17 KB, 下载次数: 7)

下载附件

保存到相册

2015-7-30 12:08 上传

接线表格外部设备

标签: Arduino教程