第 1 章 進入 Arduino 的世界
歡迎來到 Arduino 的世界!Arduino 是一個開源的開發平臺,在全世界范圍內成千上萬的人正在用它開發制作一個又一個電子產品,這些電子產品包括從平時生活的小物件到時下流行的 3D 打印機,它降低了電子開發的門檻,即使是從零開始的入門者也能迅速上手,制作有趣的東西,這便是開源 Arduino 的魅力。通過本書的介紹,讀者對 Arduino 會有一個更全面的認識。
本章知識點:
Arduino 的起源與發展
Arduino 的特點
Arduino 開發板簡介
Arduino 的未來展望
1.1 什么是 Arduino
什么是 Arduino?相信很多讀者會有這個疑問,也需要一個全面而準確的答案。不僅是讀者,很多使用 Arduino 的人也許對這個問題都難以給出一個準確的說法,甚至認為手中的開發板就是Arduino,其實這并不準確。那么,Arduino 究竟該如何理解呢?1.1.1 Arduino 不只是電路板Arduino 是一種開源的電子平臺,該平臺最初主要基于 AVR 單片機的微控制器[1]和相應的開發軟件,目前在國內正受到電子發燒友的廣泛關注。自從 2005 年 Arduino 騰空出世以來,其硬件和開發環境一直進行著更新迭代。現在 Arduino 已經有將近十年的發展歷史,因此市場上稱為Arduino的電路板已經有各式各樣的版本了。Arduino開發團隊正式發布的是Arduino Uno和ArduinoMega 2560,如圖 1-1 和圖 1-2 所示。
Arduino 項目起源于意大利,該名字在意大利是男性用名,音譯為“阿爾杜伊諾”,意思為“強壯的朋友”,通常作為專有名詞,在拼寫時首字母需要大寫。其創始團隊成員包括:Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis 和 Nicholas Zambetti 6 人。Arduino 的出現并不是偶然,Arduino 最初是為一些非電子工程專業的學生設計的。設計者最初為了尋求一個廉價好用的微控制器開發板從而決定自己動手制作開發板,Arduino 一經推出,因其開源、廉價、簡單易懂的特性迅速受到了廣大電子迷的喜愛和推崇。幾乎任何人,即便不懂電腦編程,利用這個開發板也能用 Arduino 做出炫酷有趣的東西,比如對感測器探測做出一些回應、閃爍燈光、控制馬達等。
Arduino 的硬件設計電路和軟件都可以在官方網站上獲得,正式的制作商是意大利的SmartProjects, 許多制造商也在生產和銷售他們自己的與 Arduino 兼容的電路板和擴展板,但是由 Arduino 團隊設計和支持的產品需要始終保留著 Arduino 的名字。所以,Arduino更加準確的說法是一個包含硬件和軟件的電子開發平臺,具有互助和奉獻的開源精神以及團隊力量。
1.1.2 Arduino 程序的開發過程
由于 Arduino 主要是為了非電子專業和業余愛好者使用而設計的,所以 Arduino 被設計成一個小型控制器的形式,通過連接到計算機進行控制。Arduino 開發過程是:
(1)開發者設計并連接好電路;
(2)將電路連接到計算機上進行編程;
(3)將編譯通過的程序下載到控制板中進行觀測;
(4)最后不斷修改代碼進行調試以達到預期效果。
1.2 為什么要使用 Arduino
在嵌入式開發中,根據不同的功能開發者會用到各種不同的開發平臺。而 Arduino 作為新興開發平臺,在短時間內受到很多人的歡迎和使用,這跟其設計的原理和思想是密切相關的。首先,Arduino 無論是硬件還是軟件都是開源的,這就意味著所有人都可以查看和下載其源碼、圖表、設計等資源,并且用來做任何開發都可以。用戶可以購買克隆開發板和基于 Arduino 的開發板,甚至可以自己動手制作一個開發板。但是自己制作的不能繼續使用 Arduino 這個名稱,可以自己命名,比如 Robotduino。
其次,正如林納斯·本納第克特·托瓦茲的 Linux 操作系統一樣,開源還意味著所有人可以下載使用并且參與研究和改進 Arduino,這也是 Arduino 更新換代如此迅速的原因。全世界各種電子愛好者用 Arduino 開發出各種有意思的電子互動產品。有人用它制作了一個自動除草機,去上班的時候打開,不久花園里的雜草就被清除干凈了!有人用它制作微博機器人,配合一些傳感器監測植物的狀態,并及時發微博來提醒主人,植物什么時間該澆水、施肥、除草等,非常有趣。
圖 1-3 所示為日本一開發者用 Arduino 和 Kinect 制作的可以自己接住丟掉垃圾的智能垃圾桶。
Arduino 可以和 LED、點陣顯示板、電機、各類傳感器、按鈕、以太網卡等各類可以輸出輸入數據或被控制的任何東西連接,在互聯網上各種資源十分豐富,各種案例、資料可以幫助用戶迅速制作自己想要制作的電子設備。在應用方面,Arduino 突破了傳統的依靠鍵盤、鼠標等外界設備進行交互的局限,可以更方便地進行雙人或者多人互動,還可以通過 Flash、Processing 等應用程序與 Arduino 進行交互。
1.3 Arduino 硬件的分類
在了解 Arduino 起源以及使用 Arduino 制作的各種電子產品之后,接下來對 Arduino 硬件和開發板,以及其他擴展硬件進行初步的了解和學習。
1.3.1 Arduino 開發板
Arduino 開發板設計得非常簡潔,一塊 AVR 單片機、一個晶振或振蕩器和一個 5V 的直流電源。常見的開發板通過一條 USB 數據線連接計算機。Arduino 有各式各樣的開發板,其中最通用的是Arduino UNO。另外,還有很多小型的、微型的、基于藍牙和 Wi-Fi 的變種開發板。還有一款新增的開發板叫做 Arduino Mega 2560,它提供了更多的 I/O 引腳和更大的存儲空間,并且啟動更加迅速。以 Arduino UNO 為例,Arduino UNO 的處理器核心是 ATmega 328,同時具有 14 路數字輸入/輸出口(其中 6 路可作為 PWM 輸出),6 路模擬輸入,一個 16MHz 的晶體振蕩器,一個 USB 口,一個電源插座,一個 ICSP header 和一個復位按鈕。因為 Arduino UNO 開發板的基礎構成在一個表里顯示不下,所以這里特意設計了兩個表來展示,如表 1-1 和表 1-2 所示。
Arduino UNO 可以通過以下三種方式供電,能自動選擇供電方式:
外部直流電源通過電源插座供電;
電池連接電源連接器的 GND 和 VIN 引腳;
USB 接口直接供電,圖 1-4 所示的穩壓器可以把輸入的 7V~12V 電壓穩定到 5V。
在電源接口上方,一個右側引出 3 個引腳,左側一個比較大的引腳細看會發現上面有AMST1117 的字樣,其實這個芯片是個三端 5V 穩壓器,電源口的電源經過它穩壓之后才給板子輸入,其實電源適配器內已經有穩壓器,但是電池沒有。可以理解為它是一個安檢員,一切從電源口經過的電源都必須過它這一關,這個“安檢員”對不同的電源會進行區別對待。
首先,AMS1117 的片上微調把基準電壓調整到 1.5%的誤差以內,而且電流限制也得到了調整,以盡量減少因穩壓器和電源電路超載而造成的壓力。再者根據輸入電壓的不同而輸出不同的電壓,可提供 1.8V、2.5V、2.85V、3.3V、5V 穩定輸出,電流最大可達 800mA,內部的工作原理這里不必去探究,讀者只需要知道,當輸入 5V 的時候輸出為 3.3V,輸入 9V 的時候輸出才為 5V,所以用 9V(9V~12V 均可,但是過高的電源會燒壞板子)電源供電的原因就在這,如使用 5V 的適配器與 Arduino 連接,之后連接外設做實驗,會發現一些傳感器沒有反應,這就是某些傳感器需要 5V的信號源,可是板子最高輸出只能達到 3.3V,必然有問題。
重置按鈕和重置接口都用于重啟單片機,就像重啟電腦一樣。若利用重置接口來重啟單片機,應暫時將接口設置為 0V 即可重啟。
GND 引腳為接地引腳,也就是 0V。A0~A5 引腳為模擬輸入的 6 個接口,可以用來測量連接到引腳上的電壓,測量值可以通過串口顯示出來。當然也可以用作數字信號的輸入輸出。Arduino 同樣需要串口進行通信,圖 1-4 所示的串口指示燈在串口工作的時候會閃爍。Arduino通信在編譯程序和下載程序時進行,同時還可以與其他設備進行通信。而與其他設備進行通信時則需要連接 RX(接收)和 TX(發送)引腳。ATmega 328 芯片中內置的串口通信硬件是可以通過同步和異步模式工作的。同步模式需要專用的信號來表示時鐘信息,而 Arduino 的串口(USART 外圍設備,即通用同步/異步接收發送裝置)工作在異步模式下,這和大多數 PC 的串口是一致的。數字引腳 0 和 1 分別標注著 RX 和 TX,表明這兩個可以當做串口的引腳是異步工作的,即可以只接收、發送,或者同時接收和發送信號。
1.3.2 Arduino 擴展硬件
與 Arduino 相關的硬件除了核心開發板外,各種擴展板也是重要的組成部分。Arduino 開發板設計的可以安裝擴展板,即盾板進行擴展。它們是一些電路板,包含其他的元件,如網絡模塊、GPRS 模塊、語音模塊等。在圖 1-4 所示的開發板兩側可以插其他引腳的地方就是可以用于安裝其他擴展板的地方。它被設計為類似積木、通過一層層的疊加而實現各種各樣的擴展功能。例如Arduino UNO 同 W5100 網絡擴展板可以實現上網的功能,堆插傳感器擴展板可以擴展 Arduino 連接傳感器的接口。圖 1-5 和圖 1-6 為 Arduino 同擴展板連接的例子。
雖然 Arduino 開發板支持很多擴展板來擴展功能,但其擴展插座中引腳的間距并不嚴格規整。仔細觀察開發板會發現上面兩個最遠的引腳之間距離為 4.064mm,這與標準的 2.54mm 網格的面包板及其他擴展工具并不兼容,盡管要求改正的呼聲很強烈,但是這個誤差卻很難改正,一旦改正將使得原來的大量擴展板變得不兼容,所以這個誤差便沒有去改動。
雖然這個誤差沒有改動,但是很多公司和個人在生產 Arduino 兼容的產品時兼顧增加了額外兩行 2.54mm 的針孔來解決這個問題,另外美國 Gravitech公司完全舍棄了擴展板兼容來解決這個問題。
1.4 Arduino 展望未來
Arduino 自誕生以來,簡單、廉價的特點使得 Arduino 如同雨后春筍般迅速風靡全球,在不斷發展的同時,Arduino 也在發揮著更重要的作用。本節將對 Arduino 發展的特點和未來發展做一點總結和展望。
1.4.1 創客文化在介紹 Arduino 發展前景之前,首先需要了解逐漸興起的“創客”文化。什么是“創客”?“創客”一詞來源于英文單詞“Maker”,指的是不以盈利為目標,努力把各種創意轉變為現實的人。其實就是熱愛生活,愿意親手創新為生活增加樂趣的一群人。他們精力旺盛,堅信世界會因為自己的創意而改變。創客文化興起于國外,經過一段時間紅紅火火的發展,如今已經成為一種潮流。國內也不示弱,一些硬件發燒友了解到國外的創客文化后被其深深吸引,經過圈子中的口口相傳,大量的硬件、軟件、創意人才聚集在了一起。各種社區、空間、論壇的建立使得創客文化在中國真正流行起來。北京、上海、深圳已經發展成為中國創客文化的三大中心。那么,是什么推動創客文化如此迅猛發展呢?眾所周知,硬件的學習和開發是有一定的難度的,人人都想通過簡單的方式實現自己的創意,于是開源硬件應運而生。而開源硬件平臺中知名度較高的應該就是日漸強大的 Arduino 了。Arduino 作為一款開源硬件平臺,一開始被設計的目標人群就是非電子專業尤其是藝術家學習使用的,讓他們更容易實現自己的創意。當然,這不是說 Arduino 性能不強、有些業余,而是表明Arduino 很簡單,易上手。Arduino 內部封裝了很多函數和大量的傳感器函數庫,即使不懂軟件開發和電子設計的人也可以借助 Arduino 很快創作出屬于自己的作品。可以說 Arduino 與創客文化是相輔相成的。
一方面,Arduino 簡單易上手、成本低廉這兩大優勢讓更多的人都能有條件和能力加入創客大軍;另一方面,創客大軍的日益擴大也促進了 Arduino 的發展。各種各樣的社區、論壇的完善,不同的人、不同的環境、不同的創意每時每刻都在對Arduino進行擴展和完善。在2011年舉行的GoogleI/O 開發者大會上,Google 公司發布了基于 Arduino 的 Android Open Accessory 標準和 ADK 工具,這使得大家對 Arduino 的巨大的發展前景十分看好。Arduino 發展潛力巨大,既可以讓創客根據創意改造成為一個小玩具,也可以大規模制作成工業產品。國內外 Arduino 社區良好的運作和維護使得幾乎每一個創意都能找到實現的理論和實驗基礎,相信隨著城市的不斷發展,人們對生活創新的不斷追求,會有越來越多的人聽說 Arduino、了解 Arduino、玩轉 Arduino。
1.4.2 快速原型設計
縱觀計算機語言的發展,從 0 和 1 相間的二進制語言到匯編語言,從 K&R 的 C 語言到現在各式各樣的高級語言,計算機語言正在逐漸變成更自由、更易學易懂的大眾化語言。硬件的發展已經逐漸降低軟件開發的復雜性,編程的門檻正在逐漸降低。曾有人預言:未來的時代,程序員將要消失,編程不再是局限人們思維和靈感的桎梏。在軟件行業飛速發展的現在,幾乎任何具有良好邏輯思維能力的人只要對某些產品感興趣,就可以通過互聯網獲得足夠的資源從而成為一名軟件開發人員。
而 Arduino 的出現,讓人們看到了不僅是軟件,硬件的開發也越來越簡單和廉價。不必從底層開始學習開發計算機的特性讓更多的人從零上手,將自己的靈感用最快的速度轉化成現實。以
Arduino 為其中代表的開源硬件,降低了入行的門檻,從而設計電子產品不再是專業領域電子工程師的專利,“自學成才”的電子工程師正在逐漸成為可能。
開源硬件將會使得軟件同硬件、互聯網產業更好的結合到一起,在未來的一段時間里,開源硬件將會有非常好的發展,最終形成硬件產品少兒化、平民化、普及化的趨勢。同時,Arduino 的簡單易學也會成為一些電子愛好者進入電子行業的一塊基石,隨著使用 Arduino 制作電子產品的深入,相應的也會對硬件進行更深層次的探索。在簡單易學的前提下,比一開始就學習單片機、匯編入行要簡單有趣得多。
Arduino 開源和自由的設計無疑是全世界電子愛好者的福音,大量的資源和資料讓很多人快速學習 Arduino,開發一個電子產品開始變得簡單。互聯網的飛速發展讓科技的腳步加快,互聯網產品正在變得更簡單。利用 Arduino,電子愛好者們可以快速設計出原型,從而根據反饋改進出更加穩定可靠的版本。
…………
…………
完整的pdf格式文檔51黑下載地址(共61頁):
見2樓
|