基于ARM的嵌入式系统和物联网开发
上QQ阅读APP看书,第一时间看更新

前言

很多年前第一次从同事那里拿到Arm®MbedTM LiB工具的时候,我的激动之情难以掩饰。它是一个由ARM大学计划捐赠的NXP LPC1768开发板。Arm®MbedTM的主要特征是可通过一个网页浏览器在线编写和编译代码,这让我耳目一新。我毕生都在用各种微控制器。在20世纪80年代,我做本科毕业设计时,我研究的课题是使用Intel 8051单芯片微控制器进行激光能量控制。这其中的概念非常简单:从激光能量监测器上读取电压值,并与期望值进行对比,计算所需调整值后反馈给激光器,从而增加或减少激光输出。但是我们必须设计和制作自己的印制电路板,编写代码,并在8051微控制器上运行。那时,单片机编程不是一项简单的任务,需要用汇编语言编写程序。那时我们经常在实验室通宵调试代码。因此我曾使用过许多基于微控制器的嵌入式系统,可以说经历很丰富。有些嵌入式系统使用非常不方便,必须下载软件、下载工具链等。用我学生的话来说,得要一名博士生才能使编译器软件得以运行。代码也很复杂,需要配置寄存器和配置端口。即使生成无数行代码都不够!

令我印象最深刻的两个嵌入式系统是树莓派和Arduino。树莓派价格优惠,规格紧凑,只有信用卡那么大。这是一个很好的用于学习计算和编码的工具包,它采用的是基于Debian的、完整的Linux操作系统和图形用户界面。但是对于很多学生项目来说,并不需要一个完整的操作系统,而且缺少模数转换器和数模转换器也是很大的缺点。Arduino的价格和规格也很有优势,但令我印象最深刻的是它在硬件和软件上的简易性。我曾经读过很多所谓的“24小时”书,而Arduino是真正的你能够在24小时内就学会的东西。它就是那么简单。但是,它只有有限的存储容量,也就意味着你不能写太长的程序,10位模数转换器在诸多应用中常被证明是不够用的。

因此,当我向学生们介绍Arm®MbedTM NXP LPC1768开发板时,他们很快就喜欢上了它。他们喜欢基于网页的编译器。正是因为不需要在电脑上下载和安装任何软件就可以运行,它让生活变得简单了许多,代码也更简单和易于理解,真是太棒了。正如Arm®MbedTM网站上所述,只需30秒即可从盒子里获取开发板,并运行一个应用,无须安装任何软件!

Arm®MbedTM NXP LPC1768是最常用的单片机开发板之一,被学生和电子爱好者广泛应用。它基于32位ARM®CortexTM-M3微控制器,拥有96MHz主频速度,512KB闪存,32KB内存,而且最重要的是,它有12位数模转换器。相比于Arduino,它的功能更强大,运行速度更快。它还有很多类型的接口,包括以太网、USB、CAN、SPI、I2C、DAC、PWM,以及其他I/O接口。

但是,32位ARM®CortexTM-M3微控制器已经逐渐走向了被淘汰的边缘,它将被32位ARM®CortexTM-M4微控制器取代。因此本书将重点关注新型的、令人期待的Arm®MbedTM以太物联网入门工具包,包括Arm®MbedTM NXP FRDM-K64F开发板和一个应用板。Arm®MbedTM NXP FRDM-K64F是新一代旗舰开发板,基于ARM®CortexTM-M4微控制器,CPU频率高达120MHz,1024KB闪存,256KB内存,并惊人地拥有2个16位模数转换器。它比NXP LPC1768速度更快,功能更强大。它还有数模转换器和计时器,以及其他接口如以太网、非透明USB设备和串行接口。Arm®MbedTM以太物联网入门工具包是一个基于云的开发工具包,由ARM公司和IBM公司联合开发。它可为用户提供灵活的体验,用户可以顺畅地从开发板的传感器上发送数据到IBM云。它可以让用户通过IBM BlueMix平台进入IBM云应用。它尤其适合没有特定嵌入式或网页开发经验的用户,因为它提供了一种学习新理念和创建工作原型的平台。用户还可以对入门工具包硬件进行修改,以便满足个性需求。

