您现在的位置:首页 > 产品万花筒 > 怕错过手机通知吗?用Arduino做个通知提醒灯吧

怕错过手机通知吗?用Arduino做个通知提醒灯吧

关键词:智能照明

来源:互联网    2016-02-23

我是个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平台和各类传感器

第二十三步:挂起通知灯

第二十四步:享受各类信息通知的狂轰滥炸吧

通知灯制作完成。

我来说两句