《Arduino真好玩:嵌入式开发项目一气呵成》[59M]PDF|百度网盘|亲测有效
《Arduino真好玩:嵌入式开发项目一气呵成》[59M]PDF|百度网盘|亲测有效

Arduino真好玩:嵌入式开发项目一气呵成 pdf下载

isbn:9787302710127

作者: 蔡杰

出版社 清华大学出版社
出版年 2026-04-01
ISBN 9787302710127
装帧 精装
评分 0.0(豆瓣)
限时特惠 00:00:00
活动结束后恢复原价
纸质书参考价 ¥8
电子版限时价 ¥0.00 省 8 元

选择版本

不满意全额退款
发货失败双倍赔偿
邮箱即时发送

内容简介

本篇主要提供Arduino真好玩:嵌入式开发项目一气呵成电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

产品特色

内容简介

不同于传统Arduino教程的碎片化知识堆砌,本书以完整的项目开发链路为核心,通过三篇递进式内容体系: Arduino基础知识篇(第1~3章)、实战准备篇(第4~13章)以及项目实战篇(第14~20章),从Arduino基础知识开始讲解,直至带领读者从零开始实现一个有趣又实用的多功能天气时钟。书中还整合了作者在众多物联网项目开发中积累的实战经验,为读者提供经过验证的问题解决方案。


本书第1篇讲解Arduino的发展历程、IDE的使用和Arduino编程的基础知识,通过本篇的学习,读者不仅可以熟练使用Arduino IED开发工具,还可为后续的实战项目打下坚实的理论基础。


第2篇详细讲解开发环境搭建、硬件选型以及实战项目所需的关键库使用方法。通过本篇的学习,读者不仅能够轻松完成后续的实战开发,还能掌握独立开发天气接口相关项目和各种显示屏项目的核心技能。


第3篇完整呈现天气时钟项目的实战开发过程,通过循序渐进的教学设计,读者将系统掌握项目框架搭建、多任务调度实现、UI设计及功能页面动态切换等核心开发技能。


本书适合对嵌入式物联网开发和智能硬件制作感兴趣的创客、电子爱好者阅读,也可作为高等院校相关专业学生的实践参考书,以及中小学科创教师开展项目式教学的辅助教材。无论你是刚接触Arduino的初学者,还是具备一定基础、希望系统提升项目综合开发能力的进阶者,本书都能通过清晰的逻辑框架与完整的项目驱动,帮助你扎实掌握Arduino开发的核心思路与实战能力,实现从理论到实践、从模块设计到系统设计的跨越。


作者简介

位从跨界学习中成长起来的技术实践者与创造者。

2010年毕业于南京工程学院经济管理系,于2014年开启自学之路,深耕Java、JavaScript等技术,成为一名全栈工程师。2020年,创立个人软件工作室,将技术转化为商业价值。

2023年机缘巧合下开始探索嵌入式领域,并在B站发布首个开源项目。其系列教程视频累计播放超百万,所分享的项目催生了一个活跃的复刻社区。项目在互动中持续完善,评论区里每一个具体的问题,都成了共同探索的信号,而每一次成功的复刻,都是一次新作品的诞生。


目录

目录



第1篇Arduino基础知识

第1章关于Arduino3

1.1概述3

1.2Arduino的优点4

1.2.1简洁的编程体验4

1.2.2丰富的库支持5

1.2.3简单的集成开发环境搭建5

1.3Arduino的缺点6

1.3.1性能损失6

1.3.2编译速度慢6

小结7


第2章Arduino IDE的使用8

2.1下载与安装8

2.2重要功能介绍9

2.2.1左边栏10

2.2.2菜单栏11

2.2.3构建区14

2.2.4串口工具区15

2.3配置文件16


第3章Arduino编程基础18

3.1Arduino程序的基本结构18

3.1.1setup函数18

3.1.2loop函数19

3.2基本数据类型20

3.2.1整数类型20

3.2.2浮点类型20

3.2.3字符与字节类型21

3.2.4布尔类型21

3.2.5其他特殊类型21

3.3变量与常量23

3.3.1理解变量23

3.3.2变量的作用域24

3.3.3变量的修饰符25

3.3.4变量的转换26

3.4运算符27

3.4.1算术运算符27

3.4.2赋值运算符27

3.4.3比较运算符28

3.4.4逻辑运算符28

3.4.5位运算符28

3.4.6其他运算符29

3.5控制结构31

3.5.1条件控制语句31

3.5.2多路选择控制语句31

3.5.3循环控制语句32

3.5.4跳转控制语句33

3.6预处理指令33

3.6.1#include34

3.6.2#define34

3.6.3#ifdef、#ifndef及#endif35