由于拥有后向兼容性,许多示例代码也适用于NXP LPC1768开发板及其Mbed应用板。

在编写本书的时候,Arm®MbedTM刚发行了最新版本Arm®MbedTM操作系统5.7,这个版本与之前的Mbed操作系统3.0和2.0相比,有很多变化。本书主要基于Arm®MbedTM操作系统5.7,关于该新操作系统的更多详情可参考Arm®MbedTM文档网站(https://os.mbed.com/docs)。

我非常喜欢运用Arm®MbedTM开发板,希望你们也能喜欢。

本书结构

本书旨在教授学生如何运用Arm®MbedTM开发板设计和开发嵌入式系统以及物联网应用。本书分为四个部分。

第一部分:Arm®MbedTM和物联网(第1~3章),介绍嵌入式系统、微控制器和微处理器、Arm®架构和Arm®MbedTM系统。同时对物联网进行了介绍,包括物联网应用和物联网驱动技术。

第二部分:Arm®MbedTM开发(第4~10章),介绍如何入门Arm®MbedTM开发,以及如何进行模拟输入/输出、数字输入/输出、通信接口、调试、在线库和项目管理。

第三部分:物联网入门工具包和物联网应用(第11~12章),介绍Arm®MbedTM以太物联网入门工具包和物联网应用实例。

第四部分:附录,包括附录A(示例代码)、附录B(HiveMQ MQTT代理)、附录C(树莓派Node-RED)、附录D(字符串和数组运算)和附录E(常用在线资源)。

读者对象

本书适合嵌入式系统开发工程师、电子工程专业本科生或研究生,以及电子爱好者阅读。读者需知晓一些基本的计算机运行原理,并能够很好地使用计算机,如打开电脑、登录、运行一些程序和从USB存储器与计算机上双向拷贝文件。

读者需曾接触过一些电子器械,如电路试验板、电线、电阻器、电源和LED。读者还需有一些编程经验(最好是C/C++,不过其他语言也可以),了解基本的语法、不同类型的变量、条件选择、循环和子程序。若还拥有一些关于微控制器的知识和经验更好,不过这不是必需的。

最后,读者需了解一些关于计算机网络和互联网的基本概念,如理解IP地址和端口号码的概念,知道如何找到一台计算机的IP地址,能够使用一些常用的互联网服务,如万维网、邮箱、下载/上传文件、在线音频、在线视频,甚至一些云服务。

本书既可用作核心教材,也可用作背景阅读材料。

建议先读材料

电子学

Electronics All-in-One for Dummies,2nd edition,Doug Lowe,ISBN:978-1-119-32079-1,March 2017.

C/C++编程:

Beginning Programming with C for Dummies,Dan Gookin,ISBN:978-1-118-73763-7,November 2013.

C++Primer,5th edition,Stanley B.Lippman,Josée Lajoie,Barbara E.Moo,Addison Wesley,ISBN:978-0-321-71411-4,August 2012.

计算机网络和互联网:

Computing Fundamentals:Digital Literacy Edition,Faithe Wempen with Rosemary Hattersley,Richard Millett,Kate Shoup,ISBN:978-1-118-97474-2,August 2014.

Understanding Data Communications:From Fundamentals to Networking,3rd edition,Gilbert Held,ISBN:978-0-471-62745-6,October 2000.

关于所需设备

学习本书,你需要准备:

❑Arm®MbedTM以太物联网入门工具包

·NXP FRDM-K64F开发板

·Mbed应用板

❑带跨接线的电路试验板

❑各种传感器

❑数字或模拟示波器(可选)

❑NXP LPC1768开发板及其应用板(可选)

❑树莓派(http://www.raspberrypi.org/)(可选)

❑Java JDK软件(http://www.oracle.com/technetwork/java/javase/downloads/index.html

❑Python软件(http://www.python.org/downloads/)(可选)

致谢

诚挚地感谢Wiley出版社给我这次机会,也感谢Ella Mitchell的坚持和耐心,使得本书得以面世。

配套示例

本书示例代码见华章图书官网http://www.hzbook.com