內容簡介
《Arduino魔法書:實現夢想的工具和技術》是一本關於使用Arduino實現夢想的作品。作者Jeremy Blum有一句名言:“我們生活在未來。”利用可用的工具和在本書中將學到的知識,任何人都有機會、也有能力選擇一款Arduino微控制器並在幾分鐘內利用它控制周圍的世界——這一夢想直到最近才成為可能。微控制器是一個可程式的平台,它使我們能夠使用相對簡單的命令,來定義複雜的機械、電氣和軟體系統的操作。通過對本書的學習,我們將使用Arduino製作各種作品,從運動檢測到無線控制系統再到網際網路通信。
《Arduino魔法書:實現夢想的工具和技術》適用於任何經驗層級的Arduino愛好者。讀者不需要具備或者只需具備少量編程和電氣工程方面的經驗。為了照顧到各個層次的讀者,《Arduino魔法書:實現夢想的工具和技術》設計了各種可選章節、小欄目或短節選,並在其中詳細解釋了具體的概念。
版權資訊
Arduino 魔法書:實現夢想的工具和技術
【美】Jeremy Blum 傑里米·布魯姆 著
況琪 王俊升 譯
ISBN 978-7-121-24067-6
2014 年10月出版
定價:59.00元
328 頁
16 開
推薦語
探索Arduino的大千世界
本書就是你的翅膀
JeremyBlum因其在Youtube上發布的系列教學視頻而廣為人知,這些視頻向世界範圍內的人們講授了工程學的概念。他製作了大量的基於微控制器的系統,包括太陽跟蹤器、手臂義肢、桁架遍歷機器人、泰勒明電子琴、基於計算機視覺、手套的手勢控制器等。
《Arduino魔法書:實現夢想的工具和技術》是著名創客JeremyBlum匯聚多年開發經驗並結合當下熱門技術撰寫的一本實用性極強的工具書,也是繼電子工業出版社推出《Arduino從基礎到實踐》、《Arduino機器人權威指南》圖書後的又一曠世之作。全書內容豐富,採用“理論入、實踐出”的教學方式,促使學者加快對基礎知識的認知和理解。實驗案例圖文並茂、注釋清晰,由淺入深,通俗易懂。
于欣龍,奧松機器人創始人、資深創客
Jeremy在電氣工程領域使用Arduino製作電子產品,猶如能工巧匠用錘子建造房子。
BrePettis,MakerBotIndustries創始人
Jeremy以其簡明、易懂的風格對Arduino進行了深度解析,這不僅讓數碼新手找到他們的立足點,也能讓硬體老兵發現電子世界對業餘愛好者友好的一面,並開始連線他們的器件。
ChrisGammell,AmpHour部落格(Podcast)聯合主辦人
內容提要
《Arduino魔法書:實現夢想的工具和技術》是一本關於使用Arduino實現夢想的作品。作者Jeremy Blum有一句名言:“我們生活在未來。”利用可用的工具和在本書中將學到的知識,任何人都有機會、也有能力選擇一款Arduino微控制器並在幾分鐘內利用它控制周圍的世界——這一夢想直到最近才成為可能。微控制器是一個可程式的平台,它使我們能夠使用相對簡單的命令,來定義複雜的機械、電氣和軟體系統的操作。通過對本書的學習,我們將使用Arduino製作各種作品,從運動檢測到無線控制系統再到網際網路通信。
《Arduino魔法書:實現夢想的工具和技術》適用於任何經驗層級的Arduino愛好者。讀者不需要具備或者只需具備少量編程和電氣工程方面的經驗。為了照顧到各個層次的讀者,《Arduino魔法書:實現夢想的工具和技術》設計了各種可選章節、小欄目或短節選,並在其中詳細解釋了具體的概念。
目錄
第 1 部分 Arduino 工程基礎 / 1
第1 章讓你的Arduino 閃爍 / 2
探索Arduino 生態系統 /3
Arduino 功能 / 3
Arduino 板卡 / 7
創建你的第一個程式 /12
下載並安裝Arduino IDE / 12
運行IDE 並連線Arduino / 13
分析你的第一個程式 / 15
本章小結 /17
第2章數字輸入、輸出和脈衝寬度調製 / 18
數字輸出 /19
連線一個LED 並使用麵包板 / 19
數字輸出連線埠編程 / 23
使用for 循環 / 24
analogWrite()與脈衝寬度調製 /25
讀取數字輸入 /28
讀取帶有下拉電阻的數字輸入 / 28
使用“有彈性的”按鍵 / 30
製作一個可控的RGB LED 夜燈 /33
本章小結 /37
第3 章讀取模擬感測器 / 38
理解模擬和數位訊號 /39
比較模擬和數位訊號 / 39
將模擬信號轉換為數位訊號 / 40
利用Arduino 讀取模擬感測器:analogRead() /41
讀取電位器 / 42
使用模擬感測器 / 45
利用可變電阻製作自己的模擬感測器 /50
使用阻性分壓器 / 50
利用模擬輸入控制模擬輸出 / 52
本章小結 /54
第2 部分 控制環境 / 55
第4 章三極體與電機驅動 / 56
驅動直流電機 /57
操作大電流感性負載 / 58
利用PWM 控制電動機轉速 / 62
使用H-橋控制直流電機的方向 / 64
驅動伺服電機 /70
理解連續旋轉伺服電機和標準伺服電機的區別 / 71
理解伺服電機控制 / 71
控制伺服電機 / 75
製作掃描式距離感測器 /76
本章小結 /80
第5 章發出聲音 / 81
理解揚聲器的工作原理 /82
聲音的性質 / 82
揚聲器是如何發聲的 / 83
使用tone()發出聲音 /84
包含定義檔案 / 85
給揚聲器接線 / 86
產生聲音序列 / 88
理解tone()函式的限制 / 91
製作一架微型鋼琴 /91
本章小結 /94
第6 章USB 和串口通信 / 95
理解Arduino 的串口通信功能 /96
使用內置或外置USB-串口轉換器的Arduino 板卡 / 97
使用次級含USB 功能ATMega MCU 來模擬串口轉換器的Arduino 板卡 / 99
使用單個帶USB 功能MCU 的Arduino 板卡 / 101
帶有USB-Host 功能的Arduino 板卡 / 101
監聽Arduino /102
使用print 語句 / 102
使用特殊字元 / 103
改變數據類型表示 / 105
與Arduino 通信 /105
從計算機或其他串口設備上讀取信息 / 106
與桌面應用程式通信 /112
與Processing 通信 / 113
學習Arduino Leonardo(及其他基於32U4 的Arduino)的特殊技巧 /119
模擬鍵盤 / 119
模擬滑鼠 / 124
本章小結 /127
第7 章移位暫存器 / 129
理解移位暫存器 /130
傳送並行和串列數據 / 131
使用74HC595 移位暫存器 / 131
使用Arduino 進行串列移位輸出 / 134
在二進制和十進制間轉換 / 136
用移位暫存器控制燈光動畫 /137
搭建“光騎士” / 137
用LED 條形圖回響輸入 / 139
本章小結 /142
第3 部分 Arduino 通信接口 / 143
第8 章I2C 匯流排 / 144
I2C 匯流排的歷史 /145
I2C 硬體設計 /145
通信方案與ID 值 / 146
硬體要求和上拉電阻 / 147
與I2C 測溫探頭通信 /148
設定硬體 / 148
參考數據手冊 / 149
編寫軟體 / 151
將移位暫存器、串口通信和I2C 通信結合 /153
為溫度監控系統搭建硬體 / 153
修改嵌入式程式 / 154
編寫Processing 程式 / 156
本章小結 /159
第9 章SPI 匯流排 / 160
SPI 匯流排概述 /161
SPI 硬體和通信設計 /162
硬體配置 / 162
通信方案 / 163
比較SPI 與I2C /164
與SPI 數字電位器通信 /164
從數據手冊中獲取信息 / 164
設定硬體 / 167
編寫軟體 / 169
用SPI 數字電位器製作視聽顯示系統 /171
設定硬體 / 172
修改軟體 / 173
本章小結 /175
第10 章連線液晶顯示器 / 176
設定LCD /177
使用LiquidCrystal 庫寫入LCD /180
向顯示器輸出文本 / 180
創建特殊符號和動畫 / 182
製作一個私人自動恆溫器 /185
設定硬體 / 185
用按鍵調節設定值 / 188
添加聲音報警和電扇 / 189
整合:完整的程式 / 190
升級項目 / 194
本章小結 /194
第11 章使用 XBee 收發器進行無線通信 / 195
理解XBee 無線通信 /196
XBee 無線收發器 / 197
XBee 無線收發器擴展板和串口連線 / 198
配置XBee /201
用擴展板或USB 適配器配置 / 202
選擇Xbee 設定並將XBee 連到主機上 / 203
用X-CTU 配置XBee / 204
用串口終端配置XBee / 207
與計算機無線通信 /209
為遠程Arduino 供電 / 209
回顧串口示例:用電位器控制Processing / 211
回顧串口示例:控制一個RGB LED / 214
與另一個Arduino 通信:製作無線門鈴 /216
系統設計 / 217
發射器硬體 / 218
接收器硬體 / 218
發射器軟體 / 219
接收器軟體 / 220
本章小結 /223
第4 部分 高級的話題和項目 / 225
第12 章硬體和定時器中斷 / 226
使用硬體中斷 /227
理解輪詢和中斷間的折中 / 228
理解Arduino 的硬體中斷能力 / 229
搭建並測試硬體消抖動的按鍵中斷電路 / 230
使用定時器中斷 /237
理解定時器中斷 / 237
獲取軟體庫 / 238
近乎於同時地執行兩個任務 / 238
搭建一個中斷驅動的音響 /239
音響硬體 / 239
音響軟體 / 240
本章小結 /242
第13 章用 SD 卡記錄數據 / 243
數據記錄的準備工作 /244
用CSV 檔案格式化數據 / 244
為數據記錄準備SD 卡 / 245
將SD 卡接入Arduino /249
SD 卡擴展板 / 249
SD 卡SPI 接口 / 253
寫入SD 卡 / 253
讀取SD 卡 / 258
使用一個實時時鐘 /261
理解實時時鐘 / 261
使用實時時鐘 / 263
做一個入口記錄儀 /268
記錄儀硬體 / 268
記錄儀軟體 / 270
數據分析 / 273
本章小結 /274
第14 章將你的Arduino 聯網 / 275
網際網路、Arduino 和你 /276
網路術語 / 276
客戶端與伺服器 / 279
將Arduino 聯網 / 279
在網上控制Arduino /279
準備I/O 控制硬體 / 280
設計一個簡易網頁 / 280
編寫Arduino 伺服器程式 / 282
通過網路控制Arduino / 286
把實時數據傳送給繪圖服務 /290
在Xively 上創建實時數據源 / 290
添加數據源組件 / 295
本章小結 /299
附錄ATMega 數據手冊和Arduino 原理圖揭秘 / 300
閱讀數據手冊 /300
分解數據手冊 / 300
理解器件引腳定義 / 302
理解Arduino 原理圖 /304
封底:推薦語
作者簡介
Jeremy Blum 在康奈爾大學取得了電氣和計算機工程專業的碩士學位,他還在同一領域取得了學士學位。在康奈爾大學,他通過由他發起並領導的康奈爾大學可持續設計組織(Cornell University Sustainable Design)監督了國內外幾座生態建築的設計和施工,該組織是一個美國承認的可持續設計組織,曾受到美國和世界綠色建築委員會(U.S. and World Green Building Councils)CEO 的特別稱讚。同樣,Jeremy 也將他的激情付諸電氣工程領域,設計了太陽能家庭能源監控系統、革命性的光導纖維LED 照明系統及追蹤太陽的智慧型太陽能面板。他還負責協助啟動了一個首創的創業者協同工作空間,每年致力於許多學生創業項目(也包括一些他自己的創意)的合作開發。
Jeremy 還設計了廣受稱讚的義肢控制方法、手勢識別系統及樓宇自動化系統等許多項目。他設計了MakerBot Replicator 3D 印表機(被世界各國的人們使用,包括像NASA 這樣知名組織)的電子系統,以及MakerBot Digitizer 3D 掃瞄器的原型電子系統和固件。作為知名組織Creative Machines Lab 的研究員,他致力於製作能夠自我組裝的機器人、自學習四足機器人及重新定義個人製造的3D印表機。他將這項研究呈送給了同行審閱的期刊和遠在印度的學術會議。
Jeremy製作的YouTube視頻已經將數百萬人帶入了工程學的大門,是網際網路上最流行的Arduino入門教程。他曾開發了入選探索頻道(Discovery Channel)的開源硬體項目和入門教程,並因此被國際上的開源社區和“創客”社區所熟知,贏得了一些獎項和黑客馬拉松(hack-a-thons)大賽。Jeremy入選了美國電氣和電子工程師學會(American Institute of Electrical and Electronics Engineers)的2012工程學新面孔(2012 New Face of Engineering)榜單。
他通過自己的公司 Blum Idea Labs LLC 提供工程學諮詢服務,並向紐約的年輕學生教授工程學和可持續發展課程。Jeremy 的激情正在通過創新的工程學解決方案,改變著人們的生活和我們的家園。你可以在Jeremy 的網站上進一步了解他和他的工作。
前言
你擁有絕佳的時機。正如我經常喜歡說的,“我們生活在未來”。利用如今可用的工具和書中的知識,你就有機會、也有能力讓夢想變成現實。讓任何人選擇一款微控制器並在幾分鐘內利用它控制周圍的世界——這一夢想直到最近才成為可能。你可能已經猜到了,微控制器是一個可程式的平台,它使你能夠使用相對簡單的命令,來定義複雜的機械、電氣和軟體系統的操作。Arduino 微控制器平台將成為你的新寵,帶你探索電子、編程、人機互動、藝術、控制系統及更加廣闊的世界,有了它就有了無限的可能。通過對本書的學習,你將掌握使用Arduino 製作各種作品的方法,從運動檢測到無線控制系統再到網際網路通信。無論你是工程領域徹頭徹尾的新手,還是打算入門嵌入式系統設計的經驗豐富的老兵,Arduino 都是一個絕佳的起點。你在尋找一本Arduino 開發的通用參考手冊嗎?本書也非常適合你,它會引導你完成一系列具體項目,而你以後也可以再次翻閱本書來查找代碼片段、最佳範例和系統原理圖等資料。電氣工程、系統設計、編程實踐……這些你在閱讀時學到的知識在Arduino 平台之外也有廣泛的套用。通過對本書的閱讀,你將具備承擔各種工程項目的能力,不論它們使用的是Arduino 還是其他平台。
本書對象
本書適合任何經驗層級的 Arduino 愛好者。章節是彼此相關的,要利用前面章節中的概念和項目組件來實現更加複雜的想法。但不要擔心,當你面臨全新的、複雜的想法時,會有一個交叉引用來提示你相關概念第一次出現在書中的何處,以便很快回想起來。
本書假設你不具備或者只具備很少的編程和電氣工程方面的工作經驗。為了照顧到各個層次的讀者,本書設計了各種可選章節、小欄目或短節選,在其中詳細解釋了具體的概念。儘管這些小欄目對你更深入地理解Arduino 的工作原理來說並不是必需的,但它們為更具好奇心的讀者提供了進一步關注技術性話題的機會。
你將通過本書學到什麼
本書不是食譜書。如果你想遵循手把手地指導自己如何搭建一個具體項目的書,而不需要解釋為什麼要這么做,那本書便不適合你。你可以把本書作為一本導論,其中介紹了電氣工程、計算機科學、產品設計和高級思維;你也可以把Arduino 作為媒介,通過動手實踐的方式來體驗這些概念。
當我們在本書中演示如何搭建 Arduino 項目的硬體組件時,你學到的將不僅是如何將它們連線在一起,還有如何閱讀原理圖,為什麼將某個器件用於某項功能,如何通過數據手冊為自己的項目選擇合適的器件等。在編寫軟體時,我提供了完整的程式代碼,但你會逐步走過幾個疊代性的過程來創建最終的程式。這會幫助你鞏固具體的程式函式、良好的代碼格式化實踐和對算法的理解。
本書會講授物理概念、算法、數位化設計原理及具體的 Arduino 編程概念。我希望,通過對本書中案例的學習,你不僅能成為一名熟練的Arduino 開發者,還能學會一些技巧,去開發更加複雜的電氣系統,並在其他領域或其他平台上繼續從事工程學方面的工作。
本書使用的標註
在本書中使用了下列標註和圖示,以在一些最重要或最有用的信息上吸引你的注意。
警告 請你一定要留意這樣的條目。如果一旦錯誤地執行某些步驟就可能導致電子器件損壞,你就會看到這種警告。
提示 這些條目包含了關於如何執行簡單任務的快速提示,這可能對你手頭的任務有所幫助。
注意 這些條目包含了對你來說可能很重要的額外信息,包括視頻和線上資料的相關連結,它們會讓具體項目的開發變得更加輕鬆。
樣例標題
這樣的條目對當前話題或相關話題做了更加深入的講解。
獲取器件
幸運的是,你可以方便地獲得實施本書中項目所需的器件。本書譯者已經根據本書內容提供了這些器件的獲得地址。
建議你先買基本套件。隨著閱讀的深入,你還可以購買擴展套件。不想購買套件嗎?別擔心。在每章的開頭,有一個該章所需的詳細器件列表。本書原著的專題網站也提供了一些連結,通過它們可以找到每章所需的器件。
注意 你是否已經從Newark 獲得了本書的捆綁套裝?如果是,那么你就可以繼續了。
你需要什麼
除了用來搭建 Arduino 項目的具體器件以外,你的Arduino 探險之旅還需要一些其他工具和材料。最重要的是,你需要一台兼容Arduino 集成開發環境(IDE)的計算機(Mac OS X 10.4 以上版本,Windows XP 以上版本,或者一個Linux發行版)。在必要時我會為這些作業系統中的操作做出說明。
你可能還想要一些額外的工具,用來調試、組裝硬體等。它們對完成本書中的項目來說不是必需的,但在你拓展電氣工程技能時,這些工具在其他項目中遲早有用。我推薦如下工具。
一把烙鐵和一些焊料(完成本書中的項目並不需要焊接,但你可能希望在洞洞板上組裝自己的電路,或者你可能想購買需要焊接組裝的擴展板。)
一台萬用表(在調試過程中有用,但不是必需的。)
一組小型螺絲刀
一支熱熔膠槍
原始碼和數位化內容
本書的主要專題網站是由本書作者維護的。你可以在這個網站上找到每章的代碼並下載(還有視頻、連結及其他有用的材料)。Wiley 也維護了一個關於本書數位化內容的倉庫。
本書代碼可在 網頁的“Download Code”標籤下下載。
你也可以在網上根據ISBN(本書原著的ISBN 為978-1-118-54936-0)搜尋本書原著,從而找到代碼。
在每章的開始處,你可以找到本章主要代碼的下載地址。在每章中,你還能在代碼清單的標題和文本中找到你需要的代碼檔案的檔案名稱。
在網站上提供的代碼是ZIP 壓縮檔。下載代碼之後,使用適當的工具解壓縮即可。
注意 由於許多圖書的書名大同小異,所以通過ISBN 搜尋可能會更方便一些。本書原著的ISBN 是978-1-118-54936-0。
勘誤
我們盡力保證文本和代碼的正確性。然而人無完人,錯誤在所難免。如果你在本書中發現了錯誤,比如拼寫錯誤或者代碼錯誤,我們會感謝你的反饋。通過提交勘誤,你可能會消除其他讀者幾個小時的困惑,與此同時,你可以幫助我們提供更有用的信息。
要查找本書原著的勘誤,請訪問 並單擊“Errata”連結。
補充材料和技術支持
在你的 Arduino 探險之旅當中,不可避免地會遇到問題和麻煩。使用Arduino最大的一個好處就在於可以在網上找到絕佳的技術支持社區。這個極為活躍的Arduino 用戶大本營會十分樂意幫助你。下面列出了一些可能會幫到你的資源。
官方 Arduino 參考手冊
我的 Arduino 入門教程系列視頻
adafruit 公司的Arduino 入門教程系列視頻
SparkFun 的電子學入門教程
Arduino 官方論壇
element14 Arduino 社區
如果你用盡了這些資源,卻還是無法解決你的問題,則請聯繫我,我也許能幫上忙。你也可以直接通過我的網站上的聯繫頁面來與我取得聯繫,但我通常沒法保證快速回復。
Arduino 是什麼
Arduino 原型平台的最大特點在於你想讓它是什麼,它就是什麼。Arduino可以是一個植物灌溉自動控制系統,也可以是一個Web 伺服器,甚至可以是四軸飛行器的自動駕駛儀。
Arduino 是一個微控制器開發平台,它配備了直觀的程式語言,你可以使用Arduino 集成開發環境(IDE)來開發它。你可以為Arduino 安裝感測器、效應器、燈、揚聲器、擴展模組(shield,本書譯作“擴展板”)及其他積體電路,來將Arduino 變成一個可程式的“大腦”,套用於幾乎任何控制系統。
本書不可能涵蓋 Arduino 能做的所有事情,只要你的想像力是無窮的,可能性就是無窮的。因此,本書的目標是通過實施項目來讓你熟悉Arduino 的功能,學習開發自己的項目時所需的技巧。
你會在第 1 章中學到更多關於Arduino 及這塊板卡的變體。如果你渴望了解Arduino 的所有內部工作原理,那么你很幸運:它是完全開源的,所有的電路圖和文檔都可以在Arduino 網站上免費獲得。附錄提供了一些Arduino 的技術指標。
一個開源平台
如果你是一個開源世界的新人,則你一定會滿意的。本書不會詳細介紹開源硬體運動,但你應該了解一點這種思想,是它讓Arduino 變得如此美妙。如果你想全面了解什麼是開源硬體,則請查閱開源硬體協會網站上的定義。
注意 你可以從我的TEDx 演講中學到所有關於開源運動的知識:
進入該網站即可找到。你也可以在本章開頭處的Wiley 網站上找到這個視頻。
由於 Arduino 是開源硬體,所以任何人都可以免費獲取所有的設計檔案、原理圖及原始碼被。這不僅意味著你可以更方便地改造Arduino,以用於非常特定的功能,還意味著你可以將Arduino 平台整合到你的設計中,製作並銷售Arduino的複製品,並在其他項目中使用Arduino 軟體庫。儘管本書使用的幾乎全部是官方Arduino 硬體,但你也可以使用數以百計的Arduino 衍生板卡(它們通常添加了特別的功能)來製作本書中的項目。
Arduino 的開源許可證還允許商業化地重用他人的設計(只要你不在自己的設計上使用Arduino 商標)。所以,如果你在一個令人興奮的項目原型中使用了Arduino,而你還想將其轉化為一個商業產品,那么你是可以這樣做的。舉例來說,你可能聽說過像MakerBot Replicator 3D 印表機這樣的產品,它的電子系統是基於Arduino Mega 平台的。(大爆料:我設計了那塊主機板!)
在使用本書時,請確保遵守了本書中原始碼和硬體的許可證。一些許可證要求你在發布基於他人已有的設計時提供原始作者的信息;有的則要求你必須在相同的許可下分享你的改進工作。這樣的分享幫助社區成長,所有了不起的線上文檔和技術支持也正是源自於此,在你的Arduino 探險之旅中,你一定會經常參考它們。我為本書編寫的所有的代碼示例(除非特別聲明)都是基於GNU 通用公開許可(GPL)的,你可以隨心所欲地使用它們。
本書之外
有人可能對我在網上流行的系列視頻“Arduino 和電子學入門教程”很熟悉了。本書中我也多次提到它們,你可以通過這些視頻更為深入地了解書中所涵蓋的技術主題。對電子器件和微控制器利用計算機科學知識,將它們創造性地組合,來創造卓越的作品,如果你對此感到好奇,可以在我的作品集中查看樣例項目。同Arduino一樣,我的絕大部分作品都通過開源許可發布,允許你針對自己的需求方便地複製它們。
我渴望知道你利用在本書中學到的技巧做了什麼,並期待你將這些與我和其他朋友分享。祝你在Arduino 探險之旅中好運!