Photon物聯網程式設計從零開始

qinghuawenkang發表於2018-10-22

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章