目 录
第1章 了解和设置基础物联网硬件 1
1.1 了解Intel Galileo Gen 2主板及其组件 1
1.2 识别输入/输出和Arduino 1.0引脚 7
1.3 认识额外的扩展和连接功能 11
1.4 了解按钮和指示灯 14
1.5 检查和升级主板的固件 17
1.5.1 检查固件版本 17
1.5.2 在Windows系统中更新固件 19
1.5.3 在Mac OS X系统中更新固件 20
1.6 牛刀小试 22
1.7 小结 22
第2章 结合使用Intel Galileo Gen 2和Python 23
2.1 设置主板以使用Python作为编程语言 23
2.1.1 可能需要另购的硬件 23
2.1.2 下载Yocto Linux启动镜像 24
2.1.3 在Windows系统中提取并写入镜像 25
2.1.4 在Mac OS X系统中提取并写入镜像 27
2.1.5 启动Intel Galileo Gen 2主板 30
2.2 检索主板分配的IP地址 31
2.2.1 通过路由器回收主板IP地址 31
2.2.2 使用Bonjour浏览器 32
2.3 连接到主板的操作系统 35
2.3.1 在Windows系统中安装和配置PuTTY终端 35
2.3.2 在OS X系统中通过ssh命令连接到Yocto Linux 37
2.4 安装和升级必要的库以与主板交互 39
2.4.1 检查现有库的版本 39
2.4.2 安装*新版本的库 41
2.5 安装pip和其他库 45
2.5.1 安装pip软件包管理系统 45
2.5.2 安装wiring-x86软件包 46
2.6 调用Python解释器 47
2.7 牛刀小试 48
2.8 小结 49
第3章 使用Python实现交互式数字输出 51
3.1 打开和关闭板载组件 51
3.1.1 编写点亮或熄灭LED的Python代码 51
3.1.2 使用FileZilla将Python代码文件传输到主板 52
3.1.3 在主板上运行Python代码 55
3.2 认识面包板 58
3.3 制作数字输出示例 60
3.3.1 使用电子示意图 61
3.3.2 使用LED 63
3.3.3 认识电阻 65
3.3.4 连接元器件 66
3.3.5 编写从1数到9的Python代码 67
3.3.6 测试代码 68
3.3.7 代码解释 70
3.4 编写面向对象的代码控制数字输出结果 72
3.4.1 创建一个Led类来表示连接到主板的LED 72
3.4.2 编写控制数字输出的代码 73
3.5 改进面向对象代码以提供新功能 75
3.5.1 创建NumberInLeds类 75
3.5.2 编写从0数到9的代码 76
3.6 隔离引脚编号以改善布线 76
3.6.1 优化布线方案 77
3.6.2 编写代码隔离引脚编号 78
3.7 使用wiring-x86库控制数字输出 81
3.7.1 编写Board类和新Led类的代码 82
3.7.2 修改__main__方法 83
3.8 牛刀小试 84
3.9 小结 85
第4章 使用RESTful API和脉宽调制 87
4.1 使用RESTful API以通过LED显示数字 87
4.1.1 安装Tornado 87
4.1.2 安装HTTPie 88
4.1.3 使用Tornado构建RESTful API 90
4.1.4 启动HTTP服务器 94
4.1.5 编写和发送HTTP请求 94
4.2 控制LED的亮度 99
4.2.1 关于LED亮度控制原理 99
4.2.2 连接方案 100
4.2.3 使用PWM生成模拟值 102
4.2.4 创建新的AnalogLed类 104
4.2.5 编写控制LED亮度的代码 106
4.2.6 启动HTTP服务器和RESTful API 110
4.2.7 通过HTTP请求生成模拟值 110
4.3 为Web应用程序需求准备RESTful API 113
4.3.1 编写新的PutRGBBrightnessHandler类 113
4.3.2 创建tornado.web.Application类的实例 114
4.3.3 启动HTTP服务器和新版本的RESTful API 114
4.3.4 通过HTTP请求控制LED分量的亮度 115
4.4 使用PWM和RESTful API设置RGB LED的颜色 115
4.4.1 使用RGB LED 116
4.4.2 连接方案 117
4.4.3 测试新版本的RESTful API 118
4.5 使用wiring-x86库控制脉宽调制 120
4.6 牛刀小试 121
4.7 小结 122
第5章 使用数字输入 123
5.1 了解按钮和上拉电阻 123
5.1.1 按钮 123
5.1.2 上拉电阻和下拉电阻 125
5.2 使用数字输入引脚连接按钮 127
5.2.1 连接方案 128
5.2.2 创建PushButton类表示按钮 129
5.2.3 轮询按钮是否被按下 131
5.2.4 测试轮询代码 132
5.2.5 轮询和中断的区别 133
5.3 读取按钮状态并运行RESTful API 133
5.3.1 在BoardInteraction类中添加类属性和类方法 134
5.3.2 声明tornado.web.RequestHandler的两个子类 136
5.3.3 创建tornado.web.Application类的实例 136
5.3.4 修改__main__方法 137
5.3.5 一致性测试 138
5.4 使用wiring-x86库读取数字输入 140
5.5 使用中断来检测按下的按钮 142
5.5.1 连接方案 142
5.5.2 创建PushButtonWithInterrupt类 144
5.5.3 修改BoardInteraction类 146
5.5.4 声明触发中断时要调用的函数 147
5.5.5 修改__main__方法 147
5.5.6 中断处理测试 148
5.6 牛刀小试 149
5.7 小结 150
第6章 使用模拟输入和本地存储 151
6.1 理解模拟输入 151
6.2 使用模拟输入和mraa库测量电压 153
6.2.1 连接方案 153
6.2.2 创建VoltageInput类 155
6.2.3 编写代码检索电压值 156
6.3 将光敏电阻连接到模拟输入引脚 157
6.3.1 连接方案 158
6.3.2 创建DarknessSensor类以表示光敏电阻 159
6.3.3 循环检测照明条件变化 161
6.3.4 测试 162
6.4 环境光变化时触发动作 163
6.4.1 连接方案 163
6.4.2 创建BoardInteraction类 165
6.4.3 基于环境光设置RGB LED的亮度 166
6.4.4 测试 167
6.5 使用wiring-x86库控制模拟输入 168
6.6 使用本地存储记录日志 170
6.6.1 添加日志记录功能 171
6.6.2 测试日志功能 172
6.7 使用U盘存储 173
6.7.1 连接U盘 174
6.7.2 在U盘上创建日志文件夹 176
6.7.3 修改代码中的日志路径 176
6.7.4 启动示例将日志保存到U盘 177
6.7.5 拔出U盘前的操作 177
6.8 小试牛刀 178
6.9 小结 178
第7章 使用传感器从现实世界中检索数据 181
7.1 了解传感器及其连接类型 181
7.1.1 传感器选择考虑因素 182
7.1.2 模块连接类型 184
7.1.3 关于mraa库 185
7.2 使用加速度计 186
7.3 将模拟加速度计连接到模拟输入引脚 187
7.3.1 使用模拟加速度计的分线板 187
7.3.2 连接方案 187
7.3.3 创建Accelerometer类表示模拟加速度计 190
7.3.4 编写主循环 191
7.3.5 测试模拟加速度计 192
7.4 将数字加速度计连接到I2C总线 193
7.4.1 使用数字加速度计的分线板 194
7.4.2 连接方案 195
7.4.3 创建Accelerometer类表示数字加速度计 197
7.4.4 编写主循环 199
7.4.5 测试数字加速度计 199
7.5 使用mraa库通过I2C总线控制数字加速度计 200
7.5.1 编写新的Adxl1345类 200
7.5.2 创建新的Accelerometer类 206
7.6 使用模拟温度传感器 207
7.6.1 连接方案 207
7.6.2 创建TemperatureSensor类表示温度传感器 209
7.6.3 编写主循环 210
7.6.4 测试温度传感器 211
7.7 将数字温度和湿度传感器连接到I2C总线 211
7.7.1 连接方案 212
7.7.2 创建TemperatureAndHumiditySensor类表示温度和湿度传感器 214
7.7.3 编写主循环 215
7.7.4 测试温度和湿度传感器 216
7.8 牛刀小试 217
7.9 小结 217
第8章 显示信息和执行操作 219
8.1 了解LCD显示屏及其连接类型 219
8.1.1 关于LCD显示屏 220
8.1.2 选择LCD模块时的考虑因素 220
8.2 将LCD RGB背光分线板连接到I2C总线 221
8.2.1 连接方案 222
8.2.2 创建Lcd类 224
8.2.3 创建TemperatureAndHumidityLcd子类 226
8.2.4 编写主循环 227
8.2.5 测试LCD显示 228
8.3 将OLED点阵屏连接到I2C总线 228
8.3.1 关于OLED点阵屏 228
8.3.2 连接方案 230
8.3.3 创建Oled类 231
8.3.4 创建TemperatureAndHumidityOled子类 232
8.3.5 编写主循环 233
8.3.6 测试OLED屏显示 234
8.4 连接伺服电机 234
8.4.1 通过旋转伺服电机的轴显示温度 234
8.4.2 连接方案 236
8.4.3 创建TemperatureServo类表示伺服电机 238
8.4.4 修改主循环 239
8.4.5 测试 240
8.5 牛刀小试 240
8.6 小结 241
第9章 使用云 243
9.1 使用dweepy将数据发布到云 243
9.1.1 关于dweet.io 243
9.1.2 安装dweepy 244
9.1.3 修改__main__方法 245
9.1.4 测试 247
9.2 使用Freeboard构建基于Web的仪表板 250
9.2.1 关于freeboard.io 251
9.2.2 创建Freeboard账户 251
9.2.3 创建仪表板 251
9.3 使用PubNub通过Internet实时发送和接收数据 256
9.3.1 关于MQTT和PubNub 256
9.3.2 创建PubNub账户并生成发布和订阅密钥 257
9.3.3 安装PubNub Python SDK 258
9.3.4 创建MessageChannel类 259
9.3.5 修改__main__方法 262
9.3.6 通过PubNub云发布带有命令的消息 263
9.3.7 修改MessageChannel类 268
9.3.8 测试 271
9.4 使用Python PubNub客户端将消息发布到云 273
9.4.1 创建Client类 273
9.4.2 创建__main__方法 276
9.4.3 测试客户端 277
9.5 使用Mosquitto和Eclipse Paho 279
9.5.1 安装paho-mqtt模块 280
9.5.2 创建MessageTopic类 280
9.5.3 修改__main__方法 285
9.5.4 启动代码运行 287
9.6 使用Python客户端将消息发布到Mosquitto代理 287
9.6.1 创建MQTT客户端中事件的回调函数 287
9.6.2 创建__main__方法 289
9.6.3 测试客户端 290
9.7 牛刀小试 291
9.8 小结 292
第10章 使用基于云的IoT Analytics服务分析海量数据 293
10.1 理解物联网与大数据之间的关系 293
10.2 了解Intel IoT Analytics结构 295
10.3 在Intel IoT Analytics中设置设备 297
10.3.1 使用iotkit-admin命令行 297
10.3.2 刷新激活码 298
10.3.3 查看激活的设备 300
10.4 在Intel IoT Analytics中设置组件 300
10.4.1 查看组件定义 301
10.4.2 创建新组件 302
10.4.3 注册组件的设备 303
10.4.4 检索设备令牌 306
10.5 使用Intel IoT Analytics收集传感器数据 308
10.5.1 安装requests软件包 308
10.5.2 创建IntelIotAnalytics类 309
10.5.3 修改__main__方法 313
10.5.4 运行并查看结果 314
10.6 使用Intel IoT Analytics分析传感器数据 315
10.7 使用Intel IoT Analytics中的规则触发警报 319
10.7.1 定义规则 320
10.7.2 查看规则触发的警报 320
10.8 牛刀小试 324
10.9 小结 324
各章牛刀小试答案 327
第1章 了解和设置基础物联网硬件 327
第2章 结合使用Intel Galileo Gen 2和Python 327
第3章 使用Python实现交互式数字输出 327
第4章 使用RESTful API和脉宽调制 328
第5章 使用数字输入 328
第6章 使用模拟输入和本地存储 328
第7章 使用传感器从现实世界中检索数据 328
第8章 显示信息和执行操作 329
第9章 使用云 329
第10章 使用基于云的IoT Analytics服务分析海量数据 329