HOW-TO:網絡塗鴉牆

想知道我們在上週從名片工作中的Web服務器在名片工作中完成了什麼?它是推動巨型LED塗鴉牆。動畫可以使用Internet Designer的用戶提交。您也可以觀看單個動畫的在線饋送。 Internet界面上的互聯網界面運行在Google App Engine上,以獲得最大可擴展性以及彈性。

在今天的方式,我們涵蓋了所有的INS以及從建立自己的網絡塗鴉牆上。

概念概述

塗鴉序列採用JavaScript動畫設計師在互聯網上設計。已完成的序列驗證並保存在數據庫中;我們為PHP / MySQL以及Google Apps(Python)製作了數據庫後端。序列由簡單的數據送達API進行了混合。我們的迷你Web服務器從Feed中檢索動畫序列,以及在SD卡上緩存它們。最後,序列顯示在巨型LED矩陣上。

大,低分辨率顯示屏
我們的塗鴉屏幕是一個1米方形,5×5矩陣的LED。幾年前,它受到棲息地提供的達斯朋克咖啡桌的影響。愚蠢的朋克桌產生了許多DIY複製品,包括在建造一個愚蠢的朋克桌上的這種優秀的指導。隨著時間的推移,這種模式變成了許多排列,例如我們的“愚蠢的朋克桌子”壁掛。提供各種大,閃爍的家具,我們尋求比“達斯朋克桌”更好的術語。我們提出了“大,低分辨率顯示”或LLRD for Short(發音為’Lard’)。

原來的愚蠢的朋克表隨機閃過,或者及時到音樂。 [Mathieu RonCheau]的副本表在EEPROM中保存了動畫序列。我們的第一種風格通過將動畫數據存儲在胖格式的SD卡上進一步邁出了這一步。現在,我們已經將設計師放在互聯網上,以確保我們可以通過Internet獲取用戶提交的動畫序列。

在線界面
LLD的塗鴉動畫是用簡單的JavaScript序列製造商生產的。觀看用戶提交的動畫的在線饋送,或自己嘗試。塗鴉序列設計器以及為PHP / MySQL以及Google App Engine寫入的數據後端包含在作業存檔中。

JavaScript Graffiti序列設計器易於使用:

單擊框以切換動畫每幀中顯示的LED。

使用箭頭按鈕在幀之間導航。

備份以及帶回工具提供了一種簡單的方法,可以在文本文件中本地保存序列。

“添加文本框架”插入利用位圖字體的字符幀。如果您不喜歡默認字體,只需生成一個新的字體:

單擊“編輯字體”按鈕以縮短現有字體。

進行修改。

單擊“更新字體”以將默認字體樣式替換為新幀。

