目 錄
第Ⅰ部分 針對JavaScript開發(fā)者的硬件介紹
第1 章 將JavaScript與硬件結合 3
1.1 硬件項目剖析 4
1.1.1 輸入與輸出 4
1.1.2 處理過程 5
1.1.3 電源、電路和系統(tǒng) 6
1.1.4 邏輯和固件 8
1.1.5 外殼和封裝 9
1.1.6 嵌入式系統(tǒng) 10
1.2 JavaScript和硬件如何協(xié)同工作 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 開發(fā)板 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 章 輸出:讓事情發(fā)生 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 消費電子產品開發(fā) 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
第Ⅳ部分 在其他環(huán)境中的硬件上使用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和微型計算機進行硬件開發(fā) 347
11.1 使用微型計算機 349
11.1.1 Raspberry Pi 平臺 350
11.1.2 配置方式1:傳統(tǒng)方式 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 創(chuàng)建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