国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ZigBee的分布式彩燈控制系統(tǒng)研發(fā)

2021-11-05 03:25廖映華
關鍵詞:燈組亮色彩燈

皮 浩,石 艷,劉 康,胥 云,廖映華

(四川輕化工大學機械工程學院,四川 宜賓 644000)

引 言

四川的自貢燈會、南京的秦淮燈會、江西的全豐燈會等,不僅是寶貴的非物質(zhì)文化遺產(chǎn),更是國家文化軟實力的象征,起著重要的對外文化輸出作用。傳統(tǒng)燈組采用靜態(tài)方式控制光源,即用單色燈泡,將它們統(tǒng)一掛載在電源總線上,放置于燈組輪廓內(nèi)部位置;燈組接通電源后,光源單色燈泡一并發(fā)光,光亮透過蒙皮,將彩燈藝人設計的燈組造型輪廓烘托出來,給游客視覺體驗。但是隨著時代進步,燈會產(chǎn)業(yè)也要與時俱進和發(fā)展創(chuàng)新,彩燈設計者需要更靈活、更好用的彩燈控制系統(tǒng),以滿足彩燈藝術原始意圖,設計更精美的燈組來吸引游客[1-2]。

對此,國內(nèi)外學者開展了一些相關研究。電子科技大學的王誼[3]進行了μCOS-Ⅱ在51 系列單片機上的移植工作,成功實現(xiàn)了控制單顆RGB LED 變色的功能。李美華[4]使用μCOS-Ⅱ進一步控制了多顆RGB LED 變色。北京工業(yè)大學的趙新安[5]提出“輸出陣列”這一概念,為RGB LED 亮色方案向RGB LED 亮色轉碼提供了一種解決思路,使得RGB LED 亮色方案能夠簡單便捷地生成RGB LED 亮色編碼。柳春青等人[6]與四川九洲電器聯(lián)合開發(fā)了一套基于DMX512 協(xié)議的智能燈光控制系統(tǒng),該系統(tǒng)使用ARM 架構的M3 系列芯片作為主控,具備上位機控制、文件傳輸?shù)裙δ堋N靼搽娮涌萍即髮W的王碩強[7]進行了彩燈配色方案無線發(fā)送器的研究,為高樓、距離較遠等情況下的彩燈控制方案提供了借鑒。新加坡南洋理工大學能源研究所Wang、Tan 團隊[8]開發(fā)了一個基于神經(jīng)網(wǎng)絡映射模型的LED 系統(tǒng),達到節(jié)能和滿足用戶不同照度偏好的目的。Moon 等人[9]提出了一種基于智能手機的LED 照明系統(tǒng)方案,這個特點可以借鑒到彩燈燈組的智能化,增加傳感器模塊和移動設備模塊聯(lián)系,實現(xiàn)與游客互動的功能。Wojiech 等人[10],使用ZigBee無線網(wǎng)絡傳感器實現(xiàn)了對一盞可編程燈具的控制??偟恼f來,以上研究在芯片選型、亮色方案編碼、μCOS 任務設計、系統(tǒng)功能設計角度提供了借鑒。其中,Wang[8]設計的光源節(jié)能模型,能為燈組控制系統(tǒng)耗電優(yōu)化提供思路;Moon[9]的方案則結合了手機終端控制和智能模塊,互動性更強。但中國傳統(tǒng)燈會燈組,在光源分布距離、光通量調(diào)節(jié)、顏色切換以及工作時間設置上,不同于其他照明系統(tǒng)[11-16],在光通量調(diào)節(jié)、顏色切換、控制距離等方面,應有更高的要求,以滿足彩燈設計者意圖,對此類彩燈控制系統(tǒng)需要進一步研究和設計。

1 總體方案設計

