Photon物聯網程式設計從零開始
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
號
責任編輯:王 軍 韓宏志
裝幀設計:牛靜敏
責任校對:曹 陽
責任印製:李紅英
出版發行:清華大學出版社
網 址:
,
地 址:北京清華大學學研大廈
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()公司提供全球最完善的開源物聯網軟硬
件開發平臺,自
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
部落格(),為流行的開發板和附件提供
評論、教程和使用者指南,包括
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
開發板的許
多功能。本書只介紹開發板程式設計的基礎知識,讀者可在未來的專案中
擴充套件這些知識。
希望能看到讀者對本書的看法,請透過
或
Twitter()與作者聯絡。
目 錄
第
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
板,
開始編寫第一個專案。
購買地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26421423/viewspace-2217104/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物聯網從雲開始
- 風變程式設計,幫助你從零開始學習程式設計程式設計
- FPGA程式設計從零開始 使用VerilogFPGA程式設計
- 從零開始的Java程式設計之抽象與介面Java程式設計抽象
- 併發程式設計從零開始(十四)-Executors工具類程式設計
- 併發程式設計從零開始(十一)-Atomic類程式設計
- C++程式設計從零開始之語句(轉)C++程式設計
- 併發程式設計從零開始(九)-ConcurrentSkipListMap&Set程式設計
- 做好智慧農業需從農業物聯網普及開始
- 從零開始理解 Laravel 的設計哲學Laravel
- OpenSNN推文:從零開始學程式設計 新手小白的全面指南程式設計
- 從零開始學設計模式(七)—橋接模式設計模式橋接
- Arduino程式設計從零開始 使用C和C++(第2版)UI程式設計C++
- 從零認識物聯網無線組網技術
- 守護物聯網的邊界:從裝置開始從裝置結束
- 從零開始上手 MQTT over QUIC:快速體驗下一代物聯網標準協議MQQTUI協議
- 從零開始寫一個網頁網頁
- 從零開始機器學習機器學習
- 從零開始 OpenCVOpenCV
- java從零開始系列-一個前端程式設計師的自我修養Java前端程式設計師
- 新手學程式設計,從哪裡開始?程式設計
- 從零開始開發一個大型網站網站
- 微信小程式開發教程-從零開始(1)微信小程式
- 微信小程式開發教程-從零開始(2)微信小程式
- 微信小程式開發教程-從零開始(3)微信小程式
- 從零開始內網滲透學習內網
- 如何從零開始寫一個網站網站
- 從零開始學機器學習——網路應用機器學習
- 從零開始單排學設計模式「策略模式」黑鐵 II設計模式
- 從零開始學習如何部署程式碼
- 從零開始機器學習--05機器學習
- 從零開始機器學習-03機器學習
- 從零開始機器學習--4機器學習
- flutter 從零開始-1Flutter
- 從零開始串聯Python前後端技術Python後端
- 好程式設計師Python教程從零開始學Python系列-第2講程式設計師Python
- 從零開始搭建屬於自己的網站網站
- 從零開始單排學設計模式「裝飾模式」黑鐵 I設計模式