Photon物联网编程
从零开始
[美]
克里斯多佛•拉什(Christopher Rush)
著
郭俊凤 译
北 京
Christopher Rush
Programming the Photon:Getting Started with the Internet of Things
EISBN:978-0-07-184706-3
Copyright © 2016 by McGraw-Hill Education.
All Rights reserved. No part of this publication may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including without limitation photocopying, recording, taping, or any
database, information or retrieval system, without the prior written permission of the publisher.
This authorized Chinese translation edition is jointly published by McGraw-Hill Education and Tsinghua
University Press Limited. This edition is authorized for sale in the People’s Republic of China only,
excluding Hong Kong, Macao SAR and Taiwan.
Translation copyright © 2018 by McGraw-Hill Education and Tsinghua University Press Limited.
版权所有。未经出版人事先书面许可,对本出版物的任何部分不得以任何方式或途径复制或传播,
包括但不限于复印、录制、录音,或通过任何数据库、信息或可检索的系统。
本授权中文简体字翻译版由麦格劳
-
希尔
(
亚洲
)
教育出版公司和清华大学出版社有限公司合作出版。
此版本经授权仅限在中国大陆地区销售、不能销往中国香港、澳门特别行政区和中国台湾地区。
版权
©2018
由麦格劳
-
希尔
(
亚洲
)
教育出版公司与清华大学出版社有限公司所有。
北京市版权局著作权合同登记号 图字:01-2018-0333
本书封面贴有
McGraw-Hill Education
公司防伪标签,无标签者不得销售。
版权所有,侵权必究。侵权举报电话:010-62782989 13701121933
图书在版编目(CIP)数据
Photon
物联网编程从零开始
/ (
美
)
克里斯多佛
•
拉什
(Christopher Rush)
著;郭俊凤 译
.
—北京:
清华大学出版社,
2018
书名原文:
Programming the Photon: Getting Started with the Internet of Things
ISBN 978-7-302-49783-7
Ⅰ
.
①
P
… Ⅱ
.
①克… ②郭… Ⅲ
.
①互联网络-应用-程序设计 ②智能技术-应用-程序
设计 Ⅳ
.
①
TP393.409
②
TP18
中国版本图书馆
CIP
数据核字
(2018)
第
037092
号
责任编辑:王 军 韩宏志
装帧设计:牛静敏
责任校对:曹 阳
责任印制:李红英
出版发行:清华大学出版社
网 址:
http://www.tup.com.cn
,
http://www.wqbook.com
地 址:北京清华大学学研大厦
A
座
邮 编:
100084
社 总 机:
010-62770175
邮 购:
010-62786544
投稿与读者服务:
010-62776969
,
c-service@tup.tsinghua.edu.cn
质 量 反 馈:
010-62772015
,
zhiliang@tup.tsinghua.edu.cn
印 装 者:北京嘉实印刷有限公司
经 销:全国新华书店
开 本:
148mm
×
210mm
印 张:
5.875
字 数:
164
千字
版 次:
2018
年
7
月第
1
版
印 次:
2018
年
7
月第
1
次印刷
定 价:
49.80
元
——————————————————————————————————————————
产品编号:
078174-01
译 者 序
Particle(www.particle.io)公司提供全球最完善的开源物联网软硬
件开发平台,自
2013
年该公司推出第一款基于
TI CC3000
的
STM
CORTEX M3
开源开发板以来,Particle
以其超强的软件支持帮助开发
者将产品接入网络,提供
Arduino
的
IDE、配套控制
App、网页端编
译软件、应用开发
SDK、JS
开发库等支持。其云服务能让应用于量产
的
Particle
硬件随时随地接入云端、集中维护,并能实现在线更新固
件、网络访问、数据安全等功能。
Particle
推出的
Photon
是一款功能强大、开发资源极其丰富、上
手开发非常容易的Wi-Fi物联网开发模块。它基于ST公司的Cortex M3
内核微处理器以及
BroadCom
公司的
Wi-Fi
芯片,可通过
USB
进行供
电及代码调试、下载。Photon
尺寸很小,却具有强大的处理性能,拥
有完整的生态系统和良好的兼容性,在复杂应用中的表现更出色。
Particle
公司同时提供基于浏览器的集成化开发环境(Web IDE),
拥有非常丰富的库和支持各种应用的参考例程,方便全球的开发人员
进行代码分享,非常适合嵌入式工程师、网页开发工程师、Arduino
爱好者以及
IoT
产品企业便捷地编写自己的固件,创建自己的专属网
站和手机
App。
对初学者而言,学习
Photon
完全不需要了解其内部硬件结构和寄
存器设置,仅知道它的端口作用即可;可以不懂硬件知识,只要会简
单的
C
语言,就可用
Photon
编写程序,
只要设备加了电,固件就会
运行。
本书共分
9
章。第
1
章简要介绍微控制器、Arduino
和物联网(IoT)
等。第
2
章讨论将
Photon
开发板连接到
Particle
云并开始编程的多种
方式,并简要介绍
Particle Web IDE。第
3
章讲述用于给
Photon
编程
的
C
语言的基本编程术语。第
4
章讨论如何控制发光二极管(LED)、
继电器和蜂鸣器等输出设备。第
5
章给一些输入设备编程,例如开关、
温度感应器等。第
6
章探讨如何使用
Particle
函数通过
Internet
进行控
制,如何获得温度设备的读数并显示在
Web
上。第
7
章介绍
Particle
防
护板和可用的扩充板,说明它们如何使项目更容易完成,而不必设计
和测试电路,包括继电器防护板、稳压防护板、JTAG、Arduino
防护
板、Internet
按钮等。第
8
章介绍如何使用
IFTTT Web
服务控制
Photon
开发板上的电路,以及如何使用
Photon
开发板控制某些
Web
服务,
例如
Twitter。第
9
章能让读者很好地根据
RGB LED
的闪烁和颜色理
解
Photon
发生了什么,进而掌握排除设备故障技术。
本书适合电子爱好者、机器人爱好者和
Photon
初学者阅读,也可
用作院校电子科技实践活动的参考书。
这里要感谢清华大学出版社的李阳和韩宏志编辑,这几位编辑为
本书的翻译投入了巨大热情,付出了很多心血。没有你们的帮助和鼓
励,本书不可能顺利付梓。本书主要章节由郭俊凤翻译,参与翻译的
还有陈妍、何美英、陈宏波、熊晓磊、管兆昶、潘洪荣、曹汉鸣、高
娟妮、王燕,在此一并表示感谢。
对于这本经典之作,译者本着“诚惶诚恐”的态度,在翻译过程
中力求“信、达、雅”,但鉴于译者水平有限,错误和失误在所难免,
如有任何意见和建议,请不吝指正。
译 者
作 者 简 介
Christopher Rush
拥有计算机科学学位,最近
10
年一直在一家
电子公司的单板计算部门担任产品经理。Christopher
还维护着一个
MakerSpace
博客(www.rushmakes.com),为流行的开发板和附件提供
评论、教程和用户指南,包括
Raspberry Pi、Arduino、BeagleBone
等。Christopher
是
30 BeagleBone Black Projects for the Evil Genius
一书
的作者。
致 谢
我要感谢
Mike McCabe
和
McGraw-Hill Education
团队的大力支
持,与你们再次合作非常愉快。
我还要将本书献给我的伙伴
Jennifer Wozniak,像往常一样,她不
断地鼓励、激励我,没有她在我身边,我会迷失方向的。
前 言
本书全面介绍如何为
Particle Photon
开发板编程。Particle Photon
是一个真正的物联网设备,它允许编写代码,使用云创建电子项目。
它完全可用作项目的大脑,还可使用
Internet
远程控制和收集数据,
来扩展功能。
幸好,Photon
平台采用了
Arduino
样式的编程语言,同时具备自
己的编程功能。这样就可以使用
Arduino
领域的海量资源,包括现有
的项目和示例。
为什么使用Photon?Photon开发板由Particle团队开发,在2014年11
月面市,价格仅19美元。它是独一无二的,使用Particle云提供了独特
的硬件和软件体验,可通过Web IDE编程。Photon开发板取代了Particle
Core,后者通过Kickstarter活动筹措了50多万美元,配备了Broadcom
BCM43362 Wi-Fi芯片,而不是TI CC3000。
本书旨在使读者能开始使用
Particle Photon创建自己的硬件项目,
读者不需要具有连接电路或编程方面的经验,但最好了解一般性计算
机技术。本书会给读者提供各种体验,并简单介绍
Photon
开发板的许
多功能。本书只介绍开发板编程的基础知识,读者可在未来的项目中
扩展这些知识。
希望能看到读者对本书的看法,请通过
www.rushmakes.com
或
Twitter(https://twitter.com/chrisrush85)与作者联系。
目 录
第
1
章
Photon
简介
............................................................................
1
1.1
微控制器
.........................................................................
1
1.2
什么是
Photon
.................................................................
2
1.3 Particle Photon
和
Spark Core
..........................................
2
1.4
物联网
.............................................................................
3
1.5 Particle
云
........................................................................
4
1.6 Photon
板
.........................................................................
4
1.7
小结
.................................................................................
5
第
2
章 连接
.........................................................................................
7
2.1
开发板的特征
.................................................................
7
2.2
连接
...............................................................................
11
2.2.1
连接到移动智能设备上
....................................
11
2.2.3
通过
USB
连接
..................................................
14
2.3
使用
Tinker
....................................................................
16
2.3.1 Tinker API
..........................................................
18
2.3.2
同时运行
Tinker
和脚本
....................................
20
2.4
使用
Particle Web IDE
...................................................
22
2.4.1 Particle
应用和库
...............................................
24
2.4.2
上传第一个应用
................................................
24
2.4.3
账户信息
............................................................
26
2.4.4
使用库
...............................................................
26
2.5 Photon
板的固件
...........................................................
31
2.6
小结
...............................................................................
31
第
3
章
Particle
语法
..........................................................................
33
3.1
什么是编程
...................................................................
33
3.2
变量
...............................................................................
35
3.2.1
浮点型
...............................................................
37
3.2.2
布尔型
...............................................................
38
3.2.3
字符型
...............................................................
40
3.3
命令
.................................................................................
40
3.3.1 if
语句
................................................................
40
3.3.2 for
循环
..............................................................
42
3.3.3 while
循环
..........................................................
42
3.4
数组
...............................................................................
43
3.5
字符串
...........................................................................
44
3.6
最佳编程实践
...............................................................
45
3.6.1
缩进
...................................................................
46
3.6.2
注释代码
............................................................
46
3.6.3
空白
...................................................................
47
3.7
小结
...............................................................................
48
第
4
章 输出
.......................................................................................
49
4.1
数字输出
.......................................................................
49
4.1.1
打开和关闭
LED
...............................................
53
4.1.2 LCD
显示器
.......................................................
56
4.2
模拟输出
.......................................................................
62
4.2.1
脉宽调制
............................................................
63
4.2.2 DAC
...................................................................
65
4.2.3
控制伺服电机
....................................................
67
4.3
小结
.................................................................................
71
目 录
XI
第
5
章 输入
.......................................................................................
73
5.1
数字输入
.......................................................................
73
digitalRead()
..................................................................
77
5.2
模拟输入
.......................................................................
80
5.3
小结
...............................................................................
90
第
6
章 物联网
...................................................................................
91
6.1
函数
...............................................................................
91
6.1.1
通过
Internet
控制
LED
.....................................
92
6.1.2
通过
Internet
读取值
........................................
100
6.2
小结
.............................................................................
115
第
7
章
Particle
防护板的编程
........................................................
117
7.1 Shield
防护板
..............................................................
117
7.2
继电器防护板
.............................................................
120
7.3
程序员防护板
.............................................................
126
7.4
稳压防护板
.................................................................
127
7.5 Internet
按钮
................................................................
128
7.6 Grove Starter Kit for Photon
.........................................
129
7.7 Adafruit Particle NeoPixel
成套工具
...........................
130
7.8
小结
.............................................................................
132
第
8
章
IFTTT
...................................................................................
133
8.1 IFTTT
概述
.................................................................
133
8.2
“日出”邮件警报
......................................................
134
8.3
使用
Grove
模块创建
Twitter
警报
.............................
141
8.4
小结
.............................................................................
147
第
9
章 排除设备故障
......................................................................
149
9.1
设备模式
.....................................................................
149
9.2
故障排除模式
.............................................................
151
XII
Photon
物联网编程从零开始
9.3
小结
.............................................................................
152
附录
A
工具和提示
..........................................................................
153
附录
B Particle
代码参考
................................................................
165
第
1
章
Photon
简介
本章将学习微控制器,如
Arduino和物联网(Internet of Things,IoT)
等的相关知识。Photon
板是一种新的开发板,基于它的前身
Core,并
具有新的硬件和软件特性,性能更卓越。我们将讨论所有这些特性,
并比较两种开发板。
1.1
微控制器
微控制器(microcontroller)基本上是一个计算机,可使用某种形式的
编程语言控制多个输入和输出。微控制器有各种不同的形状和尺寸,最
流行的平台是
Arduino。Arduino
板为创建小型电子项目提供了低成本、
易使用的技术,现代常见的微控制器可使用通用串行总线(Universal
Serial Bus,USB)连接到计算机上,给开发板供电,并给微控制器编程;
一旦上传了程序,并使用某种移动电池设备供电,微控制器还可以去
掉
USB,独立工作。
其他常见的微控制器有
Raspberry Pi
和
BeagleBone
板。这两种开
发板比标准的
Arduino
板更高级,都连接到可视化显示器上进行可视
化输出,并带有基本的操作系统,如
Debian。这些开发板的特点是有
许多硬件功能,提供了更多存储空间、输入/输出引脚、更快的处理速
度,还具有音频/视频输出,可将电子项目提升到更高水平。所有这些
选项都很不错,但需要把项目连接到
Web
时,几乎肯定需要额外的硬
件,例如防护板(shield)或
USB
加密狗( dongle),这会显著增加项目成
本——有时超过了微控制器板的成本。一些开发板还包括内置的
Wi-Fi
或蓝牙技术,例如
Arduino Yun,但这个开发板仍比较贵,超过
70
美
元;一旦加上电子硬件和各种其他成本,项目很容易超过
100
美元。
1.2
什么是
Photon
Particle Photon
是一个微控制器开发板,类似于
Arduino Nano,但
它是小型化的,而且添加了一些功能,如内置了
Wi-Fi
模块,所以可
使用粒子云(Particle cloud)通过
Internet
进行控制和编程。一旦连接到
本地
Wi-Fi
网络上,也可以使用
iOS
或
Android
操作系统中的
Particle
应用,通过智能手机控制
Photon
板并编程。Photon
开发板的各边有多
个引脚(pin),用作微控制器的输入输出。这些通用引脚可连接到传感
器(sensor)或按钮上,来监听外界;或连接到发光器(light)或蜂鸣器
(buzzer)上,进行表演。还有一些引脚可给
Photon
板、电机(motor)或
设备的输出供电。另外,Photon
板还带有一些内置的硬件功能,例如
按钮和发光二极管(LED),大大简化了
Photon
板的配置:
● SETUP
按钮在左侧,RESET
按钮在右侧,可使用它们设置设
备的模式。
● RGB LED
位于
Photon
开发板模块上方的中心处。RGB LED
的颜色指定了
Photon
开发板当前的模式。
●
在
Photon
板上,D7 LED
位于数字引脚
7
的旁边。当引脚
7
设置为
HIGH
时,这个数字引脚会打开
LED。
1.3 Particle Photon
和
Spark Core
Photon
板是
Core
的继任者,两者都由
Particle
开发。把这两个开
发板放在一起比较,会发现它们的外观十分相似,很难区分。主要区
别是硬件方面,Photon
板使用的
Wi-Fi
芯片与
Core
不同,处理器速度
更快,RAM (随机访问内存)更多。
两种开发板上的引脚几乎相同,因此本书讲述的大部分内容也适
用于
Core。Photon
板的几个改进很有价值,例如数字-模拟转换器
(Digital-to-Analog Converter,DAC)和唤醒引脚(Wakeup Pin,WKP),
取代了
Core
上的
A6
和
A7。
1.4
物联网
物联网是媒体术语,它把哑电子设备连接到
Internet
上,之后可
通过
Web
浏览器控制这些设备,向
Web
服务器发送
HTTP
请求,并
返回要显示的信息。可给应用连接许多设备和传感器:
●
家用电器
●
气象站
●
机器人
●
空气污染监控
●
环境感应
●
智能后勤
●
位置跟踪
●
健康监控
目前市场上的物联网设备越来越多,例如智能温控器(smart
thermostat)或飞利浦
Hue
灯(Philips Hue lamp),它们允许用户控制家庭
中的供暖方面或情调照明(mood lighting)。物联网的大发展,使厂商和
玩家更有兴趣创建自己的智能项目,而
Photon
板提供了这种可能性,
且成本只有
19
美元——市场上最便宜的开发板。
有那么多厂商和玩家都在创建新的
IoT
项目,就有必要为硬件和
软件建立一个简单框架,给处于任何技能水平的人员提供一个简单、
易用的系统。所以
Particle
团队根据流行的
Arduino
软件建立了这样一
个系统,把较复杂的技术转换为每个用户都易于使用的开源产品。
1.5 Particle
云
该框架的硬件部分是
Photon
板,它基于流行的
Core
模块,通过
融资网站
Kickstarter
获得资金。Photon
板设计为与
Core
向后兼容,所
以,本书大部分内容都适用于
Core。
Particle
为硬件创建了一个软件框架,允许用户利用其他技术和设
备通过
Internet
与硬件交互操作,这两个元素很容易协同工作。使用
Photon
板的
IoT
设备使用继电器(relay)或类似电路打开消费设备;这
里,当用户访问网页或移动应用,通过其上的一个按钮打开或关闭设
备。用户点击网页上的按钮时,会把一条消息或一串数据发送给
Particle
云服务,Particle
云服务再把该消息转发给
Photon
板,打开设
备。如果
Photon
板连接了传感器,云系统就可按相反顺序工作,即点
击按钮时,不是
Web
服务给云发送信息,而是由
Photon
开发板把传
感器的信息发送给云,再发送给
Web
服务器,显示在
Web
上。整个
Particle
框架使这个工作无缝地完成,对终端用户而言也不会过于复杂
——用户只需要用
Particle
云账户注册
Particle Photon
板即可。
1.6 Photon
板
Photon
板小巧玲珑,如图
1-1
所示。
Photon
板上的两个按钮
SETUP
和
RESET
可配置
Wi-Fi
凭证,在
需要时重启设备。万一设备出现问题,联合使用它们可执行完整的出
厂重置操作。
开发板的顶部有微型
USB
端口,用于给开发板供电,在需要时还
可连接到计算机上,进行
USB
编程。
Photon
板有内置的芯片型天线(chip antenna),适合于大多数室内
应用,Photon
板还有一个外部槽,用于连接
Wi-Fi
天线,进行范围扩
展和定向天线。Photon
板的默认配置为:在芯片天线和外部天线都可
用的情况下,始终选择最可靠的方法。也可在固件上手动选择天线。
图
1-1 Photon
板
1.7
小结
现在我们已经启航了。Photon
板是一款在厂商社区中创建
IoT
项
目、开发商业消费产品的优秀设备。下一章将介绍如何设置
Photon
板,
开始编写第一个项目。
购买地址:
http://product.dangdang.com/25321993.html