為實現(xiàn)燈組光源光通量可調(diào)、顏色可切換以及工作時間可設置的目的,將彩燈控制系統(tǒng)分為3 層,不同層級內(nèi)完成不同功能,并通過指令逐層傳遞。其中終端節(jié)點負責光通量調(diào)節(jié)、顏色切換功能,協(xié)調(diào)器實現(xiàn)工作時間設置,統(tǒng)一控制所有節(jié)點工作。這種設計的優(yōu)越性在于系統(tǒng)的穩(wěn)定性高,即當一條鏈路出現(xiàn)問題,整個系統(tǒng)仍然能繼續(xù)工作,不會對彩燈燈組展示效果造成嚴重的損壞。此外,這種設計的接口清晰,升級換代以及規(guī)模拓展更為容易。設計的分布式彩燈控制系統(tǒng)如圖1所示。

圖1 分布式彩燈控制系統(tǒng)方案

1.1 硬件工作層

該層負責彩燈燈組中光源的驅(qū)動工作,主要由終端控制節(jié)點和光源兩部分組成。其主要任務是從ZigBee無線局域網(wǎng)絡中,接收來自協(xié)調(diào)器的控制指令,并根據(jù)指令驅(qū)動光源進行顏色切換、光通量調(diào)節(jié)以及工作時間控制。在硬件工作層,每個終端節(jié)點存儲著各自被控光源所有的顏色方案,即存在一個節(jié)點指令表,使得節(jié)點號與節(jié)點的方案號保持著對應關系。因此,對于整個分布式彩燈控制系統(tǒng),硬件工作層的每個節(jié)點都有一個節(jié)點指令表,共同實現(xiàn)燈組系統(tǒng)光源的所有變化。

1.2 ZigBee網(wǎng)絡層

分布式彩燈控制系統(tǒng)ZigBee 網(wǎng)絡采用星型拓撲結構,由各終端節(jié)點和協(xié)調(diào)器組成。系統(tǒng)的ZigBee 網(wǎng)絡層能自動識別、自動組織加入的終端節(jié)點。ZigBee 模塊在廣播模式下工作,并通過內(nèi)部宏定義進行節(jié)點間識別。協(xié)調(diào)器布置在燈組內(nèi)部中心位置處。終端控制結點群與各自被控光源臨近,布置在燈組輪廓內(nèi)部需要光源的地方。

1.3 Internet網(wǎng)絡層

在Internet 網(wǎng)絡層,協(xié)調(diào)器與客戶端通過TCP/IP 通信協(xié)議進行信息傳遞。協(xié)調(diào)器工作在彩燈燈組現(xiàn)場,客戶端既可以通過MQTT 遠程控制,也可以在現(xiàn)場工作,控制彩燈燈組的運行。

2 系統(tǒng)方案實現(xiàn)

2.1 終端節(jié)點

本方案采用STM32F103C8T6 單片機作為終端節(jié)點主控核心,使用CC2530 為主控的DL-20 模塊進行組網(wǎng)。每片STM32F103C8T6 成本5 元,DL-20 成本20 元,對應普通燈組的控制規(guī)模,系統(tǒng)硬件成本約800 元,并能回收使用。相比之下,傳統(tǒng)靜態(tài)控制方式的光源系統(tǒng)用后即棄造成浪費。

2.1.1 節(jié)點硬件

終端控制節(jié)點的主要任務是驅(qū)動RGB LED 工作和接收協(xié)調(diào)器指令。常見的RGB LED 的驅(qū)動協(xié)議,其時序碼0、1、RESET 為納秒級別的,很容易受到干擾[17],因此驅(qū)動信號與干擾信號要隔離開。按照“高頻電路布中間、干擾信號放外圍”的原則[18],終端節(jié)點PCB設計如圖2所示。

圖2 終端節(jié)點PCB

ZigBee 模塊通過串口接口,與主控核心進行數(shù)據(jù)透傳,主控核心也為ZigBee 提供電源。終端節(jié)點的通用引腳都可以作為RGB LED 的驅(qū)動引腳,可以根據(jù)燈組控制需要進行裁剪。終端節(jié)點構成如圖3所示。

