OpenHarmony輕量設備開發(fā)理論與實戰(zhàn)
定 價:149 元
- 作者:齊耀龍
- 出版時間:2023/6/1
- ISBN:9787121456770
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TN929.53
- 頁碼:576
- 紙張:
- 版次:01
- 開本:16開
本書系統(tǒng)地介紹了OpenHarmony輕量設備開發(fā)的必備知識。在本書完稿時,相關(guān)課程已經(jīng)在高校完成了三個學期的教學,并持續(xù)優(yōu)化迭代。本書的學習門檻低、內(nèi)容深入淺出、知識結(jié)構(gòu)合理。本書注重知識間的關(guān)聯(lián)性、連貫性和階梯性,將計算機理論知識和OpenHarmony實踐緊密結(jié)合,更加注重實踐內(nèi)容對理論理解的反哺,同步培養(yǎng)知識和能力,“授人以魚,并且授人以漁”。本書的內(nèi)容支持目前所有在用的OpenHarmony版本,并且有能力支持未來的新版本,注重教/學效率,創(chuàng)立了“OpenHarmony輕量設備教/學全家桶”。全書共分10章,包括OpenHarmony及其開發(fā)套件、搭建OpenHarmony開發(fā)環(huán)境、OpenHarmony開發(fā)入門、OpenHarmony內(nèi)核編程接口、控制I/O設備、感知環(huán)境狀態(tài)、OLED顯示屏的驅(qū)動和控制、控制Wi-Fi、網(wǎng)絡編程及MQTT編程。本書適合高等院校作為建設OpenHarmony課程的指定教材,可以完善相關(guān)專業(yè)人才培養(yǎng)體系,也非常適合個人或企業(yè)開發(fā)者閱讀學習。
齊耀龍河北大學計算機教學部副教授,河北大學校企合作(全球500強企業(yè))項目孵化基地負責人,具有豐富的教育和IT行業(yè)經(jīng)驗。致力于很多領(lǐng)域(包括物聯(lián)網(wǎng)、嵌入式智能設備、OpenHarmony等)的理論與技術(shù)研究、產(chǎn)品研發(fā)、教學與人才培養(yǎng)工作。出版過《大學計算機》《大學計算機實驗教程》等十余本高校教材。擔任“OpenHarmony南向開發(fā)基礎”“OpenHarmony北向開發(fā)基礎”等多門課程的負責人,擁有20余年一線教學經(jīng)驗、數(shù)百小時慕課等的教學視頻制作經(jīng)驗。首期OpenHarmony開源開發(fā)者成長計劃唯一的高校導師,國內(nèi)較早系統(tǒng)性構(gòu)建OpenHarmony課程的高校教師,參與了OpenHarmony知識體系的構(gòu)建工作。 江蘇潤開鴻數(shù)字科技有限公司江蘇潤開鴻數(shù)字科技有限公司(簡稱“潤開鴻”)于2022 年成立于南京,是由江蘇潤和軟件股份有限公司(簡稱“潤和軟件”)投資成立的全資子公司。潤開鴻聚焦于OpenHarmony 國產(chǎn)化數(shù)字底座,面向以垂直行業(yè)為代表的千行百業(yè)提供深度融合行業(yè)特征與業(yè)務場景的終端商用設備操作系統(tǒng)發(fā)行版及解決方案。潤開鴻傳承了潤和軟件深耕行業(yè)多年的客戶資源與專家團隊,依托從芯片、硬件、操作系統(tǒng)到應用軟件的軟硬件一體化產(chǎn)品與解決方案能力,深耕金融、能源兩大賽道,同時廣泛賦能醫(yī)療、智慧城市、工業(yè)、教育等多個垂直行業(yè),聯(lián)合生態(tài)伙伴和行業(yè)客戶共建共享萬物智聯(lián)的數(shù)字世界。
目 錄
第1章 OpenHarmony及其開發(fā)套件 | 1
1.1 初識OpenHarmony | 2
1.1.1 OpenHarmony是什么 | 2
1.1.2 OpenHarmony的重要性 | 3
1.1.3 OpenHarmony南向開發(fā)與北向開發(fā) | 4
1.1.4 OpenHarmony的版本 | 5
1.1.5 OpenHarmony官網(wǎng) | 7
1.1.6 OpenHarmony官網(wǎng)文檔獲取 | 8
1.1.7 本書內(nèi)容概述 | 8
1.1.8 學習本書需要的基礎知識 | 9
1.2 潤和Pegasus智能家居開發(fā)套件簡介 | 10
1.2.1 海思Hi3861V100芯片簡介 | 11
1.2.2 核心板 | 12
1.2.3 底板 | 14
1.2.4 交通燈板 | 15
1.2.5 炫彩燈板 | 16
1.2.6 環(huán)境監(jiān)測板 | 17
1.2.7 OLED顯示屏板 | 18
1.2.8 NFC擴展板 | 19
1.2.9 開發(fā)套件的組裝 | 20
1.2.10 輕量系統(tǒng)開發(fā)快速入門 | 23
第2章 搭建OpenHarmony開發(fā)環(huán)境 | 26
2.1 搭建開發(fā)環(huán)境(Windows系統(tǒng)) | 26
2.1.1 安裝虛擬機工具 | 26
2.1.2 安裝CH340芯片驅(qū)動 | 31
2.1.3 安裝串口調(diào)試工具 | 31
2.1.4 安裝開發(fā)工具 | 35
2.1.5 安裝燒錄工具 | 37
2.1.6 首次燒錄運行 | 39
2.2 搭建編譯環(huán)境(Ubuntu系統(tǒng)) | 43
2.2.1 安裝Ubuntu系統(tǒng) | 43
2.2.2 配置編譯環(huán)境 | 56
2.2.3 使用預搭建的編譯環(huán)境 | 63
2.3 下載和編譯OpenHarmony源碼 | 67
2.3.1 獲取OpenHarmony源碼 | 67
2.3.2 源碼目錄簡介 | 73
2.3.3 編譯源碼 | 73
2.3.4 燒錄固件 | 75
2.3.5 在智能家居開發(fā)套件上運行 | 78
2.3.6 OpenHarmony的系統(tǒng)架構(gòu) | 79
2.4 構(gòu)建開發(fā)網(wǎng)絡 | 81
2.4.1 物聯(lián)網(wǎng) | 81
2.4.2 構(gòu)建適用于個人和團隊的開發(fā)網(wǎng)絡 | 82
2.4.3 構(gòu)建適用于學校機房的開發(fā)網(wǎng)絡 | 83
2.4.4 AT命令介紹 | 90
2.4.5 使用AT命令建立網(wǎng)絡連接 | 91
2.4.6 使用MobaXterm腳本快速聯(lián)網(wǎng) | 93
第3章 OpenHarmony開發(fā)入門 | 95
3.1 HelloWorld | 95
3.1.1 編寫程序源碼 | 95
3.1.2 編譯源碼 | 98
3.1.3 燒錄固件 | 98
3.1.4 通過串口調(diào)試工具查看程序的運行結(jié)果 | 98
3.1.5 OpenHarmony系統(tǒng)啟動的8個階段 | 99
3.1.6 VS Code的IntelliSense設置 | 100
3.1.7 VS Code解析.gn文件 | 102
3.1.8 屏蔽OpenHarmony內(nèi)置的XTS | 103
3.1.9 快速查找文件和代碼 | 104
3.1.10 快速重復燒錄和測試最佳實踐方案 | 105
3.2 輕量系統(tǒng)的編譯構(gòu)建 | 107
3.2.1 OpenHarmony的編譯構(gòu)建系統(tǒng) | 107
3.2.2 編譯構(gòu)建系統(tǒng)的配置規(guī)則 | 111
3.3 編譯構(gòu)建系統(tǒng)的使用 | 122
3.3.1 案例:新增組件 | 122
3.3.2 案例:新增產(chǎn)品解決方案 | 125
3.3.3 案例:組件/模塊開發(fā) | 129
3.4 輕量系統(tǒng)的數(shù)據(jù)持久化 | 135
3.4.1 數(shù)據(jù)持久化概述 | 135
3.4.2 鍵值存儲 | 136
3.4.3 鍵值存儲案例程序 | 139
3.4.4 文件操作 | 142
3.4.5 文件操作案例程序 | 142
第4章 OpenHarmony內(nèi)核編程接口 | 146
4.1 OpenHarmony內(nèi)核簡介 | 146
4.1.1 內(nèi)核子系統(tǒng) | 146
4.1.2 輕量系統(tǒng)內(nèi)核簡介 | 148
4.1.3 小型系統(tǒng)內(nèi)核簡介 | 150
4.1.4 標準系統(tǒng)內(nèi)核簡介 | 152
4.1.5 CMSIS簡介 | 153
4.1.6 CMSIS-RTOS2 | 154
4.2 線程管理 | 155
4.2.1 線程 | 156
4.2.2 API介紹 | 156
4.2.3 內(nèi)核編程的VS Code IntelliSense設置 | 158
4.2.4 案例程序1 | 159
4.2.5 案例程序2 | 162
4.3 通用等待功能 | 166
4.3.1 時間管理 | 167
4.3.2 API介紹 | 169
4.3.3 案例程序 | 172
4.4 定時器管理 | 176
4.4.1 軟定時器 | 176
4.4.2 API介紹 | 177
4.4.3 案例程序 | 179
4.5 互斥鎖管理 | 183
4.5.1 互斥鎖 | 183
4.5.2 API介紹 | 190
4.5.3 案例程序 | 192
4.6 信號量管理 | 196
4.6.1 信號量 | 197
4.6.2 API介紹 | 200
4.6.3 案例程序 | 202
4.7 消息隊列管理 | 210
4.7.1 消息隊列 | 211
4.7.2 API介紹 | 213
4.7.3 案例程序 | 214
第5章 控制I/O設備 | 220
5.1 GPIO輸出電平 | 220
5.1.1 GPIO | 220
5.1.2 輕量設備的IoT接口現(xiàn)狀 | 221
5.1.3 相關(guān)API介紹 | 223
5.1.4 核心板的可編程LED燈介紹 | 225
5.1.5 IoT編程的VS Code IntelliSense設置 | 225
5.1.6 案例程序 | 226
5.1.7 給未知函數(shù)或庫增加IntelliSense | 228
5.2 GPIO按鍵輸入 | 229
5.2.1 輪詢與中斷 | 229
5.2.2 相關(guān)API介紹 | 230
5.2.3 核心板的按鍵介紹 | 231
5.2.4 案例程序:輪詢方式 | 231
5.2.5 案例程序:中斷方式 | 235
5.2.6 案例程序:中斷方式低能耗 | 238
5.3 PWM輸出方波 | 241
5.3.1 PWM | 241
5.3.2 相關(guān)API介紹 | 246
5.3.3 交通燈板的蜂鳴器介紹 | 247
5.3.4 案例程序:控制蜂鳴器發(fā)聲 | 247
5.3.5 案例程序:控制蜂鳴器播放音樂 | 250
5.3.6 案例程序:控制蜂鳴器的音量 | 258
5.3.7 交通燈板的三色燈介紹 | 261
5.3.8 案例程序:交通燈演示 | 261
5.3.9 炫彩燈板的三色燈介紹 | 267
5.3.10 案例程序:控制三色燈的亮度 | 269
第6章 感知環(huán)境狀態(tài) | 275
6.1 使用ADC獲取模擬傳感器的數(shù)據(jù) | 275
6.1.1 ADC | 275
6.1.2 相關(guān)API介紹 | 278
6.1.3 炫彩燈板的光敏電阻介紹 | 278
6.1.4 案例程序:通過光敏電阻感知環(huán)境光 | 279
6.1.5 炫彩燈板的人體紅外傳感器介紹 | 282
6.1.6 案例程序:通過人體紅外傳感器感知人體靠近 | 283
6.1.7 案例程序:智能夜燈 | 285
6.1.8 OLED顯示屏板的按鍵介紹 | 291
6.1.9 案例程序:使用ADC值區(qū)分同一個引腳的不同按鍵 | 291
6.2 使用ADC獲取可燃氣體傳感器的數(shù)據(jù) | 298
6.2.1 可燃氣體傳感器 | 298
6.2.2 環(huán)境監(jiān)測板的MQ-2可燃氣體傳感器介紹 | 298
6.2.3 案例程序:使用可燃氣體傳感器感知空氣狀態(tài) | 299
6.2.4 案例程序:可燃氣體報警器 | 302
6.3 使用I2C獲取數(shù)字溫濕度傳感器的數(shù)據(jù) | 306
6.3.1 I2C | 306
6.3.2 相關(guān)API介紹 | 309
6.3.3 環(huán)境監(jiān)測板的AHT20數(shù)字溫濕度傳感器介紹 | 310
6.3.4 案例程序:實現(xiàn)AHT20數(shù)字溫濕度傳感器的驅(qū)動程序 | 311
6.3.5 案例程序:獲取AHT20數(shù)字溫濕度傳感器的狀態(tài) | 326
第7章 OLED顯示屏的驅(qū)動和控制 | 330
7.1 I2C驅(qū)動OLED顯示屏 | 330
7.1.1 OLED簡介 | 330
7.1.2 OLED顯示屏板介紹 | 330
7.1.3 OLED的初始化 | 331
7.1.4 在OLED顯示屏上繪制畫面 | 334
7.1.5 案例程序:實現(xiàn)OLED顯示屏簡化版驅(qū)動程序 | 339
7.1.6 在OLED顯示屏上繪制ASCII字符 | 346
7.1.7 案例程序:在OLED顯示屏上顯示西文字符 | 349
7.2 在OLED顯示屏上顯示漢字 | 363
7.2.1 中文字體 | 363
7.2.2 定義中文字庫 | 363
7.2.3 顯示漢字 | 366
7.2.4 案例程序 | 366
7.3 第三方OLED顯示屏驅(qū)動庫 | 373
7.3.1 驅(qū)動庫簡介 | 373
7.3.2 驅(qū)動庫的源碼結(jié)構(gòu) | 373
7.3.3 驅(qū)動庫API介紹 | 374
7.3.4 增強驅(qū)動庫功能 | 374
7.3.5 驅(qū)動庫的接入方法 | 375
7.3.6 案例程序 | 377
7.4 二維碼生成器模塊 | 387
7.4.1 模塊簡介 | 387
7.4.2 模塊的源碼結(jié)構(gòu) | 387
7.4.3 模塊API介紹 | 388
7.4.4 模塊的接入方法 | 389
7.4.5 案例程序 | 391
第8章 控制Wi-Fi | 396
8.1 Wi-Fi的基本概念 | 396
8.1.1 Wi-Fi簡介 | 396
8.1.2 Wi-Fi的連接過程 | 399
8.1.3 Wi-Fi工作模式簡介 | 400
8.2 Wi-Fi STA模式編程 | 401
8.2.1 Wi-Fi編程的VS Code IntelliSense設置 | 401
8.2.2 相關(guān)API介紹 | 402
8.2.3 掃描Wi-Fi熱點 | 404
8.2.4 案例程序:掃描Wi-Fi熱點 | 404
8.2.5 連接Wi-Fi熱點 | 411
8.2.6 案例程序:連接Wi-Fi熱點 | 411
8.3 Wi-Fi AP模式編程 | 419
8.3.1 相關(guān)API介紹 | 419
8.3.2 創(chuàng)建Wi-Fi熱點 | 420
8.3.3 提供DHCP服務 | 421
8.3.4 案例程序:創(chuàng)建Wi-Fi熱點 | 421
8.4 EasyWiFi模塊 | 430
8.4.1 EasyWiFi模塊簡介 | 430
8.4.2 EasyWiFi模塊的源碼結(jié)構(gòu) | 430
8.4.3 EasyWiFi模塊的API介紹 | 430
8.4.4 模塊的接入方法 | 431
8.4.5 案例程序 | 433
第9章 網(wǎng)絡編程 | 439
9.1 TCP客戶端編程 | 439
9.1.1 LwIP開源項目簡介 | 439
9.1.2 相關(guān)API介紹 | 440
9.1.3 網(wǎng)絡編程的VS Code IntelliSense設置 | 440
9.1.4 TCP客戶端的工作流程 | 441
9.1.5 網(wǎng)絡工具netcat | 442
9.1.6 案例程序 | 442
9.2 TCP服務端編程 | 450
9.2.1 相關(guān)API介紹 | 450
9.2.2 TCP服務端的工作流程 | 451
9.2.3 案例程序 | 452
9.3 UDP客戶端編程 | 460
9.3.1 相關(guān)API介紹 | 460
9.3.2 UDP客戶端的工作流程 | 461
9.3.3 案例程序 | 461
9.4 UDP服務端編程 | 468
9.4.1 相關(guān)API介紹 | 468
9.4.2 UDP服務端的工作流程 | 469
9.4.3 案例程序 | 470
第10章 MQTT編程 | 478
10.1 MQTT簡介 | 478
10.1.1 MQTT | 478
10.1.2 MQTT的應用場景 | 479
10.1.3 MQTT的技術(shù)特性 | 479
10.1.4 廣義上的發(fā)布/訂閱模式 | 480
10.1.5 MQTT的訂閱與發(fā)布模型 | 482
10.2 Paho-MQTT | 486
10.2.1 Paho-MQTT簡介 | 486
10.2.2 Paho-MQTT源碼的結(jié)構(gòu) | 488
10.2.3 Paho-MQTT編程的VS Code IntelliSense設置 | 489
10.2.4 Paho-MQTT的編譯 | 489
10.2.5 MQTT代理Mosquitto | 491
10.2.6 在設備端發(fā)布消息 | 493
10.2.7 在設備端訂閱消息 | 494
10.3 MQTT客戶端編程 | 494
10.3.1 對Paho-MQTT進行封裝 | 495
10.3.2 Paho-MQTT模塊的接入方法 | 496
10.3.3 案例程序 | 498
10.4 案例:燈光控制 | 511
10.4.1 燈光控制案例項目簡介 | 511
10.4.2 實現(xiàn)燈光控制案例項目 | 512
10.5 案例:環(huán)境光采集 | 522
10.5.1 環(huán)境光采集案例項目簡介 | 522
10.5.2 實現(xiàn)環(huán)境光采集案例項目 | 522
10.6 案例:人體感應 | 530
10.6.1 人體感應案例項目簡介 | 530
10.6.2 實現(xiàn)人體感應案例項目 | 531
10.7 案例:可燃氣體報警 | 538
10.7.1 可燃氣體報警案例項目簡介 | 539
10.7.2 實現(xiàn)可燃氣體報警案例項目 | 539
10.8 案例:溫濕度收集 | 547
10.8.1 溫濕度收集案例項目簡介 | 547
10.8.2 實現(xiàn)溫濕度收集案例項目 | 547
10.9 案例:廣告屏 | 557
10.9.1 廣告屏案例項目簡介 | 557
10.9.2 實現(xiàn)廣告屏案例項目 | 557