第25卷第1期 2012年1月 机电产品开崖与 崭 Development&Innovation of Machinery&Electicalr Products Vo1.25.No.1 Jan..2012 文章编号:1002—6673(2012)01—099—03 基于Arduino的网络互动产品创新设计 杨继志 ,杨宇环 (1.北京航天试验技术研究所,北京100074;2.吉林油田江南物业管理公司,吉林松原138000) 摘 要:Arduino是一款电子互动产品开发的软硬件平台,有时也叫做“电子积木”。由于其有丰富的外围 硬件模块和大量的开源软件库可以使用,因此其开发互动产品十分便捷,特别是与因特网的连接, 由于有相关网络模块和软件库的支持,开发网络互动产品也非常方便,这是一般单片机系统不具 备的特点。论文简要介绍了Aduino的主要特点和硬软件组成,并通过实例说明了基于Arduino系 统的网络互动产品创新设计的基本过程。使读者可以初步掌握采用Arduino进行网络互动产品设 计的基本能力。 关键词:Arduino:单片机;因特网连接 中图分类号:TB51 文献标识码:A doi:10.3969/i.issn.1002—6673.2012.01.040 ArduinO—based Interactive Product Innovation YANG 一Zhi ,YANG Yu—Huan (1.Beijing Institute ofAerospace Testing Technology,Beijing 100074,China; 2.Property Management Company ofJilin Petroleum Company,SongyuanJilin 138000,China) Abstract:Arduino is an electronic hardware and software platform for interactive product development,sometimes it is called”electronic building blocks.”Because of its rich pe却heral hardware modules and a large number of open source software libraries which can be used,the development of interactive products are very convenient,especially with intemet connection,Because the relevant network module and soft- ware support,the development of network interactive products are very easy.This is is charactteristics that the single chip microcomputer sys— terns haven t.This paper briefly introduces the main characteristics of Aduino S hardware and software components.More information about Arduino network interactive product design WaS introduced tO readers through an example of Arduino system. Key words:arduino;single chip computer;internet connection 0引言 Arduino是一款基于单片机系统的电子产品开发平 多地使用Arduino作为开发平台,由于Arduino的流行 和易用性,相信将会有更多的Arduino标准的软件库和 硬件模块出现。本文简要介绍了Arduino的硬件、软件 并给出了采用Arduino开发与因特网互动产品的实例, 使初学者对它有一个基本的认识。 台,它的软硬件系统都具有高度的模块化.而且软件系 统是完全开源的,有大量的志愿者在随时发布和升级相 关软件库,因此保证了其软件系统的开源、内容丰富、 实时更新的特点。其硬件系统也是高度模块化的.在核 1 Arduino硬件 1.1 Arduino主控制板 Arduino的主控板采用AVR单片机.这似乎并没有 新颖的地方,但是由于其与自己独特的软件开发环境相 配合,在其软件环境的支持下。隐藏了几乎全部的与硬 件相关的部分,因此使得Arduino的硬件给设计者的感 心控制板的外围,有开关量输入输出模块、各种模拟量 传感器输入模块、总线类传感器的输人模块,还有网络 通信模块,只要在核心控制板上增加网络控制模块,就 可以容易地与互联网连接。由于Arduino具有这样的高 度的模块化特点,因此有时叫它“电子积木”。目前, 我国各种电子制作竞赛、电子艺术品创意设计等越来越 收稿日期:2011—11—24 受是十分简单易用,其虽然也采用类C++语言作为对硬 件编程的语言,但是却十分简单易用。例如,其设定并 作者简介:杨继志(1977-),毕业于哈尔滨工程大学,获得 机械设计及理论专业硕士学位,高级X-程师。目前在北京航 开始以9600的波特率进行串口通信,仅仅需要Seria1. begin(9600),对串口进行输出仅仅是Seria1.Print(“some. thing you want”)即可,因此可以看出硬件相关的诸如 天试验技术研究所从事工业自动化系统设计工作。 ・制造业信息化・ 定时器的设定等编程代码全部进行了封装,这对于对单 片机硬件系统并不是十分熟悉的用户也可以容易地上手 使用其硬件。Arduino主控板最新的版本是UNO,它把 关的一些参数都参数化并进行了很好的封装,因此不用 开发者去了解其硬件结构即可对其编程,实现设计者的 设计意图和创意。但是Arduino的语言与C/C++语言运 行机制还是有一些区别的。Arduino的程序中必须包括 setup和loop两个函数,setup函数在系统上电或复位后 运行一次,因此一些一次性的工作可以放在这个函数中 运行,如在其中做一些初始化工作。Loop函数是Ar. duino软件项目的主体,系统上电并且运行完成setup函 数后,就进入loop函数,并且该函数是一个无限循环的 Atmega8U2编程为一个USB设备,使得Arduino在Pc 端可以显示成为一个USB设备,就像是一个鼠标或游 戏操作手柄,开辟了Arduino的新用途lll。总之Arduino的 主控板就是一个单片机控制板,在这一点上与其它单片 机控制板并无本质的区别,但是由于有丰富的系列产 品、大量的开源软件以及软件对与硬件相关的设置进行 了很好的封装,让Arduino得到了更为广泛的应用和支 持,甚至可以作为电子艺术创意产品设计的平台。 过程,这与PLC程序的运行机制类似,做过工业控制的 用户会很容易理解其运行原理。但是对习惯于C语言开 发的用户还是需要注意。LOOP函数运行时相当与C语 言中的一个无限循环,也就是相当于以下程序: While(1) 1.2 Arduino输出模块 由于Arduino的硬件是以CC(Creative Commons)形 式授权的,这意味着任何人都可以仿制和开发Arduino 的硬件电路,使得Arduino官方版以及非官方的克隆版、 变种版数量超过50万块在使用【l】。其输出模块种类也很 丰富,有各类显示模块,如LED灯控制模块、LCD控 { 用户程序 ) 制模块、触摸屏控制等;还有声音输出模块,如嗡鸣器 和扬声器模块:还有物理系统的控制。如各类直流小马 达、步进电机、舵机等。这是在各类机器人制作竞赛上 经常看到基于Arduino的项目的原因 由于这样丰富的 硬件输入模块的支持,使得开发者可以将精力集中在控 制策略和系统功能上来而不是在单片机系统和外围控制 在系统Setup执行之后,总是进入这个函数,开发 者需要把自己的程序放在这个函数内运行,需要习惯这 种运行机制。 2.2 Arduino开发环境 Arduino的开发环境可以在其官方网站上下载免费 使用。IDE如图1所示。与一般的WindowsIDE程序没 有特别的区别。在编程窗口下是一个串口监视器窗口, 在许多程序的调试过 程中需要Arduino传输 给上位机一些信息以 系统的PCB制作上。另外还可以利用AVR单片机的 PWM输出13进行DA转换。这些模块大大拓展了Ar- duino作为一个单片机平台的用途,使其不仅仅可以对 大功率的开关器件进行控制.还可以进行功率的连续控 制,如基于LN298设计的直流马达控制模块,在需要进 行调节各类机器人中小马达速度的情况下使用很多。它 能够同时控制两路直流马达或步进电机,对完成巡线机 器人等项目十分便利。 便于开发者判断程序 的运行状况.或者得 到程序的运行结果, 可以在Arduino中编 1.3 Arduino输入模块 与一般的单片机系统相同.Arduino也需要一些如 各类按钮、位置行程开关等的开关量输入,而这些开关 量的输入都有相关的模块可以直接使用,简化了设计。 其它输入模块诸如超声测距、压力传感器、温度传感 入从串口输出中间结 果的语句,便于开发 图1 Arduino的IDE Fig.1 Arduino ̄IDE 者判断程序的运行,极大地方便了项目的开发。 3 Arduino与互联网通信项目开发实例 使用单片机开发与互联网通信的程序,对一般的电 子制作爱好者或电子创意产品设计者是一个很大的挑 战。但是在Arduino在网络硬件模块和相应的软件库的 支持下,这个任务却变得简单了。首先是将Arduino的 网络模块安装好.其安装也很容易,按相应的插针插入 主控板即可。之后可在IDE中写入相关的代码。下面用 一器、倾角传感器等也比较丰富。另外还有记录数据和通 信用的模块,如SD卡模块.以太网接入模块等。所有 这些让Arduino可以不仅仅作为一个控制终端使用,还 可以进行数据的存储和简单处理、与外界系统通信等。 2 Arduino软件 2.1 Arduino编程语言 Arduino有自己特有的编程语言.其语法规则类似 于C/C++语言。IDE环境和语言把AVR单片机与硬件相 100 个使用Arduino向互联网上发送电子邮件的程序进行 简要的说明。关键部分程序如下: #include<Ethemet.h> (下转第60页) ・产品与市场・ 管带进空气,应启动电源,关闭回油阀,打开进油阀, 让主体油缸中含有空气的油流回油箱。如此反复数次. 定程度产生漏油),或稳压弹簧刚度过低;②节流针孔 有堵塞现象,应采取的措施:首先应检查液压系统,排 除漏油因素,其次清洗节流针孔,检查稳压弹簧刚度是 否合适,否则予以更换。 直至空气排尽;④油液粘度低,活塞周围有较多溢油, 高压回漏油,应采取的措施:更换符合要求的新 油;⑤送油阀内有铁末、油渣等异物,使送油阀内顶杆 不能在阀内的分流槽内自由移动,使液压系统产生震 5.5摆锤回位不良 其可能原因有:①缓冲阀问题:一是缓冲阀调节不 当,二是缓冲阀节流针磨损。三是缓冲阀内的钢球与进 油口接触不良,有空隙;四是缓冲阀出油孔堵塞;( 油 动,应采取的措施:清洗送油阀,排出异物;⑥送油阀 内起稳压作用的弹簧刚度不适(一般太软),引起液压 系统震动,应采取的措施:更换合适的弹簧。 的粘度过大或过小(摆锤回落速度太慢或太快);③液压 油太脏。应采取的措施:首先检查缓冲器调节位置是否 恰当,油液是否清洁,粘度是否符合要求,其次检查缓 5.2载荷保持不住 其可能原因有:①液压油粘度过低;②液压系统内 有空气存在;③液压系统漏油或回油阀关闭不严;④送 油阀内的稳压弹簧刚度过小;⑤送油阀内有杂质异物。 应采取的措施:首先排出液压系统中的空气,排除漏油 因素,如活塞四周有大量液压油溢出,则应检查溢流管 导通情况,其次检查液压油粘度,视情况处理。如经处 理或换油后不漏油而载荷仍保持不住,则应清洗送油阀 并增加阀内稳压弹簧刚度。 冲阀是否清洁完好,节流针是否磨损。视情况予以调整 或更换。 6安装与初次运行 (1)试验机要安装在清洁、干燥、无震动且温度均 匀的房间内,并考虑到作长梁弯曲试验和使用各种引伸 计进行试验。以及对设备的维修等,在试验机的周围应 留出足够的空间。试验机主机应安装在混凝土的基础 上,基础的上平面应平正,用水平尺找平,待基础干燥 后,再装上主机。 5.3加不上载荷。或加不到最大载荷 其可能原因有:①油泵皮带松动,有打滑现象;② 油泵不能正常丁作;⑧油箱中的储油量不足;④液压油 粘度过低;⑤液压系统有漏油情况发生;⑥送油阀内稳 压弹簧刚度不够:⑦送油阀内的节流针孑L有堵塞现象。 应采取的措施:首先检查高压油路系统是否漏油,油箱 内储油量是否足够,油泵皮带是否松动,其次检查回油 (2)主机的浇固,主机找正后,用混凝土将地脚螺 母浇固,并将机座下面四周的空隙全部填死,保证机座 与基础良好接触,防止在使用过程中因受震动而造成主 机垂直度发生变化。 参考文献: [11王以伦.液压技术【M].广播电视大学出版社,2000. 管的回油量是否在油压上升时变大(正常情况下应不变 或变小),然后再检查送油阀、油泵等是否正常,根据 情况采取相应对策。 【2】薛祖得-灞 压传动【M1.北京出版社,1995. 【3]济南试验机制造总公司.万能试验机说明书[z].2005,2. [4】上海lT业大学.液压传动与控制[M].上海科学技术出版社,1981. 5.4加荷途中。指针突然向回倒或抖动 其可能原因有:①液压系统有严重漏油(升压到一 (上接第100页) Byte server IJ{X,X,X,X};//X,X,X,X是电子邮件 服务器的IP地址 由此可见,一项本来比较艰巨的任务变得简单了, 仅仅是包含相应的库文件、定义重要的数据、生成邮件 客户机类的实例、用client.println函数发送相关信息等, 可见软件代码很清晰和简短,真正体现了“电子积木” 的特点。 Client client(server,25); Void sendEmail 0 { If(client.connect 0) { 4结论 Arduino是一个开放的单片机开发人机互动产品的 Client.println(”HELLO MYSERVER”);delay 0; Client.println(”AUTH GOGIN”);delay 0; Client.println(”用户名”);delay 0; 软硬件平台,由于它有丰富的软硬件资源而且十分易 用,因此得到了广泛的应用,特别是电子制作竞赛、电 子艺术品创意开发等方面应用很广。 参考文献: 【l】Josh Adams.Beginning Arduino,Michael McRoberts 2010. Client.println(”密码”);delay 0; //之后用同样的client.println函数向邮件服务器 发送电子邮件的标题内容等 } 6O 【2 Massi2]mo Banzi.Getting Started with Arduino,2009.