我是个IT从业人员,不过平时总是太忙,所以也不经常上Facebook或者刷Twitter。不过干这一行的人都懂得,效率就是生命,所以我要快速地在各种信息流中摸爬滚打,智能手机的推送服务可以满足我的要求,但我喜欢与众不同,所以就直接动手给自己做了一个通知灯,这可不是手机上那个小亮点,是真的灯哦!
我找了玻璃罐来做灯罩,将Gmail、Twitter和Facebook等图标的卡通灯放进去充当光源。
第一步:通知灯简介
上图就是我的通知灯,当你收到新的消息,它们就会亮起来,是不是酷毙了!
忘了那些容易漏掉的提示音吧,我的通知灯可以亮起不同的颜色来引起你的注意,当你看过信息后,它还会自动熄灭,用起来绝对超赞!
此外,我的通知灯还装配了Seeedstudio公司的grove传感器,还能充当家里的火警警报器。
第二步:原材料清单以下就是制作通知灯所需的原材料:
电子元件:
英特尔Edison开发平台和Arduino Breakout开发套件
PCB板
Arduino Pro Mini 328 - 5V/16MHz
RGB LED灯(150枚)
8位移位寄存器74hc595d SMD(54枚)
收发器74hc245d
电解去耦电容器- 100uF/16V
电线等
结构框架:
亚克力材料
铜线
玻璃罐(9个)
工具:
手锯
电钻
钻头
热熔胶和胶枪
强力胶
电烙铁
焊料
剪线钳
老虎钳等
第三步:电源模块降压电源模块我选择了LM2596,它可以给LED提供稳定的5V电压并能控制整个电路。此外,英特尔的Edison开发板还集成了稳压器电路。
下面我列举了一些LM2596模块的详细参数:
输入:3V到40V的直流电(输入电压需要比输出电压高出至少1.5V)。
输出:1.5V到35V的直流电,电压连续可调,最大输出电流可达3A。
功能:电感Q值高,可带动高功率LED提示灯。
三维:长宽高分别为45、20和14毫米。
我利用模块上预载的小型电位计调整了输出电压,一般5V或者稍低就足够了;如果你将电压调到5.5V,就可能会损坏集成电路和LED;所以,调整电压时要慎之又慎。
LM2596模块是我的最爱,它功能丰富,价格实惠。
第四步:HC-SR505 Mini红外动作传感器这个红外动作传感器可以侦测到靠近通知灯的人,有人移动时,灯就会变色。
该传感器使用方便,只需一个引脚就能完成输出。
第五步:RGB LED灯移位PWM测试实话说我对移位寄存器很感兴趣,特别是74HC595这个型号。通过这个移位寄存器,你可以在Arduino平台上控制RGB LED灯。此外,你还可以通过SPI,在Arduino平台上实现PWM调制。
在上图中,我就利用英特尔Edison平台通过UART(通用异步收发器)与Arduino pro mini 进行了通信,而且我还改变了一系列显示效果。
详解:
每个RGB LED都可显示三原色,从而与3 pin控制器相对应。每个8位的74HC595移位寄存器有8个控制输出,在这个项目中,我需要控制16个RGB LED,所以我需要16x3的48 pin控制,也就意味着我要准备6个移位寄存器。
怎样将代码上传至Aeduino Mini:
近来我一直在搞Arduino编程,希望能在这上面做出点成绩来。不过如果你想将代码上传,需要尝试下下面的方法。
首先,你需要一个USB串行光适配器或Arduino Uno,或Duemillanove,反正只要能充当HOST的可拆卸芯片就行。
大体上来说,只要将Arduino和5V的接地线、发射器、接收器连起来并重置Arduino Mini就好。搞定之后重头戏就来了,将ATMega芯片从HOST板上取下,然后按正常程序将代码上传至Arduino。好啦,这一步也完成啦。
关于编程:
在这里我使用了ShiftPWM的库,它对我帮助很大。如果需要,你可以去Elcojacops Githup下载,其中的示例文件很值得参考。
参阅了相关文档后,我将脉宽调变的频率设定为60,最高亮度设定为200。
第六步:电路图和Arduino专用的程序
我为Arduino pro mini开发的脉宽调变RGB LED程序,请各位自行下载使用。
第七步:制作电路板对于热爱各类电子设备的人来说,制作PCB电路板是个再简单不过的工作了。只要去网上找一个电路图,你就可以制作出任何你喜欢的电路板了。
这就是我搜集的一些印制电路板,因为我要做九个灯,所以我需要九块电路板,九也是我最喜欢的数字。
链接中的是我制作电路的示意图和配置图,需要的小伙伴可自行下载。
第八步:焊接LED灯
整个焊接过程我非常小心,所以过程也变的比较艰难。所以,这步最好心情好的时候去做,要不你肯定会抓狂的。
第九步:设计图标灯和框架
找到合适的Twitter、Facebook、Gmail等图标文件。
11
然后用5毫米厚的亚克力板为其制作框架,接着用2毫米厚的亚克力板为整个框架封口。
下面的文件就是我当时画的图标,如果需要,你可以下载后在Corel Draw X7或更新版本的软件中打开它。
第十步:激光切割亚克力材料
我手头上并没有激光切割机,原因很简单:穷!所以我只好找了当地一家工厂帮我加工。如果你跟我的情况类似,我劝你也去找家工厂代工一下吧。
为了节省材料,我将图标都集中到了一块亚克力板上。此外,你可以为这些图标定制不同的颜色,比如红色的Gmail、蓝色的Facebook和Twitter。
第十一步:为玻璃罐留好位子
玻璃罐的直径为3英寸,所以我只做了一个直接约14.5英寸的灯架,这样就可以一次挂住九个通知灯了。
如图所示,我让通知灯围成一圈,这样看起来无比地和谐,你们说是不是?
第十二步:测试3毫米LED的亮度
这一步就要让你的图标灯亮起来了,我选了3毫米的LED灯,它们亮度很强,色彩丰富。通过不同的色彩,我就能获得不同的信息。
搞定之后记得用测试板测一下亮度,因为有些透明的LED亮度比其他的要高的多。
第十三步:组装图标灯焊接LED灯的时候我选择了并联的方式,完成后我将它们装入图标灯中。慢工出细活,这一步需要你做到一丝不苟。
用强力胶将LED站在图标灯中,然后再用塑料绳固定好各路线材,以防它们露出灯外影响美观。
这一步一定要认真,要不然你做出的图标灯肯定很丑。
第十四步:测试图标灯的亮度
装好图标灯后,我又对它们进行了测试,以保证它们通电时能及时亮起。
第十五步:将图标灯安装在印制电路板上
这一步中,你需要将图标灯焊接在LED电路板上,一根电线连接5V电源,另一根则作为控制线来使用。
第十六步:将印制电路板安装在玻璃罐罐口
盖子下面,我用了泡沫胶带为电路板提供支撑。然后用塑料绳将盖子和印制电路板固定在一起,以防玻璃罐掉落。
第十七步:最后的检查22
最后再检查一次,保证通电时灯能正常亮起。
第十八步:用绝缘套管为电线做绝缘处理第十九步:将玻璃罐挂在亚克力框架上
记得用塑料绳来固定。
第二十步:开始对英特尔Edison平台进行配置并检查grove传感器在这个项目中,我使用了英特尔Edison开发板,所以开始前我好好阅读了该平台的说明书。
英特尔Edison运行时需要一个USB驱动,安装好该驱动后,你的电脑上会出现3个虚拟串口。
如果你是个新手,推荐你看下Edison的入门指南。
接下来,你需要安装Flash Tool Lite,它是更新开发版固件时的首选方式。固件就是你开发板的操作系统,通过它你可以使用Wi-Fi、蓝牙、模拟和数字控制等功能。为了提高开发板的稳定性和性能表现,我推荐你及时对其进行固件升级。
连上Wi-Fi后,你就拥有了一台真正的物联网设备。
连接网络:
想要联网,恐怕你还得对代码做些许修改,请按以下两行代码执行。
char ssid[] = "YOUR NETWORK"; // 你的网络的SSID
char pass[] = "NETWORK PASSWORD"; // 你的网络密码
在制作过程中,我使用了grove传感器系统,该系统很容易连接,它包括MQ2瓦斯传感器、火焰传感器、空气质量传感器、红外温度传感器和扬声器。想要了解更多信息你可以参考Grove的维基百科介绍。
下载本文件并在英特尔的Arduino IDE中将其打开以进行测试。
第二十一步:为你的英特尔Edison平台编程
在这次的项目中,我主要通过三种方式来获取信息,不过它们有一个共同点,那就是运行python文件并通过API从互联网上获取信息,随后这些信息会被保存为一个文本文档,我只需要阅读文档就能获取所有想要的信息。
更新天气情况
通知灯的天气信息源来自openweathermap.org。这个程序很方便,只要有一个能用Arduino IDE编程并能连接Wi-Fi的微控制器就行。该程序会对openweather的服务器发出一个HTTP请求,随后还会利用TextFinder Arduino库来寻找详细的相关信息,如当前的温度等,随后它会将这些信息存储下来。
不过想要拿到免费的开发密匙(API Key),你得先去申请个免费账户,这样你就能在openweather的网站上随时获取信息了。请访问本链接来完成这一步。
敲击回车键后,屏幕上会出现以下参数:
{"id":88319,"dt":1345284000,"name":"Benghazi", "coord":{"lat":32.12,"lon":20.07},
"main":{"temp":306.15,"pressure":1013,"humidity":44,"temp_min":306,"temp_max":306},
"wind":{"speed":1,"deg":-7},
"weather":[
{"id":520,"main":"rain","description":"light intensity shower rain","icon":"09d"},
{"id":500,"main":"rain","description":"light rain","icon":"10d"},
{"id":701,"main":"mist","description":"mist","icon":"50d"}
],
"clouds":{"all":90},
"rain":{"3h":3}}
我会取其中几个参数用在天气的通知灯中。你只需要将其保存成文本文档并使用Arduino IDE对其进行读取就行。
更新未读邮件
想要知道到底有多少未读邮件?你只需连接到一个IMAP4服务器,然后输入用户名和密码进行验证就行。帮你完成这一切的是存储在英特尔Edison中的python文件。
当Edison发现你有一两封未读邮件,就会亮起Gmail的灯来提示你。
更多信息请参阅Sparkfun的教程。
关于Facebook和Twitter的新通知
在这里,我们需要使用Facebook Graph。
你需要生成一个访问令牌(Acess Token)。这一步中,只需要依次在屏幕上点击“Get Access Token”和“Extended Permissions”,然后选择“manage_notification”就好。想要使用这个访问令牌,请访问https://graph.facebook.com/me/notifications?acces...
搞定后你会收到一些JSON格式的信息反馈,不过我们能用到的只有后面的“summary”信息。下面是一些你可能会用到的代码:
while True: r = urllib2.urlopen('https://graph.facebook.com/me/notifications?access_token=your_access_token')
html = r.read()
data = json.loads(html);
if len(data['summary']) == 0:
write_led(0)
else:
write_led(1)
time.sleep(3)
请下载下列文件并运行。
IoT_Chandelier.ino
fb.py fb.py
mail.py mail.py
注意:请将Python文件保存到/home/root/Chandelier/。
第二十二步:固定好英特尔Edison平台和各类传感器第二十三步:挂起通知灯
第二十四步:享受各类信息通知的狂轰滥炸吧
通知灯制作完成。