圖3 終端節(jié)點實物圖

2.1.2 節(jié)點軟件

在Keil uVision5 環(huán)境下,將μCOS-Ⅲ源碼移植至終端節(jié)點工程,并以創(chuàng)建任務模塊的形式對指令接收、協(xié)議解析、亮色方案模塊進行代碼組織。終端節(jié)點主要包括指令接收、協(xié)議解析、方案任務3大模塊。

程序通過以下宏定義進行跳轉和判斷,見表1,并在主函數(shù)中對METH_NUM進行輪詢。

表1 開關控制變量

穩(wěn)定性是彩燈控制系統(tǒng)的核心內(nèi)容。為提高分布式彩燈控制系統(tǒng)的ZigBee 網(wǎng)絡的穩(wěn)定性,利用“單次發(fā)射數(shù)據(jù)量與誤碼率成正比”的原理,將每次發(fā)送的指令,拆分成以一個字節(jié)為單位,依次發(fā)送。指令最終在各終端節(jié)點通過隊列完成拼接,即“分段接收,隊列存儲”機制。本次系統(tǒng)的指令由兩個字節(jié)組成。在設備位數(shù)為8的情況下,本協(xié)議最大容量為256個節(jié)點。

由于每次發(fā)送的數(shù)據(jù)短小,ZigBee 模塊的工作載荷壓力小,信號在ZigBee 網(wǎng)絡中能夠維持足夠的強度,提高了終端節(jié)點接收的準確率,從而達到提高系統(tǒng)穩(wěn)定性的目的。系統(tǒng)的指令大小為2 字節(jié),而每次接收到的字節(jié)存儲在隊列中,直到隊滿,進而觸發(fā)協(xié)議解析、節(jié)點識別以及光源亮色方案模塊。

2.1.3 光源亮色方案

光源亮色方案任務是分布式控制系統(tǒng)進行光源顏色控制、光通量控制的底層具體實現(xiàn)。其數(shù)據(jù)碼值由4個字節(jié)組成,第一個字節(jié)為地址編號,后3 個字節(jié)為被控RGB LED亮色方案碼值。

方案任務工作時,將數(shù)據(jù)碼值的亮色方案碼值按地址順序更新到顯示緩存區(qū),然后調(diào)用RGB LED 的驅(qū)動函數(shù),根據(jù)顯示緩存區(qū)中的內(nèi)容,在指定管腳,輸出相應的0 碼、1 碼和RESET 信號。亮色方案碼值與RGB LED的顏色控制及光源光通量控制的關系如下:

(1)顏色控制方面。3 字節(jié)的數(shù)據(jù)碼值可以組合出256 × 256 × 256 = 16 777 216 種顏色,理論上能夠產(chǎn)生紅、綠、藍、青、黃等顏色,滿足了燈組顏色控制需求。

(2)光通量控制方面。等比例對WS2812 光源的數(shù)據(jù)碼值進行整體縮放,WS2812 光源就會發(fā)出相應強度光亮,從而達到光通量控制目的。通俗地說,光源光通量越大,人眼感受越刺眼。

2.2 協(xié)調(diào)器

協(xié)調(diào)器是連接ZigBee 網(wǎng)絡與Internet 網(wǎng)絡層的橋梁。在ZigBee 局域網(wǎng)中,協(xié)調(diào)器發(fā)送廣播指令,統(tǒng)一控制系統(tǒng)所有終端節(jié)點,按燈組所需亮色方案工作。在Internet 中,協(xié)調(diào)器接收客戶端發(fā)送的指令,滿足現(xiàn)場調(diào)試或遠程調(diào)試功能。

2.2.1 協(xié)調(diào)器硬件

樹莓派以功能豐富且價格便宜而著稱[19]。本次設計選用樹莓派4B+作為協(xié)調(diào)器,整體裝置如圖4所示。

