OpenHarmony輕量設備開發理論與實戰

齊耀龍

  • 出版商: 電子工業
  • 出版日期: 2023-06-01
  • 定價: $894
  • 售價: 8.5$760
  • 語言: 簡體中文
  • 頁數: 576
  • ISBN: 712145677X
  • ISBN-13: 9787121456770
  • 相關分類: Operating-system
  • 立即出貨 (庫存 < 4)

商品描述

本書系統地介紹了OpenHarmony輕量設備開發的必備知識。在本書完稿時,相關課程已經在高校完成了三個學期的教學,並持續優化迭代。本書的學習門檻低、內容深入淺出、知識結構合理。本書註重知識間的關聯性、連貫性和階梯性,將電腦理論知識和OpenHarmony實踐緊密結合,更加註重實踐內容對理論理解的反哺,同步培養知識和能力,“授人以魚,並且授人以漁”。本書的內容支持目前所有在用的OpenHarmony版本,並且有能力支持未來的新版本,註重教/學效率,創立了“OpenHarmony輕量設備教/學全家桶”。全書共分10章,包括OpenHarmony及其開發套件、搭建OpenHarmony開發環境、OpenHarmony開發入門、OpenHarmony內核編程接口、控制I/O設備、感知環境狀態、OLED顯示屏的驅動和控制、控制Wi-Fi、網絡編程及MQTT編程。本書適合高等院校作為建設OpenHarmony課程的指定教材,可以完善相關專業人才培養體系,也非常適合個人或企業開發者閱讀學習。

目錄大綱

目  錄
第1章 OpenHarmony及其開發套件 | 1
1.1 初識OpenHarmony | 2
1.1.1 OpenHarmony是什麽 | 2
1.1.2 OpenHarmony的重要性 | 3
1.1.3 OpenHarmony南向開發與北向開發 | 4
1.1.4 OpenHarmony的版本 | 5
1.1.5 OpenHarmony官網 | 7
1.1.6 OpenHarmony官網文檔獲取 | 8
1.1.7 本書內容概述 | 8
1.1.8 學習本書需要的基礎知識 | 9
1.2 潤和Pegasus智能家居開發套件簡介 | 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 環境監測板 | 17
1.2.7 OLED顯示屏板 | 18
1.2.8 NFC擴展板 | 19
1.2.9 開發套件的組裝 | 20
1.2.10 輕量系統開發快速入門 | 23
第2章 搭建OpenHarmony開發環境 | 26
2.1 搭建開發環境(Windows系統) | 26
2.1.1 安裝虛擬機工具 | 26
2.1.2 安裝CH340芯片驅動 | 31
2.1.3 安裝串口調試工具 | 31
2.1.4 安裝開發工具 | 35
2.1.5 安裝燒錄工具 | 37
2.1.6 首次燒錄運行 | 39

