Arduino技術指南

Arduino技術指南

Arduino技術指南


GITHUB:
https://github.com/jash-git/Jash-good-idea-20220101-001/tree/main/HW/Arduino


封面; 1

數字版權聲明; 2

圖靈推薦閱讀; 3

扉頁\r; 4

版權\r; 5

版權聲明; 6

O’Reilly Media, Inc.介紹; 8

目錄; 10

前言; 20

1    Arduino家族; 28

   
1.1
Arduino簡史; 29

   
1.2
Arduino設備類型; 29

   
1.3
Arduino實物展示; 30

   
1.4
Arduino相容設備; 34

       
1.4.1
硬體相容設備; 34

       
1.4.2
軟體相容設備; 34

   
1.5
Arduino命名約定; 35

   
1.6
使用Arduino可以實現的目的; 36

   
1.7
更多資訊; 38

2    AVR微控制器; 39

   
2.1
背景; 39

   
2.2
內部架構; 40

   
2.3
內部記憶體; 43

   
2.4
週邊功能; 43

       
2.4.1
控制寄存器; 43

       
2.4.2
數字I/O; 44

       
2.4.3
8位計時器/計數器; 45

       
2.4.4
16位計時器/計數器; 46

       
2.4.5
計時器/計數器預分頻器; 46

   
2.5
模擬比較器; 46

   
2.6
模數轉換器; 47

   
2.7
串列I/O; 48

       
2.7.1
USART; 49

       
2.7.2
SPI; 49

       
2.7.3
TWI; 50

   
2.8
中斷; 51

   
2.9
看門狗計時器; 53

   
2.10
電氣特性; 53

   
2.11
更多資訊; 54

3    Arduino專用AVR微控制器; 55

   
3.1
ATmega168/328; 56

       
3.1.1
記憶體; 56

       
3.1.2
特性; 56

       
3.1.3
封裝; 57

       
3.1.4
; 58

       
3.1.5
引腳電路; 58

       
3.1.6
模擬比較器輸入; 58

       
3.1.7
模擬輸入; 59

       
3.1.8
序列介面; 59

       
3.1.9
計時器/時鐘I/O; 60

       
3.1.10
外部中斷; 60

       
3.1.11
Arduino引腳分配; 61

       
3.1.12
基本電氣特性; 62

   
3.2
ATmega1280/ATmega2560; 62

       
3.2.1
記憶體; 62

        3.2.2 特性; 64

       
3.2.3
封裝; 64

       
3.2.4
; 64

       
3.2.5
引腳功能; 65

       
3.2.6
模擬比較器輸入; 65

       
3.2.7
模擬輸入; 66

       
3.2.8
序列介面; 66

       
3.2.9
計時器/時鐘I/O; 67

       
3.2.10
外部中斷; 68

       
3.2.11
Arduino引腳分配; 68

       
3.2.12
電氣特性; 71

   
3.3
ATmega32U4; 71

       
3.3.1
記憶體; 71

       
3.3.2
特性; 72

       
3.3.3
封裝; 73

       
3.3.4
; 73

       
3.3.5
引腳功能; 74

       
3.3.6
模擬比較器輸入; 74

       
3.3.7
模擬輸入; 74

       
3.3.8
序列介面; 75

       
3.3.9
計時器/時鐘I/O; 76

       
3.3.10
外部中斷; 77

       
3.3.11
USB 2.0介面; 78

       
3.3.12
電氣特性; 79

       
3.3.13
Arduino引腳分配; 79

   
3.4
熔絲位; 80

   
3.5
更多資訊; 82

4    Arduino技術細節; 83

   
4.1
Arduino特性與功能; 83

   
4.2
Arduino USB介面; 84

   
4.3
Arduino物理大小; 86

       
4.3.1
全尺寸基本Arduino PCB類型; 87

       
4.3.2
Mega類型的Arduino PCB; 88

       
4.3.3
小型Arduino PCB; 89

       
4.3.4
特殊用途PCB類型; 92

   
4.4
Arduino引腳佈局; 93

       
4.4.1
Arduino基線引腳佈局; 93

       
4.4.2
擴展基線引腳佈局; 94

       
4.4.3
Mega引腳佈局; 99

       
4.4.4
非標準佈局; 101

   
4.5
更多資訊; 105

