Arduino是一款便捷靈活、方便上手的開(kāi)源電子平臺(tái)。以Arduino硬件為基礎(chǔ),搭配各種傳感器和功能模塊,開(kāi)發(fā)者便可以憑借天馬行空的想象力在Arduino上搭建各種創(chuàng)意十足的作品。本書(shū)從Arduino的基礎(chǔ)知識(shí)講起,針對(duì)擁有硬件開(kāi)發(fā)興趣的廣大初學(xué)者,較為詳細(xì)地介紹了如何從Arduino新手成長(zhǎng)為技術(shù)大牛。書(shū)中以圖和案例的方式,針對(duì)Arduino各個(gè)功能模塊進(jìn)行了大量的實(shí)例講解,*后通過(guò)智能小車(chē)和3D打印機(jī)兩個(gè)綜合案例系統(tǒng)、完整地對(duì)全書(shū)的內(nèi)容進(jìn)行了實(shí)戰(zhàn)演練。
《Arduino基礎(chǔ)與應(yīng)用》對(duì)讀者的基礎(chǔ)知識(shí)要求非常低,非常適合作為學(xué)生的課外電子項(xiàng)目的參考書(shū)和實(shí)驗(yàn)教材;同時(shí),全書(shū)內(nèi)容循序漸進(jìn),智能小車(chē)和3D打印機(jī)兩個(gè)綜合案例對(duì)有一定電子基礎(chǔ)的愛(ài)好者同樣具有一定的參考價(jià)值。
在國(guó)外,Arduino幾乎就是創(chuàng)客和硬件創(chuàng)新的代名詞。
21世紀(jì)最重要的科技性事件之一創(chuàng)客運(yùn)動(dòng)興起的標(biāo)志,就是2005年冬季第一塊Arduino開(kāi)發(fā)板的誕生。這款電路板,在全球范圍內(nèi)瞬間引發(fā)了經(jīng)久不衰的創(chuàng)客風(fēng)潮。
之后大量涌現(xiàn)的創(chuàng)客項(xiàng)目,包括機(jī)器人、無(wú)人機(jī)、智能家居控制、3D打印等,都主要是以Arduino為原型或基礎(chǔ)研發(fā)的;而基于Arduino電路及引申的產(chǎn)業(yè),例如Arduino改進(jìn)或兼容板,服務(wù)創(chuàng)客從Arduino原型到批量生產(chǎn)等業(yè)務(wù),也在開(kāi)源硬件大潮中異常火爆。在全球硬件創(chuàng)客的武器庫(kù)中,Arduino已經(jīng)連續(xù)十多年獨(dú)霸頭把交椅。
Arduino最大的貢獻(xiàn)就是,給極為復(fù)雜難懂的電子制作裝上了扳機(jī):它把創(chuàng)客們最頭疼的電子電路和底層驅(qū)動(dòng)庫(kù)都打包集成為黑箱,進(jìn)而省略掉了大部分與電路和硬件驅(qū)動(dòng)相關(guān)的操作,最終只剩下了簡(jiǎn)單的控制邏輯。這讓創(chuàng)客無(wú)須學(xué)習(xí)復(fù)雜的電子基礎(chǔ),也能夠輕松制作出精良且可靠的電子創(chuàng)意產(chǎn)品。
本書(shū)特色
本書(shū)的編寫(xiě)目的是為了向擁有硬件開(kāi)發(fā)興趣的中學(xué)生和非電子、機(jī)電專業(yè)的大學(xué)生等初學(xué)者提供系統(tǒng)、完善的基礎(chǔ)知識(shí)與開(kāi)發(fā)教程。同時(shí),本書(shū)深入淺出地介紹了Arduino軟硬件的基礎(chǔ)知識(shí),并結(jié)合多個(gè)案例,詳細(xì)介紹Arduino各個(gè)功能模塊與相關(guān)類(lèi)庫(kù),便于讀者有針對(duì)性地學(xué)習(xí)和查閱。本書(shū)體系結(jié)構(gòu)清晰,內(nèi)容豐富,功能模塊案例和綜合案例相結(jié)合,使讀者能夠系統(tǒng)學(xué)習(xí),并進(jìn)一步提高。
如何閱讀本書(shū)
本書(shū)共12章,分為三部分,其中第三部分以接近實(shí)戰(zhàn)的實(shí)例來(lái)講解工程應(yīng)用,相比于前兩部分更為獨(dú)立。如果讀者是經(jīng)驗(yàn)豐富的資深用戶,具有一定的Arduino開(kāi)發(fā)經(jīng)驗(yàn),那么可以直接閱讀第三部分內(nèi)容;如果讀者是初學(xué)者,那么請(qǐng)從第一部分的基礎(chǔ)篇開(kāi)始學(xué)習(xí)。
第一部分是基礎(chǔ)篇,內(nèi)容包括第1章和第2章,這一部分簡(jiǎn)單介紹了Arduino的相關(guān)背景資料,然后從Arduino的軟硬件基礎(chǔ)開(kāi)始講解:軟件方面包含開(kāi)發(fā)環(huán)境的搭建、IDE的介紹以及第一個(gè)Arduino程序的使用,詳細(xì)介紹了Arduino程序結(jié)構(gòu)和基本編程基礎(chǔ);硬件方面以Arduino UNO 為例進(jìn)行了詳細(xì)介紹,同時(shí)包含基礎(chǔ)的電路電子知識(shí)。初學(xué)者可以通過(guò)這一部分的學(xué)習(xí)為Arduino開(kāi)發(fā)打下牢固的基礎(chǔ)。
第二部分是進(jìn)階篇,內(nèi)容包括第3~10章。這一部分詳細(xì)介紹了Arduino外圍模塊以及相應(yīng)類(lèi)庫(kù)的使用方法,包含數(shù)字信號(hào)、模擬信號(hào)、串口通信、顯示模塊、電機(jī)控制、無(wú)線通信、SD卡擴(kuò)展、GPS定位等幾大模塊,每章結(jié)合幾個(gè)小案例對(duì)各個(gè)模塊功能進(jìn)行講解。
第三部分是綜合篇,內(nèi)容包括第11章和第12章。這一部分介紹了兩個(gè)綜合性的案例,即智能小車(chē)和3D打印機(jī),這兩個(gè)案例涵蓋了本書(shū)的所有內(nèi)容。通過(guò)這兩章
的學(xué)習(xí),可以對(duì)全書(shū)內(nèi)容進(jìn)行系統(tǒng)的回顧與整理。
配套資源
本書(shū)配有3套開(kāi)發(fā)套件,分別是針對(duì)Arduino各個(gè)功能模塊的開(kāi)發(fā)包以及針對(duì)兩個(gè)綜合案例而定制的藍(lán)牙智能小車(chē)開(kāi)發(fā)套件和3D打印機(jī)開(kāi)發(fā)套件。讀者可以根據(jù)自己的開(kāi)發(fā)學(xué)習(xí)需要聯(lián)系作者(E-mail:huangmingji@ustb.edu.cn)購(gòu)買(mǎi)相應(yīng)的開(kāi)發(fā)套件。
本書(shū)配有實(shí)驗(yàn)教材電子版,僅供訂購(gòu)本書(shū)的教師使用,索取郵箱goodtextbook@126.com,聯(lián)系電話010 82317036。
本書(shū)為讀者免費(fèi)提供程序源代碼和數(shù)據(jù),讀者可掃描二維碼(見(jiàn)扉頁(yè))關(guān)注北航科技圖書(shū)公眾號(hào)并回復(fù)2848獲得相關(guān)下載地址。讀者也可通過(guò)網(wǎng)址http://www.routegis.net/arduino.php
或者百度網(wǎng)盤(pán)https://pan.baidu.com/s/1J9Y7fhPLn8l606li72n-bw (提取碼:iu2h) 下載該資源。同時(shí)針對(duì)擁有不同開(kāi)發(fā)套件的讀者建立了三個(gè)QQ 群(基礎(chǔ)知識(shí)討論群868509315,智能小車(chē)開(kāi)發(fā)討論群868513410,3D打印機(jī)討論群868744040),方便有共同興趣的讀者開(kāi)發(fā)交流。
致 謝
首先感謝Arduino開(kāi)發(fā)團(tuán)隊(duì),開(kāi)源了整個(gè)項(xiàng)目,因?yàn)樗麄兊臒o(wú)私,才有了本書(shū)的面世。同時(shí)還要感謝活躍在Arduino論壇上的所有開(kāi)發(fā)人員,是他們的創(chuàng)新精神和辛勤努力才使得這么多新奇的功能得以實(shí)現(xiàn),使得Arduino第三方類(lèi)庫(kù)不斷完善,使得Arduino不斷向前發(fā)展。
本書(shū)列入北京科技大學(xué)校級(jí)十二五規(guī)劃教材建設(shè)項(xiàng)目,書(shū)的編寫(xiě)得到了北京科技大學(xué)教材建設(shè)基金的資助。
本書(shū)由北京科技大學(xué)機(jī)械工程學(xué)院的老師編寫(xiě)完成,其中第1~9章由黃明吉編寫(xiě),學(xué)生任曉文、王星宇、張宗信協(xié)助;第10~12章由陳平編寫(xiě),學(xué)生陳文斌、張宗信協(xié)助。
書(shū)中的不足與錯(cuò)誤之處,敬請(qǐng)讀者批評(píng)指正。
男,博士,現(xiàn)為北京科技大學(xué)機(jī)械工程學(xué)院副教授。2002年畢業(yè)于北京航空航天大學(xué),獲工學(xué)博士學(xué)位。畢業(yè)后在北京科技大學(xué)機(jī)械工程學(xué)院從事科研和教學(xué)工作。主要研究方向?yàn)槿S實(shí)時(shí)掃描技術(shù)、3D打印技術(shù)。
第一部分 基礎(chǔ)篇
第1章
認(rèn)識(shí)Arduino 2
1.1 Arduino的來(lái)歷 2
1.2 Arduino的優(yōu)點(diǎn) 2
1.3 Arduino硬件與選擇 3
1.3.1 認(rèn)識(shí)不同型號(hào)的Arduino 4
1.3.2 Arduino外圍模塊 9
1.4 Arduino擴(kuò)展模塊圖解 11
1.4.1 電源擴(kuò)展板 11
1.4.2 SD卡讀/寫(xiě)擴(kuò)展板 12
1.4.3 GSM 擴(kuò)展板 12
1.4.4 電機(jī)擴(kuò)展板 14
1.4.5 傳感器擴(kuò)展板 14
1.4.6 Wi-Fi擴(kuò)展板 15
1.5 從Arduino UNO開(kāi)始
16
第2章
建立開(kāi)發(fā)環(huán)境 19
2.1 項(xiàng)目開(kāi)發(fā)流程 19
2.2 Arduino開(kāi)發(fā)軟件 19
2.2.1 下載配置Arduino開(kāi)發(fā)環(huán)境
19
2.2.2 認(rèn)識(shí)Arduino IDE 20
2.2.3 安裝Arduino驅(qū)動(dòng)程序
22
2.3 自帶程序范例與類(lèi)庫(kù)介紹 24
2.3.1 Arduino自帶范例介紹 24
2.3.2 Arduino自帶類(lèi)庫(kù)介紹 28
2.4 如何導(dǎo)入第三方庫(kù) 35
2.5 Arduino語(yǔ)言及程序結(jié)構(gòu) 36
2.5.1 Arduino語(yǔ)言 36
2.5.2 Arduino程序結(jié)構(gòu) 36
2.6 從例程Hello World開(kāi)始 38
第二部分 進(jìn)階篇
第3章
數(shù)字信號(hào)及應(yīng)用案例 42
3.1 數(shù)字信號(hào)簡(jiǎn)介 42
3.2 LED及應(yīng)用案例 42
3.2.1 心形LED閃爍案例 42
3.2.2 跑馬燈案例 46
3.3 指撥開(kāi)關(guān)控制應(yīng)用案例 48
3.4 7段數(shù)碼顯示器案例 50
3.5 PWM 及應(yīng)用案例 55
3.6 蜂鳴器案例 57
3.7 數(shù)字輸出案例 60
3.8 限位開(kāi)關(guān)案例 63
第4章
模擬信號(hào)及應(yīng)用案例 64
4.1 可變電阻測(cè)量案例 64
4.2 光敏電阻測(cè)量案例 67
4.3 溫度感測(cè)案例 69
4.4 壓力感測(cè)案例 71
第5章 Arduino與外設(shè)通信 73
5.1 串口通信 73
5.1.1 其他Arduino上的串口位置
75
5.1.2 Arduino與電腦通信設(shè)置 76
5.1.3 Arduino串口通信函數(shù) 77
5.1.4 串口通信案例 80
5.2 IIC總線通信 85
5.2.1 IIC主機(jī)、從機(jī)和引腳 86
5.2.2 Wire類(lèi)庫(kù)成員函數(shù) 86
5.2.3 IIC連接方法 88
5.2.4 IIC總線通信案例 89
5.3 SPI總線通信 93
5.3.1 SPI引腳 93
5.3.2 SPI總線上的從設(shè)備選擇 94
5.3.3 SPI類(lèi)庫(kù)成員函數(shù) 94
5.3.4 SPI總線上的數(shù)據(jù)發(fā)送與接收 95
5.3.5 SPI總線通信案例 95
5.4 USB類(lèi)庫(kù) 100
5.4.1 USB類(lèi)庫(kù)相關(guān)函數(shù) 100
5.4.2 模擬鍵盤(pán)輸入信息 102
第6章 LCD顯示與控制 105
6.1 液晶顯示模板1602 LCD 105
6.2 Arduino相關(guān)函數(shù)庫(kù) 107
6.3 啟動(dòng)LCD
109
6.3.1 需要的元器件 109
6.3.2 4位數(shù)據(jù)線接法 110
6.3.3 連接元件 110
6.4 1602 LCD控制案例 111
6.4.1 LCD顯示 111
6.4.2 LCD換行控制 112
6.4.3 移動(dòng)的字幕 113
6.4.4 顯示輸入數(shù)據(jù) 114
第7章 Arduino電機(jī)控制 117
7.1 直流電機(jī) 117
7.1.1 直流電機(jī)的選型 117
7.1.2 直流電機(jī)接線圖解 118
7.1.3 直流電機(jī)驅(qū)動(dòng)外圍模塊 119
7.1.4 直流電機(jī)控制案例 120
7.1.5 AFMotor類(lèi)庫(kù) 124
7.2 舵 機(jī) 125
7.2.1 舵機(jī)選型 125
7.2.2 舵機(jī)接線圖解 126
7.2.3 舵機(jī)控制案例 126
7.2.4 Servo類(lèi)庫(kù) 127
7.3 步進(jìn)電機(jī) 128
7.3.1 步進(jìn)電機(jī)選型 128
7.3.2 步進(jìn)電機(jī)接線圖解 129
7.3.3 步進(jìn)電機(jī)驅(qū)動(dòng)外圍模塊 130
7.3.4 步進(jìn)電機(jī)控制案例 132
7.3.5 Stepper類(lèi)庫(kù) 136
第8章 Arduino與無(wú)線通信 138
8.1 無(wú)線通信概述 138
8.2 無(wú)線通信網(wǎng)絡(luò)框架 138
8.2.1 一對(duì)多通信架構(gòu) 139
8.2.2 多對(duì)多通信架構(gòu) 139
8.2.3 混合式通信架構(gòu) 140
8.3 常見(jiàn)的無(wú)線通信協(xié)議 140
8.4 RF模塊 141
8.4.1 315 MHz
RF模塊及案例 141
8.4.2 RFID與讀卡器及案例 144
8.5 紅外線與超聲波案例 146
8.5.1 紅外線與超聲波簡(jiǎn)介 147
8.5.2 簡(jiǎn)單的紅外信號(hào)傳輸案例 147
8.5.3 簡(jiǎn)單的紅外線測(cè)距儀案例 149
8.5.4 紅外線人體感測(cè)案例 150
8.5.5 簡(jiǎn)單的超聲波測(cè)距案例 153
8.6 藍(lán)牙模塊與案例 155
8.7 Wi-Fi模塊與案例 157
第9章 Arduino存儲(chǔ)技術(shù) 159
9.1 EEPROM 存儲(chǔ)技術(shù) 159
9.1.1 EEPROM 介紹 159
9.1.2 EEPROM 類(lèi)庫(kù) 159
9.1.3 EEPROM 簡(jiǎn)單讀、寫(xiě)案例 160
9.1.4 EEPROM 存儲(chǔ)各類(lèi)型數(shù)據(jù)案例 163
9.2 SD卡存儲(chǔ)技術(shù) _(_y_>奯__165
9.2.1 SD卡介紹 165
9.2.2 SD卡類(lèi)庫(kù) 166
9.2.3 SD卡外圍模塊 169
9.2.4 SD卡簡(jiǎn)單讀/寫(xiě)案例 170
9.2.5 SD卡溫度采集案例 176
第10章 GPS室外定位 182
10.1 GPS簡(jiǎn)介 182
10.2 GPS模塊介紹 182
10.2.1 GPS有源天線 182
10.2.2 GPS模塊特性參數(shù) 183
10.3 GPS使用設(shè)定 183
10.4 GPS室外定位案例 185
10.4.1 簡(jiǎn)單定位案例 185
10.4.2 便攜定位裝置案例 190
第三部分 綜合篇
第11章
智能小車(chē) 198
11.1 智能小車(chē)結(jié)構(gòu)及功能分析 198
11.1.1 智能小車(chē)結(jié)構(gòu) 198
11.1.2 智能小車(chē)功能分析 200
11.2 智能小車(chē)基本功能實(shí)現(xiàn) 202
11.2.1 全向運(yùn)行 202
11.2.2 實(shí)時(shí)啟動(dòng) 206
11.3 智能小車(chē)黑線循跡 208
11.3.1 黑線循跡原理 208
11.3.2 軟、硬件分析 208
11.3.3 操作說(shuō)明 211
11.4 智能小車(chē)紅外避障 211
11.4.1 紅外避障原理 211
11.4.2 軟、硬件分析 211
11.4.3 操作說(shuō)明 214
11.5 智能小車(chē)超聲波避障 214
11.5.1 超聲波避障原理 214
11.5.2 軟、硬件分析 214
11.5.3 操作說(shuō)明 218
11.6 智能小車(chē)紅外遙控 218
11.6.1 紅外遙控原理 218
11.6.2 軟、硬件分析 218
11.6.3 操作說(shuō)明 221
11.7 智能小車(chē)藍(lán)牙遙控 221
11.7.1 藍(lán)牙遙控原理 221
11.7.2 軟、硬件分析 221
11.7.3 操作說(shuō)明 229
11.8 智能小車(chē)Wi-Fi遙控 230
11.8.1 Wi-Fi遙控原理 230
11.8.2 軟、硬件分析 230
11.8.3 操作說(shuō)明 234
第12章
桌面式3D打印機(jī) 238
12.1 3D打印技術(shù)介紹 238
12.1.1 3D打印原理 238
12.1.2 3D打印流程 239
12.1.3 3D打印特點(diǎn) 240
12.2 桌面式3D打印機(jī)結(jié)構(gòu) 240
12.3 3D打印機(jī)打印使用說(shuō)明 241
12.3.1 3D打印機(jī)軟件使用說(shuō)明 241
12.3.2 3D打印機(jī)硬件使用說(shuō)明 245
12.3.3 3D打印使用案例 246
12.3.4 3D打印機(jī)維護(hù)與保養(yǎng) 248
12.3.5 3D打印機(jī)常見(jiàn)故障分析 249
12.4 3D打印機(jī)功能技術(shù)分析 250
12.4.1 3D打印機(jī)控制系統(tǒng)分析 250
12.4.2 G代碼文件分析 263
12.4.3 存儲(chǔ)模塊 266
12.4.4 顯示模塊 275
12.4.5 運(yùn)動(dòng)控制模塊 283
12.4.6 加熱與溫度測(cè)量模塊 294
12.4.7 限位開(kāi)關(guān)模塊 298
12.4.8 3D打印總流程分析 300
附 錄 305
A.1 使用專業(yè)的IDE編寫(xiě)Arduino項(xiàng)目 305
A.2 常見(jiàn)問(wèn)題及解決方法 308
A.2.1 驅(qū)動(dòng)無(wú)法正常安裝 308
A.2.2
avrdude:stk500_getsync():notinsync:resp=0x00錯(cuò)誤 310
A.2.3
WProgram.h:Nosuchfile ordirectory:編譯錯(cuò)誤 311
A.2.4 Arduino是否支持其他型號(hào)的芯片 311
A.2.5 Arduino開(kāi)源使用的協(xié)議是什么 312
A.2.6 能否使用AVR.Libc和匯編等開(kāi)發(fā)Arduino 312
A.3 數(shù)值計(jì)算 312
A.3.1 十進(jìn)制計(jì)算 312
A.3.2 二進(jìn)制計(jì)算 312
A.3.3 十六進(jìn)制計(jì)算 313
A.4 ASCII碼對(duì)照表 314
A.5 串口通信可用的config配置
315
A.6 USB鍵盤(pán)庫(kù)支持的鍵盤(pán)功能列表 315
A.7 循環(huán)冗余檢查碼 317
A.8
Checksum 318
A.9 G代碼含義注解 319
參考文獻(xiàn) 323__