字體樣式數組是區域之間的ASCII字符的查找表以及Z(ASCII字符32到90,“!”#$%&’()* +, – 。/ 0123456789:<=>? @abcdefghijklmnopqrstuvwxyz“)。要永久添加新字體樣式,只需將更新的FontSet粘貼在符合“FONT =”變量的JavaScript代碼中。備份框中的“字體格式”選項將生成可變格式化的位圖,這些位圖準備粘貼現有字體。

完成動畫後,在作者框中進入您的名字以及新聞報告。序列代碼將生成並發送到服務器。

基於Internet JavaScript的塗鴉設計師受到[Mathieu RonCheau]的離線版本的影響。 [mathieu]的delphi源代碼以及可執行文件在此處存檔。我們的JavaScript型設計器具有一些附加功能,是基於瀏覽器的,以及它不需要您運行一個未知的.exe文件。即使它意味著在Web上運行,Designer也將同樣從計算機上的區域副本工作。

該腳本將為任何類型的任意矩陣工作,只需修改DPTROWS以及DPTCLS變量到LLRD的尺寸。

在線觀看者利用異步http(ajax-ish)請求來顯示用戶提交的塗鴉動畫的流媒體。它將嘗試設置一個cookie,以確保每次頁面加載時都可以以新的序列開始。如果您沒有啟用cookie,則在下次訪問時剛剛在0開始才開始。

序列位圖格式
序列構建器將每列輸出為ASCII格式化位圖。每個列的位圖由空格分隔,並且每個全幀都以線饋送(NR)終止。這種風格由[Mathieu RonCheau]的PC序列儀計劃定義,我們將其保存為向後兼容性。

位圖數據在幀的左上角歸零。每列的頂部單元是位0,以及底部小區是比特4.遵循基本數學符號的似乎更合理,並且利用底部左屏幕作為原點,但我們沒有擬定規範。

價值foR在二進制數中處理Lit LED為1,以及轉換為十進制,通過處理每列。例如,上面的第一列是10000二進製或1個小數。最後一列是11111二進制,或十進制31.您可以使用Internet二進制計算器的交換確認我們的轉換。

請注意,列位圖由實際十進制值的ASCII等效項表示。根據ASCII標準編碼數字數字,這是實際值加0x30h。此外,多位數字保存為私有字符;在該示例中24保持為0x32h,0x34h。

服務器端
後端是一個簡單的軟件應用程序,接受動畫序列,是否有一些驗證,以及將它們保存到數據庫中。保存序列可從數據郵件API訪問。

後邊
我們組成了兩個版本的後端;兩者都在作業檔案中。首先是Internet LLD中的低卷的簡單PHP / MySQL後端,另一個是Google App Engine / Python版本,應該能夠處理一天讀者的很多黑客。

為您的首選平台構成後端,它真的很簡單。修改塗鴉設計師的提交類型行動以指向您的後端;這兩個版本目前都發佈到backend.php。現在,捕獲服務器上的“作者”以及“SEQ”變量,並將其保存到數據庫中。

我們的後端執行一點驗證以防止對系統的攻擊。我們在階段進行了檢查,因此它們不會浪費許多資源。首先,檢查提交的一般規模以確保其在原因內。接下來,將序列分成私幀,並且每個都被檢查為表單。如果通過驗證,它將保存到數據庫中。

飼料API.
序列可通過簡單的數據送達API訪問。 API有兩個變量:

http://graffiti-me.appspot.com/feed.php?max=1&last=0

最大 – 發送的最大序列數。

最後 – 讀取最後一個序列,只發送較新的數據。

該數據遞交以字符’#’開始每個動畫序列,符合身份證號碼以及行饋送。 ‘#’是一個無效的位圖值,可警告客戶端到新序列的開頭。客戶端可以利用API的上次變量的ID號以在每個拉動上獲取新序列。

硬件
迷你Web服務器

我們使用PIC24F Mini Web服務器作為此項目的TCP支持的客戶端。檢查我們以前的文章,以發現如何開發Web服務器。

愚蠢的朋克表
[MRGALLETA]有一個夢幻般的建築教程,適用於DAFT PUNK表副本的實際表。雖然,LLRD可以採取許多形式,例如我們的牆壁。

大多數DAFT PUNK表副本樣式由74HCT595(PDF)輸出擴展器以及ULN2803A(PDF)晶體管陣列進行管理。該指示器的驅動板將兩者組合成易於蝕刻的通孔PCB。每個驅動板有兩個74htc595s,或16個輸出;我們需要兩個駕駛板,為我們的25個單元格LLRD。

74HCT595是由類似SPI的接口管理的串行輸出膨脹機。通過刪除鎖存線啟動更新。將每個LED(開或關)的指定放在數據線上,遵循時鐘的脈衝。當閂鎖信號返回高電平時,位在輸出引腳上。數據從數據輸出引腳級聯一個595,到下一個數據輸入。檢查了74xx595教程,詳細介紹了接口此設備。

值得注意的是,我們利用74HCT595,而不是74HC595。 “HCT”部件在各種電壓上工作,包括Mini Web服務器的工作電壓:3.3Volt。

74HCT595源電流,這意味著我們可能很可能直接從3.3Volts的每個輸出直接運行單個LED。由於大多數LLRD具有每個單元格的2-8個LED,因此在5之間以及24Volts之間操作,我們利用了ULN2803A晶體管陣列來切換更大的負載。 uln2803a下沉電流,而不是採購它;它切換LED的接地連接,而不是電源。

我們的LLRD每扇區有兩個LED,在20mA下運行,5伏電源以及56Ohm電阻。我們在一塊紙板周圍焊接LED,而不是蝕刻25個小型電路板。

連接

迷你Web服務器和驅動板之間的5個電纜連接控制LLRD。

服務器
LLRD.
描述

v +
vsys.
3.3 595s的電源。

GND.
GND.
共享地面連接。

ra0.
數據in.
數據信號。

ra1.

時鐘信號。

RB15.
閂鎖
鎖存信號。


v
LED電源。

固件
我們的固件使用MPLAB和Microchip C30演示編譯器編寫的C.了解有關編程的更多信息以及在我們的介紹性教程中使用PIC24F。作業存檔中包含兩個固件版本。首先剛剛從SD卡中讀取所有* .seq序列數據,第二個版本為Web連接添加了Microchip TCP / IP堆棧。迪更多關於Microchip SD卡以及我們迷你Web服務器教程中的TCP / IP庫的更多信息。

可以在Graffitigfx.c中發現所有圖形功能,包括TCP客戶端。 TCP客戶端基於TCP / IP堆棧中包含的通用TCP客戶端示例。我們遵守Microchip的合作多任務方法,並將代碼剪髮為與TCP / IP堆棧的其餘部分共享CPU時間的小段。

客戶端定期鏈接到數據郵件以及請求新序列。新序列被解析為ID號,以及附加到SD卡上的臨時數據。檢測到的最後一個ID被寫入臨時數據文件的極端末端,並且附加到後續數據饋送請求上的URL的最後變量。我們在數據末尾記錄ID以防止重複組成在SD卡上的完全相同的扇區。理想情況下,1GB SD卡內的佩戴水平足以防止最初幾十年的問題。如果沒有可用網絡連接,則小工具在SD卡的根目錄中播放任何類型的* .seq數據。

解析器函數對幀進行解碼,並將它們發送到LLRD。解析器對錯誤相對強大。使其在後端驗證例程中的數據不佳將在小工具級別拒絕沒有生病效果。如果一些腐敗框架可以處理展示,它幾乎不會被注意到在牆上的其他抽像圖案中被注意到。

1
2
3.
#define gfx_use_tcp_client //包含TCP客戶端
#define gfx_tcp_only //只做TCP以及被檢查的臨時文件,請勿在SD卡上簽出其他數據。
#define gfx_clear_temp_on_reset //可選地刪除重置時的TEMP數據。非常適合Google App Engine …

在graffitigfx.c的開始時三個定義管理編譯時包含哪些功能。 gfx_use_tcp_client使用已啟用的TCP客戶端編譯固件,評論此含義僅適用於固件的SD卡版本。 gfx_tcp_only忽略了SD卡上的任何類型的.seq數據,以及僅播放從Web下載的序列。 gfx_clear_temp_on_reset選擇將刪除每個複位上的臨時序列數據;這對於具有非順序記錄ID的數據庫非常有用,如Google數據存儲。將來,這些定義可能會被改變為由SD卡上的配置數據設置的變量。

進一步選擇
我們的簡單固件是互聯網塗鴉牆上的穩定起點。雖然我們正在努力做這項工作,我們提出了一大批額外的功能,並沒有進入原型。

在啟動時顯示IP地址。

SD卡上的配置數據設置數據饋送URL,刷新頻率以及其他變量。

用於遠程配置的Telnet或Web界面。

TCP服務器,用於直接訪問顯示器;從遠程PC推送動畫框架。

郵件客戶端報告錯誤以及條件信息。

啟動期間的進度消息以及序列下載。 SD卡不存在/完全錯誤。

滾動Twitter Feeds。

你的意見?

不要剛剛簽出這個項目,為塗鴉牆貢獻一些框架。

下次我們將介紹我們的最終PIC24F項目,這是一個以太網背包,用於SparkFun Electronics的小$ 20彩色諾基亞LCD敲門聲。

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

Pager消息用RPI和SDR嗅聞Pager消息用RPI和SDR嗅聞

1990年代所謂的,他們希望您利用現代創新來聆聽您的朋友的尋呼機消息。說真的,這些天還有多少人仍然利用尋呼機?我們猜您可以通過構建您自己的軟件定義無線電尋呼機消息解碼器來了解。 [Sonny_jim]購買了基於RTL2832的USB加密狗,以聆聽ADS-B飛機通信僅查找硬件無法在該帶寬範圍內進行交互。因此,他開始找到一個項目,硬件適合併結束通過尋呼設備使用的POCSAG協議。事實證明,它不僅用於人類通信。仍有許多利用該技術的自動化系統。 設置件事並不是那麼難。閱讀項目日誌的評論顯示一些人正在有依賴性問題,但這些噪音相當平庸,並將是您在Linux-fu上清理的好機會。安裝所有捆綁包後,您只需使用可以以無數方式顯示的文本。 [SONNY]在PI的WebServer上設置文本數據,以確保他可以檢查智能手機的最新捕獲。 [圖像源]

測試主頁PCB蝕刻測試主頁PCB蝕刻

[Quinn Dunki]的Veronica的veronica,基於6502 CPU的自主計算機,伴隨著。她剛剛完成了輸入板,為鍵盤和兩個舊的任天堂遊戲手冊提供了veronica輸入。 [Quinn]正在建造這台電腦,她的寂寞包括蝕刻所有PCB。她得到了非常非常善於蝕刻自己的董事會,但這個投入板確實激發了一些麵條的瞬間。 在早期的帖子中,[Quinn]通過了她的PCB蝕刻功能。如上圖所示,她能夠用5密耳分離打印16個密耳痕跡。這與您可以與家用纖維PCB一起獲得的那麼好,但並非沒有問題。 [Quinn]正在為她的板上使用照相過程,其中在醋酸薄板上印有兩個掩模的副本,加倍,並在預敏化的銅板上鋪設。通過經驗發現兩層墨粉的要求 – 只有一層墨粉阻擋紫外線,[Quinn]在她的痕跡和地面平面上有一些可怕的點痛。 兩個攝影面罩意味著面罩應該精確對齊。這個例子顯示了醋酸薄片略微略微未對準時會發生什麼。在跡線之間有5密耳的差距,[quinn]需要將掩模對準到±2.5密耳內;挑戰,眼睛挑戰,一旦你的元素彎曲並將它們夾在銅板上,就很難。 即使這個過程變得完美,[Quinn]也在推動激光打印機的限制。在600 dpi打印時,打印的像素約為1.5密耳。雖然GIMP,打印機驅動程序和打印機本身有一些花哨的軟件來幫助插值,[Quinn]仍然看到完美對齊的部分邊緣的“凹凸”。這是真正讓你退後一步的那些事情之一,並意識到家裡的家裡的PCB是多麼令人難以置信。 隨著veronica的許多硬件,它只是關於[quinn]開始編程她的寶寶的時間。我們不期待一個完整的操作系統和編譯器,但那些NES遊戲手段可能會在一些使用中哭泣。

如何從Android手機如何從Android手機

中刪除系統應用程序“如何擺脫對我幾乎沒有用的不必要的應用程序?” – 這是他/她/她/她的智能手機用戶的主要問題之一可能正在使用。雖然很容易卸載第三方應用程序,但刪除預裝手機的應用程序可能會證明很難破裂。電話製造商通常禁用此類應用程序的卸載選項,稱為“膨脹軟件”,這是我們大多數人討厭的一個詞。 並不是說Bloatware問題僅限於Android智能手機。 Symbian(現在幾乎已經死亡),iOS,Windows Phone,Bada,BlackBerry,WebOS的用戶都面臨著這個問題。雖然其他用於移動的操作系統的用戶可能注定要容忍膨脹軟件應用程序,但使用Android的人可以利用它作為開源屬性,並輕鬆刪除此類應用程序。 問題是:“默認情況下,您的Android手機隨附的所有應用都應該被拋棄嗎?”答案絕對是一個很大的“否”。這些應用中的一些無疑是有用的,但是還有許多其他應用程序只會填充您手機的應用程序抽屜並使您感到煩惱。除了未使用的應用程序外,還有某些應用程序是試用版本或在自然界中讚助的。所有這些應用程序通常佔據您手機的內部內存和RAM的大部分。他們可能使手機執行速度較慢的原因是這些應用程序在後台不斷運行,以吸引RAM內存。 因此,自然需要刪除或卸載此類應用程序或遊戲。本文的目的是提出幾種方法,如果您願意從Android手機中啟動無用的系統應用程序,可能會為您提供幫助。為了方便起見,基於程序的性質,我將文章分為兩個部分。第一個是給那些沒有紮根手機的人,也不願意紮根 從Android中刪除系統應用程序: 在手機上隱藏並禁用膨脹軟件: 如果您擁有沒有根訪問的Android手機,那麼您與Bloatware完美離婚的機會會變得有些變暗,即使不是黑暗。未經根份許可,您可以隱藏此類應用程序並使它們無功能,但是它仍然更安全,並且與完全刪除應用程序一樣有用。我不確定哪些手機具有應用程序隱藏功能,但是在三星Galaxy系列手機中肯定可以找到(我已經測試了Galaxy S4,S3和Note 10.1上的Bloatware刪除方法) 如果設備上可用該選項,則可以做到這一點。打開手機上的應用程序抽屜,然後點擊“選項/菜單”按鈕(在Galaxy手機上,將其保留到中心鍵),然後選擇“隱藏應用程序”。在下一個屏幕上檢查所需的應用程序,然後在頂欄上點擊“完成”。這樣做將從應用程序列表中刪除應用程序,但它們仍將繼續在後台工作,從而進食電池和RAM。為了將隱藏的應用程序帶回應用程序抽屜,您可以使用“顯示隱藏的應用程序”選項。 好的,我們已經掩蓋了不希望的應用程序了,但是我們還需要阻止它們隱秘地工作。讓我們也這樣做。打開手機的設置,轉到應用程序管理器並點擊它。它將顯示三個主題下的所有應用程序:1)。第三方或下載的應用程序,2)。運行應用程序和3)。所有應用程序。從右向左滑動手指,以查看手機上所有應用程序的列表。滾動列表以找到要停止工作的應用程序並點擊它。現在,您將看到一個界面,如下所示。 您要做的是點擊“強制停止”和“禁用”按鈕。因此,現在已經隱藏的應用程序也停止了工作。好的! 刪除根部手機上的系統應用程序/膨脹軟件 正如我之前說的那樣,擁有紮根的Android手機具有自己的美味佳餚。生根使您有資格進入手機的限制區域,否則係統文件會受到保護。就像闖入自己的公寓一樣。由於您有權修改設備的系統文件,因此您可以使用各種應用程序和實用程序輕鬆地管理事物。我們將在下面考慮一些這樣的方法。 使用根文件資源管理器或終端模擬器: Google Play商店充滿了數百個文件經理和終端模擬器,可以使該任務成為孩子的遊戲。但是這種方法有一個鮮明的方面,因此您需要謹慎。 紮根您的Android手機將使其保修無效,但您始終可以收回其安裝庫存固件。有一些方法可以解開該設備沒有痕蹟的方法,但是對於所有設備而言,這可能並非如此。如果您有三星Galaxy手機,生根可能會增加二進制閃光計數,但可以使用Chainfire的Triangle Awase應用程序將其重置為“ 0”。此外,您可以查看以下視頻教程以重置Flash計數。 另外,請確保您要刪除的應用程序對操作系統並不重要,也不是null