《从零开始学ESP32物联网应用开发》结合50个实践案例和2个综合实战项目,详细介绍ESP32从入门到进阶提升的全方位知识,涵盖ESP32物联网应用开发的基础知识、通信技术和网络编程等相关内容。《从零开始学ESP32物联网应用开发》免费提供程序源代码、100分钟配套教学视频、教学PPT和开发工具等超值学习资源,以方便读者学习和实践。
《从零开始学ESP32物联网应用开发》共11章,分为4篇。第1篇基础知识,主要介绍ESP32硬件基础知识、ESP-IDF开发环境搭建、ESP32外设驱动控制、FreeRTOS实时操作系统等;第2篇通信技术,主要介绍Wi-Fi编程(基础知识、Wi-Fi扫描、Wi-Fi Station模式、Wi-Fi Soft-AP模式、ESP-NOW通信)、Wi-Fi配网(Smart Config配网、Soft-AP配网、BluFi配网、配网失败的解决方法)、蓝牙通信(基础知识、蓝牙广播、蓝牙扫描、GAP通用访问控制、GATT通用属性控制);第3篇网络编程,主要介绍网络传输(网络接口、IP地址、TCP通信、UDP通信)、网络应用(HTTP/HTTPS客户端应用、MQTT客户端应用、OTA应用);第4篇项目实战,主要介绍基于Wi-Fi技术的智能灯泡和基于蓝牙技术的指纹密码锁两个综合项目的实现。
《从零开始学ESP32物联网应用开发》内容丰富,讲解循序渐进,操作步骤详细,源码解析透彻,适合ESP32物联网应用开发的入门与进阶读者阅读,也适合相关从业人员参考,还适合培训机构和高等院校的相关专业作为教材。
资深物联网开发工程师10多年项目开发经验的总结
结合50个实践案例和2个实战项目,详解ESP32物联网应用开发
深入探索Wi-Fi编程与配网、蓝牙通信、网络编程等核心技术
赠送超值配套资源:程序源代码 100分钟教学视频 开发工具 教学PPT
视频教学:针对重点和难点内容特意录制100分钟配套教学视频,帮助读者高效、直观地学习,从而取得更好的学习效果。
内容全面:涵盖ESP32的硬件特性、软件开发环境搭建、外设驱动控制、FreeRTOS实时操作系统、Wi-Fi编程与配网、蓝牙通信、网络传输与应用等核心知识。
内容新颖:大部分实践案例和实战项目的程序源代码都是采用ESP-IDF开发框架的新版本(截至本书完稿时)编写的。
从零开始:从ESP32的基础知识讲起,逐步深入其核心技术,即便是零基础的物联网爱好者,也能通过本书快速掌握ESP32开发的相关知识。
实用性强:以实际应用为导向,结合50个实践案例和2个综合实战项目进行讲解,帮助读者全面掌握ESP32物联网应用开发的核心技术,并将其应用于实际开发中。
易学易懂:用通俗易懂的语言阐述复杂的技术原理,并采用循序渐进的讲述方式,从基础知识开始逐步深入高级应用,适合不同层次的读者学习。
总结经验:在介绍ESP32知识点和实践案例的过程中穿插大量的开发经验和技巧,从而提高读者的实际开发水平和应用技能。
赠超值资源:免费赠送配套教学视频、程序源代码、开发工具和教学PPT等超值学习资源。
ESP32是由乐鑫科技公司研发的一款低成本、低功耗、高性能的32位系统级芯片(SoC)。该芯片基于Tensilica Xtensa LX6微处理器架构,集成了Wi-Fi和双模蓝牙功能,提供双核及单核版本,并内置了多种功能模块,如RF变换器和功率放大器等。作为ESP8266的后继产品,ESP32自推出以来就凭借其强大的连接能力、丰富的外设接口和高效的开发环境支持而广泛应用于物联网(IoT)领域,如智能家居、工业自动化和无人机控制等。ESP32的低功耗设计使其在电池供电设备中表现卓越,因此成为物联网应用开发的理想选择。
应用前景
ESP32可以满足绝大多数物联网应用场景需求,其广泛的应用场景包括但不限于以下几个方面:
? 智能家居:在智能家居应用领域,ESP32可以赋能各类传统家电,从而让其智能化,如智能灯泡、智能门锁、智能窗帘、智能空调、智能洗衣机和扫地机器人等。通过ESP32可以实现远程控制,帮助用户随时随地控制家电设备,以便轻松地管理家中的各类智能设备,从而享受智能化生活带来的便捷与舒适。
? 可穿戴设备:在可穿戴应用领域,ESP32凭借其低功耗特性而具有出色的表现,如运动手环、蓝牙耳机、智能手表和智能眼镜等,这些设备不仅可以实现数据同步,而且可以有效地进行健康监测,从而为用户提供更加个性化的服务。
? 工业控制:在工业控制领域,ESP32的Mesh组网技术大放异彩,可以实现数据采集、远程控制和生产线自动化,以提高生产效率并降低人为操作失误;同时,ESP32还支持数据实时统计和分析,从而为工厂的智能化管理提供强有力的支撑。
? 医疗健康:在医疗健康领域,ESP32同样可以赋能各类医疗设备,如智能体脂秤、智能心率计和智能血压计等。这些设备能够精准地捕捉和记录用户的健康数据,并结合大数据分析和在线诊断技术,为用户提供更有价值的健康医疗服务。
? AIoT应用:在人工智能物联网领域(AI IoT),ESP32凭借其卓越的性能占据一席之地。以ESP32-S3为首的AI系列芯片,正逐步应用于智能音箱和人脸识别门禁等领域,展现出强大的市场潜力和应用价值。
综上所述,ESP32作为一款功能强大、性能卓越的物联网芯片,在智能家居、可穿戴设备、工业控制、医疗健康和AIoT应用等领域都有广泛的应用前景。
使用体会
笔者在使用ESP32的过程中有以下深刻的感受:
? 易于上手:ESP-IDF开发框架和Visual Studio Code开发环境使得上手ESP32变得相对容易。ESP32的官方文档和社区资源非常丰富,这有助于快速解决开发过程中遇到的问题。
? 性能强大:ESP32的双核处理器和高内存配置具备强大的性能,使得它能够处理实时音频和高级传感器融合算法等较为复杂的任务,并且表现出色,响应非常迅速。
? 接口丰富:ESP32提供了多种类型的外设接口,如GPIO、SPI、I2C和UART等,这使得它能够连接和控制各种外设,如传感器、显示屏和电机等。这为开发者提供了很大的灵活性,并可以让开发者根据项目需求选择合适的外设。
? 无线通信:ESP32内置的Wi-Fi和蓝牙模块使得它能够轻松地实现无线通信,这对物联网项目来说至关重要。通过Wi-Fi,可以将ESP32接入互联网,从而实现远程控制和数据传输;而通过蓝牙,则可以让ESP32实现近距离的无线通信和数据交换。
? 功耗较低:ESP32不但性能强大,而且功耗比较低。这对需要长时间运行的物联网设备来说非常重要,因为它们通常依赖电池供电,而ESP32通过合理的电源管理和优化,可以做到在保持性能的同时降低功耗。
? 价格亲民:与其他一些高性能的微控制器相比,ESP32的价格亲民,可以称得上物美价廉,这使得它成为许多预算有限的项目的理想选择。
综上所述,笔者对ESP32的使用体验非常满意。其强大的性能、丰富的外设接口、出众的无线通信功能和低功耗特性,使其成为物联网应用开发的首选。
本书特色
? 视频教学:针对重点和难点内容特意录制100分钟配套教学视频,帮助读者高效、直观地学习,从而取得更好的学习效果。
? 内容全面:全面涵盖ESP32的硬件特性、软件开发环境搭建、外设驱动控制、FreeRTOS实时操作系统、Wi-Fi编程与配网、蓝牙通信、网络传输与应用等核心知识。
? 内容新颖:大部分实践案例和实战项目的程序源代码都是采用ESP-IDF开发框架的最新版本(截至本书完稿时)编写的。
? 从零开始:从ESP32的基础知识讲起,逐步深入其核心技术,即便是零基础的物联网爱好者,也能通过本书快速学习并掌握ESP32开发的相关知识。
? 实用性强:以实际应用为导向,结合50个实践案例和2个综合实战项目进行讲解,带领读者全面掌握ESP32物联网应用开发的核心技术,并将其应用于实际开发中。
? 易学易懂:用通俗易懂的语言阐述复杂的技术原理,并采用循序渐进的讲述方式,从基础知识开始逐步深入高级应用,适合不同层次的读者学习。
? 总结经验:在介绍ESP32知识点和实践案例的过程中穿插大量的开发经验和技巧,从而提高读者的实际开发水平和应用技能。
? 赠超值资源:免费赠送配套教学视频、程序源代码、开发工具和教学PPT等超值学习资源。
本书内容
第1篇 基础知识
本篇涵盖第1~4章。第1章从ESP32的硬件基础知识入手,介绍其系列芯片的特性,以及ESP32-C3开发板的特性和功能;第2章介绍Visual Studio Code和ESP-IDF开发环境的搭建,并给出Hello World示例程序;第3章介绍ESP32的外设驱动控制,包括GPIO应用、ADC应用、RTC应用、UART通信、I2C通信、SPI通信、RMT应用和NVS应用等;第4章从FreeRTOS实时操作系统入手,结合实践案例深入介绍ESP32的单机性能。通过学习本篇内容,读者可以较为系统地掌握ESP32的基础知识,为后续的进阶学习打好基础。
第2篇 通信技术
本篇涵盖第5~7章。第5章介绍Wi-Fi编程的相关知识,包括Wi-Fi基础知识、Wi-Fi扫描、Wi-Fi Station模式、Wi-Fi Soft-AP模式和ESP-NOW通信等;第6章介绍Wi-Fi配网的相关知识,包括Smart Config配网、Soft-AP配网、BluFi配网,以及配网失败的解决方法等;第7章介绍蓝牙通信的相关知识,包括蓝牙基础知识、蓝牙广播、蓝牙扫描、GAP通用访问控制和GATT通用属性控制等。通过学习本篇内容,读者可以系统地掌握ESP32无线通信和数据交换的核心技术与应用。
第3篇 网络编程
本篇涵盖第8、9章。第8章介绍网络传输的相关知识,包括网络接口、IP地址、TCP通信、UDP通信等;第9章介绍网络应用,包括HTTP/HTTPS客户端应用、MQTT客户端应用和OTA应用等。通过学习本篇内容,读者可以系统地掌握ESP32网络编程的核心技术与应用。
第4篇 项目实战
本篇涵盖第10、11章。第10章介绍基于Wi-Fi技术的智能灯泡项目实战,展现Wi-Fi无线通信技术在ESP32物联网应用开发中的典型应用;第11章介绍基于蓝牙技术的指纹密码锁项目实战,展现蓝牙通信技术在ESP32物联网应用开发中的典型应用。通过学习本篇内容,读者可以将本书介绍的众多知识融会贯通并用于项目开发中,从而做到学以致用。
读者对象
? 物联网开发入门人员;
? 物联网开发进阶人员;
? 物联网开发工程师;
? Wi-Fi与蓝牙开发工程师;
? 嵌入式开发工程师;
? 单片机开发工程师;
? 高校电子信息、通信、物联网等专业的师生;
? 相关培训机构的学员。
配套资源获取
本书涉及的教学视频、程序源代码、教学PPT和开发工具等配套资源有两种获取方式:一是关注微信公众号方大卓越,回复数字39获取下载链接;二是在清华大学出版社网站(www.tup.com.cn)上搜索到本书,然后在本书页面上找到资源下载栏目,单击网络资源按钮进行下载。
售后服务
由于笔者水平所限,书中可能存在疏漏与不足之处,恳请广大读者批评与指正。读者在阅读本书的过程中如果有疑问,可以发送电子邮件到bookservice2008@163.com获得帮助。
康玮剑
2025年1月
康玮剑, 某知名科技公司软件总监,CSDN博客专家。全网粉丝超过10万。有10多年的软硬件开发经验。先后担任联发科技股份有限公司系统工程师、厦门斯坦道科学仪器股份有限公司嵌入式主管与物联网研究院副院长、厦门历思科技服务有限公司软件总监。长期从事嵌入式、物联网和云计算等领域的研发工作。工作期间技术成果丰硕,申请了多个发明专利,拥有多项软件著作权。目前致力于智能科学仪器的升级与赋能,以及物联网领域的知识探索与分享。
第1篇 基础知识
第1章 ESP32硬件概述 2
1.1 ESP32系列对比 2
1.2 ESP32-C3简介 3
1.3 ESP32-C3开发板简介 4
第2章 搭建开发环境 7
2.1 开发方式对比 7
2.2 搭建ESP-IDF开发环境 8
2.2.1 安装Visual Studio Code 9
2.2.2 安装Espressif IDF 9
2.2.3 配置ESP-IDF 10
2.2.4 安装ESP-IDF 10
2.3 Hello World示例程序 12
2.3.1 创建工程 12
2.3.2 配置工程 13
2.3.3 编译源码 15
2.3.4 下载固件 16
2.3.5 日志分析 18
2.3.6 快捷按钮 20
第3章 外设驱动控制 21
3.1 GPIO应用 21
3.1.1 GPIO简介 21
3.1.2 GPIO的常用函数 22
3.1.3 实践:通过GPIO监听按键 23
3.1.4 实践:通过GPIO控制LED亮灭 25
3.2 ADC应用 28
3.2.1 ADC简介 28
3.2.2 ADC的常用函数 29
3.2.3 实践:通过ADC读取实现光线强度检测 30
3.3 RTC应用 33
3.3.1 RTC简介 33
3.3.2 RTC的常用函数 33
3.3.3 实践:设置和获取RTC时间 34
3.4 UART通信 37
3.4.1 UART简介 37
3.4.2 UART的常用函数 37
3.4.3 实践:通过UART串口与计算机通信 38
3.5 I2C通信 41
3.5.1 I2C简介 42
3.5.2 I2C的常用函数 42
3.5.3 实践:通过I2C接口实现温度和湿度检测 43
3.6 SPI通信 46
3.6.1 SPI简介 46
3.6.2 SPI的常用函数 46
3.6.3 实践:通过SPI接口实现外部存储模块的读写 47
3.7 RMT应用 54
3.7.1 RMT简介 54
3.7.2 RMT的常用函数 54
3.7.3 实践:通过RMT接口实现RGB LED灯带控制 55
3.8 NVS应用 58
3.8.1 NVS简介 58
3.8.2 NVS的常用函数 58
3.8.3 实践:从NVS中读写8位有符号的整数 59
3.8.4 实践:从NVS中读写自定义结构体 62
第4章 RTOS入门 64
4.1 FreeRTOS概述 64
4.1.1 FreeRTOS简介 64
4.1.2 ESP-IDF版本的FreeRTOS 65
4.2 任务管理 65
4.2.1 任务管理简介 65
4.2.2 任务状态简介 66
4.2.3 任务管理的常用函数 66
4.2.4 实践:任务挂起和恢复 67
4.3 任务的优先级和调度 70
4.3.1 任务的优先级简介 70
4.3.2 任务的调度策略简介 70
4.3.3 实践:高优先级任务抢占低优先级任务 71
4.4 队列 76
4.4.1 队列简介 76
4.4.2 队列的常用函数 76
4.4.3 实践:基于队列的中断与任务间的通信 77
4.5 信号量 79
4.5.1 信号量简介 80
4.5.2 信号量的常用函数 80
4.5.3 实践:基于信号量实现同步功能 80
4.5.4 实践:基于互斥锁的资源操作保护 83
4.5.5 实践:通过信号量实现互斥功能导致优先级反转 86
4.5.6 实践:通过互斥锁优先级继承机制解决优先级反转 90
4.6 软件定时器 92
4.6.1 软件定时器简介 92
4.6.2 软件定时器的常用函数 93
4.6.3 实践:单次触发和自动重载定时器 93
第2篇 通信技术
第5章 Wi-Fi编程 98
5.1 Wi-Fi基础知识 99
5.1.1 Wi-Fi的相关术语 99
5.1.2 基于ESP32的Wi-Fi功能 99
5.1.3 基于ESP32的Wi-Fi模式 100
5.1.4 基于ESP32的Wi-Fi编程流程 101
5.1.5 基于ESP32的Wi-Fi初始化流程 102
5.1.6 基于ESP32的Wi-Fi初始化常用函数 103
5.2 Wi-Fi扫描 103
5.2.1 Wi-Fi扫描简介 103
5.2.2 Wi-Fi扫描的常用函数 103
5.2.3 实践:异步扫描所有的Wi-Fi AP接入点 105
5.2.4 实践:同步扫描指定的Wi-Fi AP接入点 108
5.3 Wi-Fi Station模式 108
5.3.1 Wi-Fi Station模式简介 108
5.3.2 Wi-Fi Station模式的常用函数 109
5.3.3 实践:以Wi-Fi Station模式连接AP接入点 109
5.4 Wi-Fi Soft-AP模式 114
5.4.1 Wi-Fi Soft-AP模式简介 114
5.4.2 Wi-Fi Soft-AP模式的常用函数 114
5.4.3 实践:以Wi-Fi Soft-AP模式开启AP接入点 114
5.5 ESP-NOW通信 119
5.5.1 ESP-NOW简介 119
5.5.2 ESP-NOW的常用函数 119
5.5.3 实践:基于ESP-NOW实现两个ESP32互相通信 120
第6章 Wi-Fi配网 126
6.1 Smart Config配网 126
6.1.1 Smart Config简介 126
6.1.2 Smart Config的常用函数 127
6.1.3 实践:基于Smart Config技术的EspTouch V2类型的Wi-Fi配网 128
6.1.4 实践:基于Smart Config技术的Airkiss类型的Wi-Fi配网 133
6.2 Soft-AP配网 135
6.2.1 Soft-AP配网简介 135
6.2.2 Soft-AP配网的常用函数 136
6.2.3 实践:基于Soft-AP的Wi-Fi配网 136
6.3 BluFi配网 143
6.3.1 BluFi配网简介 143
6.3.2 BluFi的常用函数 144
6.3.3 实践:基于BluFi的Wi-Fi配网 144
6.4 Wi-Fi配网失败的常见问题与解决办法 153
6.4.1 Wi-Fi配网失败的常见问题 154
6.4.2 实践:Wi-Fi连接失败的解决办法 155
6.4.3 实践:距离Wi-Fi接入点太远的解决办法 157
6.4.4 实践:不支持5GHz的解决办法 159
6.4.5 实践:找不到Wi-Fi接入点的解决办法 160
6.4.6 实践:Wi-Fi密码错误的解决办法 162
第7章 蓝牙通信 165
7.1 蓝牙基础知识 165
7.1.1 ESP Bluetooth架构 165
7.1.2 ESP Bluetooth Controller简介 165
7.1.3 ESP Bluetooth Hosts简介 166
7.1.4 ESP Bluetooth Profiles简介 167
7.1.5 ESP Bluetooth Application简介 167
7.1.6 ESP Bluetooth初始化流程 167
7.2 信标 168
7.2.1 信标箱简介 168
7.2.2 蓝牙广播和扫描的常用函数 169
7.2.3 实践:基于Beacon技术实现室内定位功能 169
7.2.4 实践:基于Beacon技术实现电子围栏功能 171
7.3 GAP通用访问控制 175
7.3.1 GAP简介 175
7.3.2 GAP的常用函数 176
7.3.3 实践:基于GAP实现蓝牙请求配对连接 176
7.4 GATT通用属性控制 182
7.4.1 GATT简介 182
7.4.2 GATT的常用函数 183
7.4.3 实践:基于GATT实现蓝牙通信 183
第3篇 网络编程
第8章 网络传输 194
8.1 网络接口简介 194
8.1.1 Socket简介 194
8.1.2 Sockets API的常用函数 194
8.2 IP地址 196
8.2.1 IP地址简介 197
8.2.2 ESP-NETIF的常用函数 197
8.2.3 实践:通过IP事件处理程序获取IP地址 199
8.2.4 实践:通过ESP-NETIF接口获取IP地址 199
8.2.5 实践:在Station模式下通过ESP-NETIF接口设置IP地址 200
8.2.6 实践:在Soft-AP模式下通过ESP-NETIF接口设置IP地址 203
8.2.7 实践:修改Soft-AP模式下默认的IP地址 206
8.3 TCP通信 208
8.3.1 TCP简介 208
8.3.2 TCP Sockets的常用函数 209
8.3.3 实践:ESP32作为TCP客户端与服务端通信 210
8.3.4 实践:ESP32作为TCP服务端与客户端通信 215
8.4 UDP通信 220
8.4.1 UDP简介 220
8.4.2 UDP Sockets的常用函数 220
8.4.3 实践:基于ESP32实现UDP通信和数据传输 221
第9章 网络应用 226
9.1 HTTP/HTTPS客户端应用 226
9.1.1 HTTP/HTTPS简介 226
9.1.2 HTTP/HTTPS客户端的常用函数 227
9.1.3 实践:基于esp_http_client实现HTTP客户端请求 228
9.1.4 实践:基于esp_http_client实现HTTPS客户端请求 234
9.2 MQTT客户端应用 234
9.2.1 MQTT简介 234
9.2.2 MQTT客户端的常用函数 235
9.2.3 实践:基于ESP32实现MQTT客户端连接MQTT代理服务器 236
9.3 OTA应用 243
9.3.1 OTA简介 243
9.3.2 HTTPS OTA的常用函数 243
9.3.3 实践:基于esp_https_ota实现远程固件升级 245
9.3.4 实践:基于esp_https_ota和HTTP/HTTPS实现设备主动升级 248
9.3.5 实践:基于esp_https_ota和MQTT实现云端触发升级 252
第4篇 项目实战
第10章 基于Wi-Fi技术的智能灯泡项目实战 258
10.1 智能灯泡的实现步骤 259
10.1.1 阿里云物联网平台准备工作 259
10.1.2 ESP32固件烧录并运行程序 263
10.2 智能灯泡功能演示 264
10.2.1 BluFi配网演示 264
10.2.2 在阿里云物联网平台上在线调试设备演示 265
10.2.3 通过微信小程序调试设备演示 267
10.2.4 其他功能演示 269
10.3 智能灯泡的ESP32程序源码解析 269
10.3.1 智能灯泡的系统架构 270
10.3.2 阿里云物联网设备身份安全认证 270
10.3.3 使用MQTT接入阿里云物联网平台 271
10.3.4 属性上报云端 273
10.3.5 云端远程控制 274
10.3.6 彩色灯泡控制与断电记忆 275
10.3.7 按键的长按和短按 276
10.3.8 其他功能源码解析 277
10.4 企业项目管理与量产 277
10.4.1 企业项目管理 277
10.4.2 开发调试环节的固件烧录 278
10.4.3 小批量内测环节的固件烧录 279
10.4.4 大批量生产环节的固件烧录 279
第11章 基于蓝牙技术的指纹密码锁项目实战 281
11.1 指纹密码锁实现步骤 282
11.1.1 硬件原理和接线方式 282
11.1.2 指纹密码锁的使用说明 284
11.1.3 ESP32固件烧录并运行程序 286
11.2 指纹密码锁功能演示 286
11.2.1 键盘功能演示 286
11.2.2 指纹功能演示 289
11.2.3 微信小程序功能演示 289
11.2.4 其他功能演示 291
11.3 指纹密码锁的ESP32程序源码解析 291
11.3.1 系统架构 291
11.3.2 矩阵键盘扫描 292
11.3.3 指纹模块管理 294
11.3.4 场景切换处理 300
11.3.5 蓝牙钥匙功能 301
11.3.6 其他功能解析 303