Arduino的互动产品平台创新设计

发布时间:2012-4-12 17:00    发布者:eechina
关键词: Arduino , 单片机 , 人机互动
作者:杨继志 郭敬

摘要:Arduino是一款电子互动产品开发的软硬件平台,有时也叫做“电子积木”。介绍了其主要的特点,指出Arduino将在我国的电子互动产品设计中发挥越来越重要的作用。之后详细介绍了Arduino的硬件和软件组成,并通过实例说明了基于Arduino的互动产品创新设计的基本过程,使读者可以初步掌握采用Arduino进行设计的基本技能。

引言

Arduino是一系列基于单片机的人机互动产品开发平台,由于其具有高度的模块化特点,有时也叫它“电子积木”。它的硬件平台是开放的,任何人都可以在Arduino官方网站上下载最新的PCB设计进行复制。Arduino的硬件平台包括基于AVR单片机的主控制电路板,以及大量的各式输入/输出电子模块。输入/输出模块包括开关输入模块、温度压力传感器输入模块、超声测距传感器输入模块、各类显示输出模块、电机控制模块等,甚至还有以太网接入模块。由于Arduino具有丰富易用的模块,已经在各类机电创新设计比赛中得到广泛应用。在软件方面,Arduino有一个属于自己的基于Eclipse的IDE软件开发环境,开发语言采用类C++语言的高级语言,容易被使用者掌握。有大量的库文件可以通过互联网下载免费获得,大大简化了程序开发工作。由于Arduino丰富的外围模块、容易掌握的开发语言和环境,大量的库支持,使得基于Arduino的电子互动产品设计越来越多。从Arduino诞生的2005年到2011年,已有超过15万块的Arduino模板售出[1]。本文介绍了Arduino的硬件、软件,并给出了采用Arduino开发互动产品的实例,使初学者对它有一个基本的认识。

1 Arduino硬件

1.1 Arduino主控板

Arduino的主控板采用AVR单片机,最新的版本是UNO,与之前的版本不同,它不再使用FTDI USB串行驱动芯片,而是把Atmega8U2编程为一个USB设备。相对于它的前几代,这带来了许多好处。首先是价格降低了,更重要的是这使得Arduino在PC端可以显示为一个USB设备,就像是一个鼠标或游戏操作手柄,这开辟了Arduino的新用途[1]。总之,Arduino的主控板就是一个单片机控制板,在这一点上与其他单片机控制板并无本质的区别,但是由于其拥有丰富的系列产品、大量的开源软件,让Arduino得到了更为广泛的应用和支持。

1.2 Arduino输出模块

市场上已经出现了围绕Arduino Duemilanove开发的很多输出模块:有视觉输出的,如LED灯控制、LCD控制、触摸屏控制等;有声音输出的,如蜂鸣器和扬声器模块;还有物理系统的控制模块,如各类直流小马达、步进电机机器人舵机等。另外,还可以利用AVR单片机的PWM输出口进行D/A转换。这些模块大大拓展了Arduino作为一个单片机平台的用途。其中基于LN298设计的直流马达控制模块在各类机器人项目中采用得很多,这种模块能够同时控制两路直流马达,与ArduinoDuemilanove之间的连接也十分简便。输出单元的模块化使搭建基于Arduino系统的应用项目很方便。

1.3 Arduino输入模块

最一般的输入如各类按钮、位置行程开关等都有相应的模块可以购买。其他诸如超声测距、压力传感器温度传感器、倾角传感器等也有相应的模块可以直接应用。还有记录数据和通信用的模块、如SD卡模块,以太网接入模块等,这让Arduino不仅仅作为一个控制终端使用,还可以进行数据的存储和简单处理,以及与外界系统通信等,可见其输入模块资源丰富。从输入的信号来看,可以分为数字量的信号输入(如以上的开关模块等),模拟量的信号输入(如温度、压力传感器模块),通过总线网络方式的数据输入(如采用各类通信协议的传感器模块等)。

2 Arduino软件

2.1 Arduino编程语言

Arduino编程语言是建立在C/C++语言基础上的。Arduino语言把AVR单片机(微控制器)相关的一些参数设置都参数化了,不用开发者去了解其底层,对AVR单片机了解不多的用户也可以容易地开发基于AVR的项目。需要注意的是,Arduino的语言与C语言运行机制还是有一些区别的,特别是在项目程序中必须包括setup和loop两个函数。setup函数在系统上电或复位后运行一次,因此一般用户在其中做一些初始化工作,如设定串口通信的波特率等,一些一次性的工作也可以放在这个函数中运行,如下文中的写SD卡文件的例子程序。Loop函数是Arduino软件项目的主体,系统上电并且运行完成setup函数后,就进入loop函数,并且该函数是一个无限循环的过程,这一点需要开发者特别注意,这与C语言的void main(){}是有很大区别的。loop函数相当于下面这样一个无限循环过程:

