●目 錄第1章 5G的發展歷程(1)1.1 人類的文明發展與通信(1)1.2 移動通信的起源與發展(1)1.3 從1G到5G來看移動通信技術的發展(2)1.3.1 1G:初試鋒芒的移動通信繫統(2)1.3.2 2G:進入數字通信時代的移動通信繫統(3)1.3.3 3G:百花齊放的數據通信時代(4)1.3.4 4G:移動互聯網時代的全面爆發(5)1.3.5 5G:萬物互聯時代的到來(7)1.4 5G的應用場景(10)1.5 5G低功耗蜂窩網絡的演進(10)1.6 基於Nordic的5G低功耗蜂窩物聯網解決方案(12)第2章 基於nRF9160模塊的硬件設計(15)2.1 nRF9160模塊簡介(15)2.1.1 Arm Cotex-M33簡介(16)2.1.2 支持LTE-M/NB-IoT的低功耗蜂窩網絡標準(16)2.1.3 支持GNSS(17)2.1.4 nRF9160模塊的版本區別(18)2.2 nRF9160模塊的主要特性(18)2.2.1 nRF9160模塊的工作條件(18)2.2.2 nRF9160模塊的引腳分布(19)2.2.3 nRF9160模塊的硬件原理圖設計(19)2.3 nRF9160模塊的天線和射頻接口(20)2.3.1 天線的要求(20)2.3.2 天線設計的注意事項(23)2.3.3 GPS接口和天線(25)2.3.4 射頻前端控制接口(30)2.3.5 天線和射頻測試(31)2.4 nRF9160模塊的引腳和接口使用建議(35)2.4.1 VSS引腳(36)2.4.2 GND_Shield引腳(36)2.4.3 ENABLE引腳(36)2.4.4 VDD1引腳和VDD2引腳(36)2.4.5 VDD_GPIO引腳(38)2.4.6 GPIO引腳(39)2.4.7 DEC0引腳(40)2.4.8 nRESET引腳(40)2.4.9 SWD接口(40)2.4.10 UICC接口(41)2.4.11 MAGPIO引腳(42)2.4.12 MIPI RFFE接口(42)2.4.13 ANT引腳(43)2.4.14 AUX引腳(43)2.4.15 GPS引腳(44)2.4.16 COEX引腳(45)2.4.17 Reserved保留引腳(46)2.5 nRF9160模塊的硬件應用設計(46)2.5.1 nRF9160模塊的組件布局(46)2.5.2 關於天線的要求(47)2.5.3 nRF9160模塊的放置(48)2.5.4 nRF9160模塊的散熱建議(48)2.5.5 PCB層疊的設計考慮(48)2.6 小結(48)第3章 NCS平臺的搭建(49)3.1 NCS平臺和Zephyr(49)3.1.1 NCS簡介(49)3.1.2 Zephyr是什麼(50)3.1.3 NCS平臺和Zephyr的主要區別(51)3.2 NCS平臺的搭建(51)3.2.1 NCS平臺的下載安裝(52)3.2.2 SES嵌入式集成開發環境的搭建(56)3.2.3 west命令行工具的安裝(58)3.2.4 工程示例(58)3.3 NCS平臺的結構(62)3.3.1 文件目錄(62)3.3.2 API函數的目錄(62)3.3.3 工程編譯後的目錄(63)3.4 NCS平臺的配置(63)3.4.1 NCS平臺的配置工具(63)3.4.2 NCS平臺的工程配置(63)3.5 nRF9160 DK開發板(69)3.5.1 nRF9160 DK開發板的功能(70)3.5.2 nRF9160 DK開發板的主要特性(70)3.5.3 使用nRF9160 DK開發板連接到蜂窩網絡的注意事項(71)3.5.4 nRF9160 DK開發板的使用向導(71)3.6 LTE-BLE-DEV 評估板(76)3.7 小結(77)第4章 nRF9160模塊的雙核處理器(79)4.1 nRF9160模塊的雙核處理器架構(79)4.1.1 網絡核處理器的使用(80)4.1.2 應用核處理器的使用(82)4.2 鏡像管理(93)4.3 小結(98)第5章 nRF9160模塊的應用核處理器及外設(99)5.1 概述(99)5.1.1 nRF9160模塊應用核處理器的外設簡介(99)5.1.2 nRF9160模塊應用核處理器的外設驅動庫(99)5.2 UART外設及其使用(103)5.2.1 nRF9160模塊的UART簡介(103)5.2.2 Zephyr的UART外設驅動庫(103)5.2.3 Nordic的UARTE外設驅動庫(109)5.3 ADC外設及其使用(112)5.3.1 nRF9160模塊的SAADC簡介(112)5.3.2 nRF9160模塊的SAADC外設驅動庫(113)5.4 小結(119)第6章 低功耗蜂窩物聯網原型開發平臺Thingy:91(121)6.1 背景知識(121)6.2 實驗目標(122)6.3 Thingy:91簡介(122)6.3.1 Thingy:91的主要特性(122)6.3.2 Thingy:91的應用場景(123)6.3.3 Thingy:91的硬件組成(123)6.3.4 Thingy:91的軟件工具(124)6.4 Thingy:91的固件更新(124)6.4.1 準備工作(124)6.4.2 通過USB更新Thingy:91固件(124)6.4.3 通過燒錄器更新Thingy:91的固件(128)6.5 小結(131)第7章 基於nRF9160模塊和GNSS的定位實現(133)7.1 背景知識(133)7.1.1 GNSS簡介(133)7.1.2 nRF9160模塊的定位方式(133)7.2 GNSS接收機的使用(134)7.2.1 啟動GNSS接收機(134)7.2.2 從GNSS接收機中讀取數據(134)7.2.3 停止GNSS接收機(135)7.2.4 刪除存儲在非易失性內存中的GNSS數據(135)7.3 GNSS接收機的配置(136)7.3.1 GNSS接收機工作模式(136)7.3.2 GNSS掩碼的設置(137)7.3.3 GNSS接收機衛星仰角閾值的設置(137)7.3.4 GNSS接收機的配置示例(137)7.4 基於nRF Cloud的A-GPS庫的輔助定位(142)7.4.1 A-GPS庫的配置(143)7.4.2 請求和處理A-GPS數據(143)7.4.3 nRF Cloud數據下載的優化方法(143)7.4.4 使用輔助數據時考慮的因素(143)7.4.5 A-GPS數據的局限性(144)7.4.6 A-GPS庫的API函數(144)7.5 基於nRF Cloud的P-GPS庫的輔助定位(144)7.5.1 P-GPS庫的配置(145)7.5.2 P-GPS庫的初始化(146)7.5.3 關於時間庫的說明(146)7.5.4 請求和處理P-GPS預測數據(146)7.5.5 將P-GPS預測數據寫入LTE調制解調器(147)7.5.6 應用程序與GNSS模塊接口的交互(147)7.5.7 P-GPS庫的API函數和結構體(148)7.6 小結(152)第8章 基於nRF9160模塊的低功耗蜂窩網絡通信(153)8.1 背景知識(153)8.1.1 LTE-M和NB-IoT簡介(153)8.1.2 數據傳輸協議(154)8.1.3 安全協議(155)8.1.4 應用協議(155)8.1.5 雲服務和雲連接(158)8.1.6 本地應用處理(159)8.2 實驗目標(160)8.3 實驗準備(160)8.4 低功耗蜂窩網絡通信例程at_client(160)8.4.1 例程at_client的功能介紹(160)8.4.2 調制解調器庫(161)8.4.3 例程at_client的構建(161)8.4.4 例程at_client的代碼詳解(162)8.4.5 通過例程at_client連接NB-IoT(170)8.4.6 蜂窩網絡鏈路的監聽(172)8.4.7 NB-IoT的工作模式(175)8.4.8 密鑰管理(180)8.5 UDP的應用(181)8.5.1 背景知識(181)8.5.2 例程udp的構建(181)8.5.3 UDP應用的代碼詳解(183)8.5.4 例程udp的驗證(187)8.6 HTTP/HTTPS協議的應用(188)8.6.1 背景知識(188)8.6.2 例程download的構建(188)8.6.3 HTTP/HTTPS協議應用的代碼詳解(189)8.6.4 例程download的驗證(192)8.7 MQTT協議的應用(193)8.7.1 背景知識(193)8.7.2 例程mqtt_simple的構建(193)8.7.3 MQTT協議應用的代碼詳解(193)8.7.4 例程mqtt_simple的驗證(197)8.8 小結(197)第9章 nRF Cloud及其與nRF9160模塊的雲通信(199)9.1 Nordic Cloud簡介(199)9.2 nRF Cloud的使用(200)9.2.1 注冊賬戶(200)9.2.2 獲取數字證書(200)9.2.3 下載數字證書(202)9.2.4 添加LTE設備(204)9.3 nRF9160模塊與nRF Cloud的雲通信例程(206)9.3.1 nRF9160模塊與nRF Cloud雲通信例程的構建(206)9.3.2 nRF9160模塊與nRF Cloud雲通信例程的代碼詳解(206)9.4 nRF9160模塊與nRF Cloud雲通信例程的驗證(209)9.5 小結(210)第10章 低功耗蜂窩網絡透傳模塊應用例程(211)10.1 背景知識(211)10.2 實驗目標(212)10.3 實驗準備(213)10.4 低功耗蜂窩網絡透傳例程的構建(213)10.5 低功耗蜂窩網絡透傳例程的代碼詳解(213)10.5.1 低功耗蜂窩網絡透傳例程的初始化(213)10.5.2 擴展AT命令的解析(214)10.5.3 在SLM中添加自定義的AT命令(216)10.5.4 低功耗蜂窩網絡透傳例程中包含的擴展AT命令(216)10.6 低功耗蜂窩網絡透傳例程的驗證(218)10.7 小結(219)第11章 Tracker的低功耗蜂窩網絡應用例程(221)11.1 背景知識(221)11.2 實驗目標(222)11.3 實驗準備(222)11.4 Tracker例程的構建(223)11.5 Tracker例程的代碼詳解(224)11.5.1 Tracker例程asset_tracker_v2的代碼架構(224)11.5.2 建立MQTT與雲服務器的通信(227)11.5.3 開啟周期性定位模式(229)11.5.4 基站定位的實現(230)11.5.5 傳感器的使用(231)11.5.6 Tracker的固件雲端空中(FOTA)升級(232)11.6 Tracker例程asset_tracker_v2的驗證(233)11.7 小結(234)第12章 低功耗蜂窩網絡網關應用例程(235)12.1 背景知識(235)12.2 實驗目標(236)12.3 實驗準備(236)12.4 低功耗蜂窩網絡網關例程構建(237)12.5 低功耗蜂窩網絡網關例程的代碼詳解(238)12.5.1 例程peripheral_uart解析(238)12.5.2 例程hci_lpuart解析(239)12.5.3 例程lte_ble_gateway_nus解析(240)12.6 例程實驗驗證(247)12.7 小結(247)第13章 固件雲端空中升級(249)13.1 背景知識(249)13.2 實驗目標(250)13.3 實驗準備(250)13.4 應用固件雲端空中升級例程application_update(250)13.4.1 例程application_update簡介(250)13.4.2 例程application_update的構建(252)13.4.3 例程application_update的代碼詳解(252)13.4.4 例程application_update的驗證(258)13.5 調制解調器差分固件雲端空中升級例程modem_delta_update(259)13.5.1 例程modem_delta_update簡介(259)13.5.2 例程modem_delta_update的構建(260)13.5.3 例程modem_delta_update的代碼詳解(260)13.5.4 例程modem_delta_update的驗證(265)13.6 調制解調器整包固件雲端空中升級例程full_modem_update(266)13.6.1 例程full_modem_update簡介(266)13.6.2 例程full_modem_update的構建(266)13.6.3 例程full_modem_update的代碼詳解(267)13.6.4 例程full_modem_update的驗證(273)13.7 小結(273)第14章 的簡介及使用(275)14.1 背景知識(275)14.1.1 什麼是 (275)14.1.2 的主要形態(275)14.1.3 的應用(276)14.2 的主要功能(276)14.3 的使用(277)14.3.1 的開卡(277)14.3.2 如何在開卡後激活(278)14.3.3 的計費方式(278)14.3.4 機卡綁定的注意事項(278)14.4 nRF9160模塊的工作模式及 的使用(279)14.4.1 nRF9160模塊的工作模式(279)14.4.2 在nRF9160模塊上使用 (280)14.5 小結(280)第15章 nRF9160模塊的編程燒錄工具(281)15.1 背景知識(281)15.2 實驗目標(283)15.3 實驗準備(283)15.4 nRF9160模塊的在線燒錄工具(283)15.4.1 使用nrfjprog進行在線燒錄(283)15.4.2 使用west進行在線燒錄(283)15.4.3 nRF9160模塊的命令行批處理燒錄(284)15.5 nRF9160模塊的量產燒錄工具(284)15.5.1 nRF91高速多通道燒錄器簡介(284)15.5.2 硬件環境準備(284)15.5.3 軟件環境準備(285)15.5.4 上位機燒錄軟件的使用說明(285)15.6 小結(288)第16章 基於CMW500的nRF9160模塊測試(289)16.1 背景知識(289)16.2 CMW500簡介(289)16.2.1 CMW500的常用按鍵(290)16.2.2 CMW500工作參數的設置(290)16.3 nRF9160 DK開發板和CMW500的連接(291)16.4 燒錄測試程序(291)16.5 測試LTE-M的設置(293)16.6 測試命令(294)16.7 NB-IoT信令測試的流程(294)16.7.1 添加NB-IoT信令小區(294)16.7.2 NB-IoT小區的參數設置(294)16.7.3 CMW500與測試模塊的連接(295)16.7.4 發射功率的測試(296)16.8 小結(297)參考文獻(299)