Arduino的原理及应用
扫描二维码
随时随地手机看文章
摘要:Arduino是目前较为流行的电子互动平台,基于单片机系统开发,具有使用简单、功能多样、价格低廉等优点,广泛应用于电子系统设计和互动产品开发方面。文中详细介绍了Arduino的功能特点、基本结构,并通过LEO控制电路的应用给出了具体的使用方法。
关键词:电子设计;控制电路;Arduino;LED
Arduino是2005年1月由米兰交互设计学院的两位教师David Cuartielles和Massimo Banzi联合创建,是一块基于开放原始代码的Simple I/O平台,该平台由两部分组成:硬件(包括微处理器、电路板等)和软件(编程接口和语言)。平台的两部分都是开源的,如果需要,可以下载Arduino的图表、购买需要的所有独立部件、切割电路板并制作一个电路板。Arduino具有类似java、C语言的开发环境。可以快速使用Ardu ino语言与Flash或Processing等软件完成互动作品。Arduino能够使用开发完成的电子元件,如Switch、Sensors或其它控制器、LED、步进电机或其它输入/输出装置,同时,Arduino也可以成为独立与软件沟通的平台,如flash、Processing、Max/MSP或其它互动软件。
1 功能特点
Arduino在开发之初,就明确了其应用环境,设计了开源开放的平台,便于对其进行二次开发。Arduino的主要功能特点如下:
1)开放源代码的电路图设计。程序开发接口免费下载,也可依需求自己修改。
2)使用低价格的微处理控制器(ATmega8或ATmega128)。可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。
3)支持ISP线上烧入器,将Bootloader固件烧入芯片。Arduino控制器内带Bootloader程序,是系统上电后运行的第一段代码,就好比PC机BIOS中的程序,启动就进行自检,配置端口等等,当然,单片机是靠烧写熔丝位来设定上电从boot区启动的,使用这个程序就可以直接把从串口发来的程序存放到flash区中。所以,使用Arduino编译环境下载程序时,就先让单片机复位,启动Boodoader程序引导串口发过来的程序顺利写入flash区中,flash可以重复烧写,因此想更新软件非常方便。有了Bootloader之后,可以通过串口或者USB to RS232线更新固件。
4)可依据官方提供的PCB和SCH电路图,简化Arduino模组,完成独立运作的微处理控制。
5)可简单地与传感器,各式各样的电子元件连接,如红外线、超音波、热敏电阻、光敏电阻、伺服马达等。
6)支持多样的互动程序,如Flash,Max/MSP,VVVV,PureData,C,Processin等。使用低价格的微处理控制器。
7)应用方面,利用hrduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。Ard uino的功能特点,使其得到了越来越广泛的应用。
2 基本结构
Arduino系统针对不同的应用环境还开发了不同的版本,文中以“Arduino Duemilanove”版本为例介绍,该版本于2009年开发,基于ATm ega328微控制器板,能自动选择何种供电,直接将它用USB线连上计算机或者用一个电源适配器给它供电,就可以开始使用。Arduino Duemilanove的外部结构如图1所示。
1)1个9V DC输入,为Arduino板提供外部电源输出,使Arduino控制板具有能够驱动舵机等大功率外部设备的能力;
2)1个USB口,通过该口连接到计算机,由Arduino的IDE将用户编写好的控制程序上传到控制板中,同时还可以通过该口为电路板供电,驱动小功率的外部设备;
3)14个数字输入/输出端,其中端口0(RX)和1(TX)分别连接主控芯片的串行引脚,用来接收和发送TTL串行数据。其中端口2、3可以接收外部信号,实现外部中断功能;端口3、5、6、9、10、11作为PWM端口,可用于电机PWM调速[5]或音乐播放;端口10(SS)、11(MOSI)、12(MISO)和13(SCK)在SPI模块库的支持下,可以提供SPI通信模式;端口13内部连接了一个LED指示灯,随着13脚上电平的高低变化,实现开启和关闭;
4)6个模拟输入/输出端,其中端口4(SDA)和端口5(SCL)端口可以实现I2C通信;
5)1个5 V DC输出和1个3.3 V DC输出,可为其它电路提高3.3 V和5 V直流电源;
6)1个复位接口。
Arduino系统是基于单片机开发的,并且大量应用通用和标准的电子元器件,包括硬件和软件在内的整个设计,代码均采用开源方式发布,因此采购的成本较低,在各种电子制作竞赛、电子艺术品创意设计等越来越多地使用Arduino作为开发平台。
3 应用
Arduino系统在电子设计等方面应用较多,本文以简单的LEO控制为例,说明Arduino系统的使用。
LEO控制系统中,采用开关S控制LED的亮灭,设开关S闭合时,LED发光,S断开时,LED熄灭。因此,系统设计时采用数字输入/输出口的两个引脚分别进行LED和S开关的连接,电路如图2所示。
Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduno语言将AVR单片机(微控制器)相关的一些参数设置模块化,包括EEPROM、以太网、LED矩阵、舵机、步进和TWI/I2C控制程序库,不需要用户直接处理底层系统,可以提高应用程序的开发效率。流程如图3所示。
Arduino语言是以setup()开头,loop()作为主体的一个程序构架。setup()用来初始化变量、管脚模式、调用库函数等等,该函数只运行一次,功能类似C语言中的“main()”。loop()函数是一个循环函数,函数内的语句周而复始的循环执行。设通过D10引脚控制LED,D2引脚连接控制开关S,主要代码如下:
Setup函数中,pinMode函数是数字I/O口输入输出定义函数,可以定Arduino上0~13口的输入输出状态,INPUT和OUTPUT分别表示输出和输出模式。loop函数中,digitalRead为数字I/O口读取电平值函数,digitalWrite为数字I/O口输出电平定义函数。本例中在setup函数中,将端口2定义为数字信号输入端口,将端口10定义为数字信号输出端口;在函数loop中,首先读入端口2的电平信号,然后依据该端口电平值的高低,设置输出端口10的电平值。
将编写好的控制代码通过Arduino的IDE上传到控制板之后,关闭或者打开开关S,便会观察到LED的亮灭情况。
4 结论
Arduino系统是建立在C/C++基础上的,也就是基础的C语言,Arduino系统只是将AVR单片机(微控制器)相关的一些寄存器参数设置等都函数化了,即使不太了解AVR单片机的朋友也能轻松上手,设计出各种实用的电路开发系统。