3.6.4#if、#elif及#else36

3.6.5#pragma36

3.6.6#error和#warning36

3.6.7Arduino特有的预处理指令37

3.7结构体与枚举37

3.7.1结构体37

3.7.2枚举38

3.8函数41

3.8.1函数的优点41

3.8.2Arduino内置核心函数41

3.8.3自定义函数46

3.8.4形参和实参48

小结50第2篇实 战 准 备


第4章实战项目介绍及准备53

4.1时钟功能53

4.1.1时钟页面53

4.1.2空气质量页面54

4.1.3天气预报页面54

4.1.4主题切换页面54

4.1.5计时器页面54

4.1.6恢复出厂设置页面54

4.1.7网络和城市配置页面55

4.2材料准备55

4.2.1杜邦线55

4.2.2面包板55

4.2.3屏幕56

4.2.4开发板58

4.2.5按键60

4.3软件准备61

4.3.1esp32开发板支持包61

4.3.2第三方库64


第5章TFT_eSPI库详解66

5.1连接开发板与屏幕66

5.1.1SPI通信66

5.1.2屏幕SPI转接板67

5.1.3开发板引脚69

5.1.4开发板与屏幕的连接效果图71

5.2TFT_eSPI库配置文件讲解72

5.2.1User_Setup.h文件讲解72

5.2.2配置示例目录75

5.2.3多配置文件切换76

5.3烧录示例程序77

5.3.1完整配置文件展示77

5.3.2AirM2M_CORE_ESP32C3开发板参数讲解78

5.3.3烧录示例79

5.4TFT_eSPI库源码解析81

5.4.1TFT_eSPI.h头文件概览81

5.4.2核心类TFT_eSPI84

5.4.3扩展类TFT_eSprite94

小结97


第6章OneButton库详解99

6.1连接开发板与按键99

6.1.1轻触按键工作原理99

6.1.2轻触按键连接方式100

6.1.3按键与开发板连接效果图100

6.2编写按键监听程序101

6.2.1原始监听程序101

6.2.2监听程序加入软件消抖102

6.3OneButton库的使用103

6.3.1OneButton和OneButtonTiny103

6.3.2OneButton.h头文件解析104

6.3.3OneButton库综合示例107

小结109


第7章TaskScheduler库详解110

7.1编写多任务调度程序110

7.1.1使用delay函数定时执行110

7.1.2使用millis函数定时执行111

7.2TaskScheduler库源码解析111

7.2.1TaskScheduler库源码目录112

7.2.2编译时选项112

7.2.3Scheduler类114

7.2.4Task类116

7.2.5StatusRequest类120

7.3TaskScheduler综合示例122

7.3.1控制板载LED闪烁122

7.3.2使用按键动态调整任务123

7.3.3任务间协作124

7.4TaskScheduler和FreeRTOS126

7.4.1TaskScheduler和FreeRTOS的区别126

7.4.2TaskScheduler和FreeRTOS的选择127

小结127


第8章ArduinoJson库详解128

8.1JSON介绍128

8.1.1JSON的定义和历史128

8.1.2JSON的特点128

8.1.3JSON的语法规则130

8.1.4JSON的应用131

8.2ArduinoJson库的使用132

8.2.1ArduinoJson库源码目录132

8.2.2JsonDocument类133

8.2.3JsonArray类137

8.2.4JsonObject类139

8.2.5JsonVariant类140

8.2.6数据处理函数141

8.2.7编译时选项144

8.3ArduinoJson综合示例146

8.3.1创建JSON字符串147

8.3.2解析JSON字符串148

小结149


第9章Preferences库详解151

9.1数据持久化151

9.2Flash分区表152

9.2.1分区表讲解152

9.2.2分区表验证153

9.3Preferences库源码解析154

9.4Preferences库示例157

9.4.1写入数据158

9.4.2读取数据158

小结159


第10章WiFi库详解160

10.1WiFi库的架构160

10.2WiFi库源码解析161

10.2.1WiFiType.h头文件161

10.2.2WiFiSTAClass类162

10.2.3WiFiAPClass类166

10.2.4WiFiScanClass类168

10.2.5WiFiGenericClass类172

小结173


第11章WebServer库详解174

11.1WebServer库源码解析174

11.1.1构造函数174

11.1.2服务器控制函数175

11.1.3认证相关函数176

11.1.4请求处理函数176

11.1.5请求信息获取函数178

11.1.6响应发送函数179

11.1.7配置函数180

11.2WebServer库综合示例181

小结183


第12章HTTPClient库详解185

12.1HTTPClient库源码解析185

12.1.1初始化和连接管理函数185

12.1.2请求配置函数187

