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

?

基于嵌入式系統(tǒng)ZigBee傳感器控制LED矩陣的設計與實現(xiàn)

2016-03-15 01:19王華本胡建明鹿建銀
長春師范大學學報 2016年2期
關(guān)鍵詞:ZigBee技術(shù)嵌入式系統(tǒng)

王華本,胡建明,鹿建銀

(安徽新華學院信息工程學院,安徽合肥 230088)

?

基于嵌入式系統(tǒng)ZigBee傳感器控制LED矩陣的設計與實現(xiàn)

王華本,胡建明,鹿建銀

(安徽新華學院信息工程學院,安徽合肥 230088)

[摘要]本文在嵌入式系統(tǒng)的平臺下,將ZigBee技術(shù)引入到LED矩陣的設計系統(tǒng)中,提出一種由 ZigBee傳感器構(gòu)成的LED顯示模式的具體實現(xiàn)方法。在CVT-6410實驗箱上研究了LED顯示模式、漢字字符轉(zhuǎn)換成點陣的設計原理,實現(xiàn)了控制LED矩陣顯示圖形、控制LED矩陣圖形變換和控制LED矩陣亮度變換,為LED顯示屏的進一步應用創(chuàng)造了條件。

[關(guān)鍵詞]ZigBee技術(shù);LED矩陣;嵌入式系統(tǒng);圖形變換

無線LED顯示屏的優(yōu)勢是改變了傳統(tǒng)的LED顯示屏需外來傳遞信息的顯示方式,使用ZigBee技術(shù)可以隨時隨地改變信息并在LED顯示屏上顯示所要的結(jié)果,使得LED顯示屏的使用范圍得到擴展。無線LED顯示屏采用無線遠程控制方式,可實現(xiàn)近距離控制,具有良好的發(fā)展前景。

1Linux的設備文件

Linux將外部設備看作一個文件來管理,用戶使用外部設備就像使用普通文件一樣。按照存取方式的不同,可以分為兩種[1]:字符設備、塊設備,按照是否對應物理實體,也可以分為兩種:物理設備、虛擬設備。設備文件存放在/dev目錄下,使用設備的主設備號和次設備號來區(qū)分指定的外部設備。主設備號說明設備類型,次設備號說明具體指哪一個設備。

應用程序通過open、read、write等命令完成對設備的訪問。當應用程序調(diào)用設備文件時,程序就會去找它對應的設備文件,在文件內(nèi)會對設備進行初始化。在設備文件中外部設備的硬件地址會被映射成一個虛擬地址,在LED矩陣的設備文件中使用的就是虛擬地址0xF600,在內(nèi)核的文件中有一個地址的映射表,它將物理地址0x38000000映射成虛擬地址0xF6000000,所以設備文件最終還是依托于物理硬件。這里涉及初始化函數(shù)、接口函數(shù)、退出函數(shù),同時字符設備還會提供一個對設備進行操作的函數(shù)static struct file_operations dev_fops,在函數(shù)中提供了一個mled_ioctl接口,根據(jù)這個mled_ioctl接口會對對應的物理地址進行操作,在設備文件中外部設備的硬件地址會被映射成一個虛擬地址,在LED矩陣的設備文件中使用的就是虛擬地址,在內(nèi)核的里面有一個地址的映射表,通過源文件里面關(guān)鍵的核心語句,實現(xiàn)地址的映射。

.virtual=0xF6000000,

.pfn=__phys_to_pfn(S3C64XX_PA_XM0CSN5),//片選5,0x38000000

.length=0x10000,

.type=MT_DEVICE,

2LED矩陣的工作原理

LED的電路結(jié)構(gòu)如圖1所示,從硬件圖中可以知道此時LED共陽極的8*8點陣,列連接的是發(fā)光二極管的陽極,行所連接的發(fā)光二極管的陰極,發(fā)光二極管核心的組成部分是PN結(jié),LED發(fā)光的原理是當PN結(jié)加正向電壓時,外接電源的正極接發(fā)光二極管的陽極,外接電源的負極接發(fā)光二極管的陰極,大量的電子將移向P區(qū),在P區(qū)里電子填入空穴中,然后就會以光子的形式發(fā)出能量[2]。

從圖1中可以看出,8*8共陽極的LED,不管顯示圖形還是文字,都是控制LED器件在對應發(fā)光二極管所組成的文字或圖形位置的地方發(fā)光,當圖形或文字對應的地方都發(fā)光,其它地方不發(fā)光就可以得到想要的顯示結(jié)果,在嵌入式系統(tǒng)下控制LED列、行的16進制代碼如圖2所示。

