前言
Genuino 101是一个极具特色的Arduino开发板,它基于Intel Curie模组,不仅有着和Arduino UNO一样的特性和外设,还集成了低功耗蓝牙(Bluetooth Low Energy,BLE)和六轴姿态传感器(Inertial Measurement Unit,IMU)功能,借助Intel Curie模组上模式匹配引擎,甚至可以进行机器学习操作。因此,使用Genuino 101可以完成一些传统单片机或者Arduino难以胜任的工作,制作更为惊艳的作品。
相较于传统的Arduino开发板,Genuino 101具有如下优势。
1. 控制核心Intel Curie是一个带有机器学习功能的模组
机器学习是当今技术领域的热点,但真想弄懂机器学习需要具备数学、逻辑学、统计学等多学科的知识。现在只需要有Genuino 101,即可在项目上应用或者体验机器学习的魅力了。
Genuino 101自带神经元,能进行基础的分类学习,这带来的好处是巨大的。结合Genuino 101的IMU,可以进行动作识别,而不用复杂的编程。想象一下如何用纯编程的方法实现动作识别,真的是太难了。
2. 可以进行真正的低功耗蓝牙开发
低功耗蓝牙技术是目前最流行的无线通信技术之一,我们用的移动设备几乎都带低功耗蓝牙功能,了解低功耗蓝牙开发,对开发人员大有裨益。
Genuino 101是蓝牙官方(SIG)推荐的蓝牙开发入门平台,其上集成有Nordic蓝牙模组,并提供了CurieBLE库用于开发,它能让我们了解什么是真正的蓝牙通信,还可以制作各种蓝牙BLE设备。
3. 硬件配置更为强大
相比Arduino UNO,Genuino 101配置更为强大。Intel Curie上集成有x86和arc两个核心,拥有更强的运算能力。
除了前面提到的完整的蓝牙BLE、神经元等亮点外,Genuino 101上集成的姿态识别IMU也是高配版。我们常见的IMU传感器都是民用级别的,而Genuino 101上自带的博世IMU BMI160是一个车载级别的芯片,其性能远高于民用标准。
另外,Genuino 101的每一个I/O口都支持外部中断,使得程序编写和硬件连接更具灵活性。
这里需要强调,树莓派等Linux开发板和Arduino之间并没有可比性,二者应用场合不一样。
4. 可以使用更多的开发方式,更适合学生和爱好者使用
Genuino 101除了能使用Arduino方式开发,还可以切换到Zephyr RTOS进行开发。而在Zephyr基础上,Intel还提供了JavaScript解释器,因此还可以使用JavaScript进行开发。
这些特点使得Genuino 101对爱好者更具可玩性,对学生更有学习价值,不仅能通过Genuino 101学习Arduino开发方法,还能了解RTOS等更高级的知识。
5. Intel和Arduino强强联合
过去的Arduino开发板大多是Arduino官方独立设计开发制造的,而Genuino 101由Arduino和Intel两个团队共同开发,从Arduino社区的关注度到源代码的更新进度,都可见一斑。
以上为使用Genuino 101的优势,但在使用Genuino 101之前也应该了解目前使用Genuino 101的阻碍。
(1) 目前Intel Curie芯片没有对个人用户销售,但企业用户是可以购买到的,国内外已经有基于Intel Curie的产品量产。
(2) 价格较高。大部分人没用Genuino 101的原因只是因为太贵,但相信大部分人用Arduino并不是开发量产的产品,笔者认为并没有必要节约百十块钱。即使是开发量产产品,也可以先购买Genuino 101用于原型制作。量产时可自己制作PCB,采购Intel Curie模组进行生产。
(3) 部分基于AVR的Arduino库,在Genuino 101上无法使用。但这个问题不大,还有非常多的标准Arduino库可以在Genuino 101上使用,Genuino 101还自带蓝牙BLE、IMU、机器学习等功能,Intel和Arduino官方也提供了对应的库,这些库组合起来已经可以满足大部分项目需求了。另外,在可穿戴领域,Genuino 101比其他Arduino方案更有优势。
本书是笔者将过去在Arduino中文社区上撰写的Genuino 101相关教程与自身开发经验相结合整理而成的,内容涵盖Arduino编程基础知识和Genuino 101高级API的使用,主要针对大学生、研究生和开发者编写,适合入门学习。
由于编写本书时Genuino 101的蓝牙BLE库正在大版本更新过程中,相关API可能会有很大变化,因此本书中没有蓝牙BLE开发章节,待BLE库稳定版本推出后,读者可在Arduino中文社区上阅读BLE开发章节。
参与本书编撰和校审的还有邱力超、魏宇科、王翔、赵东相、任蕾凡、邹东雁。
特别感谢Intel在线业务部在写作本书时提供的支持与帮助。
由于笔者水平有限,书中难免存在不足之处,敬请读者批评指正。欢迎读者通过Arduino中文社区(http://www.arduino.cn/)参与本书相关内容的讨论。本书相关资料及代码均可在清华大学出版社本书页面以及笔者的个人网站(http://clz.me/101book/)获取。
陈吕洲
2017年7月
作者简介:
陈吕洲Arduino中文社区创始人,硬件创业者,畅销图书《Arduino程序设计基础》的作者。早期从事机器人竞赛,现从事软硬件产品设计与开发工作。在业余时间致力于开源硬件的设计与推广,长期积极参与和推动国内开源硬件及相关社群的发展。研究领域涉及Arduino、mbed、ScriptBoard等硬件开发平台,Linux、Zephyr等嵌入式操作系统,也为Intel、Atmel等公司提供开源硬件产品设计与推广咨询服务。