第1章 初识Edison
1.1 Edison 介绍 1
1.1.1 第一版Edison 1
1.1.2 第二版Edison 2
1.2 Edison 的硬件参数 2
1.2.1 Edison 的性能 2
1.2.2 Edison 的硬件布局 4
1.2.3 70PIN 接口引脚定义 4
1.2.4 Edison 的软件架构 7
1.2.5 Yocto Project 7
1.3 接口扩展板 8
1.3.1 两种官方扩展板 8
1.3.2 Arduino 扩展板接口说明 9
1.3.3 Breakout Board 12
1.3.4 第三方扩展板 14
第2章 快速上手
2.1 Edison kit for Arduino 的用法 17
2.1.1 下载软件及驱动 17
2.1.2 安装硬件驱动 18
2.2 Arduino IDE for Edison 20
2.2.1 Arduino 开发环境 20
2.2.2 下载开发环境 21
2.2.3 配置开发环境 21
2.3 简单的I/O 口控制 23
2.3.1 Blink 例程 23
2.3.2 PWM 输出 24
2.4 Wi-Fi 连接 26
2.4.1 线通信 26
2.4.2 线网络 27
2.4.3 Wi-Fi 27
2.5 Wi-Fi 库 28
2.5.1 Wi-Fi 库概述 28
2.5.2 Wi-Fi 类中的函数 28
2.5.3 Server 类中的函数 29
2.5.4 Client 类中的函数 30
2.6 Wi-Fi 网络 31
2.6.1 扫描Wi-Fi 网络 31
2.6.2 连接Wi-Fi 网络 32
2.7 基于网络的交互 33
2.7.1 HTML 语言 33
2.7.2 网页制作 34
2.7.3 在服务器上运行网页 36
2.7.4 通过网页控制LED 40
2.7.5 在网页中显示温度 42
2.8 实例:网络远程养花系统 44
2.8.1 功能描述 44
2.8.2 硬件准备 44
2.8.3 编程实现 46
2.8.4 虚拟服务器 48
2.8.5 扩展思考 50
2.9 通过串口登录Linux 51
2.9.1 驱动安装 51
2.9.2 设置Edison 52
2.9.3 蓝牙连接 54
2.9.4 Linux 下的GPIO 操作 56
第3章 Edison 技术实现浅析
3.1 Edison 的硬件架构 61
3.1.1 Edison 核心 61
3.1.2 Edison 核心与外部系统的连接 63
3.1.3 深入研究Edison 的Arduino 接口扩展板 64
3.1.4 信号电平转换的实现 67
3.1.5 I/O 工作模式和上拉电阻的实现 70
3.1.6 I/O 端口操作的性能问题 72
3.1.7 I/O 端口模式复用的实现 72
3.1.8 ADC 模拟信号采集 74
3.1.9 电源与电池充电 75
3.1.10 小结 76
3.2 Edison 的软件架构 76
3.2.1 总体的软件架构 76
3.2.2 系统引导过程 78
3.2.3 系统分区和文件组织 83
3.2.4 Arduino Sketch 程序的执行机制 85
第4章 进阶开发
4.1 开发Edison 原生应用 95
4.1.1 在Edison 中开发第一个Hello World 程序 95
4.1.2 本机编译和交叉编译 97
4.1.3 使用配套的原生应用SDK 进行开发 98
4.1.4 程序的部署与调试 101
4.2 使用第三方软件包进行开发 106
4.2.1 使用libjpeg 库实现对jpeg 图像进行操作 106
4.2.2 将OpenCV 库编译成Edison 版本 107
4.2.3 在编写的程序中调用OpenCV 113
第5章 系统定制与功能扩展
5.1 使用Yocto Project 定制Edison 系统 117
5.1.1 系统定制的方式与Yocto Project系统简介 117
5.1.2 在开发机中搭建Yocto Project
开发环境 118
5.1.3 编译产生Edison 完整系统镜像 120
5.1.4 将编译完成的系统镜像写入Edison 122
5.1.5 修改Linux 内核配置 123
5.1.6 增加额外的软件包 125
5.2 修改启动引导配置 127
5.2.1 在U-boot 中修改配置参数 127
5.2.2 在Linux 系统中修改U-boot 配置参数129
5.2.3 制作运行在SD 卡上的系统 130
第6章 给Edison 添加图形人机交互界面
6.1 背景和原理 135
6.1.1 使用USB 显示器 136
6.1.2 工作原理 136
6.2 在Yocto Project Linux 中增加图形显示和交互支持 138
6.2.1 对Linux 内核的配置 138
6.2.2 内核驱动编译和部署 139
6.2.3 配置USB 屏内核驱动随系统自动加载 142
6.2.4 在显示屏中输出命令终端 143
6.2.5 使用用户态驱动库直接驱动USB显示器 144
6.3 运行PC 版Ubuntu 图形界面 146
6.3.1 制作安装Ubuntu 系统的SD 卡 147
6.3.2 配置Edison 进行Ubuntu 系统引导148
6.3.3 系统的登录和使用 149
第7章 使用摄像头进行图像识别开发
7.1 从摄像头捕捉数据 151
7.1.1 USB 摄像头的选取 151
7.1.2 增加Linux 内核对USB 摄像头的支持 153
7.1.3 使用OpenCV 获取摄像头图像 154
7.2 制作一个摄像头取景器 154
7.3 使用Edison 制作人脸跟踪器 156
7.3.1 基本原理 157
7.3.2 在本机应用中使用Arduino 库直接操作硬件 158
7.3.3 在本机应用驱动OLED 屏幕显示画面 161
7.3.4 舵机云台控制 163
7.3.5 实现人脸跟踪的facetrack 程序 164
第8章 基于Edison 的智能水杯
8.1 背景与原理 167
8.1.1 Edison 168
8.1.2 外部单片机 168
8.1.3 LED 显示阵列 169
8.1.4 线充电模块 169
8.1.5 板载充电方案 169
8.1.6 电池 170
8.1.7 音频 170
8.1.8 运动传感器 170
8.1.9 低电压保护电路 170
8.1.10 USB MUX 切换线路 171
8.1.11 功耗管理和系统电源状态 171
8.1.12 系统上电时序和规范 172
8.2 系统构架与设计 173
8.2.1 硬件设计 173
8.2.2 软件系统 176
8.2.3 IDEAir 线编程环境 181
8.3 互联网和云计算 183
8.4 应用展望 185
附录A Edison 相关的论坛、社区和开发者资源 187
附录B Edison 的小伙伴们 190
展开
Edison 是一款专门针对小型智能设备设计的双核芯片,在整体的处理性能上,相当于一台完整的“奔腾级电脑”,但是在体积上,却仅相当于一张SD 卡,功耗对比传统电脑更是微不足道。这本书就如同Edison 一样,麻雀虽小,五脏俱全,精练而全面,非常适用于Edison 系列平台的初学者和有兴趣利用Edison 从事新的穿戴式物联网应用开发的人士。我坚信Edison 芯片虽小,但它对未来穿戴式物联网发展会具有里程碑意义。我也衷心希望这本书成为读者们迈向创新和创业的征程上的一个加油站。愿大家成为爱迪生(Thomas Edison)一样的发明家!
—— 英特尔 软件与服务事业部中国区总经理 何京翔