2.2 搭建編譯環境(Ubuntu系統) | 43
2.2.1 安裝Ubuntu系統 | 43
2.2.2 配置編譯環境 | 56
2.2.3 使用預搭建的編譯環境 | 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 在智能家居開發套件上運行 | 78
2.3.6 OpenHarmony的系統架構 | 79
2.4 構建開發網絡 | 81
2.4.1 物聯網 | 81
2.4.2 構建適用於個人和團隊的開發網絡 | 82
2.4.3 構建適用於學校機房的開發網絡 | 83
2.4.4 AT命令介紹 | 90
2.4.5 使用AT命令建立網絡連接 | 91
2.4.6 使用MobaXterm腳本快速聯網 | 93
第3章 OpenHarmony開發入門 | 95
3.1 HelloWorld | 95
3.1.1 編寫程序源碼 | 95
3.1.2 編譯源碼 | 98
3.1.3 燒錄固件 | 98
3.1.4 通過串口調試工具查看程序的運行結果 | 98
3.1.5 OpenHarmony系統啟動的8個階段 | 99
3.1.6 VS Code的IntelliSense設置 | 100
3.1.7 VS Code解析.gn文件 | 102
3.1.8 屏蔽OpenHarmony內置的XTS | 103
3.1.9 快速查找文件和代碼 | 104
3.1.10 快速重復燒錄和測試最佳實踐方案 | 105
3.2 輕量系統的編譯構建 | 107
3.2.1 OpenHarmony的編譯構建系統 | 107
3.2.2 編譯構建系統的配置規則 | 111
3.3 編譯構建系統的使用 | 122
3.3.1 案例:新增組件 | 122
3.3.2 案例:新增產品解決方案 | 125
3.3.3 案例:組件/模塊開發 | 129
3.4 輕量系統的數據持久化 | 135
3.4.1 數據持久化概述 | 135
3.4.2 鍵值存儲 | 136
3.4.3 鍵值存儲案例程序 | 139
3.4.4 文件操作 | 142
3.4.5 文件操作案例程序 | 142
第4章 OpenHarmony內核編程接口 | 146
4.1 OpenHarmony內核簡介 | 146
4.1.1 內核子系統 | 146
4.1.2 輕量系統內核簡介 | 148
4.1.3 小型系統內核簡介 | 150
4.1.4 標準系統內核簡介 | 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 內核編程的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接口現狀 | 221
5.1.3 相關API介紹 | 223
5.1.4 核心板的可編程LED燈介紹 | 225
5.1.5 IoT編程的VS Code IntelliSense設置 | 225
5.1.6 案例程序 | 226
5.1.7 給未知函數或庫增加IntelliSense | 228
5.2 GPIO按鍵輸入 | 229
5.2.1 輪詢與中斷 | 229
5.2.2 相關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 相關API介紹 | 246
5.3.3 交通燈板的蜂鳴器介紹 | 247
5.3.4 案例程序:控制蜂鳴器發聲 | 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章 感知環境狀態 | 275
6.1 使用ADC獲取模擬傳感器的數據 | 275
6.1.1 ADC | 275
6.1.2 相關API介紹 | 278
6.1.3 炫彩燈板的光敏電阻介紹 | 278
6.1.4 案例程序:通過光敏電阻感知環境光 | 279
6.1.5 炫彩燈板的人體紅外傳感器介紹 | 282
6.1.6 案例程序:通過人體紅外傳感器感知人體靠近 | 283
6.1.7 案例程序:智能夜燈 | 285
6.1.8 OLED顯示屏板的按鍵介紹 | 291
6.1.9 案例程序:使用ADC值區分同一個引腳的不同按鍵 | 291
6.2 使用ADC獲取可燃氣體傳感器的數據 | 298
6.2.1 可燃氣體傳感器 | 298
6.2.2 環境監測板的MQ-2可燃氣體傳感器介紹 | 298
6.2.3 案例程序:使用可燃氣體傳感器感知空氣狀態 | 299
6.2.4 案例程序:可燃氣體報警器 | 302
6.3 使用I2C獲取數字溫濕度傳感器的數據 | 306
6.3.1 I2C | 306
6.3.2 相關API介紹 | 309
6.3.3 環境監測板的AHT20數字溫濕度傳感器介紹 | 310
6.3.4 案例程序:實現AHT20數字溫濕度傳感器的驅動程序 | 311
6.3.5 案例程序:獲取AHT20數字溫濕度傳感器的狀態 | 326
第7章 OLED顯示屏的驅動和控制 | 330
7.1 I2C驅動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 案例程序:實現OLED顯示屏簡化版驅動程序 | 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顯示屏驅動庫 | 373
7.3.1 驅動庫簡介 | 373
7.3.2 驅動庫的源碼結構 | 373
7.3.3 驅動庫API介紹 | 374
7.3.4 增強驅動庫功能 | 374
7.3.5 驅動庫的接入方法 | 375
7.3.6 案例程序 | 377
7.4 二維碼生成器模塊 | 387
7.4.1 模塊簡介 | 387
7.4.2 模塊的源碼結構 | 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 相關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 相關API介紹 | 419
8.3.2 創建Wi-Fi熱點 | 420
8.3.3 提供DHCP服務 | 421
8.3.4 案例程序:創建Wi-Fi熱點 | 421
8.4 EasyWiFi模塊 | 430
8.4.1 EasyWiFi模塊簡介 | 430
8.4.2 EasyWiFi模塊的源碼結構 | 430
8.4.3 EasyWiFi模塊的API介紹 | 430
8.4.4 模塊的接入方法 | 431
8.4.5 案例程序 | 433
第9章 網絡編程 | 439
9.1 TCP客戶端編程 | 439
9.1.1 LwIP開源項目簡介 | 439
9.1.2 相關API介紹 | 440
9.1.3 網絡編程的VS Code IntelliSense設置 | 440
9.1.4 TCP客戶端的工作流程 | 441
9.1.5 網絡工具netcat | 442
9.1.6 案例程序 | 442
9.2 TCP服務端編程 | 450
9.2.1 相關API介紹 | 450
9.2.2 TCP服務端的工作流程 | 451
9.2.3 案例程序 | 452
9.3 UDP客戶端編程 | 460
9.3.1 相關API介紹 | 460
9.3.2 UDP客戶端的工作流程 | 461
9.3.3 案例程序 | 461
9.4 UDP服務端編程 | 468
9.4.1 相關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的技術特性 | 479
10.1.4 廣義上的發布/訂閱模式 | 480
10.1.5 MQTT的訂閱與發布模型 | 482
10.2 Paho-MQTT | 486
10.2.1 Paho-MQTT簡介 | 486
10.2.2 Paho-MQTT源碼的結構 | 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 在設備端發布消息 | 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 實現燈光控制案例項目 | 512

10.5 案例:環境光採集 | 522
10.5.1 環境光採集案例項目簡介 | 522
10.5.2 實現環境光採集案例項目 | 522
10.6 案例:人體感應 | 530
10.6.1 人體感應案例項目簡介 | 530
10.6.2 實現人體感應案例項目 | 531
10.7 案例:可燃氣體報警 | 538
10.7.1 可燃氣體報警案例項目簡介 | 539
10.7.2 實現可燃氣體報警案例項目 | 539
10.8 案例:溫濕度收集 | 547
10.8.1 溫濕度收集案例項目簡介 | 547
10.8.2 實現溫濕度收集案例項目 | 547
10.9 案例:廣告屏 | 557
10.9.1 廣告屏案例項目簡介 | 557
10.9.2 實現廣告屏案例項目 | 557