目 录
第Ⅰ部分 针对JavaScript开发者的硬件介绍
第1 章 将JavaScript与硬件结合 3
1.1 硬件项目剖析 4
1.1.1 输入与输出 4
1.1.2 处理过程 5
1.1.3 电源、电路和系统 6
1.1.4 逻辑和固件 8
1.1.5 外壳和封装 9
1.1.6 嵌入式系统 10
1.2 JavaScript和硬件如何协同工作 10
1.2.1 宿主机-客户端方法 10
1.2.2 嵌入式JavaScript 13
1.2.3 其他硬件-JavaScript组合 15
1.3 JavaScript非常适合硬件项目吗 18
1.4 整合硬件工具包 19
1.4.1 开发板 19
1.4.2 输入和输出元件 20
1.4.3 其他电子元件 21
1.4.4 电源、电线和附件 21
1.4.5 工具 22
1.5 本章小结 24
第2 章 用Arduino开启硬件之旅 25
2.1 了解Arduino Uno 27
2.2 使用Arduino的工作流程 32
2.2.1 Arduino Uno的数字引脚 32
2.2.2 草图和Arduino IDE 33
2.2.3 将LED连接到数字引脚 35
2.2.4 对LED进行编程使其闪烁 36
2.3 使用JavaScript控制Arduino 39
2.3.1 将Arduino配置为客户端 39
2.3.2 安装Node.js框架Johnny-Five 41
2.3.3 用Johnny-Five让Hello World的LED闪烁 42
2.3.4 Firmata、Johnny-Five和宿主机-客户端方法 42
2.3.5 使用Johnny-Five组织脚本 44
2.4 本章小结 46
第3 章 如何构建电路 47
3.1 电压、电流和电阻 48
3.1.1 欧姆定律 52
3.1.2 问题和危险 54
3.2 构建电路 55
3.2.1 使用面包板制作原型电路 55
3.2.2 在面包板上连接简单的LED电路 56
3.2.3 用按钮扩展串联电路 63
3.2.4 串联LED 65
3.2.5 并联电路和分流器 69
3.2.6 用电池为项目供电 75
3.3 本章小结 76
第Ⅱ部分 项目基础:使用Johnny-Five输入和输出
第4 章 传感器和输入 81
4.1 使用模拟传感器 84
4.1.1 模数转换 84
4.1.2 光敏电阻的使用 85
4.1.3 分压器 89
4.1.4 布线和使用光敏电阻 92
4.1.5 使用模拟温度传感器 97
4.2 数字输入 101
4.3 本章小结 106
第5 章 输出:让事情发生 107
5.1 点亮LED 108
5.1.1 使用脉冲宽度调制(PWM)使LED变暗 109
5.1.2 使用PWM让LED做动画 113
5.1.3 将输入与LED输出结合 117
5.1.4 全彩RGB LED 122
5.1.5 构建你自己的“气象球” 122
5.2 使用并行LCD显示器 126
5.2.1 用LCD制作功能齐全的定时器 126
5.2.2 添加可视的LED“铃声” 138
5.3 用压电器制造噪声 141
5.4 本章小结 145
第6 章 输出:让物体运动 147
6.1 让电动机运转 148
6.1.1 电动机的工作方式 149
6.1.2 使用按压按钮开关控制电动机 151
6.1.3 用Johnny-Five控制电动机 156
6.2 制作伺服器 159
6.3 制作你的个机器人 165
6.3.1 机器人和电动机 167
6.3.2 制作机器人的基础底盘 169
6.3.3 控制机器人的电动机 170
6.4 本章小结 181
第Ⅲ部分 更复杂的项目
第7 章 串行通信 185
7.1 并行和串行通信数字数据 187
7.2 串行通信的基础知识 188
7.3 异步串行通信 189
7.3.1 UART 191
7.3.2 使用GPS扩展板试用软件串口 192
7.3.3 学习焊接 194
7.3.4 构建GPS电路 198
7.4 同步串行通信 200
7.4.1 串行外围设备接口(SPI) 201
7.4.2 I2C 202
7.4.3 使用I2C磁力计制作数字罗盘 204
7.5 整合在一起:摇动-改变多传感器部件 206
7.5.1 步骤1:将罗盘与LCD输出相结合 207
7.5.2 步骤2:向设备中添加多传感器 210
7.5.3 步骤3:更新显示屏,显示温度和压力 211
7.5.4 步骤4:使用加速度计添加摇动-交换显示功能 213
7.6 本章小结 217
第8 章 无线项目 219
8.1 为什么你还要使用数据线 221
8.1.1 数据交换、I/O层和I/O插件 221
8.1.2 USB充当电源 222
8.1.3 无线项目通信的选项 223
8.2 使用Tessel 2实现无线项目 225
8.3 设置Tessel 226
8.3.1 配置Tessel 226
8.3.2 在Tessel上运行“Hello World”LED闪烁代码 229
8.3.3 通过Tessel闪烁外部的LED 231
8.3.4 探索Tessel的引脚和功能 235
8.4 基于Tessel的无线项目 236
8.5 用电池为项目供电 252
8.6 本章小结 259
第9 章 自己制作硬件 261
9.1 消费电子产品开发 263
9.2 用Johnny-Five插件控制远程开关 270
9.2.1 开关项目的原型设计 270
9.2.2 编写RemoteSwitch插件 274
9.3 编写复杂硬件的软件 280
9.3.1 项目:Johnny-Five支持APDS-9660手势传感器 281
9.3.2 实现构造函数和初始化方法 293
9.3.3 集成手势传感器和远程开关 299
9.3.4 将整个项目整合在一起 303
9.4 本章小结 305
第Ⅳ部分 在其他环境中的硬件上使用JavaScript
第10 章 JavaScript和受限制的硬件 309
10.1 Espruino Pico平台 311
10.1.1 设置Pico 312
10.1.2 Hello World版的LED闪烁 313
10.2 了解新平台 315
10.2.1 了解平台的核心功能 316
10.2.2 查找引脚图 318
10.2.3 了解配置和工作流程 319
10.2.4 查找示例和教程 319
10.2.5 使用API参考文档 319
10.3 试验Pico 320
10.3.1 Pico和BMP180多传感器 320
10.3.2 Pico和Nokia 5110液晶显示器 323
10.3.3 使用Pico构建高效的天气小工具 329
10.4 试验Kinoma Element平台 332
10.4.1 Element的核心功能 333
10.4.2 引脚和硬件图 333
10.4.3 配置、管理和工作流程 334
10.4.4 示例和教程 335
10.4.5 API参考 336
10.4.6 案例研究项目:实时更新罗盘读数 336
10.5 本章小结 344
第11 章 使用Node.js和微型计算机进行硬件开发 347
11.1 使用微型计算机 349
11.1.1 Raspberry Pi 平台 350
11.1.2 配置方式1:传统方式 354
11.1.3 配置方式2:无头配置 355
11.2 了解Raspberry Pi 3 359
11.2.1 核心特性 359
11.2.2 GPIO特性和引脚 361
11.2.3 配置和工作流程 362
11.2.4 示例和教程 365
11.2.5 API文档 372
11.3 为不同的平台编写JohnnyFive应用程序 372
11.3.1 改造迷你气象站使其适配Pi 3 373
11.3.2 改造迷你气象站使其适配Arduino Uno 379
11.4 使用Raspberry Pi作为宿主机 380
11.5 案例研究:BeagleBone Black 381
11.5.1 BeagleBone Black 381
11.5.2 气象站程序针对BeagleBone进行适配 387
11.6 本章小结 388
第12 章 在云端、在浏览器中以及更多可能性 391
12.1 IoT与云 392
12.2 使用resin.io进行容器化部署 394
12.2.1 创建resin.io应用程序 396
12.2.2 配置BeagleBone Black 397
12.2.3 适配天气应用程序软件 399
12.3 硬件和Web浏览器 404
12.3.1 Web蓝牙API 405
12.3.2 通用传感器API 405
12.3.3 Physical Web 405
12.4 使用Puck.js探索Bluetooth LE 406
12.4.1 核心特性 407
12.4.2 GPIO特性和引脚分布 408
12.4.3 配置和工作流程 409
12.4.4 示例、教程和API文档 411
12.4.5 从网页控制LED 411
12.4.6 Physical Web和Puck.js 417
12.4.7 基于Web的蓝牙门铃 419
12.5 开拓JavaScript硬件编程的边界 431
12.6 本章小结 431