圖4 協(xié)調(diào)器實物圖

2.2.2 協(xié)調(diào)器軟件

協(xié)調(diào)器軟件的基礎是Linux應用程序編程和網(wǎng)絡編程。Linux應用程序編程利用IO系統(tǒng)調(diào)用write()和read()函數(shù)進行工作。Linux 網(wǎng)絡編程作為客戶端的服務器,與客戶端連接。協(xié)調(diào)器指令發(fā)送前,需要以下幾個步驟:

(1)獲取ZigBee 的設備描述符。Linux 中一切皆文件,通過串口轉USB的ZigBee也是如此。使用open()函數(shù)打開ZigBee 模塊,并設置波特率、數(shù)據(jù)位、校驗位等信息,返回ZigBee模塊的文件描述符資源。

(2)制作指令表。根據(jù)控制的規(guī)模,使用unsigned char 類型數(shù)組,順序存儲待發(fā)送指令碼。本次設計的是兩字節(jié)指令,因此偶數(shù)位為設備號,奇數(shù)位為方案號。

(3)發(fā)送指令。調(diào)用write()函數(shù),將指令表內(nèi)的數(shù)據(jù)寫入ZigBee 模塊的文件描述符。并根據(jù)節(jié)點工作的時間關系,合理調(diào)用sleep()函數(shù)進行控制時間設置。

制作任務驅(qū)動模塊中的指令表,是本系統(tǒng)下燈組光源調(diào)試人員工作的主要工作內(nèi)容。彩燈調(diào)試人員要將燈組的展示效果,轉換成一條條的控制指令,在協(xié)調(diào)器程序運行時,發(fā)送這些指令。

協(xié)調(diào)器接收客戶端指令時,與客戶端約定端口號進行TCP/IP 通信,并根據(jù)客戶端發(fā)送的消息,對終端節(jié)點群發(fā)送ZigBee 廣播指令,進而對燈組光源進行控制。協(xié)調(diào)器與客戶端之間維持了一個結構體緩存,每次接收到的信息都將刷新這片緩存區(qū)。協(xié)調(diào)器接收到命令后,解析該指令,并根據(jù)查詢表,開辟相應的線程,運行這個指令所對應的任務。每收到一個客戶端指令都將判斷并刷新指令。

多線程任務有利于資源共享[20],在協(xié)調(diào)器段維護的指令表會被所有的線程調(diào)用到,相對于多進程方法,無需解決進程間通訊等問題,并可通過互斥鎖機制保護臨界資源ZigBee套接字。

2.2.3 協(xié)調(diào)器數(shù)據(jù)庫

彩燈控制系統(tǒng)的數(shù)據(jù)庫用以存儲協(xié)調(diào)器的指令調(diào)用記錄,并為系統(tǒng)的后續(xù)功能開發(fā)提供接口。

SQLite3 在協(xié)調(diào)器上通過apt-get install sqlite3 命令 完成安裝[21]。 在協(xié)調(diào)器的程序代碼中,使用sqlite3_open()函數(shù)打開數(shù)據(jù)庫后,每次對終端節(jié)點發(fā)送指令時,調(diào)用sqlite3_exec()函數(shù)對時間、設備號、指令號信息進行數(shù)據(jù)庫插入、增添和刪除等操作。

2.3 客戶端

系統(tǒng)使用Qt 應用程序框架進行客戶端程序開發(fā)??蛻舳顺绦蚴褂胣etwork 庫完成與協(xié)調(diào)器之間的連接、斷開和發(fā)送等核心任務??蛻舳伺c協(xié)調(diào)器約定一個通訊結構體,結構如下所示。

這個自定義結構體數(shù)據(jù)主要功能是存儲發(fā)送的指令,也可以存儲數(shù)據(jù)庫查詢記錄,用于客戶端查詢和顯示。

客戶端界面設計如圖5 所示,其屬性、名稱及功能,見表2。