5    ArduinoAVR微控制器程式設計; 106

   
5.1
微控制器交叉編譯; 107

   
5.2
BootLoader; 108

   
5.3
Arduino IDE環境; 110

       
5.3.1
安裝Arduino IDE; 111

       
5.3.2
配置Arduino IDE; 112

   
5.4
使用Arduino IDE進行交叉; 113

       
5.4.1
Arduino可執行映射; 116

       
5.4.2
Arduino軟體創建過程; 116

       
5.4.3
程式標籤卡; 117

       
5.4.4
Arduino軟體架構; 118

       
5.4.5
運行時支援:main()函數; 119

       
5.4.6
程式示例; 121

       
5.4.7
常量; 124

       
5.4.8
全域變數; 124

   
5.5
; 125

       
5.5.1
Arduino程式中使用庫; 125

       
5.5.2
將庫添加到Arduino IDE; 128

       
5.5.3
創建自訂庫; 130

   
5.6
Arduino原始程式碼; 130

6    不使用Arduino IDE程式設計; 132

   
6.1
IDE替換方案; 132

       
6.1.1
PlatformIO; 132

       
6.1.2
Ino; 134

   
6.2
AVR工具鏈; 135

       
6.2.1
安裝工具鏈; 138

       
6.2.2
make; 139

       
6.2.3
avr-gcc; 140

       
6.2.4
binutils; 140

        6.2.5 avr-libc; 143

   
6.3
從零開始構建CC++程式; 145

       
6.3.1
使用avr-gccavr-g++進行編譯; 145

       
6.3.2
多個原始檔案與make程式; 145

   
6.4
AVR組合語言; 147

       
6.4.1
AVR程式設計模型; 148

       
6.4.2
創建AVR組合語言程式; 150

       
6.4.3
AVR組合語言資源; 152

   
6.5
上傳AVR可執行代碼; 153

       
6.5.1
系統內程式設計; 153

       
6.5.2
使用Bootloader程式設計; 154

       
6.5.3
不使用Bootloader上傳; 154

       
6.5.4
JTAG; 156

       
6.5.5
AVRDUDE; 156

       
6.5.6
Arduino用作ISP; 158

       
6.5.7
Bootloader運作; 158

       
6.5.8
更換Bootloader; 160

   
6.6
小結; 160

7    Arduino; 161

   
7.1
庫組件; 161

       
7.1.1
EEPROM; 163

       
7.1.2
Ethernet; 165

       
7.1.3
Firmata; 171

       
7.1.4
GSM; 175

       
7.1.5
LiquidCrystal; 184

       
7.1.6
SD; 187

       
7.1.7
Servo; 190

       
7.1.8
SPI; 191

       
7.1.9
SoftwareSerial; 192

       
7.1.10
Stepper; 194

       
7.1.11
TFT; 194

       
7.1.12
Wi-Fi; 197

       
7.1.13
Wi-Fi; 199

       
7.1.14
IPAddress; 199

       
7.1.15
Server; 199

       
7.1.16
Client; 200

       
7.1.17
UDP; 200

       
7.1.18
Wire; 201

       
7.1.19
Esplora; 203

   
7.2
協力廠商庫; 206

8    擴展板; 209

   
8.1
擴展板的電氣特性; 210

   
8.2
擴展板的物理特性; 211

   
8.3
堆疊擴展板; 213

   
8.4
常用Arduino擴展板; 213

       
8.4.1
輸入/輸出; 214

       
8.4.2
I/O擴展板; 214

       
8.4.3
I/O拓展板; 218

        8.4.4 繼電器擴展板; 221

       
8.4.5
信號路由擴展板; 223

       
8.4.6
記憶體; 226

       
8.4.7
通信; 228

       
8.4.8
串列I/OMIDI; 228

       
8.4.9
Ethernet; 229

       
8.4.10
藍牙; 231

       
8.4.11
USB; 232

       
8.4.12
ZigBee; 234

       
8.4.13
CAN; 235

       
8.4.14
原型; 238

       
8.4.15
製作自訂原型擴展板; 240

        8.4.16 運動控制; 241

       