12.1.3HTTP请求函数188

12.1.4头管理函数189

12.1.5响应处理函数190

12.1.6Cookie管理函数191

12.2HTTPClient库综合示例191

小结193


第13章天气接口与第三方库194

13.1天气接口介绍194

13.2和风天气接入准备195

13.2.1生成和风天气密钥195

13.2.2注册和风账号及创建项目196

13.3和风天气API的使用198

13.3.1API介绍198

13.3.2和风天气JWT介绍200

13.3.3使用DuduUtil库生成JWT201

13.3.4使用ArduinoZlib库解压返回的数据201

13.3.5和风天气状态码202

小结202


第3篇项 目 实 战


第14章搭建项目框架207

14.1创建项目207

14.1.1新建项目207

14.1.2构建项目目录208

14.1.3添加字库与图片文件208

14.2构建功能页面211

14.2.1在common.h中定义页面枚举211

14.2.2编写TFT_eSPI库的初始化函数211

14.2.3为每个页面绘制简单的文字212

14.2.4编写按键相关代码213

小结215


第15章获取天气信息216

15.1获取天气信息的准备工作216

15.1.1NTP对时216

15.1.2添加结构体以及和风天气认证相关内容218

15.1.3URL编码220

15.1.4单片机重启221

15.2获取和风天气信息223

15.2.1信息获取流程讲解223

15.2.2将locationID和经纬度存入NVS224

15.2.3定义获取天气信息的函数226

15.3编写测试代码236

小结238


第16章绘制时钟页面239

16.1双色主题239

16.1.1主题管理239

16.1.2改造屏幕初始化函数240

16.2绘制页面241

16.2.1组件分类241

16.2.2定义固定组件绘制函数241

16.2.3定义时间组件绘制函数242

16.2.4定义天气组件绘制函数246

16.2.5创建动画组件绘制任务252

16.2.6修改时钟页面绘制函数256

16.3编写测试代码257

小结258


第17章绘制其他页面259

17.1空气质量页面259

17.1.1初级版本绘制函数259

17.1.2进阶版本绘制函数261

17.1.3进阶版本的优势261

17.2天气预报页面262

17.2.1根据代码绘制天气图标262

17.2.2修改天气预报页面绘制函数263

17.3主题切换页面265

17.3.1修改主题切换页面绘制函数265

17.3.2创建长按开始事件回调函数265

17.4计时器页面267

17.4.1动态数字绘制函数267

17.4.2修改计时器页面绘制函数268

17.4.3处理按键事件回调函数269

17.5出厂设置页面270

17.5.1修改出厂设置页面绘制函数270

17.5.2处理长按开始事件回调函数271

17.6编写测试代码272

17.6.1修改主循环272

17.6.2修改双击事件回调函数273

小结274


第18章加入配置功能275

18.1配置页面设计思路275

18.1.1天气时钟运行流程概述275

18.1.2配置页面源代码276

18.2动态拼接WiFi名称下拉菜单277

18.2.1扫描WiFi277

18.2.2拆分Web配置页面278

18.3启动Web服务器282

18.3.1将WiFi信息保存到NVS282

18.3.2定义路由匹配时的处理函数282

18.3.3定义Web服务器启动函数284

18.4编写测试代码285

小结287


第19章项目优化288

19.1定时更新天气信息288

19.1.1定义回调函数288

19.1.2创建定时任务289

19.1.3定义任务启用函数290

19.2重构启动流程290

19.2.1重构网络连接函数291

19.2.2编写setup函数292

小结294


第20章自定义字库和动画295

20.1生成自定义字库295

20.1.1字体生成软件295

20.1.2准备字体源297

20.1.3生成字库298

20.1.4使用新字库298

20.2生成自定义动画300

20.2.1图片取模软件300

20.2.2生成图片数据300

20.2.3制作图片头文件303

20.2.4自定义示例动画资源304

小结306


结语307


前言/序言

前言



许多朋友误以为我大学主修的是计算机,但事实上,我毕业于经济学专业。大学期间唯一与计算机相关的经历,就是裸考通过了全国计算机等级考试(NCRE)二级——还是班里唯一满分通过的。

大学毕业后,我进入民政局某下属单位从事会计工作。每月月初都需要处理大量重复性的统计和制表工作,这些机械枯燥的流程持续了一年后,我意识到: 既然都是固定模式的统计,完全可以用程序自动化完成。这个构想一经形成,我便着手搜集资料,最后决定开启Java自学之路。

经过半年多的努力,我的第一个程序写好了,原本需要三四天才能完成的Excel统计工作,现在只需单击几下鼠标即可生成。尽管这个程序使用着非常传统的SSH(Spring,Struts2,Hibernate)框架,也没有惊艳的UI设计,但由此获得的成就感却让我深深着迷。在此后的数年里,我利用业余时间持续深入学习Java及其他计算机知识,并无偿为单位开发了《仓储管理系统》《信息查询系统》《数据自动上报系统》《文件管理系统》等一系列实用工具软件。

2020年,当发现单位已经没有让我施展拳脚的地方后,我成立了自己的软件工作室,并先后和多家公司成为合作伙伴。2023年下半年,机缘巧合下,我的女儿看中了一款太空人时钟,但我觉得这款产品屏幕太小,装饰意义大于实用功能。为了满足她的期待,我承诺亲手制作一款大屏且功能更强的时钟。当时我对嵌入式开发尚不熟悉,便开始系统检索网络资料,正是在这样的技术探索中,Arduino进入了我的视野。

在接触Arduino之前,我从未想过嵌入式开发可以如此简单高效——没有复杂的配置,开发者无须深究底层原理,只需要将精力集中在项目逻辑上。借助它的易用性,我很快上手,并用一个月时间补齐了PCB、基电、3D建模和C语言的基础知识,再用一个月完成成品,最终兑现了对女儿的承诺。时钟成品的效果出乎意料得好,发到朋友圈后,不少朋友留言求赠,于是我多做了一些送给他们。后来,朋友建议我把制作过程发到B站上。抱着试试看的心态上传后,反响远超预期——评论区挤满了求教程的留言,甚至不少人想动手复刻。看到大家的热情,我不仅把整个项目开源在了B站,代码和3D打印文件都能自由下载,还制作了手把手复刻教程,一步步带领大家做出自己的时钟。

当网友把复刻成功的照片晒在评论区时,我甚至比他们还激动。之后,我把大部分精力都投入了B站,无论是留言还是私信,只要网友遇到问题,我都会认真回复,逐一解答。在此后的一年多里,我又陆续开源了多个作品,包括EasyMatrix像素时钟、CC温湿度监测仪、USB 3.0 HUB、Clever计算机性能监控副屏等。项目难度逐渐升高,我也在不断挑战自己。可惜的是,这些项目都只教了复刻,从未系统讲解过源码。尽管网友总在评论区呼吁源码解析,但由于个人精力有限,这成了这些项目唯一的未尽之憾。

2025年4月,在翻看B站私信时,我注意到一条来自清华大学出版社编辑杨迪娜的消息,她提出想与我合作出版一本Arduino相关的书。起初怀疑是诈骗,未放心上,但几次沟通后,发现是我多虑了,于是我们一拍即合。之后,我与编辑对书中的内容进行了多次详细讨论。2025年7月,《Arduino真好玩: 嵌入式开发项目一气呵成》正式立项,这本书终于让我有机会弥补遗憾。

本书的特色

目前市面上的Arduino书籍多采用模块化讲解,如温湿度模块、红外模块等。这种模式虽便于学习单一功能,但很难帮助读者建立完整项目思维。本书创新性地采用项目驱动模式,从系统讲解Arduino基础开始,带领读者从零实现一个完整项目——涵盖硬件搭建、编程到调试全流程,真正掌握开发思维。

在书中还穿插了“避坑指南”板块: 既有我自己踩过的“雷”,也有B站网友复刻时遇到的“坎儿”。尤其当书中出现“注意”提示时,读者朋友们就一定要真的注意了。

实战项目的选择

在此次实战项目的选择上,我思考了很久。若考虑趣味性,除了USB 3.0集线器外,其余项目均符合;若考虑所用模块数量、知识点广度,温湿度仪最合适;若考虑代码设计趣味性,像素时钟最具教学意义。然而,这些项目均需电路设计基础,复刻更需要定制PCB打样,对于刚入门Arduino的读者来说,会有难度。

因此我最终确定以天气时钟作为本书的实战项目。其硬件需求极其简单: 仅需一块ESP32C3开发板、一块带转接板的屏幕、一个四脚按钮、一块面包板及十余根杜邦线,成本低廉且搭建便捷。此外,天气时钟完美地平衡了三大核心需求: 动态天气显示的趣味性、日常使用的实用性,以及代码层面的教学价值。

开发环境

本书的开发环境如下。请读者注意,ESP32支持包和一些库的版本,必须和书中保持一致,每个版本的函数接口可能不一样,如因版本不一致导致的编译和运行问题,排查起来会非常困难。

操作系统: 64位Windows 10/11。

开发工具: Arduino IDE 2.3.6(需通过开发板管理器安装ESP32支持包v2.0.9)。

硬件平台: ESP32C3开发板(具体型号: AirM2M_CORE_ESP32C3)。


作者2026年4月