古人学问无遗力,
少壮工夫老始成。
纸上得来终觉浅,
绝知此事要躬行。
--陆游
最近学校总是意外停电,平时熄灯偶尔不准时也就算了,考试前一晚居然也会停电。无规律的电力中断使我越来越重视生活环境的应急照明。按照个人习惯,晚上手机会关机充电,在起夜的时候就只能摸黑出去。
这一切使我萌生了一个想法:制作一盏应急感应灯,他能:
去年到北京办事,顺路逛了两圈宜家,看这个盒子蛮有质感的,就留了下来。
即便作为计算机专业的 ~~学生~~ 学渣,我还是粗通一点 C 语言加 class 的写法的。毫不犹豫地选择了有一点玩耍经验的 Arduino 平台,来完成这个项目。
制作过程,也就是那样吧,相信对于本站( V2 )的各位大牛而言,我这点工作很微小,但对我而言,它不下于一次完整的课程设计。
首先确定需求,接着用自然语言 /伪代码描述流程,然后根据模块资料编(抄)写(袭)程(例)序(程),进而编写业务逻辑代码,再调用上一步的例程。
接着就是开发板搭建,以及无休无止的调参。如果说完成代码用了一整天,那么调参就耗费了我足足两个下午加晚上。
测试基本没了问题,就开始 翔 一样的焊接。
三天的折腾后,作品终于成型啦。
这是我闲暇时完成的一件小作品,虽然还没有足以应对工作的道行,但从它的开发过程中,我不难体会到 v 友们面对的工作压力之大。我面对的只有这几个组件,拥有充裕的时间并且可以随时放弃这作品,然而更多各领域的大牛要面对复杂得多的环境: KPI ,老板的催促,项目的 deadline 等......
总之,纸上得来终觉浅,觉知此事要躬行。
可编程 LED 灯带
Arduino 节能配置(需要开飞机)
流程图手稿:
~~成品代码: 275 行,含一个类定义和所有控制代码~~
本来想推到 github 上的,但我的网络出现了问题:
git push -u origin master
fatal: unable to access 'https://github.com/隐藏用户名 /隐藏仓库名称.git/': Failed to connect to github.com port 443: Connection refused
我用的是 windows 版 github 客户端,电脑重装过,不知道和 ssh key 有没有关系。 直连, vp-n 都不能上 github ,但挂同一服务器的 s-s 可以访问 github 。 git 初学,调试这个问题导致本文丢了点内容,应该不会影响大家阅读。
这是点亮效果图,不占用太大篇幅了:
![IMG_20160720_223401.jpg]( https://ooo.0o0.ooo/2016/07/20/578f8e105659f.jpg)
![IMG_20160720_223441.jpg]( https://ooo.0o0.ooo/2016/07/20/578f8e0f1417e.jpg)
![IMG_20160720_223450.jpg]( https://ooo.0o0.ooo/2016/07/20/578f8e119a8cb.jpg)
![IMG_20160720_223510.jpg]( https://ooo.0o0.ooo/2016/07/20/578f8e11b5c7e.jpg)
![IMG_20160720_223518.jpg]( https://ooo.0o0.ooo/2016/07/20/578f8e15db0d7.jpg)
![IMG_20160720_223529.jpg]( https://ooo.0o0.ooo/2016/07/20/578f8e08b44f7.jpg)
![IMG_20160720_223531.jpg]( https://ooo.0o0.ooo/2016/07/20/578f8e1814bba.jpg)
代码在这 ,昨晚推不上去,是因为host配置错误。
1
cnnblike 2016-07-21 00:29:50 +08:00 via iPhone
ws2812 不适合照明,频闪直邮 400hz 还是多少,反正只够应急用
|
2
xmoiduts OP @cnnblike 对的,这个作品就是应急灯,在电力中断,人员摸到手机之前提供那么几( 84 )秒的照明,也提供临时起夜照明。平时居住我有灯管台灯,这个设计主要是全自动无开关
|
3
cnnblike 2016-07-21 00:42:51 +08:00 via iPhone 1
还有, arduino 没有 dma ,主循环里面除了这个运行不了其他东西了,其实是对 mcu 的浪费。
还有楼主你没有给 ws2812 加保护电路,瞬间冲击的电流多来几次就会把第一个 ws2812 损坏掉。 再有,五号电池加 boost 电路供能其实非常不可靠,一个是量的问题,一个是内阻的问题。建议直接用充电宝引出 5v 来供电,一来不用焊接,二来量大还自带补偿。 以及,代码量其实很小,我忘了 arduino 有没有看门狗的,你自己找找相关的知识试着加一个上去吧。 最后要做得靠谱请找 stm32l 之类的低功耗片子 |
4
xmoiduts OP @cnnblike 厉害,完全命中我的痛点。
--- 关于冲击: >>>>本来灯带之前搭了个电阻,后来往微型板子上迁移,就懒得焊了,以后我找个时间加上。 --- 关于看门狗: >>>>arduino 有一个看门狗电路,我在这里用作唤醒定时器了, wdt_vect(){}跑了一个空语句。平时休眠,每秒唤醒 2 次,每次是完整的 采集-处理-修改亮度 过程。 --- 关于 dma 和算力浪费: >>>>一开始没想这么多,我不想玩得太深,因为平时有别的课程,可以说我对 arduino 的硬件配置一无所知(除了定时器和中断系统,这两方面我找书啃过),到现在我连它的 main()函数都没见到过。 基于以上原因,我觉得代码能跑起来就是奇迹了,我也不知道他为什么能跑。算力其实没关注过,因为每次 loop 都有语句控制掉电,等 wdt 唤醒。 --- 关于供电 >>>>这个是最大的痛点。按照网上教程配置了掉电模式,教程给出,关机后电流能低于 1ma ,我只能做到 7ma 很奇怪。 充电宝是个好主意,以后我找个移动电源小改一下,不知道空间够不够。 --- 关于其它片子 >>>>真不会……现在的板子我还是一键编译加刷机的,换平台有可能要换库(库内有汇编我看不懂)估计是个大工程。以后我问问电院同学会不会。 v 站果然高人多,在下佩服。 |
5
skpoo 2016-07-21 11:04:11 +08:00 via Android
第三张图片什么鬼
|
9
Arnie97 2016-07-22 17:42:35 +08:00 via Android
@xmoiduts 打开 /hardware/arduino/avr/cores/arduino/main.cpp ,把 main()声明为 int main(void) __attribute__((weak));就可以自行决定 int main()了。
|
10
roadna 2016-07-22 20:13:40 +08:00
不错不错,项目虽小但是把过程跑了一遍收获就很大了。
挺喜欢 Arduino 的,板子便宜库丰富,然而没用过, msp430 倒是会一点。 |
11
xmoiduts OP |
12
xieyudi1990 2016-07-23 17:48:56 +08:00 via Android
要 dma 做什么,数据量又不大。另外 dma 到底还是可能和 cpu 抢总线, cpu 又没 cache ,到时可能卵用都没有。
这单片机就是用来做这件事的,没干别的,时间片分配好就行。照这样说这种事整个单片机都是浪费,自己弄个 asic 多好。 记起来当年上大学时也弄了个 led 灯条,不过在自行车轮上装灯条当显示屏。当时自己搭 led 驱动,弄了一堆 74164 和 uln2003a 。 74164 倒是可以直接接 spi ,倒是可以用 dma (不过没卵用啊)。 我觉得就用移动电源供电这个建议不错。用电池,自己做 dcdc 没必要。 其实我现在蛮需要 lz 这种东西。因为客厅的灯的开关不在门口。不过我现在大概就在网上买现成的了,懒得搞。 |
13
xmoiduts OP @edisoncyh 我会考虑的,但这件作品现在还有些关键问题( critical issues 还是什么),需要再次魔改。
@xieyudi1990 其实做这件作品的初衷,是应对学校经常性的突发停电,在室内突然漆黑一片时,续上几秒的光明;起夜感应倒是后加的,所以起初选了电池。 |
14
xieyudi1990 2016-07-24 09:34:16 +08:00 via Android
@xmoiduts 突发性停电... 那群打游戏的估计得把宿管杀了... 以前上学时停电一次, 楼上立马狂扔热水瓶玻璃杯,第二天宿舍门口全是玻璃渣.
|
15
xmoiduts OP @xieyudi1990 我们还好啦,(原) 985 毕竟没那么大火气,不过期末考试前一晚停过电,这倒是挺坑的。
|
16
ilikekindle 2016-07-24 23:08:29 +08:00
很不错的作品啊,羡慕。
感应灯还是有需求的,家里买了大量的自动感应灯,老人很喜欢。 |
17
cnnblike 2016-07-29 22:37:20 +08:00
@xieyudi1990 DMA 要抢总线的话这个数据量会非常的大了吧一般来说
|
18
Okonkwo2016 2016-08-25 00:08:03 +08:00
点赞!以前从来没动过手做这些,但是以后有打算,所以想按着楼主这些步骤自己尝试做一个^-^
|
19
hahnzhu 2016-09-07 19:54:10 +08:00
图片的域名略屌,楼主自己的域名?
|
21
loktar0ga 2018-01-06 15:57:23 +08:00
大佬
|