安全性、可靠的實時數據流是物聯網必不可少的兩樣東西。在見過很多“這邊按下去,那邊燈就會點亮”這之類的硬件后,我和一個朋友卻想做一些明明在操縱它卻幾乎感覺不到數據流的存在這樣更具有互動性的東西!所以,我們決定建立一個可以控制“物”的模型,即模仿你的手部動作,并顯示顏色基礎上的手指定位的議案。希望在這篇文章的幫助下,你能做出屬于自己的硬件產品。
概念性的概述和一些更深入的了解可以在PubNub博客中找到相關源代碼,完整的代碼可在這個GitHub庫中查到,和Instructable上“the LED matrix driver circuitry”這篇文章詳細介紹了LED矩陣驅動電路如何被寫入。
Step 1: 零件和工具
解決這一難題有很多細小的片段,這里嘗試列出了一些主要的事情。
零部件及片段
· 樹莓派---這里使用V1型B +
· 跳躍運動控制器
· 5V電源
· 4個微型舵機 - 便宜的TowerPros即可。
· 4個微型伺服支座
· LED和限流電阻器 –-為達到視覺效果,但非必要。
· 項目機箱 --- 這一個是激光削減Ponoko。
· 螺絲,螺栓,螺母,曲別針 - 和其他類似的東西固定在一起的東西。
· 電纜包裹- --為了保持導線整潔。
· 電源插座,開關和電纜 --- 這樣才能傳輸電能。
· 撥動開關 --- 用于選擇伺服輸出模式
· 小按鈕 ---- 用作的R丕重啟/關機按鈕
· RGB LED+2×470歐姆的電阻 - 重啟/關機指示
· 支座 --- 便于安裝各種器件,這些在亞馬遜上很多。
· 掛接導線 --- 用于連接。
該RGB矩陣坐在舵機的頂部使用的是定制的驅動程序。該項目的這一部分是相當先進的,Instrucable里對此有專門的描述。
軟件與服務
· PubNub - 數據流服務。免費的沙盒模式的開發!
· Java SE的 --- JDK8 - 一定要得到正確的版本為您的操作系統。
· 跳躍運動展示臺和Java SDK - 再一定要得到你的操作系統的正確軟件包。
· PubNub Java SE SDK --- 這需要進入項目庫目錄
· Java IDE - 用你最喜歡的,比如JGrasp,NetBeans中的IntelliJ,或者Eclipse
· 項目源代碼存儲庫 - 托管在GitHub上
樹莓派搭建
· PubNub Python庫 - 這是關于樹莓派搭建的一個較深入的指南。
· Internet連接 - WiFi或以太網都可以。如果可以ping谷歌,那么也是好去處。
工具之類的
· 計算機 - 寫代碼,查看Instructables等
· 電鉆+鉆頭/驅動器 - 鉆洞,扭螺絲等。
· Dremel旋轉刀具 - 用于切割孔,在機箱。。。都某些朋友來說可能沒有這個必要。
· 熱膠槍 – 請問還有其他粘合方式嗎?
· 烙鐵+焊接 - 不要吸入油煙!
· 激光切割機 - 同樣,我用了一個服務,但你可以DIY,如果你有你自己的機器周圍鋪設。
· 螺絲刀,鉗子 等你現在應該有的這些東西!
Step 2: 項目預覽
頂層設計,主要分為三個主要組成部分:
1. 計算機與跳躍運動控制器 -----用于將數據發布到網上。
2. “盒子”里的樹莓派- ---從網上訂閱數據。
3. PubNub - 通訊層安全地連接這些東西。
計算機部分是很簡單的,但在“盒子”有更多一點事。。。
1. 樹莓派 - 主控制器,采用采用I2C總線通信
2. ATMEGA328P矩陣驅動電路 - 通過I2C總線接收命令,控制28×8矩陣RGB
3. 基于TLC5916 LED的電路 -- 由ATMEGA328P控制,水槽LED矩陣電流
4. Adafruit PWM驅動器 -----通過I2C總線,驅動4舵機接收命令
5. 5V,5A電源
首先,我們需要設置用戶計算機便于使用跳躍運動控制器。
Step 3:Java和跳躍運動控制器設置
Java 設置
我們將使用Java SDK的跳躍運動控制器,因此只需要安裝Java開發工具包,其中包括Java運行環境。這是非常簡單的,只要根據您的操作系統選擇正確的程序包。
不是創建一個安裝包,而是直接從Java IDE中運行的源代碼。這可以讓你自己操作代碼,修改,學習!當安裝JDK后,你需要一個好的IDE(也就是集成開發環境)。一些常見的諸如Eclipse中的IntelliJ,和NetBeans。你可以隨便選一個。每個使用者建立的庫是不同的,所以你必須要參考文檔了解如何設置一個新的項目!
Java 源代碼
只有一個java文件需運行代碼,但是也必須安裝跳躍運動和PubNub Java庫。。。 GitHub的項目庫包含一些非常必要的Java文件。
Leap 設置
設置跳躍可有點棘手,并且這個會根據系統不同而不同,而不是逐步完成的。這里不是通過告訴你我如何做到的,而是逐步引導您到相應的文章。哪個地方不懂,可以隨時尋求幫助。
1. 下載SDK,驅動程序,和跳躍運動中的應用。
2. 安裝跳躍應用,這將會安裝任何必要的驅動程序和進程。
3. 運行跳躍運動診斷可視化工具,以確保跳躍的工作。
4. 瀏覽Java SDK文檔,尤其是設置項目。
PubNub 設置
最后一步是下載PubNub Java SDK的,文檔頁面會講到如何將庫添加到Java項目。
Step 4:Java源代碼
如果您對Java代碼沒有興趣,你可以跳過這一步;但是,你將至少需要把你的個人PubNub鑰匙到代碼為它工作!源代碼可以在GitHub上查看。
下面是一些入口需要。如果這出現錯誤,很可能是沒有正確安裝的SDK庫。
要讓項目實現Runnable,讓所有跳躍活動工作在自己的線程是至關重要的。我們首先設置項目為主,Runnable接口的實現和初始化全局變量便于后面使用。最主要的是要注意:全局變量“CHANNEL”,以及一對主宣稱鍵。
這些字符串是唯一可以改變的值,通道名稱可以保留默認的“leap2pi”,也可以是其他一些字母數字值。使用PubNub超過一個信道通信會談一切,所以要使用一個唯一的名稱,以防止不同項目之間的串擾!發布和訂閱鍵,當你注冊一個PubNub帳戶含有獨特的個人標識符可以保證他們的安全性和私有性,這些鍵防止別人從你的信道(S)交談,請留意,有可能是在具體使用字符串“leap2pi”,而不是不斷的“CHANNEL,”而所有這些情況下應該改變代碼的一些地方。
跳躍運動捕獲300幀每秒。在每一幀,我們有機會獲得非常多的信息,如手指伸直,俯仰,偏航和手勢等等。由飛躍俯仰和偏航(手腕云臺)返回的值是弧度,這不會幫助我們太多。我們希望這些值轉換為通過在框中PWM驅動器接受的格式。我們首先弧度轉換為度,然后度到150和600之間,該范圍相當于一個伺服的(500 - 2000我們)的典型的工作范圍內的可接受的伺服PWM值由12位伺服驅動器來表示。
基本公式是美國2500/(2^13-1)*(伺服最小/最大脈沖寬度),所以[500,2000]我們映射到[150,600]。。。。。。大概在代碼中,這些轉換是通過以下方法進行處理。
另外,請原諒不正確的伺服和PWM術語中的代碼。。。。。。不是每個制作愛好者都是這些學科的專家!
確保您的代碼在工作的最好方法是加載PubNub調試控制臺。從這里,你可以輸入通道名字,同發布和訂閱鍵一樣。點擊“訂閱”,當操作跳躍運動控制器將Java代碼運行的時候,公布的數據應顯示在消息盒子。
Step 5:樹莓派安裝
隨著Java代碼的工作,是時候來設置樹莓派訂閱數據,并用它來驅動LED和舵機。在已經配置了樹莓派有工作的互聯網連接,可以是WiFi或以太網,但這部分需要你來完成!如果你需要幫助,可以在PubNub上找找看(前一段時間有人寫了一篇)。此外,你可以使用顯示器和鍵盤直接在Pi上完成任何一個步驟,或用SSH遠程登錄。無論哪種方式都可以,但該項目的最終目標是擁有一個獨立的,無頭,安裝程序會自動運行啟動所需的文件。
第一步驟是在安裝PubNub Python的SDK。
打開終端,安裝以下內容:
嗯,這是很簡單的!現在,我們需要得到所有在GitHub的資源庫的皮目錄中的文件的副本。要做到這一點最簡單的方法是使用Git克隆回購,然后刪除其他不需要的東西:
現在,leap2pi目錄的內容應該與GitHub庫Pi目錄中的文件相同。最后,我們希望Python腳本在啟動運行。這里有兩個Python腳本要運行:
這是很簡單的,我們只需要編輯一個Linux系統文件作為根用戶。首先,確保腳本是可執行的,然后打開rc.local文件進行編輯。
你可以使用任何你喜歡的編輯,我更喜歡VI。該文件的最后一行應該是“exit 0”,即是允許使用該文件的清潔出口和擊終端的初始化。這里可以添加任意數量的命令,只要它們運行最后的“exit”命令。
插入以下,正上方的“exit 0”命令:
保存文件,退出,并在開機后,Pi會自動運行這些腳本。而“&&”部分確保每一個命令運行。如果你離開了關,在bash終端將永遠載入,所以你會被無限期地鎖定您的個人信息的!
Step 6:樹莓派與伺服驅動器的連接
樹莓派可用于直接驅動伺服系統,但是這需要花些功夫。有一個專用的PWM通道,但我們需要4根導線。因為在軟件中可以虛擬,但是,這不是簡單的事情。作為一臺電腦,樹莓派在高層級的處理比低級別的控制好多了。這一步你當然可以使用任何PWM驅動器,但我用這16通道,12位驅動程序的形式Adafruit。是的,這有點過了,這是很容易編程的ATtiny24操作4舵機通過 I2C總線通信。可以創建你自己的,但可能會超出了本指南的范圍。
網上很多教程可以幫助你使用這款主板,您將需要一些額外的源代碼文件。這些都可以在源代碼庫的命名文件為“Adafruit”的目錄中找到 -。。。。。。”它將會告訴數樹莓派如何與PWM驅動器通信。
連接樹莓派的板很容易。在樹莓派I2C線路上發現插針3和5,但這樣的情況下也需要打開I2C通信信道,記得查看。一個重要的輸入引腳被標為“OE”,即低電平有效“輸出使能”引腳,當此引腳保持低電平伺服系統才會啟用,它可以直接連接到地,或者驅動另一個端IO引腳。在這個項目中,實際上也是從ATMEGA328P矩陣驅動電路也采用I2C數據線連接到R派。
在該圖中,伺服附著到通道1 PWM驅動的。在項目中,設置像這樣的舵機:
Step 7:近觀servo.py
Python代碼來控制舵機是非常簡單的,只要你理解了Python。就個人而言,我沒有很喜歡這種語言,但是這是題外話,您可以在GitHub上查看servo.py文件的這個副本。
就像在Java代碼中,你需要把你的個人PubNub發布,在這里訂閱鍵,以及通信信道的名稱。
該樹莓派會做引導執行以下操作:
1.復位AVR矩陣驅動電路。
2.初始化PubNub與你的鑰匙。
3.訂閱PubNub通道“leap2pi”。
4.永遠循環下去,檢查輸出模式切換(一分鐘內多次檢查)。
在系統底層,在PubNub庫處理所有的工作。這其會調用完成所有的操作,我們只需要指定一些回調 ---- 這是指當事件發生而需要調用的函數。
關于連接回調應該是顯而易見的(連接,重新連接,等等),但一個沒有將大部分工作是適當命名的“回調”的回調。這個函數實際上在做從訂閱頻道接收消息這些事。如上所述,該箱具有一對連接到幾IO線的滑動開關選擇的輸出模式。
?鏡像 - 機器人將反映你的動作;因此,你的左手反向控制權機器人
?禁用 - 伺服系統會停止響應
?克隆 - 的機器人會克隆你的動作;因此,你的左手直接控制左機器人
這些模式的邏輯還有I2C驅動報表中的回調函數來處理。
值得注意此文件中的唯一項目就是利用GPIO引腳4作為輸出。該引腳驅動MOSFET,連接藍光LED地面陣列的大門。該引腳使能PubNub連接上,這樣的LED作為連接指示燈,這是一個無頭的設置的一個非常重要的方面 ---- 需要有一些現象表明我們成功地連接到互聯網!
Step 8:近觀shutdown.py
這個腳本是一個更容易跟隨比教上一個,但也同樣重要。由于樹莓派也作為全功能計算機,應當正確地關閉,只是殺傷力不同,它可能會導致驅動器故障,數據丟失,內存損壞。
為了解決這個問題,我在盒子背面裝了RGB LED指示燈的一個簡單按鈕。持續按一秒以上便可切換藍色燈光,當按鈕松開時會重新啟動派。再按住按鈕持續幾秒鐘將導致LED變紅,信號完全關閉。
此功能在shutdown.py腳本下完全處理。 “永遠的循環”運行的情況下,將發生以下情況:
1.0.25秒休眠狀態
2.檢查按下一個按鈕(引腳上的低狀態)
3.重復永遠
1.在按鈕按下,睡眠1秒
2.重新檢查引腳,看看按鈕是否仍然被按下
3.如果按鈕仍然在舉行,我們可能要重新啟動?如果沒有,請隨時查看!
4.設置RGB LED為藍色
5.睡眠2秒
6.重新檢查引腳,看看是否仍然被按下按鈕
7.如果按鈕仍然在舉行,應該關機!
8.設置RGB LED為紅色
9.如果沒有,重新啟動!
Step 9: 構建盒子
在構建此盒子的過程中,朋友Eric在Illustrator中創建一對矢量文件。這些被送到激光切割公司(Ponoko),它給我們送來一束激光切割木塊和丙烯酸。這些碎片送回來的時候還很大,但讓人有裝配他們的喜悅心情。
如果你很小心,可以在丙烯酸(以及木材)鉆導向孔,并用細螺釘來安裝在一起。如果你不想這樣做,可以隨意構建你想要的情況,從部件列表支座應該被用來保持牢固地安裝到該基座的電路元件,也可以減少一些額外的孔,在包裝盒背面安裝電源插口,按鈕和RGB領導。
最重要的是伺服鉆機的安裝。當他們在移動的時候,舵機會造成任何重量輕安裝框架跌倒或跳來跳去。至關重要的是,他們被牢牢地安裝在一個堅固的表面,這里選擇了箱子的蓋子!
Step 10:完成
有些部分需要進行定制,特別是構建實際的盒子和伺服支架。只要是有創意,大膽的去做吧!
-
led
+關注
關注
242文章
23300瀏覽量
661456 -
PWM
+關注
關注
114文章
5191瀏覽量
214178 -
物聯網
+關注
關注
2909文章
44715瀏覽量
374317 -
樹莓派
+關注
關注
117文章
1708瀏覽量
105704
發布評論請先 登錄
相關推薦
評論