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