目 录
第1章 Arduino入门 1
1.1 什么是Arduino 1
1.2 Arduino简史 2
1.3 安装Arduino 2
1.3.1 在Mac OS X上安装 2
1.3.2 在Windows上安装 2
1.3.3 在Linux上安装 3
1.4 测试Arduino 3
1.5 Arduino的硬件 4
1.5.1 Arduino的输入和输出 5
1.5.2 上拉电阻 6
1.5.3 Arduino扩展板 7
1.6 Arduino IDE 8
1.7 串行监视器 10
1.8 Arduino语言 10
1.8.1 setup()函数 11
1.8.2 loop()函数 11
1.8.3 变量 11
1.9 你的第一个Arduino项目 14
1.9.1 面包板 14
1.9.2 搭建电路 15
1.9.3 对Arduino编程 15
1.10 电路示意图 16
1.10.1 Fritzing 17
1.10.2 电子符号 18
1.11 电学 18
1.11.1 AC/DC 19
1.11.2 欧姆定律 19
1.11.3 焦耳定律 19
1.12 总结 20
第2章 Kinect入门 21
2.1 Kinect简史 22
2.1.1 破解Kinect 22
2.1.2 官方架构 23
2.2 Kinect感应器 23
2.2.0 Kinect的摆放 24
2.3 Kinect的功能 25
2.3.1 RGB图像 25
2.3.2 红外线图像 25
2.3.3 深度图 25
2.3.4 手势和骨骼跟踪 25
2.4 Kinect驱动程序框架 26
2.4.1 OpenKinect的Libfreenect驱动 26
2.4.2 PrimeSense的OpenNI和NITE 26
2.4.3 Windows版微软Kinect 27
2.5 Kinect的原理 28
2.5.1 结构光3D扫描 28
2.5.2 光编码图像转换成深度图 29
2.6 Kinect替代设备:华硕Xtion PRO 30
2.7 总结 30
第3章 Processing 31
3.1 Processing语言 32
3.2 安装Processing 32
3.3 Processing IDE 33
3.4 第一个Processing程序 33
3.4.1 Processing变量 34
3.4.2 变量作用域 34
3.4.3 Processing程序结构 34
3.4.4 setup()函数 34
3.4.5 draw()函数 35
3.5 Processing库 36
3.6 Simple-OpenNI 37
3.6.1 安装Simple-OpenNI 37
3.6.2 在Linux上安装 39
3.7 访问深度图和RGB图像 40
3.8 第三维度 42
3.8.1 Processing的3D 42
3.8.2 摄像机控制库 45
3.8.3 KinectOrbit例子 46
3.9 Kinect空间 48
3.10 线性数组和2D数组 50
3.11 点云着色 51
3.12 NITE函数 52
3.12.1 手部跟踪 53
3.12.2 骨骼跟踪 54
3.13 总结 56
第4章 Arduino与Kinect的“Hello World” 57
4.1 Hello World的材料清单 57
4.2 串行通信 58
4.2.0 串行控制LED 59
4.3 编写自己的通信协议 63
4.3.0 串行控制LED 63
4.4 Kinect控制LED 65
4.5 Arduino的反馈 68
4.6 总结 73
第5章 Kinect遥控 74
5.1 体感遥控项目的材料清单 74
5.2 改装遥控器 75
5.3 把遥控器连接到Arduino 76
5.3.0 组装扩展开发板 78
5.4 电路测试 79
5.5 Kinect手部跟踪和手势识别 82
5.5.1 库与设置 82
5.5.2 NITE回调函数 85
5.5.3 draw()循环与其他函数 87
5.5.4 把Processing程序连接到Arduino 92
5.6 总结 92
第6章 用Kinect操纵木偶 93
6.1 木偶 94
6.1.1 舵机 94
6.1.2 建造舞台 97
6.1.3 制作木偶 99
6.2 搭建电路 100
6.2.1 测试舵机 102
6.2.2 设置舵机起始位置 105
6.3 屏幕上的姿态跟踪 107
6.3.0 Simple-OpenNI事件 109
6.4 角度计算 110
6.5 网络通信 114
6.5.1 在本地网络中通信 114
6.5.2 在互联网上通信 115
6.6 服务器程序:通过网络发送角度 116
6.7 客户端程序:控制木偶 117
6.8 最终的Arduino代码 121
6.9 总结 124
第7章 心情照明 125
7.1 RGB色域 126
7.2 Arduino Nano 127
7.3 搭建电路 127
7.3.1 电阻 128
7.3.2 认识电阻的色环 129
7.3.3 电路测试 130
7.4 XBee无线模块 132
7.5 Arduino编程 134
7.6 Lamp类 135
7.6.0 面向对象编程 136
7.7 用户控制程序 140
7.7.1 变量声明 140
7.7.2 setup()函数 141
7.7.3 draw()函数 141
7.7.4 用户控制 143
7.7.5 数据存储与检索 146
7.7.6 串行通信 148
7.7.7 Display函数 148
7.7.8 Simple-OpenNI回调 151
7.8 总结 152
第8章 Kinect绘图机器人 153
8.1 建造机器人 154
8.1.1 第一部分 155
8.1.2 第二部分 156
8.1.3 第三部分 156
8.1.4 底盘 157
8.2 搭建电路 159
8.3 电路测试 159
8.3.1 Processing的Firmata和Arduino库 159
8.3.2 舵机测试 159
8.4 Robot仿真 161
8.4.1 角度测量程序 162
8.4.2 机器人仿真程序 164
8.5 驱动机器人 167
8.6 Kinect桌面接口 169
8.6.0 点云校准 170
8.7 虚拟机器人模型 182
8.7.0 平滑输入 184
8.8 启动绘图机器人 187
8.9 总结 188
第9章 Kinect遥控汽车 189
9.1 电机和H桥 190
9.2 改装汽车 191
9.3 搭建电路 192
9.4 电路测试 193
9.4.1 函数 195
9.4.2 Arduino测试程序 200
9.5 接近传感器 203
9.5.0 函数 206
9.6 XBee和无线 208
9.7 Kinect遥控接口 209
9.7.1 setup()函数 211
9.7.2 draw()函数 212
9.7.3 附加函数 214
9.8 总结 219
第10章 生物识别站 220
10.1 改装体重秤 221
10.1.1 七段LCD 222
10.1.2 破解LCD 222
10.2 获得LCD信号 223
10.2.1 读取LCD信号 225
10.2.2 把信号发送到Processing 230
10.3 LCD信号解码 233
10.4 使用重量数据 236
10.5 生物特征识别 239
10.5.1 导入并声明变量 239
10.5.2 setup()函数 240
10.5.3 用户界面 242
10.5.4 draw()函数 243
10.5.5 附加函数 244
10.6 总结 258
第11章 3D建模接口 259
11.1 接口 259
11.2 Arduino LilyPad 261
11.3 弯曲传感器 261
11.4 缝制电路 262
11.5 电路测试 263
11.5.1 Arduino串行发射器 263
11.5.2 Processing手套数据接收器 264
11.6 无线连接 265
11.6.1 LilyPad XBee 266
11.6.2 SoftwareSerial库 266
11.6.3 无线Arduino代码 266
11.7 实现建模接口 268
11.7.1 GloveInterface类 268
11.7.2 几何类 273
11.7.3 主程序建模接口 276
11.8 总结 285
第12章 转盘扫描仪 286
12.1 原理 286
12.2 建造转盘 289
12.2.0 连接齿轮 289
12.3 搭建电路 292
12.4 Arduino代码 293
12.5 Processing代码 296
12.5.1 变量声明 296
12.5.2 setup()和draw()函数 298
12.5.3 附加函数 300
12.6 点云导出 307
12.7 exportPly函数 308
12.8 Meshlab表面重建 309
12.9 总结 312
第13章 Kinect驱动的Delta机器人 313
13.1 项目介绍 314
13.2 Delta机器人 315
13.3 建造Delta机器人 315
13.3.1 腿部 315
13.3.2 底盘 316
13.3.3 受动器 317
13.3.4 机器爪 318
13.3.5 机器人上架 320
13.4 搭建电路 321
13.5 Delta机器人仿真软件 323
13.5.1 反向运动 323
13.5.2 DeltaRobot类 325
13.5.3 deltaLeg类 331
13.5.4 用鼠标控制仿真Delta机器人 334
13.6 用Kinect控制Delta机器人 336
13.6.1 控制机器手 341
13.6.2 把数据发送到Arduino 343
13.7 Arduino代码 345
13.8 总结 348