全面深入講解Arduino開發,靈活打造炫酷作品
讓你用Arduino輕鬆實現自動控制,放飛你的創意!
依循設計原則,在Arduino DIY中體驗創造的樂趣!
《arduino技術內幕》摒棄了大量基礎知識,全面深入揭秘arduino 的內部工作原理。其中,它通過“led 閃燈”、“led照明”、“數字鐘”等示例作品由淺入深、由易而難介紹arduino 開發,並最後以一個“自動機器人”示例總結全書,不僅介紹了可用的軟硬體及軟硬體間的協作,闡述了軟硬體的選取與設計,而且分析了項目管理(包括文檔化、團隊工作與協作開發以及如何選擇許可方式)方面的內容。另外,讀者還可從本書了解設計原則與優秀的編程技巧、編程風格,學會動手設計實現優秀的arduino 作品。
《arduino技術內幕》適合所有arduino 用戶學習參考。
基本介紹
- 書名:Arduino 技術內幕
- 作者: (美)Dale Wheat
- 原版名稱:Adriano internals
- 譯者:翁愷
- ISBN:9787115311924
- 類別:計算機 /計算機控制與仿真/數字電子技術
- 出版社:人民郵電出版社
- 出版時間:2013 年3月
- 開本:16開
圖書前言,圖書目錄,圖書小結,
圖書前言
讓我們來徹底了解Arduino吧。Arduino看上去就是一個簡單的機器,其實不然。為了讓它易學易用,很多人付出了艱巨的努力。然而,人們在好心好意地簡化Arduino操作的同時,卻會將它一些內在的潛能掩蓋起來。事實上,在它簡單的外表下,還有很多很多可以挖掘的東西。
確實如此。
這正是一本關於Arduino工作原理的書。Arduino有效地體現了一些經過多年演化的設計理念,假使你深入理解了其所涉及的複雜技術,就可以改動或重新編排Arduino的“內部元素”以滿足自己特定的設計需求。
目標讀者
本書適合各個層次的Arduino用戶閱讀參考,無論躍躍欲試的新手,還是經驗豐富的專家都能從中獲益。也許你已經知道Arduino是什麼,明白它能做什麼,也許你已經有了一塊Arduino電路板,或者能從某處弄一塊來試試。對於閱讀本書來說,你無需有這些基礎,只要你對Arduino和它內部秘密有濃厚的興趣就足夠了。
Arduino的入門介紹已經隨處可見了,本書就不在那些非常基礎的事情上過多著墨了。本書深入探討了很多內容,因此也希望能伴你在深入研究Arduino的路上走得更遠。我可不想讓你一學會如何讓LED閃爍就再也用不上這本書了。
關於本書
本書不打算正兒八經地教你學基礎電子學,不過,假如你求知若渴又聰穎好學,也許可以從本書的示例作品和練習中獲得大量有用的電子學基礎知識。我們認真準備了這些示例,並進行了嚴格的技術審校,確保它們都體現了正確的設計原則。
本書也不是程式設計的入門書。讀者應該會用編輯器編輯原始碼,並按照簡單的指示完成指定的操作。當然,天性好奇的你會從書中那些力求清晰的代碼中不知不覺學到編程技巧和風格。
我們知道,任何一個章節都沒辦法事無巨細地徹底說清楚某個問題,所以我們既給出了實用的信息,也列出了參考文獻,供你查找詳細資訊。Arduino和其他任何複雜的系統一樣,是不斷發展著的。正如赫拉克利特在2500多年前說過的,“人不能兩次踏進同一條河流”,因為河水一直在流動。這話在當年是正確的,現在依然正確無誤,尤其對於正在快速演變的Arduino來說更是如此。因此,羅列過多細節並不合適。
注意,本書絕不是沒有頭緒地胡亂堆疊技術資料。Arduino光鮮閃亮的外表下面,層層疊疊隱藏著對複雜設計難題的複雜解決方案。本書的根本目的,就是以富有意義、易於理解的順序一層層撥開這些迷霧。
最後,本書也並非只是隨意選擇一些毫無關聯的Arduino項目。書中的項目和練習都是圍繞說明和強調那些重要的設計理念精心編寫的,而且由易而難,逐步深化,幫助你盡情探索Arduino及各種可能性。
本書內容
看看我們究竟能深入探索到什麼程度。我們在各種技術資料中做了充分的權衡取捨,以使每一章都能獨立成篇。
按照本書的章節順序閱讀當然好,不過按照興趣跳躍閱讀也沒問題。書中的內容還是很豐富的,各章基本上遵循由一般到具體的原則編排,要是跳來跳去發現一下子讀不明白了,可以往前翻幾章,確保獲得足夠的基礎知識後再繼續往後閱讀。
第1章硬體
看看有哪些Arduino模型,大致了解它們的內部工作原理。
第2章軟體
Arduino開發的每一個層次上都會用到各種軟體,本章全面概覽一下這些軟體。
第3章Atmel AVR
. Arduino的“大腦”也大有名堂。了解它能做什麼、不能做什麼,是一個項目成功的
關鍵。
第4章支持硬體
電路板上其他元件也起著重要的作用,了解它們能做什麼、不能做什麼,有助於做出更好的作品。
第5章Arduino軟體
利用Arduino提供的自由軟體可以方便快捷地開始工作。它看上去很簡單,但其實不然。
第6章最佳化
簡單寫就的代碼總是可以做很多最佳化。本章將告訴你如何做最佳化,以及如何用精確的測量技術來驗證最佳化。
第7章硬體和軟體的結合
硬體和軟體的協作,尤其是充分協作時,可以實現驚艷的結果。仔細研究AVR片上的外圍設備,可以用較少的代碼實現更多的功能。通過例子,本章詳細解釋了通用I/O連線埠、USART(串口)、計數器、定時器、PWM輸出和模擬輸入,還介紹了如何使用中斷來實現硬體軟體之間的有效協作。
第8章示例作品
LED閃爍?真的?本章先展示如何通過許可權控制LED閃爍,然後做一個更複雜的作品:數字鐘。
第9章項目管理
處理一些開發過程中的事情,比如文檔、協作和許可等。
第10章硬體設計
非常全面地介紹了設計Arduino兼容或部分兼容的硬體所需的各種知識,包括電源供應、處理器選擇和shield接口設計,也介紹了一些硬體設計自動化工具。
第11章軟體設計
不光使用代碼草圖,還要根據具體情況決定如何設計和使用軟體。本章討論了另外一些開發環境、庫的開發和文檔,以及PC端的應用程式。基於本章的知識,你甚至可以開發自己的軟體工具。
第12章組網
理論上,對Arduino進行組網非常簡單,就好像只需要決定和誰連線、連上了要傳輸什麼內容就可以了。不過,實際上沒有這么簡單。本章介紹如何利用Arduino內置的通信能力實現與各種設備的通信。當然,加上一些專門的硬體可以擴展網路的通信能力,甚至加上一些不太貴的硬體就有可能做出一個簡單的Web伺服器。
第13章其他示例
由一系列獨立項目有機組合做一個小型自動機器人的例子。需要用到本章之前所有的知識才能完成這個大作品。
圖書目錄
第1章 硬體 1
1.1 什麼是arduino 1
1.2 arduino uno 2
1.2.1 處理器 3
1.2.2 串口 4
1.2.3 電源 5
1.2.4 擴展插座 6
1.2.5 盾板 8
1.3 arduino mega 2560 11
1.4 之前的硬體 12
1.4.1 arduino serial 12
1.4.2 arduino usb 13
1.4.3 arduino extreme 14
1.4.4 arduino nuova generazione(新一代) 14
1.4.5 arduino diecimila 14
1.4.6 arduino duemilanove 15
1.4.7 arduino mega 15
1.5 誰在做arduino 15
1.5.1 正式許可的產品 15
.1.5.2 其他人 17
1.6 自己做arduino 17
1.6.1 arduino印刷電路板 17
1.6.2 麵包板arduino 18
1.7 小結 19
第2章 軟體 21
2.1 主機和目標機 21
2.2 一步步來 21
2.2.1 第一步:寫代碼 22
2.2.2 第二步:編譯代碼 27
2.2.3 第三步:給晶片編程 28
2.2.4 第四步:測試和調試 29
2.2.5 第五步:重複 29
2.3 半自動化 29
2.4 更進一步 33
2.5 小結 33
第3章 atmel avr 34
3.1 起源 34
3.2 avr晶片家族 34
3.3 若有疑問:晶片器件手冊 35
3.4 晶片封裝 35
3.4.1 雙列直插(dip) 35
3.4.2 表面安裝器件(smd) 36
3.4.3 多出來的引腳 37
3.5 管腳定義 37
3.6 avr核心 43
3.6.1 時鐘源 45
3.6.2 地址空間 46
3.6.3 指令集 49
3.7 片內外圍設備 54
3.7.1 通用輸入/輸出(i/o) 55
3.7.2 外部中斷 55
3.7.3 定時器/計數器 56
3.7.4 usart 57
3.7.5 兩線串列接口(twi),即i2c 57
3.7.6 模擬輸入 58
3.8 小結 58
第4章 支持硬體 59
4.1 電路圖 59
4.1.1 元件類型 60
4.1.2 元件編號 60
4.1.3 元件值 61
4.1.4 元件值誤差 61
4.1.5 元件的其他參數 62
4.1.6 連線 62
4.2 給電路板供電 63
4.2.1 柱式電源插座 63
4.2.2 輸入電源調節 63
4.2.3 穩壓器 65
4.2.4 電源電路的演變 65
4.3 串口 67
4.4 處理器 69
4.4.1 功耗 69
4.4.2 i/o驅動能力 70
4.4.3 -reset信號 70
4.4.4 時間基準 70
4.4.5 去耦電容 71
4.4.6 閃燈 71
4.5 擴展空間 71
4.6 結構外形 72
4.7 通用串列匯流排(usb):信號加電源 73
4.8 小結 74
第5章 arduino軟體 75
5.1 開源軟體 76
5.2 多平台支持 76
5.3 arduino的傳承與發展 76
5.4 軟體安裝 77
5.5 實踐 77
5.6 用戶界面 78
5.6.1 file(檔案)選單 79
5.6.2 edit(編輯)選單和edit關聯選單 80
5.6.3 sketch(程式)選單 80
5.6.4 tools(工具)選單 81
5.6.5 help(幫助)選單 82
5.7 小結 82
第6章 最佳化 83
6.1 可行性 83
6.2 壓縮閃燈程式 83
6.2.1 閃爍是如何實現的 84
6.2.2 衡量節省空間的最佳化措施 84
6.2.3 代碼分析 84
6.2.4 沒有pinmode()的生活 85
6.2.5 縮寫和簡語 86
6.2.6 二進制寫法 87
6.2.7 深入分析 87
6.2.8 輕鬆翻轉 88
6.2.9 進一步精簡 88
6.2.10 更有效地“浪費時間” 89
6.2.11 更低級別的代碼 89
6.3 用簡單的串口通信來節省空間 90
6.3.1 “hello, world!”做了什麼 91
6.3.2 寫配置暫存器 91
6.3.3 傳送數據 93
6.3.4 一串字元 94
6.3.5 輸出數字 95
6.4 節省sram 96
6.4.1 測量要用的sram 96
6.4.2 最小裸機 98
6.4.3 記憶體分區 99
6.4.4 變數的位置 100
6.4.5 使用恰當的數據類型 100
6.4.6 再探字元串 101
6.5 低功耗,還是高速度? 102
6.6 電子測量 103
6.6.1 用arduino做測試儀器 103
6.6.2 儘可能快 105
6.6.3 讓它慢下來 108
6.6.4 進一步降低功耗 110
6.7 小結 112
第7章 硬體加軟體 113
7.1 可用的外圍設備 113
7.1.1 串口 113
7.1.2 通用數字輸入輸出 119
7.1.3 定時器和計數器 121
7.1.4 脈寬調製(pwm)輸出 124
7.1.5 模擬輸入 129
7.1.6 外部中斷 133
7.1.7 中斷手冊 135
7.2 小結 137
第8章 示例作品 139
8.1 不只是閃爍的led:從簡單開始 139
8.1.1 足夠慢 142
8.1.2 基本完成最佳化的六通道調光器 144
8.1.3 變暗了 147
8.2 閃爍led的其他用處 154
8.2.1 紅外遙控 154
8.2.2 tv-b-gone 156
8.3 許多閃爍的led 157
8.3.1 一個直接驅動的例子 157
8.3.2 用led驅動器直接驅動 159
8.3.3 多路復用技術 160
8.4 數字鐘 174
8.4.1 精度 179
8.4.2 用戶界面 180
8.4.3 其他功能 180
8.5 小結 181
第9章 項目管理 182
9.1 文檔 182
9.1.1 原始碼注釋 183
9.1.2 空格 184
9.1.3 按你的意思編程,按你的代碼解釋 185
9.1.4 自動文檔編制 186
9.1.5 寫給你的“讀者”看 186
9.1.6 硬體文檔 187
9.1.7 再進一步 188
9.2 團隊工作和協同開發 189
9.2.1 部落格 190
9.2.2 論壇 190
9.2.3 維基 191
9.2.4 修訂控制系統 191
9.2.5 關於修訂版號和版本號的說明 192
9.2.6 放作品的網站 192
9.3 選擇許可方式 195
9.3.1 專利和商標 195
9.3.2 著作權 196
9.3.3 開源 197
9.3.4 公共域 198
9.4 小結 199
第10章 硬體設計 200
10.1 了解硬體 200
10.1.1 必須要有的東西 201
10.1.2 想要有的東西 202
10.2 紅外接近感測器 203
10.2.1 一個簡易原型 205
10.2.2 一些簡單的改進 207
10.2.3 印製電路板 210
10.2.4 pcb布局技術 211
10.2.5 第一次嘗試 212
10.2.6 更小的版本 214
10.2.7 連線 215
10.3 自己定製的arduino 216
10.3.1 兼容現有arduino和盾板 216
10.3.2 電源的可能選擇 217
10.3.3 處理器選擇 218
10.3.4 還有什麼? 219
10.4 設計用的軟體 219
10.4.1 cadsoft eagle 220
10.4.2 eagle 貼士 220
10.5 小結 221
第11章 軟體設計 222
11.1 arduino高級話題 222
11.1.1 寫arduino庫 222
11.1.2 備選核心 229
11.2 不用arduino 239
11.2.1 再探bare metal 239
11.2.2 其他開發環境 242
11.3 小結 245
第12章 組網 246
12.1 點對點組網 246
12.1.1 通過串口交談 246
12.1.2 arduino間的對話 248
12.2 midi:樂器數字接口 260
12.3 網際網路 264
12.4 小結 268
第13章 更多示例作品 269
13.1 一個自動機器人 269
13.2 電源 270
13.3 動作控制 270
13.4 感測器 276
13.4.1 光敏感測器 276
13.4.2 接觸感測器 277
13.4.3 非接觸感測器 278
13.4.4 聲音感測器 279
13.4.5 指示器、控制器和其他形式的通信 279
13.5 控制系統 281
13.5.1 開環系統 281
13.5.2 閉環系統 282
13.6 示例機器人作品 283
13.6.1 一個練習機器人 284
13.6.2 下一個機器人 304
13.6.3 你的終極機器人 318
13.7 小結 319
圖書小結
本書致力於探索和描述Arduino體系結構的內部工作機制,為Arduino用戶提供參考。掌握這些知識有助於更快更好地開發Arduino作品。本書也希望能點燃讀者對嵌入式系統設計的興趣,激發讀者今後開發出更好的作品。
祝大家好運,學習開心!