8.4.17
DC與步進電機控制; 241

       
8.4.18
PWM與舵機控制; 243

       
8.4.19
顯示器; 244

       
8.4.20
儀錶擴展板; 250

       
8.4.21
適配器擴展板; 252

       
8.4.22
混雜擴展板; 253

   
8.5
非常見Arduino擴展板; 257

   
8.6
資源; 258

9    模組與I/O元件; 260

   
9.1
模組; 261

       
9.1.1
物理外形; 262

       
9.1.2
介面; 262

       
9.1.3
模組來源; 265

       
9.1.4
模組說明; 265

   
9.2
Grove模組; 287

   
9.3
感測器與模組介紹; 288

   
9.4
感測器; 289

       
9.4.1
溫度、濕度、壓力感測器; 290

       
9.4.2
傾斜感測器; 294

       
9.4.3
聲音感測器; 295

       
9.4.4
光線感測器; 296

        9.4.5 磁場感測器; 299

       
9.4.6
振動與敲擊感測器; 300

       
9.4.7
運動感測器; 301

       
9.4.8
接觸與位置感測器; 302

       
9.4.9
距離感測器; 305

   
9.5
通信; 306

       
9.5.1
APC220無線模組; 306

       
9.5.2
315/433 MHz RF模組; 307

       
9.5.3
ESP8266收發器; 307

   
9.6
輸出設備與元件; 308

     
  9.6.1
光源; 308

       
9.6.2
繼電器、電機與舵機; 312

       
9.6.3
類比信號輸出; 314

   
9.7
用戶輸入; 315

       
9.7.1
鍵盤; 315

     
  9.7.2
搖杆; 316

       
9.7.3
電位器與旋轉編碼器; 316

   
9.8
用戶輸出; 316

       
9.8.1
文本顯示器; 317

       
9.8.2
圖形顯示器; 318

   
9.9
支援功能; 318

       
9.9.1
時鐘; 319

       
9.9.2
計時器; 320

   
9.10
連接; 321

       
9.10.1
使用裸露跳線; 321

       
9.10.2
模組連接系統; 321

       
9.10.3
自己動手製作連接器; 322

       
9.10.4
選擇連接方法; 324

   
9.11
供應商資源; 324

   
9.12
小結; 324

10    自己動手製作元件; 326

   
10.1
準備工作; 328

   
10.2
製作擴展板; 332

       
10.2.1
物理考慮; 333

       
10.2.2
堆疊擴展板; 334

       
10.2.3
電氣考慮; 335

   
10.3
製作GreenShield擴展板; 336

       
10.3.1
目標; 336

       
10.3.2
定義與規劃; 336

       
10.3.3
設計; 337

       
10.3.4
製作原型; 343

       
10.3.5
最終軟體; 349

       
10.3.6
裝配; 355

       
10.3.7
最終接受度測試; 359

       
10.3.8
運行; 360

       
10.3.9
後續步驟; 361

   
10.4
製作與Arduino相容的PCB; 361

        為你的板子程式設計; 362

   
10.5
Switchinator; 362

       
10.5.1
定義與規劃; 362

       
10.5.2
設計; 363

       
10.5.3
原型; 374

       
10.5.4
軟體; 377

       
10.5.5
製造; 380

     
  10.5.6
驗收檢測; 383

       
10.5.7
後續步驟; 383

   
10.6
資源; 383

11    項目:可程式設計信號發生器; 385

   
11.1
專案目標; 387

   
11.2
定義與規劃; 387

   
11.3
設計; 389

       
11.3.1
功能; 389

       
11.3.2
外殼; 390

       
11.3.3
電路圖; 391

   
11.4
搭建原型; 393

       
11.4.1
控制輸入與模式; 394

      
 11.4.2
顯示輸出; 395

       
11.4.3
DDS模組; 396

   
11.5
軟體; 397

       
11.5.1
原始程式碼組織; 398

       
11.5.2
軟體描述; 399

       
11.5.3
DDS; 405

       
11.5.4
測試; 406

   
11.6
最終組裝; 409

       
11.6.1
上拉電阻陣列; 409

       
11.6.2
輸入保護; 410

       
11.6.3
主機殼外殼; 411

       
11.6.4
DC電源; 413

   
11.7
最終測試與結束; 413

   
11.8
削減開支; 414

   
11.9
成本明細; 415

   
11.10
資源; 416