圖5 上位機程序界面

表2 客戶端界面上各控件名稱、類型及功能

客戶端后臺的主要功能是發(fā)起連接、斷開連接、發(fā)送協(xié)調(diào)器指令。

客戶端后臺邏輯的連接步驟如下:

(1)新建一個公有繼承于QObject 的類MyControl,統(tǒng)一處理程序中關于連接、斷開、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收等指令,信號與槽函數(shù)寫在這個類里。

(2) 將 客 戶 端 界 面 上 的 “ 連 接 ” 按 鈕pushButton_connect 的信號clicked()綁定處理連接的槽函數(shù),在這個槽函數(shù)內(nèi)部,通過connectToHost()對協(xié)調(diào)器發(fā)起連接請求。

(3)如果連接成功,則emit()連接成功信號,通知客戶端界面通過setText()設置pushButton_connect 的新名字為“斷開”,并且將“發(fā)送”按鈕激活setEnabled(true),這意味著客戶端已經(jīng)與協(xié)調(diào)器建立好TCP/IP連接。

客戶端后臺邏輯的斷開步驟如下:

(1) 將 客 戶 端 界 面 上 的 “ 斷 開 ” 按 鈕pushButton_connect 的信號clicked()綁定處理斷開的槽函數(shù),在這個槽函數(shù)內(nèi)部,通過DisconnectToHost()對協(xié)調(diào)器發(fā)起斷開請求。

(2)如果斷開成功,則emit()相應信號,通知客戶端界面通過setText()設置pushButton_connect 的新名字為“連接”,并且將“發(fā)送”按鈕激活setEnabled(),這意味著客戶端處于空閑狀態(tài),沒有與任何協(xié)調(diào)器有連接。

客戶端界面上的“發(fā)送”關聯(lián)發(fā)送信號槽。當點擊發(fā)送,讀取lineEdit 上的數(shù)據(jù)內(nèi)容填充至全局緩存,然后通過write()發(fā)送。需要注意的是,每次使用完這個全局緩存,要用memset()將緩存清空,否則在使用時會出現(xiàn)上一次消息的數(shù)據(jù)。

3 系統(tǒng)測試

3.1 基本功能測試

基本功能測試的目的在于檢驗終端節(jié)點、協(xié)調(diào)器、客戶端三者之間能否完成工作,指令能否在各層之間傳遞和流動。本次測試采用5 個終端節(jié)點,它們直接受協(xié)調(diào)器的指令控制,間接受客戶端發(fā)送的指令控制,按照設定發(fā)出相應顏色的光。測試步驟如下:

(1)分配節(jié)點號

根據(jù)要求,將每個終端節(jié)點的設備設定為不唯一。在Keil uVision5 環(huán)境下,將1 號節(jié)點的MY_NUM 設定為1,依次類推。

(2)制作方案數(shù)據(jù)碼值

此次測試的5個被控光源都是12像素,其各自節(jié)點都存儲了紅、綠、藍、青、黃、紫等常見顏色的數(shù)據(jù)碼值。其中,紅色方案碼值見表3,其余顏色只需調(diào)節(jié)數(shù)據(jù)碼值的RGB占比即可。

表3 節(jié)點紅色方案碼值

(3)制作指令表

在協(xié)調(diào)器程序上,制作5 個節(jié)點需要完成的指令表。

(4)搭建工作環(huán)境

為5 個終端節(jié)點,連接配置好的ZigBee 模塊,連接各自的被控光源,并為它們接通電源;搭建好協(xié)調(diào)器工作環(huán)境,配置好協(xié)調(diào)器ZigBee 模塊,連接上WIFI 局域網(wǎng),在協(xié)調(diào)器上運行編寫的線程服務器;在PC 上運行客戶端程序,對協(xié)調(diào)器發(fā)起連接,建立TCP/IP通信。

(5)發(fā)送指令

在打開的客戶端數(shù)據(jù)輸入框內(nèi),輸入指令“zigbeework”,并點擊發(fā)送。

