本書選用了11個基于ZigBee協(xié)議棧應(yīng)用開發(fā)的實例,按照“突出應(yīng)用,理論夠用”的原則,采取項目化教學的方式,以作品制作為載體,采用在作品制作過程中穿插講解基礎(chǔ)知識和基本技能的方法,由淺入深地講解了ZigBee無線網(wǎng)絡(luò)的開發(fā)方法,包括開發(fā)環(huán)境的搭建、協(xié)議棧中串口、定時器、NV存儲器的使用方法,單播、廣播、組播通信的實現(xiàn)方法,無線網(wǎng)絡(luò)的管理方法,無線傳感網(wǎng)絡(luò)的組建方法以及C程序設(shè)計的技巧! ”緯⒆阌趹(yīng)用實踐,摒棄了對復雜而深奧的通信協(xié)議理論知識的講解,適用于高等職業(yè)院校物聯(lián)網(wǎng)、電子信息、移動通信、網(wǎng)絡(luò)及計算機等專業(yè)作為無線組網(wǎng)技術(shù)課程的教材,也可作為應(yīng)用型本科和物聯(lián)網(wǎng)培訓班的教材以及從事無線網(wǎng)絡(luò)組建的工程技術(shù)人員學習和參考。
前 言
自物聯(lián)網(wǎng)被列入國家新興戰(zhàn)略產(chǎn)業(yè)以來,物聯(lián)網(wǎng)在我國受到了極大的關(guān)注,應(yīng)時代發(fā)展的要求,許多高校相繼開設(shè)了物聯(lián)網(wǎng)專業(yè)。然而物聯(lián)網(wǎng)是一個新興專業(yè),涉及計算機、通信、電子等多個學科領(lǐng)域,其固有的綜合性、復雜性、多樣性,對教學(師資力量、實踐條件、教學環(huán)境等)帶來了直接而現(xiàn)實的挑戰(zhàn),廣大應(yīng)用型本科和高職院校急需一套既涵蓋物聯(lián)網(wǎng)的基本知識又突出實踐應(yīng)用的教材。鑒于這種現(xiàn)狀以及培養(yǎng)高素質(zhì)技術(shù)型專門人才的現(xiàn)實需要,我們在浙江省優(yōu)勢專業(yè)的建設(shè)過程中,與上海、杭州、無錫等地企業(yè)開展了廣泛而深入的合作,認真分析了物聯(lián)網(wǎng)專業(yè)的崗位能力要求,與杭州哲嘉科技有限公司聯(lián)合編寫了本書。本書具有以下特點:
1. 按項目構(gòu)建課程內(nèi)容,用實例組織單元教學
本書分為11個項目,包括搭建開發(fā)環(huán)境、在協(xié)議棧中控制LED閃爍、用事件驅(qū)動處理串口接收數(shù)據(jù)、用回調(diào)函數(shù)處理串口接收數(shù)據(jù)、用計算機控制終端節(jié)點上的LED、分組傳輸數(shù)據(jù)、用NV存儲器保存數(shù)據(jù)、顯示節(jié)點的地址、制作防盜監(jiān)測器、制作光照信息采集器、制作溫濕度采集器,用11個項目講解了ZigBee無線網(wǎng)絡(luò)的開發(fā)過程、設(shè)計方法和基本技能。全書按項目編排,組建ZigBee無線網(wǎng)絡(luò)所需要的基本知識和基本技能穿插在各個任務(wù)的完成過程中進行講解,每一個任務(wù)只講解完成本任務(wù)所需要的基本知識、基本方法和基本技能,從而將知識化整為零,降低了學習的難度。
2. 融“教、學、做”于一體,突出了教材的實踐性
書中的每一個項目都是按照以下方式組織編排的:①任務(wù)要求,②相關(guān)知識,③實現(xiàn)方法與步驟,④程序分析,⑤實踐拓展,⑥實踐總結(jié)。其中,“任務(wù)要求”主要介紹做什么和做到什么程度,是讀者實踐時的目標要求,后續(xù)部分都是圍繞著任務(wù)的實現(xiàn)而展開的!跋嚓P(guān)知識”部分主要介紹ZigBee無線網(wǎng)絡(luò)中的一些基本概念、ZStack中所提供的有關(guān)函數(shù)及其用法、傳感器的應(yīng)用特性及其用法,這一部分供讀者在完成任務(wù)前閱讀之用,也是本任務(wù)完成后所要掌握的基本知識!皩崿F(xiàn)方法與步驟”主要介紹怎么做,這一部分詳細地講解了本項目的實施過程,包括電路的搭建、程序的編寫、程序的編譯下載等幾部分,讀者按照書中所介紹的方法和步驟逐步實施,就可以實現(xiàn)任務(wù)要求,這一部分是讀者實踐時必須親手做的事情。“程序分析”部分主要介紹了為什么要這樣做,這一部分詳細地講解了程序設(shè)計的思路、原則和方法!皩嵺`拓展”和“實踐總結(jié)”主要是進行知識和技能的梳理與總結(jié),并適當進行拓展。
3. 校企聯(lián)合打造,內(nèi)容反映了企業(yè)的需求,突出了教材的實用性和實效性
一方面,杭州哲嘉科技有限公司的方勇軍博士直接參與了本書的規(guī)劃和內(nèi)容的制訂。另一方面,本書的作者是ZigBee網(wǎng)絡(luò)組建技術(shù)課程的任課教師,曾為企業(yè)開發(fā)過智能家居系統(tǒng)、智能商鋪系統(tǒng)等多個物聯(lián)網(wǎng)應(yīng)用項目。本書的內(nèi)容來源于實際產(chǎn)品,反映了工程上的實際需求。
4. 提供了配套的實訓平臺,避免了教材與實訓系統(tǒng)的相互脫節(jié)
ZigBee網(wǎng)絡(luò)組建技術(shù)是一門實踐性非常強的課程,除了要進行課堂學習之外,還需要強有力的實踐性環(huán)節(jié)與之配合。因此,我們研制并推出了MFIoT實訓平臺及相關(guān)的實訓模塊,包括ZigBee網(wǎng)絡(luò)模塊、CC-Debug仿真器、相關(guān)傳感器模塊以及智能網(wǎng)關(guān)、云平臺等。其中,ZigBee網(wǎng)絡(luò)模塊、CC-Debug仿真器和傳感器模塊與本書配套,避免了以往出現(xiàn)的教材與實訓系統(tǒng)相互脫節(jié)的情況,真正做到課堂內(nèi)外相互統(tǒng)一。如果使用本書的院校在準備器件時有困難,可以與作者聯(lián)系(E-mail:lizhuqing_123@163.com),也可以到淘寶店(https://shop 359792577.taobao.com/)購買。
5. 提供了豐富的教學資源,方便教師備課和讀者學習
本書提供了6種教學資源:11個項目的源程序文件;ZigBee網(wǎng)絡(luò)模塊的電路圖;書中所有芯片和傳感器的PDF文檔;書中所有習題的解答;ZigBee網(wǎng)絡(luò)開發(fā)中的常用工具軟件;近2年全國物聯(lián)網(wǎng)大賽試題。其中,各任務(wù)的源程序供讀者學習前觀察任務(wù)的實現(xiàn)效果之用,也作學習借鑒之用,各芯片和傳感器的PDF文檔供讀者學習查閱之用,常用的工具軟件可以節(jié)省讀者收集開發(fā)工具的時間。所有資源可直接從電子工業(yè)出版社教材服務(wù)網(wǎng)站上(www.hxedu.com.cn)下載,也可以與作者聯(lián)系。
在使用本書時,建議采用“教、學、做”一體化的方式組織教學,最好是在具有實物投影的實訓室內(nèi)組織教學。教學時,建議先將書中提供的程序下載至ZigBee模塊運行中,讓學生觀看實際效果并體會任務(wù)要求的真實含義,激發(fā)學生的學習興趣。然后引導學生邊做邊學,直至任務(wù)的完成,讓學生在做中體會和總結(jié)ZigBee網(wǎng)絡(luò)的開發(fā)技術(shù)。本書的項目1是開發(fā)環(huán)境的搭建項目,這一部分是后續(xù)項目實施的基礎(chǔ),項目2至項目8是ZStack的基本應(yīng)用項目,包括協(xié)議棧中單片機的功能部件的使用、協(xié)議棧的配置修改、用協(xié)議棧組建網(wǎng)絡(luò)、網(wǎng)絡(luò)的管理、數(shù)據(jù)通信的實現(xiàn)等,項目9至項目11是無線傳感網(wǎng)絡(luò)項目。另外,本書涉及大量代碼,因此,為了使正文中的描述與代碼等一致,全書物理量統(tǒng)一為正體。
本書是浙江工貿(mào)職業(yè)技術(shù)學院省級優(yōu)勢專業(yè)的建設(shè)成果之一。在本書成稿的過程中,曾得到了許多同仁和朋友的幫助和支持。杭州哲嘉科技有限公司的方勇軍博士參與了本書的規(guī)劃和內(nèi)容的制訂,浙江工貿(mào)職業(yè)技術(shù)學院的孫平教授對本書的編寫進行了深入指導,長江大學的徐愛鈞教授、湖北第二師范學院的焦啟民教授、深圳職業(yè)技術(shù)學院的王曉春教授、廣東科技職業(yè)技術(shù)學院的余愛民教授、武漢鐵道職業(yè)技術(shù)學院的鄭毛祥教授、嘉興職業(yè)技術(shù)學院的桑世慶副教授、浙江工貿(mào)職業(yè)技術(shù)學院的金慧峰副教授、長江職業(yè)技術(shù)學院的鄧柳副教授等多位老師對本書的編寫提出了許多積極寶貴的意見,并給予極大的關(guān)心和支持。感謝電子工業(yè)出版社的編輯為本書出版所做的辛勤工作,沒有他們就沒有這本書的出版,謹此表示感謝﹗
盡管我們在本書的編寫方面做了許多努力,但由于作者的水平有限,加之時間緊迫,錯誤不當之處在所難免,懇請各位讀者批評指正,并將意見和建議及時反饋給我們,以便下次修訂時改進。
編 者
2017年6月
李文華,男,教授,就職于浙江工貿(mào)職業(yè)技術(shù)學院,中國電子學會高級會員,長期致力于電子信息、物聯(lián)網(wǎng)技術(shù)的相關(guān)教學
目 錄
項目1 搭建開發(fā)環(huán)境 1
任務(wù)要求 1
實現(xiàn)方法與步驟 1
1. 準備開發(fā)工具 1
2. 安裝開發(fā)工具包 3
3. 安裝仿真器 8
4. 新建工程 11
5. 配置工程 15
6. 編譯、連接程序 17
7. 調(diào)試程序 18
8. 燒錄程序 21
實踐總結(jié) 25
習題 25
項目2 在協(xié)議棧中控制LED閃爍 26
任務(wù)要求 26
相關(guān)知識 26
1. 協(xié)議與協(xié)議棧 26
2. ZigBee網(wǎng)絡(luò)中的設(shè)備 26
3. 系統(tǒng)事件與用戶事件 27
4. osal_msg_receive()函數(shù) 29
5. osal_msg_deallocate()函數(shù) 29
6. osal_start_timerEx()函數(shù) 29
7. HalLedSet()函數(shù) 30
8. HalLedBlink()函數(shù) 31
實現(xiàn)方法與步驟 31
1. 準備程序文件 31
2. 編寫協(xié)調(diào)器程序 34
3. 編制頭文件Coordinator.h 38
4. 修改OSAL_SampleApp.c文件 39
5. 移除App組中的多余文件 39
6. 編譯下載程序 40
程序分析 42
1. App組中的文件 42
2. Coordinator.c文件中的代碼分析 44
3. Coordinator.h文件中的代碼分析 52
實踐拓展 53
1. 在無協(xié)調(diào)器的條件下運行程序 53
2. 在有協(xié)調(diào)器的條件下運行程序 55
實踐總結(jié) 56
習題 56
項目3 用事件驅(qū)動處理串口接收數(shù)據(jù) 58
任務(wù)要求 58
相關(guān)知識 58
1. HalUARTOpen()函數(shù) 58
2. HalUARTRead()函數(shù) 60
3. HalUARTWrite()函數(shù) 60
4. osal_set_event()函數(shù) 61
5. 端口的概念 61
實現(xiàn)方法與步驟 62
1. 編制協(xié)調(diào)器的程序文件Coordinator.c 62
2. 編制程序接口文件Coordinator.h 64
3. 修改OSAL_SampleApp.c文件 65
4. 程序編譯與下載運行 67
程序分析 71
1. Coordinator.c文件中的代碼分析 71
2. OSAL_SampleApp.c文件中的代碼分析 74
3. OSAL工作原理分析 76
實踐拓展 81
用新任務(wù)處理串口數(shù)據(jù) 81
實踐總結(jié) 84
習題 85
項目4 用回調(diào)函數(shù)處理串口接收數(shù)據(jù) 86
任務(wù)要求 86
相關(guān)知識 86
1. 回調(diào)函數(shù) 86
2. osal_memcmp()函數(shù) 87
3. osal_strlen()函數(shù) 87
4. osal_memset()函數(shù) 88
實現(xiàn)方法與步驟 88
編制協(xié)調(diào)器的程序文件 88
程序分析 91
1. Coordinator.c文件中的代碼分析 91
2. 串口回調(diào)函數(shù)的工作原理分析 94
實踐拓展 99
查看ZStack中串口的配置代碼 99
實踐總結(jié) 103
習題 103
項目5 用計算機控制終端節(jié)點上的LED 105
任務(wù)要求 105
相關(guān)知識 105
1. 數(shù)據(jù)包與消息 105
2. 數(shù)據(jù)通信的3種方式 107
3. 設(shè)備的地址 108
4. AF_DataRequest()函數(shù) 108
實現(xiàn)方法與步驟 111
1. 編制協(xié)調(diào)器的程序文件 111
2. 編制終端節(jié)點的程序文件 116
3. 程序編譯與下載運行 119
程序分析 123
1. Coordinator.c文件中的代碼分析 123
2. EndDevice.c文件中的代碼分析 124
實踐拓展 125
修改ZStack中LED的配置 125
實踐總結(jié) 128
習題 129
項目6 分組傳輸數(shù)據(jù) 131
任務(wù)要求 131
相關(guān)知識 131
1. 信道 131
2. PAN ID 132
3. 組播通信的相關(guān)函數(shù) 133
4. 組播通信的實現(xiàn)方法 134
實現(xiàn)方法與步驟 136
1. 編程思路 136
2. 編制節(jié)點的程序文件 138
3. 設(shè)置PANID和信道 144
4. 程序編譯與下載運行 145
程序分析 147
實踐總結(jié) 149
習題 150
項目7 用NV存儲器保存數(shù)據(jù) 151
任務(wù)要求 151
相關(guān)知識 151
1. NV存儲器 151
2. osal_nv_item_init()函數(shù) 152
3. osal_nv_read()函數(shù) 153
4. osal_nv_write()函數(shù) 153
實現(xiàn)方法與步驟 154
1. 定義用戶條目 154
2. 編制協(xié)調(diào)器的程序文件 154
程序分析 159
實踐拓展 160
讀取節(jié)點的MAC地址 160
實踐總結(jié) 162
習題 163
項目8 顯示節(jié)點的地址 164
任務(wù)要求 164
相關(guān)知識 164
1. 協(xié)議棧中地址的分配機制 164
2. 獲取地址的相關(guān)函數(shù) 166
實現(xiàn)方法與步驟 167
1. 編制節(jié)點的程序文件 168
2. 編制數(shù)值轉(zhuǎn)換的程序文件 171
3. 新建User組 173
4. 程序的編譯與下載運行 175
程序分析 177
實踐拓展 178
繪制網(wǎng)絡(luò)拓撲圖 178
實踐總結(jié) 180
習題 180
項目9 制作防盜監(jiān)測器 181
任務(wù)要求 181
相關(guān)知識 181
1. 熱釋電紅外傳感器的應(yīng)用特性 181
2. 在協(xié)議棧中添加傳感器驅(qū)動程序的方法 184
實現(xiàn)方法與步驟 185
1. 編制傳感器驅(qū)動程序文件 185
2. 編制協(xié)調(diào)器的程序文件 187
3. 編制終端節(jié)點的程序文件 190
4. 程序編譯與下載運行 193
程序分析 194
實踐總結(jié) 196
習題 196
項目10 制作光照信息采集器 198
任務(wù)要求 198
相關(guān)知識 198
1. 光敏電阻的特性 198
2. ZStack中的ADC函數(shù) 199
3. ZStack中ADC的使用方法 201
實現(xiàn)方法與步驟 202
1. 編制節(jié)點的程序文件 202
2. 程序編譯與下載運行 205
程序分析 206
實踐總結(jié) 207
習題 208
項目11 制作溫濕度采集器 209
任務(wù)要求 209
相關(guān)知識 209
1. MicroWait宏 209
2. DHT11的工作特性 209
3. DHT11的訪問操作 210
實現(xiàn)方法與步驟 215
1. 搭建DHT11的控制電路 215
2. 編制DHT11的驅(qū)動程序文件 215
3. 編制節(jié)點的程序文件 217
4. 程序編譯與下載運行 223
程序分析 224
實踐總結(jié) 226
習題 226
附錄A ZigBee模塊原理圖 228
附錄B 2016年全國物聯(lián)網(wǎng)大賽試題(ZigBee部分) 230
試題1 任務(wù)三 物聯(lián)網(wǎng)感知層開發(fā)調(diào)試 230
一、任務(wù)要求 230
二、任務(wù)環(huán)境 230
三、任務(wù)說明 230
試題2 任務(wù)三 物聯(lián)網(wǎng)感知層開發(fā)調(diào)試 233
一、任務(wù)要求 233
二、任務(wù)環(huán)境 234
三、任務(wù)說明 234