12    項目:智能調溫器; 417

   
12.1
背景; 417

       
12.1.1
HVAC概述; 418

       
12.1.2
溫度控制基礎; 419

       
12.1.3
智慧溫度控制; 421

   
12.2
專案目標; 422

   
12.3
定義與規劃; 422

   
12.4
設計; 423

       
12.4.1
功能; 423

       
12.4.2
外殼; 424

       
12.4.3
電路圖; 426

       
12.4.4
軟體; 426

       
12.4.5
用戶輸入/輸出; 429

       
12.4.6
控制輸出; 433

   
12.5
原型; 433

       
12.5.1
DHT22感測器; 434

       
12.5.2
旋轉編碼器; 435

       
12.5.3
即時時鐘模組; 436

     
  12.5.4
LCD擴展板; 437

   
12.6
軟體; 437

       
12.6.1
原始程式碼組織; 437

       
12.6.2
軟體描述; 437

       
12.6.3
測試; 440

   
12.7
最終版本; 440

       
12.7.1
組裝; 441

       
12.7.2
測試與運行; 443

   
12.8
成本明細; 444

   
12.9
後續步驟; 444

   
12.10
資源; 445

13    模型火箭發射器:設計研究; 446

   
13.1
概覽; 446

   
13.2
設計週期; 447

   
13.3
目標; 448

   
13.4
選擇與定義功能需求; 450

   
13.5
進行初步設計; 453

       
13.5.1
設計可行性; 456

       
13.5.2
初始元件列表; 459

   
13.6
原型; 459

   
13.7
最終設計; 460

       
13.7.1
電氣特徵; 460

       
13.7.2
物理外形; 465

       
13.7.3
軟體; 467

        13.7.4 測試與運行; 469

   
13.8
成本分析; 470

附錄A    工具與配件; 471

   
A.1
手工工具; 471

       
A.1.1
螺絲刀; 471

       
A.1.2
各種鉗子; 472

       
A.1.3
剝線鉗; 473

       
A.1.4
連接器壓接鉗; 474

       
A.1.5
手鋸; 477

   
A.2
電動工具; 478

       
A.2.1
電鑽; 478

       
A.2.2
小型研磨機; 479

       
A.2.3
小型鑽床; 479

   
A.3
焊接; 480

       
A.3.1
電烙鐵; 480

       
A.3.2
焊接輔件; 481

   
A.4
工具購買管道; 481

附錄B    AVR ATmega控制寄存器; 482

   
B.1
ATmega 168/328; 482

   
B.2
ATmega 1280/2560; 489

   
B.3
ATmega32U4; 497

附錄C    Arduino與相容產品廠商; 504

   
C.1
Arduino產品; 504

       
C.1.1
硬體可相容開發板與擴展板; 504

       
C.1.2
軟體可相容開發板; 505

       
C.1.3
感測器、擴展板、模組; 505

   
C.2
電子軟體; 505

       
C.2.1
開源電路圖繪製工具; 505

       
C.2.2
CAE軟體工具; 505

       
C.2.3
PCB佈局設計工具; 505

   
C.3
硬體、元件與工具; 506

       
C.3.1
電子元件製造商; 506

       
C.3.2
電子元件分銷商(USA; 506

       
C.3.3
折扣與多餘電子元件; 506

       
C.3.4
機械配件與硬體(螺絲釘、螺母、螺栓); 507

       
C.3.5
外殼與主機殼; 507

       
C.3.6
工具; 507

       
C.3.7
測試設備; 507

   
C.4
印製電路板供應商與製造商; 508

       
C.4.1
原型與快速周轉製造商; 508

       
C.4.2
PCB工具廠商; 508

   
C.5
其他購買管道; 508

附錄D    推薦閱讀; 509

   
D.1
Arduino; 509

   
D.2
AVR; 509

   
D.3
CC++程式設計; 509

   
D.4
常見電子元器件; 510

   
D.5
介面; 510

   
D.6
儀器; 510

   
D.7
印製電路板; 510

附錄E    ArduinoAVR軟體發展工具; 511

   
E.1
編譯器/彙編器; 511

   
E.2
整合式開發環境; 511

   
E.3
程式設計工具; 512

   
E.4
模擬器; 512

關於作者; 514

關於封面; 514

連接圖靈; 516

看完了; 518

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *