我是個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等圖標文件。 然后用5毫米厚的亞克力板為其制作框架,接著用2毫米厚的亞克力板為整個框架封口。 下面的文件就是我當時畫的圖標,如果需要,你可以下載后在Corel Draw X7或更新版本的軟件中打開它。 第十步:激光切割亞克力材料 我手頭上并沒有激光切割機,原因很簡單:窮!所以我只好找了當地一家工廠幫我加工。如果你跟我的情況類似,我勸你也去找家工廠代工一下吧。 為了節省材料,我將圖標都集中到了一塊亞克力板上。此外,你可以為這些圖標定制不同的顏色,比如紅色的Gmail、藍色的Facebook和Twitter。 第十一步:為玻璃罐留好位子 玻璃罐的直徑為3英寸,所以我只做了一個直接約14.5英寸的燈架,這樣就可以一次掛住九個通知燈了。 如圖所示,我讓通知燈圍成一圈,這樣看起來無比地和諧,你們說是不是? 第十二步:測試3毫米LED的亮度 這一步就要讓你的圖標燈亮起來了,我選了3毫米的LED燈,它們亮度很強,色彩豐富。通過不同的色彩,我就能獲得不同的信息。 搞定之后記得用測試板測一下亮度,因為有些透明的LED亮度比其他的要高的多。 下一頁:剩下十二步 第十三步:組裝圖標燈 焊接LED燈的時候我選擇了并聯的方式,完成后我將它們裝入圖標燈中。慢工出細活,這一步需要你做到一絲不茍。 用強力膠將LED站在圖標燈中,然后再用塑料繩固定好各路線材,以防它們露出燈外影響美觀。 這一步一定要認真,要不然你做出的圖標燈肯定很丑。 第十四步:測試圖標燈的亮度 裝好圖標燈后,我又對它們進行了測試,以保證它們通電時能及時亮起。 第十五步:將圖標燈安裝在印制電路板上 這一步中,你需要將圖標燈焊接在LED電路板上,一根電線連接5V電源,另一根則作為控制線來使用。 第十六步:將印制電路板安裝在玻璃罐罐口 蓋子下面,我用了泡沫膠帶為電路板提供支撐。然后用塑料繩將蓋子和印制電路板固定在一起,以防玻璃罐掉落。 第十七步:最后的檢查 最后再檢查一次,保證通電時燈能正常亮起。 第十八步:用絕緣套管為電線做絕緣處理 第十九步:將玻璃罐掛在亞克力框架上 記得用塑料繩來固定。 第二十步:開始對英特爾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平臺和各類傳感器 第二十三步:掛起通知燈 第二十四步:享受各類信息通知的狂轟濫炸吧 通知燈制作完成。 |