圖1 LED矩陣的硬件原理圖

圖2 控制LED列、行的16進制代碼

同時控制各個對應位置的LED發(fā)光的方法稱為靜態(tài)顯示。每個8*8的點陣共有64個發(fā)光二極管,但是如果采用鎖存器來擴展端口,對一個很大的LED矩陣來說靜態(tài)顯示就不合理了,因為沒有那么多的I/O口去控制。在這里使用的僅僅是8*8的點陣,而在實際使用中,幾乎都是大或超大的顯示屏,顯示采用動態(tài)掃描的方式取代靜態(tài)顯示[3]。LED以動態(tài)掃描的方式逐行或逐列輪流點亮,這種方法可以讓I/O口進行復用。

在嵌入式系統(tǒng)中,LED點陣顯示主要是通過調(diào)用接口函數(shù)來實現(xiàn)顯示的功能,在LED點陣顯示圖形和文字的時候,需要將應用中的LED單獨放置并根據(jù)需要點亮。這里的主函數(shù)主要是調(diào)用ioctl函數(shù),static long mled_ioctl(struct file *filp, unsigned int cmd, unsigned long arg),這個函數(shù)在matrix驅(qū)動程序時會詳細地定義ioctl函數(shù)的功能,ioctl 定義了3個參數(shù),分別表示文件描述符,命令字,LED對應的列、行的16進制代碼編碼。譬如ioctl(fd,1,0x1efd);//0001 1110 1111 1101,這里的0x1efd表示前列后行,從圖1硬件原理圖中可以知道,8*8點列的LED是共陽極的,列數(shù)據(jù)為高,行數(shù)據(jù)為低時對應發(fā)光二極管點亮。

圖形的變換是通過動態(tài)掃描方式將許多不同的靜態(tài)圖片有序地顯示出來,因為時間間隔較短,靜態(tài)圖片一點點改變,就形成了人眼所看到的動畫了。

LED矩陣亮度的變換可以通過改變電路電流大小和點亮時間的占空比(PWM),來改變LED點亮個數(shù)。所謂的占空比是指在動態(tài)掃描點亮LED燈時,單位時間內(nèi)亮與不亮的次數(shù)。為了避免出現(xiàn)閃爍效果,可以通過占空比來進行調(diào)節(jié)[5]。在單位時間內(nèi)掃描點亮的次數(shù)越多,人的肉眼感覺會越亮。

3ZigBee的原理與控制

3.1ZigBee的設備分類與結(jié)構(gòu)

ZigBee網(wǎng)絡中有協(xié)調(diào)器、路由器、終端3種類型的設備,協(xié)調(diào)器是組織網(wǎng)絡的管理者,ZigBee網(wǎng)絡組建好以后,通常由協(xié)調(diào)器負責組建網(wǎng)絡,并根據(jù)掃描所獲取的信息等待路由器或者終端節(jié)點加入該網(wǎng)絡,這里的發(fā)送和接收數(shù)據(jù)主要是由終端負責。協(xié)調(diào)器上接網(wǎng)關(guān),下接路由器或終端,在整個網(wǎng)絡中起到關(guān)鍵作用,主要負責解析控制命令,對終端進行有效的控制。

ZigBee的結(jié)構(gòu)主要包括物理層、網(wǎng)絡層、應用層。物理層的主要功能如下:激活或使射頻收發(fā)器進入休眠狀態(tài),檢測信道的能量,檢測收到數(shù)據(jù)包的鏈路質(zhì)量指示,評估空閑信道,發(fā)送和接收數(shù)據(jù)包[6]。網(wǎng)絡層主要完成的任務為發(fā)送和接收網(wǎng)絡層的數(shù)據(jù)包。

3.2ZigBee的命令格式

在程序中,通過拼裝ZigBee的報文格式,來讓ZigBee模塊發(fā)送想要的控制數(shù)據(jù)。SBuff[0]- SBuff[11]是ZigBee命令的固定格式,SBuff[12]- SBuff[19]是控制LED,SBuff[20]是異或檢校位從SBuff指針指向的內(nèi)存中讀取sizeof(buf)個字節(jié)放到文件serial_fd中。之所以用sizeof(buf),這樣動態(tài)判定buf的大小,不至于從文件中取長度大于buf長度的字節(jié)數(shù)。當有錯誤發(fā)生時則返回-1,錯誤代碼存入errno中,而文件讀寫位置則無法預期。通過變換12~19位字節(jié)的數(shù)據(jù),可控制LED矩陣顯示不同的效果。linux操作系統(tǒng)內(nèi)部所提供的3個定時器,可以更好地控制LED燈明暗變換和閃爍效果。

