写作背景
自从1999年Kevin Ashton提出了物联网(Internet of Things,IoT)的概念后,经过二十多年的发展,物联网技术已经走入了每个人的生活中。物联网是新一代信息技术的重要组成部分,也是嵌入式技术和互联网相互融合的产物。随着智能设备、智能终端的不断发展,物联网技术和嵌入式技术变得密不可分。
2022年1月12日,国务院《十四五数字经济发展规划》中提出要打造智慧共享的新型数字生活,加快既有住宅和社区设施数字化改造,打造智能楼宇、智能停车场、智能充电桩、智能垃圾箱等公共设施。2022年4月25日,国务院《关于进一步释放消费潜力促进消费持续恢复的意见》指出,要推进第五代移动通信(5G)、物联网、云计算、人工智能、大数据等领域标准研制。艾瑞咨询系列研究报告(2022年第6期)指出,在2022年1~5月,仅智能家居行业投融资事件就达到了60次,涉及金额166亿元人民币。
不难看出,随着数字经济政策上升至国家战略,嵌入式、物联网行业的春天来了。越来越多的高校毕业生和企业研发人员选择这一领域作为职业发展方向。
但是嵌入式、物联网的开发与传统的软件开发不同。它不仅要求研发人员具有一定的工程经验积累,还要具有软件编程知识、硬件开发知识、网络通信知识甚至云计算知识等。而且物联网和嵌入式开发有着自己独有的测试工具、调试方法。如果不了解这些方法,强行上马必然会事倍功半。
针对这一现状,编者结合自身的教学经验和项目经验,对嵌入式、物联网行业常用的UART和RS485接口、Qt开发平台、网络通信和JSON数据交换格式(含cJSON库)这3部分内容进行详细讲解。同时用一个不断迭代更新的简易气象站程序贯穿这3部分内容,实现了知识学习和项目实践的紧密结合。对于嵌入式、物联网开发中必不可少的工具,如串口调试助手、网络调试助手、逻辑分析仪等工具,本书也做了详细的介绍。
内容框架
本书按照从硬件到软件、从单机到网络的思路,将内容划分为硬件接口知识、Qt开发知识、网络通信知识3部分。
(1) 硬件接口知识部分,包括第1章和第2章。这一部分介绍了常用硬件接口原理(包括UART接口、RS485接口)、Modbus通信协议原理、硬件模块原理(包括GY39气象信息模块和PR3000风速风向模块)和调试工具(包括逻辑分析仪和串口调试助手)的使用。
(2) Qt开发知识部分,包括第3~6章。Qt是一个开源的、跨平台的C 开发库,在嵌入式和物联网行业有着广泛的应用。这一部分先讲解了C 开发的基础知识,然后介绍了Qt的核心功能和常用模块,如信号和槽、串口通信、事件、定时器、子窗口等。
(3) 网络通信知识部分,包括第7章和第8章。这一部分以中国移动OneNET物联网开放平台为例,详细讲解了使用Qt进行TCP、HTTP网络通信的原理和方法。同时着重讲解了网络通信中极为常用的JSON数据交换格式和cJSON库的使用方法。
在各个章节的实践案例部分,逐步带领读者完成了一个功能全面的气象站控制程序。通过该程序的编写和迭代升级,读者可以获取工程实践中程序开发的经验。
特色亮点
1. 本书内容贴近工程应用,实践性强
围绕简易气象站这一主题,从嵌入式项目开发的角度设计了一系列循序渐进、由浅入深的案例。通过程序的不断迭代和优化,最终得到了功能完整的气象站程序。
2. 本书注重夯实硬件基础,加深理解
本书不但讲解了工程领域常用的UART接口、RS485接口、Modbus通信协议的工作原理和工作过程,还讲解了工程上常用的逻辑分析仪、串口调试助手、网络调试助手等测试工具,从而使读者加深对硬件工作原理的理解。
3. 本书关注嵌入式项目开发的痛点
随着物联网和5G技术的广泛应用,万物互联即将成为现实。但是物联网行业需要开发者掌握多方面的知识,大大提高了入门门槛。本书针对这一痛点,着重讲解了网络数据传送、JSON和cJSON库的使用等内容,帮助读者优化知识体系,步入万物互联的5G时代。
读者对象
本书既可作为高等学校嵌入式、物联网、自动化、微电子、通信工程、计算机等专业的教材,也可作为实践案例供嵌入式、物联网相关行业的研发人员参考。读者应当具备一定的编程知识和电子电路知识。由于Qt是基于C 的开发平台,本书安排了一章的内容帮助读者进行C到C 的过渡。只有C语言基础的读者也无须担心。
配套资源
程序代码、工具软件等资源: 扫描目录上方的配套资源二维码下载。
课件、大纲、教案等资源: 扫描封底的书圈二维码在公众号下载,或者到清华大学出版社官方网站本书页面下载。
微课视频(360分钟,31集): 扫描书中相应章节中的二维码在线学习。
本书配套了气象站硬件,可以有效地提高学习效率。读者可以根据附录中的电路图进行制作,但不可用于商业用途。
注: 请先扫描封底刮刮卡中的文泉云盘防盗码进行绑定后再获取配套资源。
致谢
本书既是江苏省现代教育技术研究课题(2022R102343)和金陵科技学院产教融合型一流课程嵌入式系统设计建设的成果,也是编者所在单位与南京优奈特信息科技有限公司(苏嵌教育)开展校企合作人才培养的成果。
本书由曹珂、黄苗玉、张玉、邓宽编写,林新华、梁庚审稿。本书是几位教师多年教学成果的反思和积累,随着实际教学进行了多次归纳整理和更新。在此特别感谢陈正宇、王锦江、徐军、陶永会、牛犇、刘飞、孙晨、王朕等教师和学生的大力支持。
本书在编写过程中还参考了许多资料并列在参考文献中,由于相关领域的资料浩如烟海,部分参考文献可能会有所遗漏,在此向各位作者表示深深的谢意和歉意。
因编者水平有限,书中难免出现错误,恳请读者批评指正。
编者
2023年4月
第1章准备工作(视频讲解: 25分钟,2集)
1.1Qt的安装和基本操作
1.1.1Qt和Qt Creator
1.1.2Windows平台下Qt安装
1.1.3树莓派平台下Qt的安装
1.1.4Qt Creator的基本使用
1.2配套气象站硬件介绍
1.2.1气象站使用的硬件传感器
1.2.2气象站配套电路板
1.2.3气象站硬件的使用方法
1.3本章小结
扩展阅读: 扎根江苏、服务全球的南京沁恒
第2章串行通信原理和硬件模块的使用(视频讲解: 40分钟,4集)
2.1UART接口简介
2.1.1UART串行通信原理
2.1.2USB转串口模块的使用
2.1.3串口调试助手的使用
2.1.4串口数据的自发自收
2.2GY39气象信息模块的原理和使用
2.2.1模块介绍
2.2.2数据包结构
2.2.3使用逻辑分析仪捕获UART通信波形
2.2.4使用PC读取硬件测量数据
2.3RS485通信接口和Modbus协议
2.3.1RS485接口原理
2.3.2Modbus协议原理
2.4PR3000风速风向模块的原理和使用
2.4.1模块介绍
2.4.2模块地址的修改
2.4.3使用PC读取硬件测量数据
2.5本章小结
扩展阅读: 自动气象站在我国的发展
第3章简易C 基础
(视频讲解: 43分钟,5集)
3.1C和C
3.1.1C 简史
3.1.2面向过程编程和面向对象编程
3.1.3面向对象编程的特征
3.2Hello, C !
3.2.1一个简单的C 程序
3.2.2C 的基本输入/输出
3.2.3名称空间
3.3函数和new运算符
3.3.1函数的默认参数
3.3.2函数重载
3.3.3new和delete运算符
3.4类和对象
3.4.1抽象、类和对象
3.4.2定义类和类对象
3.4.3构造函数和析构函数
3.4.4this指针
3.4.5静态成员
3.5类的继承和派生
3.5.1继承和派生的概念
3.5.2类的3种继承方式
3.5.3继承和派生的实现
3.5.4派生类的使用
3.6本章小结
第4章Qt控件的使用和GUI程序设计基础
(视频讲解: 46分钟,3集)
4.1基础知识
4.1.1Qt自带控件的使用
4.1.2Qt特有的数据类型
4.1.3调试函数qDebug()的使用
4.2实践案例: 简易气象站程序V0.1的实现
4.2.1程序整体规划
4.2.2程序界面设计
4.2.3硬件模块类的定义和实现
4.2.4模拟数据的生成
4.2.5报警功能的实现
4.2.6界面更新的实现
4.2.7日志输出的实现
4.2.8程序的发布
4.3程序运行结果
4.4本章小结
扩展阅读: 中国开发者对开源软件的贡献
第5章串口操作和第三方控件的使用(视频讲解: 43分钟,4集)
5.1基础知识
5.1.1Qt串口通信类的使用
5.1.2Qt的第三方控件库QUC SDK
5.1.3窗口菜单的使用
5.2实践案例: 简易气象站程序V0.2的实现
5.2.1使用QUC SDK升级程序界面
5.2.2串口操作功能的实现
5.2.3GY39模块的数据读取和处理
5.2.4PR3000模块的数据读取和处理
5.2.5界面更新函数的进一步修改
5.2.6手动读取数据的实现
5.2.7菜单功能的实现
5.3程序运行结果
5.4本章小结
扩展阅读: 阿里巴巴中国重要的开源参与者
第6章信号和槽、定时器、多窗口编程(视频讲解: 51分钟,4集)
6.1基础知识
6.1.1信号和槽的概念
6.1.2信号和槽的使用
6.1.3定时器的使用
6.1.4事件和事件过滤器的使用
6.1.5事件循环的使用
6.1.6子窗口的使用和窗口间的数据传递
6.1.7INI配置文件的使用
6.2实践案例: 简易气象站程序V1.0的实现
6.2.1使用信号和槽改进程序
6.2.2使用定时器对程序进行改进
6.2.3手动输入数据功能的实现
6.2.4使用配置文件保存程序参数
6.3程序运行结果
6.4本章小结
第7章使用TCP与中国移动物联网平台通信(视频讲解: 46分钟,4集)
7.1基础知识
7.1.1网络通信基础
7.1.2Qt进行TCP通信
7.1.3简易TCP客户端的编写
7.1.4使用网络调试助手测试TCP客户端
7.1.5中国移动OneNET物联网平台的使用
7.1.6TCP解析脚本的编写和使用
7.1.7使用网络调试助手测试TCP解析脚本
7.2实践案例: 简易气象站程序V2.0的实现
7.2.1TCP通信的实现
7.2.2TCP解析脚本的编写
7.3程序运行结果
7.4本章小结
扩展阅读: 我国云计算产业的发展
第8章使用HTTP与中国移动物联网平台通信(视频讲解: 66分钟,5集)
8.1基础知识
8.1.1HTTP简介
8.1.2HTTP请求报文
8.1.3HTTP响应报文
8.1.4使用Qt进行HTTP通信
8.1.5JSON和cJSON库
8.1.6使用cJSON库生成JSON数据
8.1.7使用cJSON库解析JSON数据
8.1.8OneNET平台的数据在线展示功能
8.2实践案例: 简易气象站程序V3.0的实现
8.2.1JSON数据的生成
8.2.2HTTP发送函数的实现
8.3程序运行结果
8.4本章小结
附录A气象站硬件原理图
参考文献