(6)觀察結果

觀察終端節(jié)點的光源能否按照想要的方式點亮。各終端節(jié)點的光源,能根據(jù)指令發(fā)出相應顏色的光亮,測試效果如圖6 所示。此時光源像素為12,每顆像素30 lm,光源總光通量為12×30 lm×100%=360 lm。

圖6 各節(jié)點控制結果

以上測試結果說明,指令能在系統(tǒng)的Internet 網(wǎng)絡層、ZigBee 網(wǎng)絡層以及硬件工作層之間傳遞,Internet 網(wǎng)絡層的客戶端程序能夠控制光源按照設定方式工作。

3.2 切換時間測試

切換時間測試,是測試節(jié)點每次接收到完整的有效指令后,節(jié)點方案切換時間是否滿足性能要求,檢驗光源亮色方案任務模塊設計是否合理。測試步驟如下:

(1)終端節(jié)點接通電源,并連接串口調(diào)試助手。

(2)打開Keil uVision5 軟件,將ST-LINK 連接到終端節(jié)點硬件,點擊“start Debug Session”按鈕,建立仿真連接。

(3)通過串口助手發(fā)送指令,使用ST-Link并在每個方案開始位置記錄時間。

仿真后的結果表明,光源亮色方案切換時間約為0.211 s,人眼難以察覺,可以滿足燈組需要。

3.3 組網(wǎng)距離測試

組網(wǎng)距離測試實驗,是為了檢驗ZigBee 局域網(wǎng)中ZigBee 模塊的通信能力是否滿足燈組控制的距離需要。測試步驟如下:

(1)將終端控制節(jié)點布置在1 m、5 m、100 m范圍內(nèi),測試控制效果。

(2)將數(shù)據(jù)通過ZigBee 送入一個終端控制節(jié)點,運行無線燈帶測試系統(tǒng)。

(3)將測試方案對應的方案碼值,燒錄進一個測試用終端控制節(jié)點。

(4)將測試終端節(jié)點連接至光源,并接通電源,等待指令。

(5)觀察被控節(jié)點有無按照指令變化。測試結果表明,系統(tǒng)穩(wěn)定性好,100 m 范圍內(nèi)無遮擋下能穩(wěn)定工作,節(jié)點的指令接收模塊有效。并建議系統(tǒng)的節(jié)點分布范圍,在協(xié)調(diào)器周圍50 m內(nèi)最佳。

4 結束語

使用ZigBee 無線傳感器技術對燈組光源組網(wǎng),在減少布線麻煩的同時增強光源位置的靈活性,使光源可以放置于燈組內(nèi)部所需位置。此外,該系統(tǒng)在光通量調(diào)節(jié)上裁剪性好,光源可控顏色多,光源顏色切換時間短。

分布式彩燈控制系統(tǒng)能對光源光通量以30 lm 為單元進行裁剪,并在0~255 范圍內(nèi)按需調(diào)節(jié);光源亮色方案切換時間短,能在0.2 s左右完成切換,人眼無法察覺;系統(tǒng)在100 m 范圍內(nèi),正常遮擋環(huán)境下沒有出現(xiàn)誤碼,“分段接收,隊列存儲”機制有效;系統(tǒng)的指令協(xié)議支持255個終端節(jié)點組網(wǎng),且能按需裁剪組網(wǎng)規(guī)模;系統(tǒng)裝置可以回收和反復使用。

猜你喜歡
燈組亮色彩燈
基于Python的車燈動畫效果數(shù)據(jù)化技術
彩燈
《一帶一路》燈組、《瓷器宮燈王》燈組
亮色
荒原童話
元宵佳節(jié)點彩燈
燈會廟市嘉年華 歡樂共享中國年
繽紛童趣
淺析彩繪與自貢彩燈的關系
車展不再冷冰冰 卡車文化成為展會一抹“亮色”