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章 對Arduino與AVR微控制器程式設計; 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 從零開始構建C或C++程式; 145
6.3.1 使用avr-gcc或avr-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/O與MIDI; 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 C與C++程式設計; 509
D.4 常見電子元器件; 510
D.5 介面; 510
D.6 儀器; 510
D.7 印製電路板; 510
附錄E Arduino與AVR軟體發展工具; 511
E.1 編譯器/彙編器; 511
E.2 整合式開發環境; 511
E.3 程式設計工具; 512
E.4 模擬器; 512
關於作者; 514
關於封面; 514
連接圖靈; 516
看完了; 518