Talk is cheap,JUST DO IT
基
于
i
E
S
P
D
u
n
o
的
智
慧
物
联
开
发
宝
典
四博智联
序
据美国国家大气监测组织说 2015 年是厄尔尼诺年,主要指海洋洋面温度异常增暖,从
而造成地球大气环流异常的现象,这种现象会对地球自然生态带来消极影响。想想也是,一
只巴西亚马逊的蝴蝶扇扇翅膀,就可能给大上海带来一场大风暴,何况海洋温度升高这一等
一的全球大事?其实,人类社会未尝没有厄尔尼诺,尤其是科技、资本这类颜值很高的东东,
给社会带来的改变说销魂蚀骨也不为过。幸运的是,人类自己总要把握自己命运的,是好是
坏取决于人们努力的方向。2015 年的互联网+、大众创新、全民创业,以及物联网真正地开
始落地,给相关产业的汪洋大海增温不少,所带来的是社会的厄尔尼诺还是新世界的起点,
取决于我们的行动——那就是在这片热土中,务实而不虚夸,勤奋而非取巧,把热度变为踏
踏实实的质感,形成产业的良性循环,在这个实体企业的寒冬中点亮未来高技术制造的明灯。
因此,在我从师兄李洪刚博士那里了解到要做这样一本书时,一开始我就是赞同的。(句式
没‐有‐错!)
李博士做企业多年,其嵌入式和云计算平台的开发技术炉火纯青,更经历了中国科学院
的学习与锤炼,在技术视野、市场把握、战略机遇等方面都已达到了更高的境界。他作为四
博智联公司的联合创始人,主导了深圳四博智联公司的创立和发展。公司的硬件设计和研发
则由尚留记博士负责,他和杨平博士均毕业于中国科学院自动化所,其中尚博以对国家核电
控制事业精益求精的精神对待公司产品的设计,而杨博则主导了公司整个产品系列的固件程
序开发和嵌入式设计。易称福作为中山大学的博士,同时也是中国科学院的博士后,因此,
他需要做更重要的工作——市场拓展。四位博士的共同努力,使四博智联的产品日益壮大,
在短时期内就获得国内外业界同行的关注。在这个历程中,苦于人们对物联网落地的困惑以
及对技术门槛的畏惧,深感有必要把自身创业实践中的思想、技术、经验、教训拿出来分享,
共同培育万众创新的大好局面,同时也成为鞭策自身向着更新、更高方向发展的一股力量。
本人忝列公司的战略顾问,却往往问而不顾,甚是惭愧。在得知成书意向后,遂自告奋勇,
参与捉刀代笔,希望能为开源社区和智能硬件的发展贡献绵薄之力。
本书由李、杨二位博士草拟了大纲并提供了所用到的大部分源代码,本人对其进行了逐
一测试,进一步验证了产品的有效性,并撰写了前两篇内容;尚博提供了杠杠的硬件环境,
易博则以他专业的素养指导了很多具体写作的细节;最后又由李博撰写了第三篇内容并审阅
了全书。在此,特为本书付梓做出了辛勤努力的同伴致以真挚的感谢——同伴们的精诚团结
I
与无私合作是这项任务能够按时完成的充要条件,当然也离不开 Arduino 和 github 开源社区
的重要支持,在此一并谢过。
最后,也是最重要的,向在各位背后默默付出,无条件支持我们的家人致以最高的敬意!
何晨光 博士
中国科学院深圳先进技术研究院
2016 年 1 月 15 日于西丽大学城
II
前言
欢迎来到“JUST DO IT”的世界!—— 我很喜欢这类科技应用书籍中最惯常出现的句式,
虽然落了些俗套,但言简意赅,同高级编程语言中每次必讲的首课“Hello, World !”异曲同
工。是的,本书就是本有关指导开源硬件开发和应用的“Hello, World”。在本书中你将能够
接触到当下最流行的开源硬件系统——Arduino——特别适于各种小白级大咖们学习和掌握
对硬件的编程与控制方法。基于此,本书立足于四博智联(Doit)自主开发的 ESPDuino 物
联网开发环境,将传统的 Arduino 赋予了更加便利和丰富的功能,为当下风起云涌的物联世
界又提供了一柄屠龙宝刀,感谢它给我们带来了更多的可能性。
ESPDuino 正如其名称所示,来源于两个词根 ESP 和 DUINO,前者指今年在物联网领域
大行其道的 ESP8266 系列 WiFi 芯片,后者则指 Arduino。四博智联的 Doiter 们将其二者有机
地结合起来,构造了自主的 SDK 环境,再辅以公司已有的久经考验的成熟云计算平台,在
稳定性、开发效率、可扩展性等方面都有了大大的提高;同时,以长期致力于开源社区的分
享精神初步构建的 ESPDuino 生态社区,形成了崭新的、独具特色的物联网开发环境。所以,
无论你是小白还是大咖,无论是搞硬件还是软件,甚至无论你是哪个行业,只要对物联网感
兴趣,都可以借助本书的脉络一试物联技术开发的风采,真正将传说中各种华丽丽的智能控
制和物联网应用落在实处——毕竟,踩在大地上的感觉还是踏实许多。
本书主要讲述 ESPDuino 在物联网的一些典型环境中,是如何达到的所需的技术要求的,
并一步一步实现给大家看。在这一过程中,理论不会涉及太多,但关键原理会以简明易懂的
方式进行阐述。 阅读本书也许还需要具备一些初步的 C 语言编程知识,至于对电子硬件的
了解,初中物理水平就够了(也许还可以更少)。本书重点是采用亲自实践的办法,用“HOW
TO”的方式告诉你应该怎么做。在每一章的结束,你都可以掌握一些最有用的技术,最终,
可以独立地开发一些物联网项目,这也是本书的目的。
本书的内容分为主要三个部分:基础篇、进阶篇和产品篇。每一篇下又有若干章节,会
独立讲授一些在物联开发中所遇到的问题和解决方案。所以,有一定基础的读者可以按需挑
选相关内容来阅读。初学者建议按照章目顺序学习,由简到繁,这样可以形成技术的累积,
构建自己的技术框架,以最少时间获得前人多年的技术开发经验,倘如此,真正是开卷有益。
本书内容概述如下:
一、基础篇从缘起讲述了 ESPDuino 的来龙去脉,手把手讲述了相应的开发环境,通过
III
一个读取服务器时钟的例子告诉我们硬件与外部世界是如何联系的。接着,会学习如何让硬
件按照你想要的方式来控制,本篇末尾的“盲连接”直接帮你搞定了物联世界的“最后 500
米”。
二、进阶篇则带你进入到你也许自以为很熟悉的 TCP/IP 网络,包括 Internet 的 Web 服
务以及 Web 浏览器,包括很多细节。但本篇会告诉你为什么以及如何在底层协议上实现
ESPDuino 硬件为物联网环境提供服务的机制,这些服务都是“超视距”的,使读者知其然
也知其所以然,因此也是最为有用的,不要错过。
三、产品篇综合前两篇的各种技术,帮助你形成项目的基本技术框架。通过物联网的设
备接入、和微信控制的有机结合、智能坦克小车的设计一直到 ESPDuino 的智能信息站、初
级的智能机器人手臂的产品级开发实践,相信会为你的物联人生开拓更广阔的视野。尤其点
赞的是,根据本篇内容,你会做出一模一样的智能产品,甚至更酷更炫——不怕你做不到,
只怕你想不到!
在学习过程中,实验所需的开发板、软件兴趣小组的信息以及开源社区的资源,包括本
书的简易电子版,都可以在四博智联公司以及本书的官方网站上获得:www.doit.am,点进
去又是一个大千世界!
光说不练嘴把式,光练不说傻把式,又说又练才是真把式。西谚有云:Talk is cheap,
那么大伙一起 Do 起来吧——Just Do IT!
四博智联 Doiters
2016 年 1 月 15 日
本书抛砖引玉,欢迎吐槽 !
IV
目录
I
III
V
序
前言
目录
一、基础篇 ....................................................................................................................................... 1
第 1 章 从 Arduino 谈起................................................................................................................ 1
1.1 Arduino 的前世今生 ......................................................................................................... 1
1.1.1 Arduino 能做什么 .................................................................................................. 1
1.1.2 为什么选择它 ........................................................................................................ 2
1.1.3 优点?缺点? ........................................................................................................ 4
1.2 ESP8266 是什么 ................................................................................................................ 4
1.2.1 ESP8266 特点 ......................................................................................................... 5
1.2.2 为什么要用 ESP8266 ............................................................................................. 6
1.2.3 ESP8266 使用场景 ................................................................................................. 7
1.3 什么是 ESPDuino .............................................................................................................. 7
1.3.1 强强联合就开挂 .................................................................................................... 7
1.3.2 ESPDuino 庐山真面 ............................................................................................... 8
1.3.3 学或者玩,Just Do It ............................................................................................. 9
第 2 章 如何安装 ESPDuino 开发环境 ....................................................................................... 10
2.1 欲善其事必利其器 ......................................................................................................... 10
2.1.1 安装 ESPDuino 开发环境 .................................................................................... 10
2.1.2 搭建 ESPDuino 环境第二种方法 ........................................................................ 16
2.1.3 要点及注意事项 .................................................................................................. 18
2.1.4 常见问题 .............................................................................................................. 18
2.2 样例程序 ........................................................................................................................ 19
2.2.1 程序功能 .............................................................................................................. 19
2.3 源码分析 ........................................................................................................................ 22
第 3 章 键控 LED 灯,闪闪告诉你............................................................................................. 24
3.1 引言 ................................................................................................................................ 24
3.2 物料准备 ........................................................................................................................ 24
3.2.1 硬件 ...................................................................................................................... 24
3.2.2 软件 ...................................................................................................................... 25
3.3 三个不同的闪灯示例 ..................................................................................................... 25
3.3.1 自动闪烁 .............................................................................................................. 25
3.3.2 按键控制 .............................................................................................................. 25
3.3.3 中断方式 .............................................................................................................. 27
第 4 章 PWM,你也做得到 ....................................................................................................... 29
4.1 PWM 的原理 .................................................................................................................. 29
4.2 实验效果 ........................................................................................................................ 29
4.3 源码分析 ........................................................................................................................ 30
第 5 章 Soft AP—连上我就对了 ................................................................................................. 31
5.1 什么是 Soft AP 模式 ....................................................................................................... 31
V
5.2 实验效果 ........................................................................................................................ 32
5.3 源码分析 ........................................................................................................................ 33
第 6 章 STA 连接—我要连… ....................................................................................................... 35
6.1 什么是 STA 模式 ............................................................................................................. 35
6.2 连接过程 ........................................................................................................................ 35
6.2.1 STA 连接 WiFi 路由器 .......................................................................................... 35
6.2.2 实验效果 .............................................................................................................. 36
6.2.3 源码分析 .............................................................................................................. 37
6.3 AP+STA 共存模式 .......................................................................................................... 38
6.3.1 AP+STA 工作原理 .............................................................................................. 38
6.3.2 实验效果 .............................................................................................................. 38
6.3.3 源码分析 .............................................................................................................. 39
第 7 章 Scan WiFi—众里寻他千百度 ......................................................................................... 41
7.1 我扫故我在 .................................................................................................................... 41
7.2 试验效果 ........................................................................................................................ 41
7.3 源码分析 ........................................................................................................................ 42
第 8 章 从 SmartConfig 到 AirKiss ............................................................................................... 43
8.1 SmartConfig 的作用........................................................................................................ 43
8.1.1 为什么会有 SmartConfig ..................................................................................... 43
8.1.2 SmartConfig 工作流程: ..................................................................................... 43
8.1.3 SmartConfig 工作原理 ......................................................................................... 44
8.1.4 实现细节 .............................................................................................................. 45
8.2 SmartConfig ESPDuino .................................................................................................... 46
8.2.1 工作流程 .............................................................................................................. 46
8.2.2 源码分析 .............................................................................................................. 47
8.3 手机设置 ........................................................................................................................ 48
8.3.1 通过专用 app 设置 .............................................................................................. 48
8.3.2 通过微信设置 ...................................................................................................... 52
二、进阶篇 ..................................................................................................................................... 55
第 9 章 TCP Server/TCP Client ..................................................................................................... 55
9.1 TCP Server ....................................................................................................................... 55
9.1.1 实验步骤 .............................................................................................................. 55
9.1.2 源码分析 .............................................................................................................. 58
9.2 TCP Client ........................................................................................................................ 59
9.2.1 实验步骤 .............................................................................................................. 59
9.2.2 具体方法 .............................................................................................................. 60
9.2.3 源码分析 .............................................................................................................. 70
第 10 章 UDP 服务 ........................................................................................................................ 72
10.1 UDP Server ...................................................................................................................... 72
10.2 实验步骤 ........................................................................................................................ 72
10.3 源码分析 ........................................................................................................................ 76
第 11 章 WebServer,远程控制硬件 ........................................................................................... 78
11.1 连接人和硬件的桥梁 ..................................................................................................... 78
11.2 实验步骤 ........................................................................................................................ 78
VI
11.3 源码分析 ........................................................................................................................ 81
第 12 章 通过 Web OTA 升级固件 ............................................................................................... 85
12.1 什么是 web OTA ............................................................................................................. 85
12.2 实验步骤 ........................................................................................................................ 85
12.2.1 设置固件环境参数 .............................................................................................. 85
12.2.2 使用 STA 模式 ...................................................................................................... 89
12.2.3 使用 AP 模式 ....................................................................................................... 91
12.3 源码分析 ........................................................................................................................ 93
第 13 章 一个准产品的例子 ......................................................................................................... 95
13.1 产品概述 ........................................................................................................................ 95
13.2 功能描述 ........................................................................................................................ 95
13.3 实验步骤 ........................................................................................................................ 96
13.4 项目结构分析 .............................................................................................................. 108
13.4.1 主程序分析 ........................................................................................................ 108
13.4.2 HTTP 服务器配置 .............................................................................................. 110
13.4.3 网络任务处理 .................................................................................................... 111
13.4.4 协议解析 ............................................................................................................ 112
13.4.5 头文件处理 ........................................................................................................ 113
13.5 所用技术小结 .............................................................................................................. 115
三、产品篇 ................................................................................................................................... 116
第 14 章 DoIT 智能控制三色灯 .................................................................................................. 116
14.1 产品概述 ...................................................................................................................... 116
第 15 章 微信控制智能小车 ....................................................................................................... 116
第 16 章 ESPDuino MP3 ............................................................................................................... 118
第 17 章 ESPDuino WiFi 屏智能信息站 ...................................................................................... 119
第 18 章 ESPDuino 机械臂 ......................................................................................................... 120
附录‐ESP8266 Arduino 核心说明 ....................................................................................................... 122
致谢
129
VII