• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于WiFi的智能LED照明控制系統(tǒng)的設計

      2019-09-26 02:50:22
      照明工程學報 2019年4期
      關鍵詞:端口號色度亮度

      盧 超

      (陜西理工大學物理與電信工程學院,陜西 漢中 723000)

      引言

      隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,智能家居的出現(xiàn)為人們享受生活提供了一個廣闊的平臺。無線傳輸技術被廣泛應用到具有遠程控制功能的智能LED照明系統(tǒng)中,通過手機APP遠程控制終端設備的應用越來越多。目前,主流的無線傳輸技術主要有NRF905或者NRF2401等短距離無線通信、Zigbee技術、藍牙、GSM和WiFi等。WiFi技術具有速度快、可靠性高的特點,可以方便組建網(wǎng)絡,對于普通的家庭照明控制,它是實現(xiàn)無線智能照明系統(tǒng)的較好的解決方案[1,2]。設計一個基于WiFi的智能LED照明控制系統(tǒng),實現(xiàn)移動終端遠程控制智能家居中的LED燈,具有很好的市場應用價值。

      1 系統(tǒng)設計

      系統(tǒng)設計主要分為三個部分:手機客戶端、服務器和基于WiFi的無線模塊客戶端。

      1)手機客戶端:編寫一個手機APP程序,通過TCP/IP協(xié)議連接到Internet網(wǎng)絡;設計UI界面,設計人性化交互操作界面,通過APP程序發(fā)送數(shù)據(jù)給服務器。

      2)服務器:接收手機客戶端發(fā)送來的數(shù)據(jù),對發(fā)送來的數(shù)據(jù)進行存儲,然后將手機客戶端發(fā)送來的數(shù)據(jù)發(fā)送給基于WiFi的無線模塊客戶端。

      3)基于WiFi的無線模塊客戶端:根據(jù)設計要求,基于WiFi的無線模塊選用HF-LPB100WiFi模塊,采用Cortex-M3內核的ARM作為主控芯片,控制WiFi模塊。通過TCP/IP協(xié)議連接服務器,然后接收手機客戶端發(fā)送來的數(shù)據(jù),識別后通過控制繼電器來實現(xiàn)控制LED的通斷、色度和亮度[3],系統(tǒng)總體設計如圖1所示。

      圖1 系統(tǒng)框圖

      2 硬件電路設計

      1)LED電路。為了實現(xiàn)LED的色度控制,選用RGB紅綠藍七彩色LED燈珠,控制器的P2口接地控制所有LED的通斷,P1口控制藍色LED,P3口控制綠色LED,P4口控制紅色LED。通過P1、P3和P4三原色合成七種顏色,設計中通過一個GPIO和三個PWM可實現(xiàn)控制整個LED輸出不同的顏色和亮度。

      2)USB轉UART電路。為了調試方便,調試時將數(shù)據(jù)收發(fā)通過串口調試助手進行測試,選用FT232實現(xiàn)USB到串口UART接口的轉換,圖2所示為USB轉UART的電原理圖。

      3)HF-LPB100電路。WiFi模塊采用HF-LPB100模塊,HF-LPB100集成802.11b/g/n,單片機控制裝置很容易接入WiFi無線網(wǎng)絡,實現(xiàn)物聯(lián)網(wǎng)控制與管理。HF-LPB100尺寸僅23.1 mm×32.8 mm×2.7 mm,配備了一個內置PCB天線、外置天線連接器。HF-LPB100的無線模塊可以配置成一個無線STA(即無線站點,是一個無線網(wǎng)絡的終端),也可以配置成AP(無線接入點,是一個無線網(wǎng)絡的中心節(jié)點)。HF-LPB100模塊支持串口透明傳輸模式,實現(xiàn)串口即插即用,僅需要配置必要的參數(shù),上電后模塊自動連接到默認的無線網(wǎng)絡和服務器[4,5]。

      圖2 USB轉UART電原理圖

      設計中,模塊采用3.3 V供電,通過ARM普通的GPIO控制口作為輸入輸出,SPI接口用于Jlink下載程序調試,PWM輸出不同占空比的脈沖,HF-LPB100電原理圖如圖3所示。

      圖3 HF-LPB100電原理圖

      3 軟件設計

      軟件設計分為三個部分:HF-LPB100模塊客戶端軟件設計,手機客戶端的Android軟件設計和服務器軟件設計。具體實現(xiàn)是通過HF-LPB100客戶端發(fā)送LED的屬性狀態(tài)給服務器,服務器接收后保存并轉發(fā)給Android客戶端,Android客戶端發(fā)送控制信號給服務器,并轉發(fā)給Hf-LPB100模塊客戶端,客戶端接收到數(shù)據(jù)后識別控制LED的通斷、色度和亮度。

      3.1 系統(tǒng)編譯和調試環(huán)境

      HF-LPB100模塊客戶端軟件設計采用KEIL MDK開發(fā)工具,包括μVision4集成開發(fā)環(huán)境和RealView編譯器,支持ARM7、ARM9和Cortex-M3/M1/M0內核處理器,有處理器自動配置啟動代碼,集成了Flash燒寫模塊,Simulation設備模擬功能和性能分析功能。手機客戶端的Android軟件設計采用開源性的Eclipse,基于Java的集成開發(fā)平臺。Eclipse提供了一套標準的插件給開發(fā)者,包括Java開發(fā)工具。服務器軟件設計采用VC++6.0,基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境[6]。

      調試軟件采用SecureCRT和SocketTool。SecureCRT支持SSH,包括SSH1和SSH2終端仿真程序,可以登錄UNIX或Linux服務器主機,登錄后可以遠程操作服務器主機,同時支持Telnet和Rlogin協(xié)議。SocketTool調試軟件是一個可以進行網(wǎng)絡的TCP/UDP通信調試工具,集成了TCP的服務器/客戶端,和UDP的服務器/客戶端,以及UDP廣播/組播,可以建立服務器或者客戶端,支持發(fā)送和接收十六進制的顯示,支持漢字以及發(fā)送[7-10]。

      3.2 HF-LPB100模塊客戶端軟件設計

      HF-LPB100模塊客戶端軟件設計思路是:SDK先連接服務器,監(jiān)聽是否有客戶端連接服務器,如果有客戶端連接服務器,服務器告知SDK有客戶端連接了服務器,這時SDK將采集的LED的通斷狀態(tài),LED的色度值和亮度值發(fā)送給服務器器,由服務器發(fā)送給Android客戶端,Android客戶端收到SDK發(fā)放回來的數(shù)據(jù),進行分離識別處理后,把LED的通斷狀態(tài)在按鍵上顯示,把色度值在滑動條上顯示,把亮度值在滑動條上顯示,控制完畢后,關閉軟件,等待下一次在打開軟件時,上一次控制保留的數(shù)據(jù)會顯示在Android手機上[11-14]。圖4所示為HF-LPB100模塊軟件設計流程圖,判斷HF-LPB100模塊客戶端是否連接網(wǎng)絡,連接后發(fā)送LED的狀態(tài),進入阻塞式等待狀態(tài),當接收到數(shù)據(jù)時,識別并判斷發(fā)送來的數(shù)據(jù)是控制通斷的還是控制色度亮度的,實現(xiàn)遠程控制。

      圖4 HF-LPB100模塊軟件設計流程圖

      3.3 手機客戶端Android軟件設計

      手機客戶端Android軟件主要是菜單設計,菜單包括首頁、通斷、色度、亮度和幫助。首頁中添加一個按鍵,按鍵監(jiān)聽器監(jiān)聽是否按鍵按下,將結果發(fā)送給服務器,實現(xiàn)遠程控制;通斷中放置一個連接服務器按鈕和六個按鍵,連接服務器按鈕第一次按下后,會自動連接服務器,六個按鍵對應六組LED,分別設置LED的應用場景為:客廳、臥室、陽臺、廚房、衛(wèi)生間和餐廳,通過按鍵控制對應的LED通斷,為了人機交互人性化,當LED打開時,按鍵會切換亮LED圖片,使用戶可以通過圖片示意,清楚地看出LED的通斷,另外設置了一個設置按鈕,用于對IP和端口號存儲,輸入IP和端口號后,點擊保存按鈕,下次再進入后就不用再修改IP和端口號,直接可以點擊連接服務器按鈕,方便使用;色度中放的是六個滑動條,通過觸摸滾動滑動條可以調節(jié)LED的色度;亮度中放的是六個滑動條,通過觸摸滾動滑動條可以調節(jié)LED的亮度;滑動條的值是0~100,滑動條監(jiān)聽器用于監(jiān)聽滑動時間,每次滑動停止將數(shù)據(jù)發(fā)送給服務器;幫助菜單是APP的使用說明,點擊按鈕,讀取指定位置的txt文件,顯示在屏幕上。系統(tǒng)開始工作時,服務器先要發(fā)送客戶端LED的通斷狀態(tài)和LED的色度、亮度,手機接收到服務器發(fā)送來的數(shù)據(jù),進行分析處理,并初始化LED的通斷按鈕的狀態(tài)和滑動條的初始化值,這樣每次打開軟件,手機都會顯示LED的信息,在重新控制的時候,LED的屬性不會錯亂。圖5所示為手機客戶端APP軟件設計流程圖,首先是放置一個菜單,進入設置界面,輸入IP和端口號保存,連接服務器,沒有連接時重新連接,連接成功后,等待接收WiFi客戶端發(fā)送來的狀態(tài),顯示在UI界面上,點擊按鍵發(fā)送通斷信號,觸摸滾動滑動條調節(jié)色度、亮度值,發(fā)送后,在UI中顯示客戶端連接服務器的狀態(tài)和LED的開關狀態(tài),APP軟件運行界面如圖6所示。

      圖5 手機客戶端APP軟件設計流程圖

      內網(wǎng)到外網(wǎng)的的連接,通過花生殼軟件和服務器做了一個地址映射,配置一個域名和端口號,手機Android客戶端可以通過這個域名和端口號使用外網(wǎng)連接搭建的服務器[15]。

      3.4 服務器軟件設計

      圖6 APP運行界面

      在TCP和UDP協(xié)議中為了識別通信實體中進行通信的進程,通過協(xié)議端口實現(xiàn),端口使用了一個16位的數(shù)字表示,包括一些數(shù)據(jù)結構和I/O緩沖區(qū),應用綁定后,傳輸層端口的數(shù)據(jù)端口是通過系統(tǒng)調用來實現(xiàn)。套接字用于通信的進程,將有共有特性的套接字綜合在一起,在同一個區(qū)域的套接字進行數(shù)據(jù)交換,套接字的兩種類型:流式套接字和數(shù)據(jù)報套接字。流式套接字是一種基于TCP協(xié)議的網(wǎng)絡連接,是面向對象的可靠的網(wǎng)絡數(shù)據(jù)通行方式,在通信過程中,數(shù)據(jù)時無差錯的傳輸,接收數(shù)據(jù)時按順序接收;數(shù)據(jù)報套接字是一種基于UDP協(xié)議的網(wǎng)絡連接,是無連接的網(wǎng)絡數(shù)據(jù)通行方式,在通信的過程中,數(shù)據(jù)包是以獨立的方式發(fā)送的,不提供錯誤保證。服務器軟件設計主要包含基于TCP(面向連接)的Socket編程和基于UDP(面向無連接)的socket編程[16-19]。

      基于TCP(面向連接)的Socket編程創(chuàng)建服務器的順序如下:

      ①加載所需要的套接字庫;②創(chuàng)建所需要的套接字;③將所需要的套接字綁定到一個IP和端口上;④將所需要套接字設為監(jiān)聽模式,準備接收客戶端的請求到來;⑤等待客戶端請求的到來;當請求帶來時,接收連接請求,返回一個新的,對應于和本次相同連接的套字,當請求沒有到來時,繼續(xù)監(jiān)聽模式,準備接收客戶端的請求到來;⑥用返回的套接字和客戶端進行通信,包括發(fā)送接收數(shù)據(jù);⑦返回套接字,等待另一個客戶端通信請求;⑧關閉所需要的套接字。

      基于TCP(面向連接)的Socket編程創(chuàng)建服務器的順序創(chuàng)建客戶端的順序如下:

      ①加載所需要的套接字庫;②創(chuàng)建所需要的套接字;③客戶端向服務器發(fā)送連接請求,請求連接服務器;④客戶端要和服務器端進行通信,包括數(shù)據(jù)的發(fā)送和接收;⑤關閉所需要的套接字。

      基于UDP(面向無連接)的socket編程創(chuàng)建服務器端順序如下:

      ①加載所需要的套接字庫;②創(chuàng)建所需要的套接字;③將所需要的套接字綁定到一個IP和端口上;④服務器等待接收客戶端的數(shù)據(jù);⑤關閉所需要的套接字。

      基于UDP(面向無連接)的socket編程創(chuàng)建客戶端的順序如下:

      ①加載所需要的套接字庫;②創(chuàng)建所需要的套接字;③客戶端向服務器發(fā)送數(shù)據(jù),包括數(shù)據(jù)的發(fā)送和接受;④關閉所需要的套接字。

      圖7所示為服務器軟件的系統(tǒng)框圖,服務器獲取到客戶端的輸入流,將輸入流中的數(shù)據(jù)放入輸出流中發(fā)送。

      圖7 服務器軟件系統(tǒng)框圖

      4 系統(tǒng)調試與測試分析

      4.1 系統(tǒng)調試

      設計中,數(shù)據(jù)傳輸主要包括三個部分:手機客戶端和服務器網(wǎng)絡建立連接后進行的數(shù)據(jù)傳輸;HF-LPB100模塊客戶端與服務器建立連接并進行數(shù)據(jù)傳輸;手機客戶端與服務器、HF-LPB100客戶端與服務器之間組網(wǎng)并進行數(shù)據(jù)傳輸。Android開發(fā)中主要用USB數(shù)據(jù)線在Eclipse中的lagcat中輸出日志來調試,HF-LPB100WiFi模塊數(shù)據(jù)傳輸中主要通過串口調試要顯示的數(shù)據(jù),在ARM的編程中,通過Jlink單步、全速、跳出、進入來調試。

      測試HF-LPB100模塊發(fā)送數(shù)據(jù)給服務器,前提是要和服務器建立連接,將要發(fā)送的數(shù)據(jù)放入BUFF中,發(fā)送給服務器,通過透傳的方式,在串口中打印BUFF中的數(shù)據(jù),只有發(fā)送的BUFF數(shù)據(jù)正確,才可以確定服務器接收的數(shù)據(jù)正確。測試HF-LPB100模塊接收來自服務器的數(shù)據(jù),通過在sockettool的發(fā)送區(qū)中寫入要發(fā)送的內容,點擊發(fā)送按鈕,將數(shù)據(jù)發(fā)送給HF-LPB100模塊,判斷接收數(shù)據(jù)是否正確。

      Android編程中測試是否和服務器建立連接,利用sockettool建立一個服務器,Android手機主動和服務器建立連接,建立連接后用USB數(shù)據(jù)線通過日志的形式在Eclipse中打印出來,同時在sockettool也可以看到客戶端的IP和端口號。Android手機測試發(fā)送和接收可以控制LED通斷,調節(jié)LED色度、亮度的控件,并添加監(jiān)聽器,通過點擊UI中的控件測試發(fā)送數(shù)據(jù)給服務器,通過服務器保存和轉發(fā)。

      服務器的測試可以直接打印在控制臺上進行查看數(shù)據(jù)。服務器發(fā)送接收數(shù)據(jù)測試完成后,添加線程,監(jiān)聽端口是否與客戶端與之建立連接,判斷是哪個客戶端后,對數(shù)據(jù)進行轉發(fā)保存。

      HF-LPB100模組客戶端與服務器可以建立連接并可以正確收發(fā)數(shù)據(jù),Android手機客戶端可以與服務器建立連接并可以正確收發(fā)數(shù)據(jù),服務器也可以正常收發(fā)數(shù)據(jù),三個部分單獨調試成功后,進行系統(tǒng)聯(lián)調,服務器先監(jiān)聽端口是否有客戶端連接,并識別是哪個客戶端,當時手機客戶端時,服務器會將LED的屬性發(fā)送給Android客戶端,Android客戶端接收到服務器發(fā)送來的數(shù)據(jù)后,在UI界面中告訴使用者,LED的開關狀態(tài)、色度、亮度,當使用者點擊了UI控件后,發(fā)送數(shù)據(jù)給服務器,服務器接收數(shù)據(jù)并保存,同時將數(shù)據(jù)轉發(fā)給HF-LPB100模塊客戶端,HF-LPB100模塊客戶端接收到數(shù)據(jù)后識別控制信號是控制開關,還是調節(jié)色度或亮度的,然后通過ARM中的GPIO控制LED的狀態(tài),PWM調節(jié)LED色度、亮度。

      4.2 數(shù)據(jù)測試與分析

      HF-LPB100模塊客戶端發(fā)送LED的屬性值,包括LED的色度,亮度和通斷給服務器,經(jīng)服務器保存并轉發(fā)后,發(fā)送給Android客戶端,Android客戶端將接收到的數(shù)據(jù)顯示在UI界面上,提供一個交互式的人機交互界面,智能LED系統(tǒng)設計了六組LED,其中包括:客廳、臥室、陽臺、廚房、衛(wèi)生間和餐廳,以客廳為例,測試數(shù)據(jù)如表1所示。

      表1 測試數(shù)據(jù)

      字符串中,open0代表打開LED,open1代表關閉LED,color_livingroom#17代表客廳LED的色度值為17,brightness_livingroom#90代表客廳LED的亮度值為90。通過觀察LED的狀態(tài),可以看出和設定值相一致,完成控制功能。選取其中一組數(shù)據(jù):亮-藍紅色-很亮,open0,color_livingroom#17,brightness_livingroom#90。退出服務器后,再次打開APP,連接網(wǎng)絡后,HF-LPB100模塊客戶端會發(fā)送數(shù)據(jù)給服務器,并轉發(fā)給Android客戶端,Android客戶端接收到的數(shù)據(jù)如表2所示。

      表2 Android客戶端接收初始狀態(tài)數(shù)據(jù)分析

      當APP再次打開后,接收到open0,color_livingroom#17,brightness_livingroom#90數(shù)據(jù),LED的顯示為亮-藍紅色-很亮,在UI界面上顯示正常。由此可以說明,服務器保存了上一次的設置,存儲功能正常。

      5 結束語

      本文設計了一個的智能LED照明控制系統(tǒng),采用Cortex-M3內核的ARM作為主控單片機,WiFi模塊采用支持串口透明傳輸模式的HF-LPB100模塊,選用RGB紅綠藍三種LED燈珠,通過單片機I/O口控制繼電器來實現(xiàn)LED的通斷,利用PWM可控制LED輸出不同的顏色和亮度。在Android環(huán)境下編寫一個APP,通過TCP/IP協(xié)議連接網(wǎng)絡,采用花生殼軟件中地址映射生成的域名和端口號訪問自己搭建的服務器,實現(xiàn)了通過觸摸按鍵控制智能LED的通斷,通過滑動條調節(jié)控制LED的色度和亮度。系統(tǒng)布置了客廳、臥室、陽臺、廚房、衛(wèi)生間和餐廳六個場景設計六組LED,在內網(wǎng)和外網(wǎng)中測試功能均正常,可應用于智能家居系統(tǒng)。

      猜你喜歡
      端口號色度亮度
      在Docker容器中安裝應用程序
      亮度調色多面手
      亮度一樣嗎?
      淺談以java為基礎的Socket通信簡介及實現(xiàn)
      青春歲月(2017年5期)2017-04-20 18:34:23
      基于改進色度模型的非接觸式心率檢測與估計
      基于斬波調制的LED亮度控制
      景德鎮(zhèn)早期青白瓷的器型與色度
      人生的亮度
      如何提高蘋果的著色度
      Winsock編程在《計算機網(wǎng)絡基礎》教學中的應用
      陇西县| 通渭县| 方山县| 清水县| 淮阳县| 长沙市| 武乡县| 德令哈市| 惠水县| 丰顺县| 轮台县| 绍兴县| 定襄县| 博兴县| 合水县| 饶平县| 太保市| 齐齐哈尔市| 康定县| 佛坪县| 北票市| 武穴市| 中方县| 开平市| 攀枝花市| 安多县| 城固县| 集贤县| 长汀县| 香格里拉县| 阿荣旗| 太仆寺旗| 晋州市| 改则县| 金川县| 南川市| 普宁市| 石嘴山市| 红原县| 清涧县| 称多县|