4編寫、編譯、調(diào)試及運行

由于整個開發(fā)過程涉及兩個平臺,這里在宿主機上進行代碼的編寫,ZigBee傳感器控制LED的函數(shù)功能表如圖3所示,因為編譯工具消耗的存儲空間不少,而且需要很強的CPU運算能力,在ARM上是不可能進行本機編譯的。交叉編譯工具能夠解決這個問題。首先打開硬件,通過文件描述符open函數(shù)打開所需要的硬件,涉及通信、進行波特率設置、奇偶校驗位設置、串口的初始化等一系列操作,這里通過Linux平臺下的gedit指令進行源程序的編寫,同時編寫Makefile文件,執(zhí)行make指令進行編譯,整個調(diào)試的過程就在執(zhí)行make指令后進行。調(diào)試通過后,就可以在宿主機上運行可執(zhí)行文件。這里宿主機和目標機進行通信時,必須要使用ifconfig指令進行IP地址的配置,宿主機和目標機的IP地址共用一個網(wǎng)關(guān)。在宿主機輸入以下命令配置宿主機地址及其啟動網(wǎng)絡服務:

ifconfig eth1 192.168.1.2 netmask 255.255.255.0

service nfs start

整個過程全部結(jié)束后,會出現(xiàn)4個OK的提示,下一步就要在目標機上進行操作,在目標機輸入以下命令進行掛載:

mount 192.168.1.8:/tftpboot/ mnt/ -o nolock

進入mnt文件夾 ls顯示文件列表可以看到有可執(zhí)行文件,說明掛載成功。

在這個ZigBee傳感器控制LED的函數(shù)功能表(圖3)中,writer_function是最關(guān)鍵的函數(shù)。

void writer_function(int signo)

{

int nwrite;

printf(“控制LED 矩陣 ”);

printf(“ ”);

unsigned char SBuff[21];

SBuff[0]=0x02;//幀頭

SBuff[1]=0x12;//包長度,Byte2~n的字節(jié)數(shù)。

SBuff[2]=0xB9;//0x46B9(cmd控制命令,低字節(jié)在前)

SBuff[3]=0x46;

SBuff[4]=0xF1;//cmd END Point 命令段節(jié)點號

SBuff[5]=save_byte4;//兩個字節(jié)短地址,低字節(jié)在前,網(wǎng)關(guān)上電時為0x0000

SBuff[6]=save_byte5;

SBuff[7]=0x01;//任務號,一般為1

SBuff[8]=0x07;//傳感板類型號

SBuff[9]=0x04;//位選0x02數(shù)碼管,0x01蜂鳴器,0x04LED矩陣

SBuff[10]=0x0;//數(shù)碼管段選

SBuff[11]=0x0;//蜂鳴器段選

SBuff[12]=0x0c;//12~19LED控制

SBuff[13]=0x1e;

SBuff[14]=0x3e;

SBuff[15]=0x7c;

SBuff[16]=0x7c;

SBuff[17]=0x3e;

SBuff[18]=0x1e;

SBuff[19]=0x0c;

SBuff[20]=0x0;//異或檢校位

SBuff[20]=XorVerifySend(SBuff);

nwrite=write(serial_fd,SBuff,sizeof(SBuff));

}

通過動態(tài)掃描的方式來顯示一個心形,如圖4所示。

圖3 ZigBee傳感器控制LED的函數(shù)功能表

圖4 ZigBee傳感器控制LED的顯示心形圖案

從圖4中可以看到,第一行狀態(tài)為0x0cfe(0000 1100);第二行狀態(tài)為0x1efd(0001 1110);第三行狀態(tài)為0x3efb(0011 1110);第四行狀態(tài)為0x7cf7(0111 1100);第五行狀態(tài)為0x7cef(0111 1100);第六行狀態(tài)為0x3edf(0011 1110);第七行狀態(tài)為0x1ebf(0001 1110);第八行狀態(tài)為0x0c7f(0000 1100)。

在數(shù)據(jù)拼裝時,把圖形信息拼裝進SBuff的12~19字節(jié)中。當ZigBee模塊收到數(shù)據(jù)包時,第12~19的字節(jié)就會把LED引腳狀態(tài)解讀出來,控制LED矩陣顯示出想要的圖案。如果要顯示其它圖案同理類推。若要顯示動態(tài)的效果,可以通過SBuff值的變化來實現(xiàn)功能。

5結(jié)語

