内容简介
本书主要讲解了Arduino开发板的物理特性与接口功能,Arduino使用的各种AVR微控制器,Arduino特有的编程环境,各种扩展板,可与Arduino一起工作的传感器、继电器模块、小键盘以及其他附加组件,从零开始创建自定义扩展板的步骤,介绍各种分析设计问题、定义实体与可测试需求的方法,确保开发成功。
目录
- 前言xv
- 第1章Arduino家族1
- 1.1Arduino简史1
- 1.2Arduino设备类型2
- 1.3Arduino实物展示3
- 1.4Arduino兼容设备6
- 1.4.1硬件兼容设备6
- 1.4.2软件兼容设备7
- 1.5Arduino命名约定8
- 1.6使用Arduino可以实现的目的9
- 1.7更多信息11
- 第2章AVR微控制器12
- 2.1背景12
- 2.2内部架构13
- 2.3内部存储器16
- 2.4外围功能16
- 2.4.1控制寄存器16
- 2.4.2数字I/O端口17
- 2.4.38位定时器/计数器18
- 2.4.416位定时器/计数器19
- 2.4.5定时器/计数器预分频器19
- 2.5模拟比较器19
- 2.6模数转换器20
- 2.7串行I/O.21
- 2.7.1USART22
- 2.7.2SPI22
- 2.7.3TWI23
- 2.8中断24
- 2.9看门狗定时器26
- 2.10电气特性26
- 2.11更多信息27
- 第3章Arduino专用AVR微控制器28
- 3.1ATmega168/32829
- 3.1.1内存29
- 3.1.2特性29
- 3.1.3封装30
- 3.1.4端口31
- 3.1.5引脚电路31
- 3.1.6模拟比较器输入31
- 3.1.7模拟输入32
- 3.1.8串行接口32
- 3.1.9定时器/时钟I/O33
- 3.1.10外部中断33
- 3.1.11Arduino引脚分配34
- 3.1.12基本电气特性35
- 3.2ATmega1280/ATmega256035
- 3.2.1内存35
- 3.2.2特性37
- 3.2.3封装37
- 3.2.4端口37
- 3.2.5引脚功能38
- 3.2.6模拟比较器输入38
- 3.2.7模拟输入39
- 3.2.8串行接口39
- 3.2.9定时器/时钟I/O40
- 3.2.10外部中断41
- 3.2.11Arduino引脚分配41
- 3.2.12电气特性44
- 3.3ATmega32U444
- 3.3.1内存44
- 3.3.2特性45
- 3.3.3封装46
- 3.3.4端口46
- 3.3.5引脚功能47
- 3.3.6模拟比较器输入47
- 3.3.7模拟输入47
- 3.3.8串行接口48
- 3.3.9定时器/时钟I/O49
- 3.3.10外部中断50
- 3.3.11USB2.0接口51
- 3.3.12电气特性52
- 3.3.13Arduino引脚分配52
- 3.4熔丝位53
- 3.5更多信息55
- 第4章Arduino技术细节56
- 4.1Arduino特性与功能.56
- 4.2ArduinoUSB接口57
- 4.3Arduino物理大小.59
- 4.3.1全尺寸基本ArduinoPCB类型.60
- 4.3.2Mega类型的ArduinoPCB61
- 4.3.3小型ArduinoPCB62
- 4.3.4特殊用途PCB类型65
- 4.4Arduino引脚布局.66
- 4.4.1Arduino基线引脚布局66
- 4.4.2扩展基线引脚布局67
- 4.4.3Mega引脚布局72
- 4.4.4非标准布局74
- 4.5更多信息78
- 第5章对Arduino与AVR微控制器编程79
- 5.1微控制器交叉编译80
- 5.2BootLoader81
- 5.3ArduinoIDE环境83
- 5.3.1安装ArduinoIDE84
- 5.3.2配置ArduinoIDE85
- 5.4使用ArduinoIDE进行交叉编译86
- 5.4.1Arduino可执行映像89
- 5.4.2Arduino软件创建过程89
- 5.4.3程序标签卡90
- 5.4.4Arduino软件架构91
- 5.4.5运行时支持:main()函数92
- 5.4.6程序示例94
- 5.4.7常量97
- 5.4.8全局变量97
- 5.5库98
- 5.5.1在Arduino程序中使用库98
- 5.5.2将库添加到ArduinoIDE101
- 5.5.3创建自定义库103
- 5.6Arduino源代码103
- 第6章不使用ArduinoIDE编程105
- 6.1IDE替换方案105
- 6.1.1PlatformIO105
- 6.1.2Ino107
- 6.2AVR工具链108
- 6.2.1安装工具链111
- 6.2.2make112
- 6.2.3avr-gcc113
- 6.2.4binutils113
- 6.2.5avr-libc116
- 6.3从零开始构建C或C++程序118
- 6.3.1使用avr-gcc或avr-g++进行编译118
- 6.3.2多个源文件与make程序118
- 6.4AVR汇编语言120
- 6.4.1AVR编程模型121
- 6.4.2创建AVR汇编语言程序123
- 6.4.3AVR汇编语言资源125
- 6.5上传AVR可执行代码126
- 6.5.1系统内编程126
- 6.5.2使用Bootloader编程127
- 6.5.3不使用Bootloader上传127
- 6.5.4JTAG129
- 6.5.5AVRDUDE129
- 6.5.6将Arduino用作ISP131
- 6.5.7Bootloader运作131
- 6.5.8更换Bootloader133
- 6.6小结133
- 第7章Arduino库134
- 7.1库组件134
- 7.1.1EEPROM136
- 7.1.2Ethernet138
- 7.1.3Firmata144
- 7.1.4GSM148
- 7.1.5LiquidCrystal157
- 7.1.6SD160
- 7.1.7Servo163
- 7.1.8SPI164
- 7.1.9SoftwareSerial165
- 7.1.10Stepper167
- 7.1.11TFT167
- 7.1.12Wi-Fi170
- 7.1.13Wi-Fi类172
- 7.1.14IPAddress类172
- 7.1.15Server类172
- 7.1.16Client类173
- 7.1.17UDP类173
- 7.1.18Wire174
- 7.1.19Esplora176
- 7.2第三方库179
- 第8章扩展板182
- 8.1扩展板的电气特性183
- 8.2扩展板的物理特性184
- 8.3堆叠扩展板186
- 8.4常用Arduino扩展板186
- 8.4.1输入/输出187
- 8.4.2I/O扩展板187
- 8.4.3I/O拓展板191
- 8.4.4继电器扩展板194
- 8.4.5信号路由扩展板196
- 8.4.6存储器199
- 8.4.7通信201
- 8.4.8串行I/O与MIDI201
- 8.4.9Ethernet202
- 8.4.10蓝牙204
- 8.4.11USB205
- 8.4.12ZigBee207
- 8.4.13CAN208
- 8.4.14原型211
- 8.4.15制作自定义原型扩展板213
- 8.4.16运动控制214
- 8.4.17DC与步进电机控制214
- 8.4.18PWM与舵机控制216
- 8.4.19显示器217
- 8.4.20仪表扩展板223
- 8.4.21适配器扩展板225
- 8.4.22混杂扩展板226
- 8.5非常见Arduino扩展板230
- 8.6资源231
- 第9章模块与I/O组件233
- 9.1模块234
- 9.1.1物理外形235
- 9.1.2接口235
- 9.1.3模块来源238
- 9.1.4模块说明238
- 9.2Grove模块260
- 9.3传感器与模块介绍261
- 9.4传感器262
- 9.4.1温度、湿度、压力传感器263
- 9.4.2倾斜传感器267
- 9.4.3声音传感器268
- 9.4.4光线传感器269
- 9.4.5磁场传感器272
- 9.4.6振动与敲击传感器273
- 9.4.7运动传感器274
- 9.4.8接触与位置传感器275
- 9.4.9距离传感器278
- 9.5通信279
- 9.5.1APC220无线模块279
- 9.5.2315/433MHzRF模块280
- 9.5.3ESP8266收发器.280
- 9.6输出设备与元件281
- 9.6.1光源281
- 9.6.2继电器、电机与舵机285
- 9.6.3模拟信号输出287
- 9.7用户输入288
- 9.7.1键盘288
- 9.7.2摇杆289
- 9.7.3电位器与旋转编码器289
- 9.8用户输出289
- 9.8.1文本显示器290
- 9.8.2图形显示器291
- 9.9支持功能291
- 9.9.1时钟292
- 9.9.2定时器293
- 9.10连接294
- 9.10.1使用裸露跳线294
- 9.10.2模块连接系统294
- 9.10.3自己动手制作连接器295
- 9.10.4选择连接方法297
- 9.11供应商资源297
- 9.12小结297
- 第10章自己动手制作元件299
- 10.1准备工作301
- 10.2制作扩展板305
- 10.2.1物理考虑306
- 10.2.2堆叠扩展板307
- 10.2.3电气考虑308
- 10.3制作GreenShield扩展板309
- 10.3.1目标309
- 10.3.2定义与规划309
- 10.3.3设计310
- 10.3.4制作原型316
- 10.3.5最终软件322
- 10.3.6装配328
- 10.3.7最终验收测试332
- 10.3.8运行333
- 10.3.9后续步骤334
- 10.4制作与Arduino兼容的PCB334
- 10.5Switchinator335
- 10.5.1定义与规划335
- 10.5.2设计336
- 10.5.3原型347
- 10.5.4软件350
- 10.5.5制造353
- 10.5.6验收检测356
- 10.5.7后续步骤356
- 10.6资源356
- 第11章项目:可编程信号发生器358
- 11.1项目目标360
- 11.2定义与规划360
- 11.3设计362
- 11.3.1功能362
- 11.3.2外壳363
- 11.3.3电路图364
- 11.4搭建原型366
- 11.4.1控制输入与模式367
- 11.4.2显示输出368
- 11.4.3DDS模块369
- 11.5软件370
- 11.5.1源代码组织371
- 11.5.2软件描述372
- 11.5.3DDS库378
- 11.5.4测试379
- 11.6最终组装382
- 11.6.1上拉电阻阵列382
- 11.6.2输入保护383
- 11.6.3机箱外壳384
- 11.6.4DC电源.386
- 11.7最终测试与结束386
- 11.8削减开支387
- 11.9成本明细388
- 11.10资源389
- 第12章项目:智能调温器390
- 12.1背景390
- 12.1.1HVAC概述391
- 12.1.2温度控制基础392
- 12.1.3智能温度控制394
- 12.2项目目标395
- 12.3定义与规划395
- 12.4设计396
- 12.4.1功能396
- 12.4.2外壳397
- 12.4.3电路图399
- 12.4.4软件399
- 12.4.5用户输入/输出402
- 12.4.6控制输出406
- 12.5原型406
- 12.5.1DHT22传感器407
- 12.5.2旋转编码器408
- 12.5.3实时时钟模块409
- 12.5.4LCD扩展板410
- 12.6软件410
- 12.6.1源代码组织410
- 12.6.2软件描述410
- 12.6.3测试413
- 12.7最终版本413
- 12.7.1组装414
- 12.7.2测试与运行416
- 12.8成本明细417
- 12.9后续步骤417
- 12.10资源418
- 第13章模型火箭发射器:设计研究419
- 13.1概览419
- 13.2设计周期420
- 13.3目标421
- 13.4选择与定义功能需求423
- 13.5进行初步设计426
- 13.5.1设计可行性429
- 13.5.2初始元件列表432
- 13.6原型432
- 13.7最终设计433
- 13.7.1电气特征433
- 13.7.2物理外形438
- 13.7.3软件440
- 13.7.4测试与运行442
- 13.8成本分析443
- 附录A工具与配件444
- 附录BAVRATmega控制寄存器455
- 附录CArduino与兼容产品厂商477
- 附录D推荐阅读482
- 附录EArduino与AVR软件开发工具484
- 关于作者487