while(1){

用户程序

}

在系统setup执行之后,总是进入这个函数,开发者需要把自己的程序放在这个函数内运行。

2.2 Arduino开发环境

Arduino的开发环境很简洁,用户可以在其官方网站上免费下载使用,IDE如图1所示。可以看到,在一个简单的菜单和工具条下,就是IDE的编程窗口和一个串行通信监视窗口。其中工具条包含了保存打开文件、向Arduino板下载程序等主要功能,与一般的Windows软件并无不同。在编程窗口下是一个串口监视器窗口。因为Arduino开发板没有专门的显示平台,在许多程序的调试过程中需要Arduino传输给上位机一些信息以便于开发者判断程序的运行状况,或者得到程序的运行结果。这些结果可以通过串口监视器显示,开发者也可以通过该窗口向Arduino板发送一些信息,极大地方便了项目的开发。

1.gif
图1 Arduino的IDE

3 Arduino平台开发实例

3.1 用Arduino读写SD卡

SD卡体积小,价格便宜,因此在许多工业数据记录和家用电子产品中有越来越多的应用。Arduino可以通过SPI接口与之通信,进行诸如建立文件、删除文件、向文件中添加内容、修改文件等操作,这样采用Arduino配合SD卡可以开发数据记录设备。


Arduino与SD卡的简单连接,只需要6只电阻和1张SD卡,通过软件模拟的方式实现SPI接口,Arduino与SD卡连接电路如图2所示。

2.gif
图2 Arduino与SD卡连接电路

由于SD卡的操作电压为3.3 V,而Arduino的逻辑电压为5 V,因此需要用起分压作用的电阻(本文采用了Josh Adams书中的验证性电路),在实际的应用中最好采用分压模块以保证卡和Arduino板的安全。之后在网址http://code.google.com/p/sdfatlib/下载Bill Greiman开发的SdFat.h和SdFatUtil.h头文件和库文件,并安装到Arduino安装目录中的库文件夹中就可以使用了。简化程序如下:

#include

#include

Sd2Card card;

SdVolume volume;

SdFile root,file;

void writeString(SdFile& f,char * str){

Uint8_t n;

for(n=0;,str[n];n++)

F.write((uint8_t*) str,n)

}

void setup(){

card.init(SPI_HALF_SPEED);

root.openRoot(&volume);

File.open(&root,"testfile.txt",0_CREAT|0_EXCL|0_WRITE);

File.timestamp(2,2011,11,11,25.12.34.56);

writeString(file,"something you want ");

File.cose();

}

void loop(){

}

将该程序下载到Arduino主控板内即可向SD卡内建立一个新的文件,并写入"something you want "字符,当然也可以根据需要写入想要记录的信息。

程序的开头包含了两个头文件:SdFat.h和SdFatUtil.h。这两个头文件定义了一些操作SD卡必需的类。之后建立4个有关操作SD卡的对象。然后自定义了一个向SD卡内写一个字符串的函数,这个函数需要一个文件的引用和一个字符串作为参数。setup函数是Arduino软件项目中必须有的,做一些运行的初始化工作。这个实例程序由于只是完成简单的写文件操作,因此对文件的写操作在这个函数中完成。函数依次完成了设定SD卡的通信模式为SPI模式、打开卡的根目录、建立文件名为testfile.txt的文本文件、给文件添加时间信息、向文件内写入文件内容、关闭文件。从以上的过程中看,采用Arduino操作SD卡上的文件与采用C语言操作PC上的文件十分相似,这也是Arduino易用性的体现,再一次验证了采用Arduino开发电子互动产品的方便性。

结语

Arduino是一个开放的单片机开发人机互动产品的软硬件平台,由于它有丰富的软硬件资源而且易于使用,得到了广泛的应用,特别是在电子竞赛、电子艺术品开发等方面。因此,有必要研究它的应用,拓展其应用范围。

参考文献

[1] Josh Adams.Beginning Arduino[M].[S.l.]:Apress,2010.

[2] Massimo Banzi.Getting Started with Arduino[M]. [S.l.]:Make, 2008.

杨继志(高级工程师),主要研究领域为工业自动化控制。
作者:杨继志 郭敬   来源:《单片机与嵌入式系统应用》
本文地址:https://www.eechina.com/thread-89255-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关在线工具

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表