傳統(tǒng)LED顯示屏存在很多局限性,特別是使用范圍受到限制,通常為10米左右,使用價值很難體現(xiàn)出來。ZigBee控制的LED通過無線傳感器網(wǎng)絡可以解決范圍受限制的問題,能夠體現(xiàn)無線LED顯示屏的使用價值。LED顯示屏是由LED矩陣塊組成,通過點亮發(fā)光二極管來實現(xiàn)顯示的目的,顯示的信息靜如油畫,動如電影,畫面的立體感很強,在嵌入式平臺下ZigBee傳感器控制的LED設計廣泛應用到各個領(lǐng)域,ZigBee網(wǎng)絡的路由器突破了有線LED顯示屏空間和地域的限制,解決了通信難題,LED顯示屏的使用價值將得到很大的提升。

[參考文獻]

[1]張顥.基于ZigBee無線傳感器網(wǎng)絡的室內(nèi)環(huán)境檢測系統(tǒng)[D].長沙:湖南大學,2013.

[2]廖之健.基于ZigBee無線傳感網(wǎng)絡遠程機房環(huán)境監(jiān)控系統(tǒng)的研究與實現(xiàn)[D].廣東:廣東工業(yè)大學,2011.

[3]鄒思軼.嵌入式Linux設計與應用[M].北京:清華大學出版社,2012:15-36.

[4]陳祥,薛美盛,王俊.基于ZigBee協(xié)議的溫室環(huán)境無線監(jiān)控系統(tǒng)[J].中國科學技術(shù)大學學報,2014(1):39-41.

[5]雷霖,董華莉.基于ZigBee協(xié)議的煤礦瓦斯和溫濕度監(jiān)測節(jié)點設計[J].電子科技大學自動化工程學院報,2011(3): 32-34.

[6]王浩然,秦會斌.LED點陣屏顯示單元的設計與驅(qū)動控制[M].上海:華東大學出版社,2010.

Design of the ZigBee Sensor to Control the LED Matrix Based on Embedded System

WANG Hua-ben, HU Jian-ming, LU Jian-yin

(College of Information Engineering, Anhui Xinhua University, Hefei Anhui 230088, China)

Abstract:In the platform of embedded system, the ZigBee technology is introduced into the design system of LED matrix, and a method for realizing LED display mode which is composed of ZigBee sensor is proposed. The design principle of the LED display mode, the Chinese character conversion into lattice is studied through the CVT-6410 experimental box. The control LED matrix display graphics, the LED matrix graphics transform and the control LED matrix luminance transformation are realized, and the conditions for the further application of LED display are realized.

Key words:ZigBee technology;LED matrix;embedded system;graphics transformation

[作者簡介]王華本(1972- ),女,講師,碩士,從事嵌入式與人工智能研究。

[基金項目]安徽高校省級自然科學研究重點項目“智慧旅游平臺——物聯(lián)網(wǎng)位置感知服務在旅游行業(yè)中的應用”(KJ2014A096);省級質(zhì)量工程項目“計算機科學與技術(shù)特色專業(yè)”(20101139);校級質(zhì)量工程項目“特色教材”《嵌入式系統(tǒng)》(2014tsjcx07)。

[收稿日期]2015-10-29

[中圖分類號]TP399

[文獻標識碼]A

[文章編號]2095-7602(2016)02-0026-04

猜你喜歡
ZigBee技術(shù)嵌入式系統(tǒng)
多傳感器數(shù)據(jù)融合技術(shù)在機房監(jiān)控系統(tǒng)中的應用
基于ZigBee的艙內(nèi)人員巡檢系統(tǒng)的應用研究
辦公自動化系統(tǒng)的設計
基于物聯(lián)網(wǎng)項目驅(qū)動的嵌入式系統(tǒng)教學改革的研究與實踐
嵌入式系統(tǒng)課程“中斷、異常與事件”教學實踐及啟示
面向?qū)嵺`創(chuàng)新人才培養(yǎng)的嵌入式系統(tǒng)教學研究
基于WiFi 技術(shù)的家居環(huán)境監(jiān)測系統(tǒng)的設計與研究
基于ZigBee的電能無線抄表系統(tǒng)的設計
青铜峡市| 宕昌县| 宁远县| 安化县| 苏尼特左旗| 宜阳县| 五常市| 亚东县| 衡东县| 黄大仙区| 长岛县| 同心县| 克山县| 巢湖市| 监利县| 丹凤县| 宁南县| 茌平县| 蓬莱市| 德惠市| 凌海市| 太谷县| 海兴县| 呈贡县| 诏安县| 囊谦县| 乐安县| 沁水县| 安福县| 榆林市| 金湖县| 金阳县| 丰城市| 镇康县| 安福县| 屯昌县| 缙云县| 祁东县| 象山县| 报价| 昌平区|