寫作背景
自從1999年Kevin Ashton提出了物聯(lián)網(wǎng)(Internet of Things,IoT)的概念后,經(jīng)過二十多年的發(fā)展,物聯(lián)網(wǎng)技術(shù)已經(jīng)走入了每個(gè)人的生活中。物聯(lián)網(wǎng)是新一代信息技術(shù)的重要組成部分,也是嵌入式技術(shù)和互聯(lián)網(wǎng)相互融合的產(chǎn)物。隨著智能設(shè)備、智能終端的不斷發(fā)展,物聯(lián)網(wǎng)技術(shù)和嵌入式技術(shù)變得密不可分。
2022年1月12日,國務(wù)院《十四五數(shù)字經(jīng)濟(jì)發(fā)展規(guī)劃》中提出要打造智慧共享的新型數(shù)字生活,加快既有住宅和社區(qū)設(shè)施數(shù)字化改造,打造智能樓宇、智能停車場、智能充電樁、智能垃圾箱等公共設(shè)施。2022年4月25日,國務(wù)院《關(guān)于進(jìn)一步釋放消費(fèi)潛力促進(jìn)消費(fèi)持續(xù)恢復(fù)的意見》指出,要推進(jìn)第五代移動(dòng)通信(5G)、物聯(lián)網(wǎng)、云計(jì)算、人工智能、大數(shù)據(jù)等領(lǐng)域標(biāo)準(zhǔn)研制。艾瑞咨詢系列研究報(bào)告(2022年第6期)指出,在2022年1~5月,僅智能家居行業(yè)投融資事件就達(dá)到了60次,涉及金額166億元人民幣。
不難看出,隨著數(shù)字經(jīng)濟(jì)政策上升至國家戰(zhàn)略,嵌入式、物聯(lián)網(wǎng)行業(yè)的春天來了。越來越多的高校畢業(yè)生和企業(yè)研發(fā)人員選擇這一領(lǐng)域作為職業(yè)發(fā)展方向。
但是嵌入式、物聯(lián)網(wǎng)的開發(fā)與傳統(tǒng)的軟件開發(fā)不同。它不僅要求研發(fā)人員具有一定的工程經(jīng)驗(yàn)積累,還要具有軟件編程知識(shí)、硬件開發(fā)知識(shí)、網(wǎng)絡(luò)通信知識(shí)甚至云計(jì)算知識(shí)等。而且物聯(lián)網(wǎng)和嵌入式開發(fā)有著自己獨(dú)有的測試工具、調(diào)試方法。如果不了解這些方法,強(qiáng)行上馬必然會(huì)事倍功半。
針對這一現(xiàn)狀,編者結(jié)合自身的教學(xué)經(jīng)驗(yàn)和項(xiàng)目經(jīng)驗(yàn),對嵌入式、物聯(lián)網(wǎng)行業(yè)常用的UART和RS485接口、Qt開發(fā)平臺(tái)、網(wǎng)絡(luò)通信和JSON數(shù)據(jù)交換格式(含cJSON庫)這3部分內(nèi)容進(jìn)行詳細(xì)講解。同時(shí)用一個(gè)不斷迭代更新的簡易氣象站程序貫穿這3部分內(nèi)容,實(shí)現(xiàn)了知識(shí)學(xué)習(xí)和項(xiàng)目實(shí)踐的緊密結(jié)合。對于嵌入式、物聯(lián)網(wǎng)開發(fā)中必不可少的工具,如串口調(diào)試助手、網(wǎng)絡(luò)調(diào)試助手、邏輯分析儀等工具,本書也做了詳細(xì)的介紹。
內(nèi)容框架
本書按照從硬件到軟件、從單機(jī)到網(wǎng)絡(luò)的思路,將內(nèi)容劃分為硬件接口知識(shí)、Qt開發(fā)知識(shí)、網(wǎng)絡(luò)通信知識(shí)3部分。
(1) 硬件接口知識(shí)部分,包括第1章和第2章。這一部分介紹了常用硬件接口原理(包括UART接口、RS485接口)、Modbus通信協(xié)議原理、硬件模塊原理(包括GY39氣象信息模塊和PR3000風(fēng)速風(fēng)向模塊)和調(diào)試工具(包括邏輯分析儀和串口調(diào)試助手)的使用。
(2) Qt開發(fā)知識(shí)部分,包括第3~6章。Qt是一個(gè)開源的、跨平臺(tái)的C 開發(fā)庫,在嵌入式和物聯(lián)網(wǎng)行業(yè)有著廣泛的應(yīng)用。這一部分先講解了C 開發(fā)的基礎(chǔ)知識(shí),然后介紹了Qt的核心功能和常用模塊,如信號和槽、串口通信、事件、定時(shí)器、子窗口等。
(3) 網(wǎng)絡(luò)通信知識(shí)部分,包括第7章和第8章。這一部分以中國移動(dòng)OneNET物聯(lián)網(wǎng)開放平臺(tái)為例,詳細(xì)講解了使用Qt進(jìn)行TCP、HTTP網(wǎng)絡(luò)通信的原理和方法。同時(shí)著重講解了網(wǎng)絡(luò)通信中極為常用的JSON數(shù)據(jù)交換格式和cJSON庫的使用方法。
在各個(gè)章節(jié)的實(shí)踐案例部分,逐步帶領(lǐng)讀者完成了一個(gè)功能全面的氣象站控制程序。通過該程序的編寫和迭代升級,讀者可以獲取工程實(shí)踐中程序開發(fā)的經(jīng)驗(yàn)。
特色亮點(diǎn)
1. 本書內(nèi)容貼近工程應(yīng)用,實(shí)踐性強(qiáng)
圍繞簡易氣象站這一主題,從嵌入式項(xiàng)目開發(fā)的角度設(shè)計(jì)了一系列循序漸進(jìn)、由淺入深的案例。通過程序的不斷迭代和優(yōu)化,最終得到了功能完整的氣象站程序。
2. 本書注重夯實(shí)硬件基礎(chǔ),加深理解
本書不但講解了工程領(lǐng)域常用的UART接口、RS485接口、Modbus通信協(xié)議的工作原理和工作過程,還講解了工程上常用的邏輯分析儀、串口調(diào)試助手、網(wǎng)絡(luò)調(diào)試助手等測試工具,從而使讀者加深對硬件工作原理的理解。
3. 本書關(guān)注嵌入式項(xiàng)目開發(fā)的痛點(diǎn)
隨著物聯(lián)網(wǎng)和5G技術(shù)的廣泛應(yīng)用,萬物互聯(lián)即將成為現(xiàn)實(shí)。但是物聯(lián)網(wǎng)行業(yè)需要開發(fā)者掌握多方面的知識(shí),大大提高了入門門檻。本書針對這一痛點(diǎn),著重講解了網(wǎng)絡(luò)數(shù)據(jù)傳送、JSON和cJSON庫的使用等內(nèi)容,幫助讀者優(yōu)化知識(shí)體系,步入萬物互聯(lián)的5G時(shí)代。
讀者對象
本書既可作為高等學(xué)校嵌入式、物聯(lián)網(wǎng)、自動(dòng)化、微電子、通信工程、計(jì)算機(jī)等專業(yè)的教材,也可作為實(shí)踐案例供嵌入式、物聯(lián)網(wǎng)相關(guān)行業(yè)的研發(fā)人員參考。讀者應(yīng)當(dāng)具備一定的編程知識(shí)和電子電路知識(shí)。由于Qt是基于C 的開發(fā)平臺(tái),本書安排了一章的內(nèi)容幫助讀者進(jìn)行C到C 的過渡。只有C語言基礎(chǔ)的讀者也無須擔(dān)心。
配套資源
程序代碼、工具軟件等資源: 掃描目錄上方的配套資源二維碼下載。
課件、大綱、教案等資源: 掃描封底的書圈二維碼在公眾號下載,或者到清華大學(xué)出版社官方網(wǎng)站本書頁面下載。
微課視頻(360分鐘,31集): 掃描書中相應(yīng)章節(jié)中的二維碼在線學(xué)習(xí)。
本書配套了氣象站硬件,可以有效地提高學(xué)習(xí)效率。讀者可以根據(jù)附錄中的電路圖進(jìn)行制作,但不可用于商業(yè)用途。
注: 請先掃描封底刮刮卡中的文泉云盤防盜碼進(jìn)行綁定后再獲取配套資源。
致謝
本書既是江蘇省現(xiàn)代教育技術(shù)研究課題(2022R102343)和金陵科技學(xué)院產(chǎn)教融合型一流課程嵌入式系統(tǒng)設(shè)計(jì)建設(shè)的成果,也是編者所在單位與南京優(yōu)奈特信息科技有限公司(蘇嵌教育)開展校企合作人才培養(yǎng)的成果。
本書由曹珂、黃苗玉、張玉、鄧寬編寫,林新華、梁庚審稿。本書是幾位教師多年教學(xué)成果的反思和積累,隨著實(shí)際教學(xué)進(jìn)行了多次歸納整理和更新。在此特別感謝陳正宇、王錦江、徐軍、陶永會(huì)、牛犇、劉飛、孫晨、王朕等教師和學(xué)生的大力支持。
本書在編寫過程中還參考了許多資料并列在參考文獻(xiàn)中,由于相關(guān)領(lǐng)域的資料浩如煙海,部分參考文獻(xiàn)可能會(huì)有所遺漏,在此向各位作者表示深深的謝意和歉意。
因編者水平有限,書中難免出現(xiàn)錯(cuò)誤,懇請讀者批評指正。
編者
2023年4月
第1章準(zhǔn)備工作(視頻講解: 25分鐘,2集)
1.1Qt的安裝和基本操作
1.1.1Qt和Qt Creator
1.1.2Windows平臺(tái)下Qt安裝
1.1.3樹莓派平臺(tái)下Qt的安裝
1.1.4Qt Creator的基本使用
1.2配套氣象站硬件介紹
1.2.1氣象站使用的硬件傳感器
1.2.2氣象站配套電路板
1.2.3氣象站硬件的使用方法
1.3本章小結(jié)
擴(kuò)展閱讀: 扎根江蘇、服務(wù)全球的南京沁恒
第2章串行通信原理和硬件模塊的使用(視頻講解: 40分鐘,4集)
2.1UART接口簡介
2.1.1UART串行通信原理
2.1.2USB轉(zhuǎn)串口模塊的使用
2.1.3串口調(diào)試助手的使用
2.1.4串口數(shù)據(jù)的自發(fā)自收
2.2GY39氣象信息模塊的原理和使用
2.2.1模塊介紹
2.2.2數(shù)據(jù)包結(jié)構(gòu)
2.2.3使用邏輯分析儀捕獲UART通信波形
2.2.4使用PC讀取硬件測量數(shù)據(jù)
2.3RS485通信接口和Modbus協(xié)議
2.3.1RS485接口原理
2.3.2Modbus協(xié)議原理
2.4PR3000風(fēng)速風(fēng)向模塊的原理和使用
2.4.1模塊介紹
2.4.2模塊地址的修改
2.4.3使用PC讀取硬件測量數(shù)據(jù)
2.5本章小結(jié)
擴(kuò)展閱讀: 自動(dòng)氣象站在我國的發(fā)展
第3章簡易C 基礎(chǔ)
(視頻講解: 43分鐘,5集)
3.1C和C
3.1.1C 簡史
3.1.2面向過程編程和面向?qū)ο缶幊?/p>
3.1.3面向?qū)ο缶幊痰奶卣?/p>
3.2Hello, C !
3.2.1一個(gè)簡單的C 程序
3.2.2C 的基本輸入/輸出
3.2.3名稱空間
3.3函數(shù)和new運(yùn)算符
3.3.1函數(shù)的默認(rèn)參數(shù)
3.3.2函數(shù)重載
3.3.3new和delete運(yùn)算符
3.4類和對象
3.4.1抽象、類和對象
3.4.2定義類和類對象
3.4.3構(gòu)造函數(shù)和析構(gòu)函數(shù)
3.4.4this指針
3.4.5靜態(tài)成員
3.5類的繼承和派生
3.5.1繼承和派生的概念
3.5.2類的3種繼承方式
3.5.3繼承和派生的實(shí)現(xiàn)
3.5.4派生類的使用
3.6本章小結(jié)
第4章Qt控件的使用和GUI程序設(shè)計(jì)基礎(chǔ)
(視頻講解: 46分鐘,3集)
4.1基礎(chǔ)知識(shí)
4.1.1Qt自帶控件的使用
4.1.2Qt特有的數(shù)據(jù)類型
4.1.3調(diào)試函數(shù)qDebug()的使用
4.2實(shí)踐案例: 簡易氣象站程序V0.1的實(shí)現(xiàn)
4.2.1程序整體規(guī)劃
4.2.2程序界面設(shè)計(jì)
4.2.3硬件模塊類的定義和實(shí)現(xiàn)
4.2.4模擬數(shù)據(jù)的生成
4.2.5報(bào)警功能的實(shí)現(xiàn)
4.2.6界面更新的實(shí)現(xiàn)
4.2.7日志輸出的實(shí)現(xiàn)
4.2.8程序的發(fā)布
4.3程序運(yùn)行結(jié)果
4.4本章小結(jié)
擴(kuò)展閱讀: 中國開發(fā)者對開源軟件的貢獻(xiàn)
第5章串口操作和第三方控件的使用(視頻講解: 43分鐘,4集)
5.1基礎(chǔ)知識(shí)
5.1.1Qt串口通信類的使用
5.1.2Qt的第三方控件庫QUC SDK
5.1.3窗口菜單的使用
5.2實(shí)踐案例: 簡易氣象站程序V0.2的實(shí)現(xiàn)
5.2.1使用QUC SDK升級程序界面
5.2.2串口操作功能的實(shí)現(xiàn)
5.2.3GY39模塊的數(shù)據(jù)讀取和處理
5.2.4PR3000模塊的數(shù)據(jù)讀取和處理
5.2.5界面更新函數(shù)的進(jìn)一步修改
5.2.6手動(dòng)讀取數(shù)據(jù)的實(shí)現(xiàn)
5.2.7菜單功能的實(shí)現(xiàn)
5.3程序運(yùn)行結(jié)果
5.4本章小結(jié)
擴(kuò)展閱讀: 阿里巴巴中國重要的開源參與者
第6章信號和槽、定時(shí)器、多窗口編程(視頻講解: 51分鐘,4集)
6.1基礎(chǔ)知識(shí)
6.1.1信號和槽的概念
6.1.2信號和槽的使用
6.1.3定時(shí)器的使用
6.1.4事件和事件過濾器的使用
6.1.5事件循環(huán)的使用
6.1.6子窗口的使用和窗口間的數(shù)據(jù)傳遞
6.1.7INI配置文件的使用
6.2實(shí)踐案例: 簡易氣象站程序V1.0的實(shí)現(xiàn)
6.2.1使用信號和槽改進(jìn)程序
6.2.2使用定時(shí)器對程序進(jìn)行改進(jìn)
6.2.3手動(dòng)輸入數(shù)據(jù)功能的實(shí)現(xiàn)
6.2.4使用配置文件保存程序參數(shù)
6.3程序運(yùn)行結(jié)果
6.4本章小結(jié)
第7章使用TCP與中國移動(dòng)物聯(lián)網(wǎng)平臺(tái)通信(視頻講解: 46分鐘,4集)
7.1基礎(chǔ)知識(shí)
7.1.1網(wǎng)絡(luò)通信基礎(chǔ)
7.1.2Qt進(jìn)行TCP通信
7.1.3簡易TCP客戶端的編寫
7.1.4使用網(wǎng)絡(luò)調(diào)試助手測試TCP客戶端
7.1.5中國移動(dòng)OneNET物聯(lián)網(wǎng)平臺(tái)的使用
7.1.6TCP解析腳本的編寫和使用
7.1.7使用網(wǎng)絡(luò)調(diào)試助手測試TCP解析腳本
7.2實(shí)踐案例: 簡易氣象站程序V2.0的實(shí)現(xiàn)
7.2.1TCP通信的實(shí)現(xiàn)
7.2.2TCP解析腳本的編寫
7.3程序運(yùn)行結(jié)果
7.4本章小結(jié)
擴(kuò)展閱讀: 我國云計(jì)算產(chǎn)業(yè)的發(fā)展
第8章使用HTTP與中國移動(dòng)物聯(lián)網(wǎng)平臺(tái)通信(視頻講解: 66分鐘,5集)
8.1基礎(chǔ)知識(shí)
8.1.1HTTP簡介
8.1.2HTTP請求報(bào)文
8.1.3HTTP響應(yīng)報(bào)文
8.1.4使用Qt進(jìn)行HTTP通信
8.1.5JSON和cJSON庫
8.1.6使用cJSON庫生成JSON數(shù)據(jù)
8.1.7使用cJSON庫解析JSON數(shù)據(jù)
8.1.8OneNET平臺(tái)的數(shù)據(jù)在線展示功能
8.2實(shí)踐案例: 簡易氣象站程序V3.0的實(shí)現(xiàn)
8.2.1JSON數(shù)據(jù)的生成
8.2.2HTTP發(fā)送函數(shù)的實(shí)現(xiàn)
8.3程序運(yùn)行結(jié)果
8.4本章小結(jié)
附錄A氣象站硬件原理圖
參考文獻(xiàn)