arduino单片机

关键词: 开发板 开源 单片机 学习

arduino单片机(精选四篇)

arduino单片机 篇1

Arduino是一款基于AVR单片机的硬件电路和软件开发环境共同开源的控制系统,是交互式编程学习的一种媒介、是为嵌入式开发的学习而研发的一种控制终端。

Arduino和其他AVR系列的单片机开发板相比有以下几点独有的优势:

可交互性:Arduino设计之初就规定了统一的框架结构,电路底层的初始化采取了统一的方法,对于数字信号模拟信号的I/O系统也进行了统一的规定。而且Arduino支持processing、C、Flash等开发语言。这些特性使得Arduino学习者和使用者在进行电路设计交流时保持了统一的物理底层特性,从而达到易于交流和学习的目标。

安全的易用性:Arduino和外部程序交互的接口是一个标准的USB接口,通过与电脑的USB接口连接,使用Arduino软件开发环境上载编写的程序实现控制硬件动作的目的。Arduino通讯接口的唯一性和开发环境的友好性使得该平台能够安全简单的实现不同的控制目的。

良好的可扩展性:Arduino本身标准的数字和模拟I/O口支持丰富的硬件扩展。Arduino通过连接线能和各种传感器模块、驱动模块和网络模块相连接,在上位机编写的程序控制下能够简单高效的实现各种环境数据的采集和侦测,并能驱动各种小功率声、光、电器件对采集和侦测到的数据进行显示。而且Arduino还能通过网络模块将采集到的数据通过网络接口上载到互联网平台供众多的学习者和开发者使用。

第三方资源丰富:Arduino无论硬件和软件都是开源的,这些特性使得开发者可以完全掌握其底层实现机制,可以自身更改硬件布置和实现功能,甚至通过Arduino官方预留的编程接口开发独有的软件库。在全球众多的Arduino开源社区中,开发者可以轻松的找到能供自己使用的软、硬件信息。

综上所述,正是Arduino的这些特性使得在当今ARM平台大行其道的时候能够在嵌入式平台占有一席之地。而且也正是因为这些特性使得Arduino赢得了“电子的艺术”的美称。许多电子技术领域以外的爱好者凭借自身的想象力创造出了许多杰出的作品。

2 应用层面

在我国Arduino正方兴未艾,越来越多的开发者加入了其行列。目前国内的Arduino开发主要应用在以下几个方面:

嵌入式开发学习:在国内众多的高校和爱好者中Arduino都首先是学习嵌入式入门的工具。利用Arduino实现控制LED的闪烁、LED流水灯、控制蜂鸣器发声、控制八位数码管、控制液晶显示器实现输出、驱动直流电机、舵机等。熟练掌握了Arduino系统后可以为以后学习A R M嵌入式系统打下良好的基础。

交互式设计:通过processing语言和Arduino平台进行互动,设计出具有良好界面的可视化数据系统。在交互式设计中Arduino充当了收集者(Collecter)和执行者(Actor)的功能。物理传感器收集到的数据经过A V R的计算后传送给上位机的显示器,而上位机根据返回的数据控制驱动装置执行相应的动作,实现相应的目的。

电子创意制作领域:在这个领域中Arduino可以充当一种称之为电子积木(Electronic blocks)的功能。开发者将自己设计制作的器件和外围电路通过信号线和机械结构同Arduino连接在一起构成表达开发者自身创意的电子艺术作品。其中,Arduino作为主控电路负责整个系统的数据处理和信息显示。正是由于Arduino的安全易用性,使许多非电子专业的开发者,能够使用Arduino。例如美术专业的学生也能够利用Arduino进行艺术的原型创作。

业余无线领域:在业余无线电的电台通联中,开发者利用Arduino配合其他外围器件构成一个个独特的可编程电子键。或者使用Arduino制作一个业余无线电信号跟踪器用来跟踪信号的实时变化。由于Arduino是开放的,业余无线电爱好者们也会反过来使用业余电台的DTMF编码控制Arduino系统实现各种相应的功能。

小型智能机器人领域:国内很多高校的电子实验室和爱好者们都热衷于制作各种小型的机器人,使用Arduino作为小型机器人的中央处理器(cpu)能够节省设计时间,使得复杂的主控电路变得简单,制作效率大为提高。而且由于Arduino的可扩展性,极大的简化了日后机器人的维护和升级。目前使用Arduino控制器实现的小型智能机器人种类有智能循迹小车、智能并线机器人、仿生N足机器人、二轮自动平衡小车、自动语音提示机器人等。在国内这一领域内Arduino的发展空间还有待于提高。

在物联网中的应用:物联网作为一种新型的信息交换和通讯技术在我国还处于起步阶段。Arduino作为一种能够连接传感器和互联网的控制系统,只需要简单的电路改造就能够实现轻量级的物联网远程控制和监控功能。使用“传感器+Arduino+物联网开放平台服务商”三合一的模式,能够控制监控各种已经连接到物联网中的电气化设备。例如远程控制家庭中的各种电器、远程监控公共场所的大气环境、远程控制加工设备等。Arduino作为一种轻量级的物联网实现方式是大规模的物联网应用的一种低成本补充,能够在特定场合实现独特的功能。

3 结语

总之Arduino作为开源的电子原型制作平台,无论对于学习嵌入式开发的学生还是电子制作爱好者而言都是一种简洁而高效的工具。由于Arduino是一个开源的软、硬件平台,它的版本仍旧在不断的更新完善中。目前应用的主要有三种:Arduino UNO、Arduino Mega 2560、Arduino Nano。随着版本的不断升级、性能的不断提升,Arduino在社会生产中的应用范围会更加广阔。Arduino诗意化的逻辑互动装置将会走进每个人的生活。

摘要:本文主要讲述了开源电子原型平台Arduino的特性和应用概况

关键词:单片机,Arduino开源硬件,智能控制,物联网

参考文献

[1]Casey Reas&Ben Fry《Getting Started with Processing》Make 2010-7-2.

[2]臧海波.《爱上机器人:仿生机器人制作入门》人民邮电出版社,2012-08-01.

[3]H.WardSilver著,赵辉译.《无线电基础电路实作》.人民邮电出版社,2011-7-1.

[4]Massimo Banzi.《Getting Started with Arduino》.Make 2011-09-20.

arduino单片机 篇2

Capital Normal University

首都师范大学本科毕业设计论文

基于行为设计的移动机器人设计与实现

——机器人机械设计模块

Design and Implementation of Mobile Robot

Based on Behavior Design —— Robot Mechanical Solutions

论文作者: 张倩颖 院 系: 信息工程学院 专 业: 计算机科学与技术 学 号: 1111000055 指导老师: 徐敏 完成日期: 2015年 4月 25日

首都师范大学本科毕业设计论文

摘要

本文简要介绍了基于行为设计的移动机器人设计与实现----一种基于Arduino新型集成开发环境的超声波避障小车的工作原理。其中包括对小车的执行组件、搭建结构、传感器、Arduino单片机软件编程及试验结果的介绍。

本方案以Arduino单片机为控制核心,基于蝙蝠超声波测距的原理,利用超声波传感器,检测小车前方障碍物的距离,然后把数据传送给单片机。当超声波检测到距离小车前方25CM有障碍物时单片机就发出指令让小车左转一定角度,然后停止行进继续探测.如果前方25CM没有障碍物则直行,否则继续左转一定角度。如此通过超声波不断的循环检测周边环境的情况进行自动避障。

本系统在硬件设计方面,以Arduino单片机为控制核心,以超声波传感器检测前方障碍物,从而自动避障。在软件方面,利用Arduino语言进行编程,通过软件编程来控制小车运转。该系统在驱动方面采用L298N驱动2个直流电机带动小车运行。并且,用PWM系统调速,控制小车前进的速度。实现小车根据外部环境,做出前进、后退和转向等动作,从而完成避障的功能,本设计具有有一定的实用价值。

关键词:Arduino单片机;超声波传感器;避障

I

基于行为设计的移动机器人设计与实现

ABSTRACT This paper describes the design of mobile robot behavior-based design and implement----A new ultrasound-based integrated development environment Arduino obstacle avoidance car works.These include the implementation of car components, building structures, sensors, Arduino microcontroller software programming and test results presentation.The program to Arduino microcontroller core, based on the principle of ultrasonic distance measurement bats using ultrasonic sensors to detect obstacles in front from the car, and then transmits the data to the microcontroller.When the ultrasonic distance in front of the car detects obstacles 25CM SCM issued a directive to make the car turn left on an angle, then continue probing stop traveling.If there is no obstacle in front of the 25CM straight, turn left or continue certain angle.So the case of the ultrasonic continuous loop through the surrounding environment to automatically detect avoidance.The system hardware design to Arduino microcontroller core, with ultrasonic sensors detect obstacles in front, so that automatic obstacle avoidance.On the software side, the use of Arduino programming language to control the car running through software programming.The system uses the driver side L298N drive two DC motors drive the car running.And, with the PWM system speed, speed control car forward.Realize the car according to the external environment, made forward, backward, and steering movements, thus completing the obstacle avoidance function, the design has a certain practical value.Key words: Arduino;ultrasonic sensors;obstacle avoidance

II

首都师范大学本科毕业设计论文

第一章 绪论....................................................................................................................................1 1.1 论文的选题背景...................................................................................................................1 1.2 Arduino单片机概述.............................................................................................................2 1.3 Arduino机器人发展现状.....................................................................................................3 1.4 Arduino智能避障机器人研究意义和目的.........................................................................4 1.5项目主要研究内容...............................................................................................................5 第二章 避障小车机器人的总体设计............................................................................................6 2.1设计原理与方法...................................................................................................................6 2.2硬件设计...............................................................................................................................6 2.3 软件设计...............................................................................................................................7 2.3.1 Arduino语言..................................................................................................................7 2.3.2 Arduino IDE....................................................................................................................8 2.4 实验前期准备.....................................................................................................................10 第三章 硬件模块..........................................................................................................................12 3.1 各模块的的基本性能.........................................................................................................12 3.1.1 单片机模块...................................................................................................................12 3.1.2 电机、电机驱动模块...................................................................................................12 3.1.3避障模块......................................................................................................................14 3.1.4电源模块......................................................................................................................15 3.2 小车的基本搭建.................................................................................................................15 3.3连线.....................................................................................................................................17 3.3.1电机的连线..................................................................................................................17 3.3.2舵机的连线..................................................................................................................18 3.3.3超声波的连线..............................................................................................................19 3.3.4 Arduino超声波小车总体连线图:.............................................................................20

III

基于行为设计的移动机器人设计与实现

第四章 软件模块..........................................................................................................................21 4.1 软件设计思路.....................................................................................................................21 4.2 电机前进模块.....................................................................................................................22 4.2 电机后退模块.....................................................................................................................22 4.3 电机停止工作模块.............................................................................................................23 4.4 电机左转模块.....................................................................................................................23 4.5 电机右转模块.....................................................................................................................24 4.6 防卡死模块.........................................................................................................................25 第五章 实验及结果分析..............................................................................................................26 5.1预期目标.............................................................................................................................26 5.2遇到的问题和解决方法.....................................................................................................26 5.3 硬件的调试与整合.............................................................................................................27 5.3.1调试思路......................................................................................................................27 5.3.2调试超声波模块..........................................................................................................27 5.3.3电机调试......................................................................................................................28 5.4 心得体会.............................................................................................................................28 第六章 设想与展望......................................................................................................................30 参考文献.......................................................................................................................................31 致谢...............................................................................................................................................32 附录...............................................................................................................................................33 超声波智能避障车程序(ARDUINO)...................................................................................33

IV

首都师范大学本科毕业设计论文

第一章 绪论

1.1 论文的选题背景

随着现代计算机技术的不断发展和普及,机器人的发展已经遍及近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。小到智能玩具,大到机械、电子、冶金、交通、宇航、国防等各个领域。人们将计算机技术更加广阔的运用的人类生活中,制造能替代人劳动的机器一直是人类的梦想,并一直在为之努力。在我们的生活里,有很多的机器人,如图1.1所示,这两种机器人分别是扫地机器人和灭火机器人。他们在我们的生活中非常常见也很实用,他们的特点就是无需人们的控制,能够自行运动完成他们的任务。那么这就需要一个非常必要的基础功能,那就是能够感知并躲避前方的障碍物。

因此,在本次的设计中,我们将设计出一个能够避障机器人,在具有这个基本功能的基础上,我们就可以为他附加更多的功能,赋予它更多的实用价值。选用Arduino单片机作为控制核心,使用仿生超声波技术传感器进行避障的实现。“智能避障机器人”作为现代社会的新产物,也是以后的发展方向,他可以按照预先设定的模式在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或是更高的目标。

图1.1

基于行为设计的移动机器人设计与实现

1.2 Arduino单片机概述

Arduino,是一个基于开放原始码的软硬件平台,构建于开放原始码simple I/O介面版,并且具有使用类似Java,C语言的Processing/Wiring开发环境。它包含两个主要的部分:硬件部分是可以用来做电路连接和Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,收录进微控制器。对Arduino的编程是利用Arduino编程语言(基于 Wiring)和Arduino开发环境(based on Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信(比如 Flash, Processing, MaxMSP)来实现。可以自己动手制作,也可以购买成品套装;Arduino所使用到的软件都可以免费下载.硬件参考设计(CAD 文件)也是遵循availableopen-source协议, 你可以非常自由地根据你自己的要求去修改他们.Arduino可以使用开发完成的电子元件例如Switch或sensors或其他控制器、LED、步进马达或其他输出装置。Arduino也可以独立运作成为一个可以跟软件沟通的接口,例如说:flash、processing、Max/MSP、VVVV或其他互动软件…。Arduino开发IDE接口基于开放源代码原,可以让您免费下载使用开发出更多令人惊艳的互动作品。

其主要特点如下:

1)开放源代码的电路图设计,程序开发接口免费下载,也可依个人需求自己修改。2)使用低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。

3)Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入AVR芯片。有了bootloader之后,可以通过串口或者USB to Rs232线更新固件。

4)可依据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等)5)支持多种互动程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。

首都师范大学本科毕业设计论文

6)应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。

我们为什么要使用Arduino?有很多的单片机和单片机平台都适合用做交互式系统的设计。例如:Parallax Basic Stamp,Netmedia’s BX-24,Phidgets,MIT’s Handyboard和其它等等提供类似功能的。所有这些工具,你都不需要去关心单片机编程繁琐的细节,提供给你的是一套容易使用的工具包。Arduino同样也简化了同单片机工作的流程,但同其它系统相比Arduino在很多地方更具有优越性,特别适合老师,学生和一些业余爱好者们使用:和其它平台相比,Arduino板算是相当便宜了。最便宜的Arduino版本可以自己动手制作,即使是组装好的成品,其价格也不会超过200元。而且Arduino软件可以跨平台运行在Windows,Macintosh OSX,和Linux操作系统。而大部分其它的单片机系统都只能运行在Windows上。另外,它具有简易的编程环境。初学者很容易就能学会使用Arduino编程环境,同时它又能为高级用户提供足够多的高级应用。对于老师们来说,一般都能很方便的使用Processing 编程环境,所以如果学生学习过使用Processing 编程环境的话,那他们在使用Arduino开发环境的时候就会觉得很相似很熟悉。

软件开源并可扩展-Arduino软件是开源的,对于有经验的程序员可以对其进行扩展。Arduino编程语言可以通过C++库进行扩展,如果有人想去了解技术上的细节,可以跳过Arduino语言而直接使用AVR C 编程语言(因为Arduino语言实际上是基于AVR C的)。类似的,如果你需要的话,你也可以直接往你的Arduino程序中添加AVR-C 代码。

Arduino基于AVR平台,对AVR库进行了二次编译封装,把端口都打包好了,寄存器啦、地址指针之类的基本不用管。大大降低了软件开发难度,适宜非专业爱好者使用。优点和缺点并存,因为是二次编译封装,代码不如直接使用AVR代码编写精练,代码执行效率与代码体积都弱于AVR直接编译。

1.3 Arduino机器人发展现状

我国目前的发展现状是研制中的智能移动机器人智能水平并不高,只能说是智能移动机器人的初级阶段。智能移动机器人研究中当前的核心问题有两方面:一方面是,提高智能移动机器人的自主性,这是就智能移动机器人与人的关系而言,即希望智能

基于行为设计的移动机器人设计与实现

移动机器人进一步独立于人,具有更为友善的人机界面。从长远来说,希望操作人员只要给出要完成的任务,而机器能自动形成完成该任务的步骤,并自动完成它。另一方面是,提高智能移动机器人的适应性,提高智能移动机器人适应环境变化的能力,这是就智能移动机器人与环境的关系而言,希望加强它们之间的交互关系

智能移动机器人涉及到许多关键技术,这些技术关系到智能移动机器人的智能性的高低。这些关键技术主要有以下几个方面:多传感信息耦合技术,多传感器信息融合就是指综合来自多个传感器的感知数据,以产生更可靠、更准确或更全面的信息,经过融合的多传感器系统能够更加完善、精确地反映检测对象的特性,消除信息的不确定性,提高信息的可靠性;导航和定位技术,在自主移动机器人导航中,无论是局部实时避障还是全局规划,都需要精确知道机器人或障碍物的当前状态及位置,以完成导航、避障及路径规划等任务;路径规划技术,最优路径规划就是依据某个或某些优化准则,在机器人工作空间中找到一条从起始状态到目标状态、可以避开障碍物的最优路径;机器人视觉技术,机器人视觉系统的工作包括图像的获取、图像的处理和分析、输出和显示,核心任务是特征提取、图像分割和图像辨识;智能控制技术,智能控制方法提高了机器人的速度及精度;人机接口技术,人机接口技术是研究如何使人方便自然地与计算机交流。

在各国的智能移动机器人发展中,美国的智能移动机器人技术在国际上一直处于领先地位,其技术全面、先进,适应性也很强,性能可靠、功能全面、精确度高,其视觉、触觉等人工智能技术已在航天、汽车工业中广泛应用。日本由于一系列扶植政策,各类机器人包括智能移动机器人的发展迅速。欧洲各国在智能移动机器人的研究和应用方面在世界上处于公认的领先地位。中国起步较晚,而后进入了大力发展的时期,以期以机器人为媒介物推动整个制造业的改变,推动整个高技术产业的壮大

1.4 Arduino智能避障机器人研究意义和目的

机器人的感觉传感器种类非常多,其中视觉传感器成为研制自动行走和驾驶机器人的重要部件。机器人要实现自动导引功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。本设计以超声波作为智能车避障的一种重要手段,以其避障实现方便,计算简单,易于做到实时控制,测量精度也能达到实用的要求,在未来汽车智能化进程中必将得到广泛应用。我国作为一个世界大国,在高科

首都师范大学本科毕业设计论文

领域也必须占据一席之地,未来汽车的智能化是汽车产业发展必然的,在这种情况下研究超声波在智能车避障上的应用具有深远意义,这将对我国未来智能汽车的研究在世界高科技领域占据领先地位具有重要作用。

本设计主要体现多功能小车的智能避障功能,本设计中的理论方案、分析方法及特色与创新点等可以为自动运输机器人、采矿勘探机器人、家用自动清洁机器人等自动半自动机器人的设计与普及有一定的参考意义。同时小车可以作为玩具的发展对象,为中国玩具市场技术含量的缺乏进行一定的弥补,实现经济收益,形成商业价值。我们所设计的智能移动机器人利用超声波能够在路面上顺利躲避障碍物,从而在导盲和辅助人类行动方面也有着重要意义。

1.5项目主要研究内容

本设计题目为《基于行为设计的移动机器人设计与实现》是以Arduino单片机为控制核心,主要研究小车的避障功能。利用超声波传感器检测道路上的障碍,然后把数据传送给单片机,当超声波检测到距离小车前方有障碍物时单片机就发出指令让小车左转一定角度,然后停止运行继续探测.如果前方没有障碍物就直走,否则继续左转一定角度。如此通过超声波不断的循环检测周边环境的情况进行自动避障。该功能的小车能够实现在无人操作的情况下在比较宽阔平坦的环境中避开障碍物。当机器人在行走过程中遇到前方障碍时,能够根据有效范围内的距离作出相应处理,由单片机软件发出转弯、直行、后退指令,避免机器与障碍物相撞。

基于行为设计的移动机器人设计与实现

第二章 避障小车机器人的总体设计

2.1设计原理与方法

本设计中直流电机PWM控制系统的主要功能包括实现对直流电机的加速、减速,并且可以调整电机的转速,能够很方便的实现电机的智能控制。主体电路:即直流电机PWM 控制模块。这部分电路主要由AT89S52 单片机的 I/O 端口、定时计数器、外部中断扩展等控制直流电机的加速、减速以及电机的正转和反转,并且可以调整电机的转速,能够很方便的实现电机的智能控制。其间是通过 AT89S52 单片机产生脉宽可调的脉冲信号并输入到L298 驱动芯片来控制直流电机工作的。该直流电机PWM 控制系统由以下电路模块组成:设计控制部分:主要由AT89S52 单片机的外部中断扩展电路组成。直流电机PWM控制实现部分主要由一些二极管、电机和L298 直流电机驱动模块组成。智能小车采用后轮驱动,两个后轮各用一个电机,前轮是万象轮,起到支撑和转向的作用。

2.2硬件设计

本小车的硬件部分分为几个模块:超声波传感器、Arduino单片机、电源、两个直流电动机、电机驱动板、车身。电源连接在Arduino单片机上给整个小车供电。小车以Arduino单片机为核心,连接电机驱动板控制两个直流电动机的运转,从而实现小车的前进。将超声波传感器安置在车身的最前端,用于探测前方是否有障碍物。当超声波传感器遇到障碍物,将反馈提供到单片机里从而做出向左旋转的反应,再次检测前方是否有障碍物,若有障碍物则继续旋转,没有障碍物则电机驱动器驱动电机前进,从而实现整个小车的避障功能。硬件框架图如图2.1。

首都师范大学本科毕业设计论文

图2.1 硬件设计框架

2.3 软件设计

2.3.1 Arduino语言

Arduino语言具有如下特点:

1、开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。

2、使用低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。

3、Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入AVR芯片。有了bootloader之后,可以通过串口或者USB to Rs232线更新固件。

4、可依据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超音波,热敏电阻,光敏电阻,伺服马达,„等)

5、支持多种互动程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。

6、应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。Arduino的功能:

基于行为设计的移动机器人设计与实现

Arduino可以让我们快速使用与Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider等软件结合,作出互动作品。Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。Arduino也可以独立运行,并与软件进行交互,例如:Macromedia Flash, Processing,Max/MSP, Pure Data,VVVV或其他互动软件,Arduino的IDE界面基于开放源代码,可以让我们免费下载使用,开发出更多令人惊艳的互动作品。

Arduino可使用ICSP线上烧入器,将「bootloader」烧入新的IC晶片;可依据官方电路图,简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超声波,热敏电阻,光敏电阻,伺服马达等);支援多样的互动程序例如: Macromedia Flash、Max/Msp、VVVV、PD、C、Processing等;使用低价格的微处理控制器(ATMEGA 8-168);USB接口,不需外接电源。另外有提供9V直流电源输入;在应用方面,利用Arduino,突破以往只能使用鼠标,键盘,CCD等输入的装置进行互动内容的设计,可以更简单地达成单人或多人游戏互动。

2.3.2 Arduino IDE 如图2.3这是运行界面。Arduino语言是一种类c的语言。在这个界面里有我们编程时最常用的东西。当我们把鼠标放在上面就会在右侧出现按键的功能。

图2.3 Arduino IDE运行界面

首都师范大学本科毕业设计论文

图2.4就是upload上传功能。最右边的图标是我们需要熟知的串口监视器,快捷键是:Ctrl+Shift+M。点这个图标有用的前提是插上了串口设备,当然Arduino插在USB上也可以,因为板上的Atmega16U2就是USB转串口的功能。

图2.4 upload

上传功能

如图2.5这就是串口监视器的运行画面相对于网上流传的众多串口调试软件,它的功能可以说较为简单。右下角是波特率,波特率接收端和发射端要相同,要不然收到的会是乱码。

图2.5 串口监视器

如果电脑没找到串口或者驱动没装好,就会有如图2.6的提示。serial port的意思是串行通讯接口。

图2.6 Arduino IDE的菜单栏中有很多选项,例如“文件”“编辑”等英文界面。其中Sketch是草图的意思,在Arduino IDE中,每个Arduino程序都称为sketch,他是一个

基于行为设计的移动机器人设计与实现

可以上传进Arduino Board中的程序包,当然经过编译以后他就不是代码包了。Tools里面第一项,自动格式,当你把一段从网上下载的源代码放到sketch里面,会有一些缩进的乱码,这时,Auto Format就起到了很好的作用。

当我们编写好程序后,点击Update,IDE会自动编译,上传。如果程序有错误,就会有如图2.7的显示,标出了行号。修改程序后就可以继续编译上传了。

图2.7

2.4 实验前期准备

搭建小车的零件清单如下: 1.减速电机 2个 2.优质轮胎2个 3.电机固定件2个 4.万向轮1个

5.100*150*2.6MM有机玻璃板 2片 6.L298N电机驱动板1个 7.ARDUINO 328给力板 1个 8.云台 1个 9.舵机 1个 10.超声波模块1个 11.迷你面包板1个 12.6节5号电池盒一个 13.杜邦线 12条 14.1米长USB线1条

15.铜柱 35MM长 3个 12MM 4个

首都师范大学本科毕业设计论文

16.3MM螺丝螺母若干

基于行为设计的移动机器人设计与实现

第三章 硬件模块

3.1 各模块的的基本性能

3.1.1 单片机模块

本设计采用Atmel Atmega328微处理控制器。其性能为:Digital I/O 数字输入/输出端共 0~13。Analog I/O 模拟输入/输出端共 0~5。支持ISP下载功能。输入电压:接上电脑USB时无须外部供电,外部供电7V~12V 直流电压输入。输出电压:5V 直流电压输出和3.3V 直流电压输出。

图3.1 Arduino单片机实物图

3.1.2 电机、电机驱动模块

本设计采用由双极性管组成的H桥电路(L298N)。用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。这种电路由于工作在管子的饱和截止模式下,则效率非常高;H桥电路保证了可以简单地实现转速和方向的控制,电子开关的速度很快,稳定性也很高。而且它有更强的驱动能力。而且L298N有过电流保护

首都师范大学本科毕业设计论文

功能,当出现电机卡死时,可以保护电路和电机。这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。因此决定采用使用功率三极管作为功率放大器的输出控制直流电机。

图 3.2 L298N引脚图

图3.3 L298N电路原理图

基于行为设计的移动机器人设计与实现

图3.4 L298N实物图

3.1.3避障模块

本设计采用HC-SR04超声波测距模块,该原件可提供2CM-400CM的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器,接收器和控制电路。

基本工作原理:(1)采用IO口TRIG触发测距,给至少10us的高电平信号;(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

图3.5避障模块实物图

首都师范大学本科毕业设计论文

3.1.4电源模块

本设计采用的电源为车载电源。为保证电源工作可靠,单片机系统与动力伺服系统的电源采用了大功率、大容量的蓄电池;而传感器的工作电源则采用了小巧轻便的干电池。

图3.6 电源模块实物图

3.2 小车的基本搭建

舵机,云台和超声波的连接步骤如下图:

1.如图3.7准备好云台舵机超声波安装所需配件。

图3.7 2.图3.8取出舵机配件之一“十字胶体”将十字剪成四边对等的长度,打磨成宽度一样。

基于行为设计的移动机器人设计与实现

图3.8 3.将2*8mm的和1.2*5mm的螺丝安装到十字的第二个孔,装到云台底座上。在云台底部的螺丝位套上螺母,并用热熔胶固定如图3.9。

图3.9 4.将舵机装上云台的两个边翼,并用螺丝紧固如图3.10。

图3.10 5.将装好的舵机放进固定好的十字胶体调整好方向后,从舵机组件包里取出2*6mm的螺丝安装到舵机固定孔中。完成云台安装后用扎带将超声波模块固定在云台前端如图3.11。

首都师范大学本科毕业设计论文

图3.11 6.将6mm铜柱装在云台底座安装孔并将装好的云台组件直接安装到小车底盘上,小车搭建成品如图3.12。

图3.12 小车搭建成品

3.3连线

3.3.1电机的连线

L298N的供电处理:

用6节5号电池盒取一路电源给L298N电机驱动模块供电,另一路给ARDUINO主板供电给L298N电机驱动模块供电的电源+极接L298N的VMS接口,电源的-接L298N的GND接口,L298N板上的+5V接口放空不接。电机一接L298N的MOTOA,电机二接L298N的MOTOB。

基于行为设计的移动机器人设计与实现

图3.13 电机的连线

3.3.2舵机的连线

首先设置函数:myservo.attach(5);// 定义伺服马达输出第5脚位。

舵机需要连接的有三条线,分别是+,-,信号。三条线均直接连接到Arduino板上。

接线方法:将+5V接到J5位,-位接到J6位,信号位接到J4位PWM口的第五脚。

连线方式如图3.14所示:

图3.14舵机的连线

首都师范大学本科毕业设计论文

3.3.3超声波的连线

超声波传感器有四个脚,如图3.15所示: 四个引脚的功能分别是: 1:VCC 接+5V。2:TRIQ 信号输入。3:ECHO信号输出。4:GND 接地。

图3.15超声波的引脚示意图

超声波模块四个引脚直接与Arduino单片机连接,接线方法如图3.16所示:

图3.16超声波与Arduino单片机接线

基于行为设计的移动机器人设计与实现

3.3.4 Arduino超声波小车总体连线图:

电机A和电机B将正负两端接在L298N电机驱动板上,若正负两级接反则车轮反转。电机驱动板、舵机、超声波模块直接与Arduino核心控制板相连,电源模块分别给电机驱动板和Arduino板供电。

图3.17 Arduino超声波小车总体连线图

首都师范大学本科毕业设计论文

第四章 软件模块

4.1 软件设计思路

在软件设计方面,采用Arduino语言编程,编写程序流程图4.1

图4.1 软件编译流程图

基于行为设计的移动机器人设计与实现

4.2 电机前进模块

在定义好各个引脚之后,进入主程序的编写部分。我在程序控制模块里主要编写的是电机的控制函数。本程序中提及的digitalWrite函数的作用是设置引脚的输出的电压为高电平或低电平。该函数也是一个无返回值的函数,函数有两个参数pin和value,pin参数表示所要设置的引脚,value参数表示输出的电压HIGH(高电平)或LOW(低电平)。

首先定义为advance前进函数: void advance(int a){ 编写模拟信号,定义马达右后动作为低电平,即不给电: digitalWrite(pinRB,LOW);编写模拟信号,定义马达右前动作为高电平: digitalWrite(pinRF,HIGH);编写模拟信号,定义马达左后动作为低电平: digitalWrite(pinLB,LOW);编写模拟信号,定义马达左前动作为高电平: digitalWrite(pinLF,HIGH);定义延时,即将前进动作保持一段时间,直到开始执行下一程序。delay(a * 100);延时 } 4.2 电机后退模块

将函数定义为back后退函数 void back(int g)//后退 { 编写模拟信号,定义马达右后动作为高电平: digitalWrite(pinRB,HIGH);编写模拟信号,定义马达右前动作为低电平: digitalWrite(pinRF,LOW);

首都师范大学本科毕业设计论文

编写模拟信号,定义马达左后动作为高电平: digitalWrite(pinLB,HIGH);编写模拟信号,定义马达左前动作为低电平: digitalWrite(pinLF,LOW);定义延时,即将电机的后退动作保持一段时间,直到开始执行下一程序。delay(g * 100);} 4.3 电机停止工作模块

将函数定义为stopp停止函数 void stopp(int f){ 编写模拟信号,定义马达右后动作为高电平: digitalWrite(pinRB,HIGH);编写模拟信号,定义马达右前动作为高电平digitalWrite(pinRF,HIGH);编写模拟信号,定义马达左后动作为高电平digitalWrite(pinLB,HIGH);编写模拟信号,定义马达左前动作为高电平digitalWrite(pinLF,HIGH);定义延时,即将电机的停止动作保持一段时间,直到开始执行下一程序。delay(f * 100);}

4.4 电机左转模块

将函数定义为left左转函数 void left(int c){

基于行为设计的移动机器人设计与实现

编写模拟信号,定义马达右后动作为高电平 digitalWrite(pinRB,HIGH);编写模拟信号,定义马达右前动作为高电平 digitalWrite(pinRF,HIGH);编写模拟信号,定义马达左后动作为低电平 digitalWrite(pinLB,LOW);编写模拟信号,定义马达左前动作为高电平 digitalWrite(pinLF,HIGH);定义延时,即将电机的左转动作保持一段时间,直到开始执行下一程序。delay(c * 100);}

4.5 电机右转模块

将函数定义为right右转函数 void right(int b){ 编写模拟信号,定义马达右后动作为低电平 digitalWrite(pinRB,LOW);编写模拟信号,定义马达右前动作为高电平 digitalWrite(pinRF,HIGH);编写模拟信号,定义马达左后动作为高电平 digitalWrite(pinLB,HIGH);编写模拟信号,定义马达左前动作为高电平 digitalWrite(pinLF,HIGH);定义延时,即将电机的右转动作保持一段时间,直到开始执行下一程序。delay(b * 100);}

首都师范大学本科毕业设计论文

4.6 防卡死模块

该模块为防止避障小车卡死的编译,即当小车发生与障碍物距离过近的情况而无法转弯时,该程序会指引小车向后倒退,倒退一定距离后左转前进,若仍有障碍物则继续倒退,若无障碍物则左转后直行。即可防止车在行进途中卡在死巷里。

if(directionn == 2)//假如directionn(方向)= 2(倒车){ back(8);// 倒退(车)turnL(2);//些微向左方移动(防止卡在死巷里)Serial.print(“ Reverse ”);//显示方向(倒退)}

基于行为设计的移动机器人设计与实现

第五章 实验及结果分析

5.1预期目标

总体来说本次试验达到预期目标。

(1)在车前方没有障碍物时,小车沿直线向前走。

(2)在车前方有障碍物时,小车能避开障碍物,避障方法如下:超声波检测到障碍物后,先向左边旋转,检测。如果旋转后前面没有检测障碍物,则沿直线向前走;如果旋转后检测到前方仍有障碍物,则继续旋转,如果前面没有障碍物,则沿直线向前行走;

但是该超声波避障小车还存在着许多的不足,比如说只能对正前方一定角度内进行探测,使用的是一路超声波而不是多路超声波探测,并且为了简化,默认的只是向同一个方向转弯等,这些都是有待进一步发展和提高的。

5.2遇到的问题和解决方法

在此之前我们并没有制作过任何智能的机器人。初定避障小车这个题目时,最初我们采用乐高机器人搭建了一个循迹避障的机器人,由于操作较为简单,后来我们决定尝试采用Arduino芯片,利用超声波传感器搭建出一台智能的避障小车。最初我们对硬件的原理不够明白,不知道采用哪些原件,课程设计指导书上介绍的也并不详细,因此我们利用大量时间去图书馆查阅了许多资料,对其电机驱动、Arduino控制板以及超声波传感器的引脚、电路设计等各方面都做了近一步的了解之后才开始进行小车的搭建。

在选择硬件设施上,我们也花了很大功夫。在最初我们设计了两个驱动方案的选择。一个是采用ULN2003驱动,它是由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,一般用于高速大功率驱动电路。另个一就是采用由双极性管组成的H桥电路(L298N)。用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。这种电路由于工作在管子的饱和截止模式下,则效率非常高;H桥电路保证了可以简单地实现转速和方向的控制,电子开关的速度很快,稳定性也很高。而且它有更强的驱动能力。此驱动板体积小,重量轻,而且它有一个外加的续流二极管,可以防止电机线圈在断电时的方向电势损坏芯片,同时也也安装有散热

首都师范大学本科毕业设计论文

片能使芯片温度降低,尽量防止他自动断电,让驱动性能更加稳定。板子设有两个电流反馈检测接口、内逻辑取电选择端、4个上拉电阻选择端、2路直流电机接口、控制电机方向指向灯等等。这个板子不仅适用于智能程控小车、轮式机器人等,还可以配合各种控制器使用。因此经过一番对比和考虑,最终我们选择了L298N电机驱动板。在超声波的选择上我们也出现了分期,本设计最终采用的是HC-SR04超声波测距模块。而最初我们选择的事红外传感装置。之所以最终没有选择红外线传感,是因为红外线对使用环境有较高的要求,当遇上浅色或是深色的家居物品它无法反射回来,会造成机器人无法正常避障。而这款HC-SR04则采用仿生超声波技术,类似鲸鱼,蝙蝠采用声波来侦测判断障碍物以及及空间方位,该超声波避障模块包括超声波发射器,接收器和控制电路,灵敏度较高,但技术成本也较高。

在搭建方面,我们完成程序的编译通电之后,小车发生了原地旋转的现象,经过观察,我们发现小车在感应障碍物方面并没有问题。问题出现在左侧轮前转,而右侧轮后转。所以我们将控制右侧车轮的电机的接线进行改接,这个问题便得以解决。

在软硬件调试方面,我们也遇到了一些问题。首先是避障小车的旋转角度不够,也许是因为地面摩擦力的关系,小车的旋转角度并达不到我们所设定的左转九十度。后来我们又将程序进行改进,设置的旋转角度比九十度多一些,小车就可正常避障了。还有一个问题就是小车在遇到障碍物之后的反应速度并不是很快,需要障碍物在前面平行持续1,2秒才可以做出转向的判断,这个延迟反应也经常造成小车和障碍物发生碰撞,这也是我们遇到的最大问题,在这个问题上我们做了很多程序上的调试,但终究达不到很理想的效果,在后续的试验中,我们准备尝试换一个感测避障模块进行尝试改进。

5.3 硬件的调试与整合

5.3.1调试思路

本设计的智能避障小车,难点重点有两大模块。分别是:L298驱动模块和超声波测距模块。我们在调试的时候我们把两大模块分别调试,最后再把所有模块和硬件组合起来再进行最后的整机调试这样一个调试的思路。

5.3.2调试超声波模块

超声波模块一共有四个脚,一个是VCC,一个是GND,还有两个分别是超声波的发射和接收引脚。连接电路时候只需引出四根插线,分别连接到89S52的对应引脚,烧制好

基于行为设计的移动机器人设计与实现

测试程序,测试结果图如5.2.2。本设计四根插线分别连接到VCC,GND,还有发射和接收引脚分别为:P3.0和P3.2。

5.3.3电机调试

在电机驱动板上。有EA,I1,I2,EB,I3,I4六个端子用于控制电机。EA,EB为两路电机的控制使能,通过PWM可以控制电机转速,高电平有效。我们完成程序的编译通电之后,小车发生了不停地旋转的现象,我们观察到小车在感应障碍物方面并没有问题。问题出现在左侧轮前转,而右侧轮后转。所以我们将控制右侧车轮的电机的接线进行修改,这个问题便得以解决。

图5.1电机驱动板的引脚及其功能

5.4 心得体会

通过这次的项目实训,我学习到了很多的电子知识,提高了我对于陌生硬件的学习能力。超声波传感器在此之前我没有接触过,对我来说非常的陌生,从一无所知慢慢查资料到能够熟练应用,让我知道了面对新的硬件应该怎么学习,在以后的工作学习中,我一定会遇到非常多的不熟悉的硬件,我相信,通过不断地锻炼积累,学习能力会进一步提高。这次实训同时还加强了我实践动手能力,特别培养了出现问题、分析问题、解决问题的能力,我相信这些能力的提高对我以后在从事任何工作都将会有极大的帮助。

这次的项目实训让我感触最深的是:作为电子爱好者,电子制作中不管遇到什么问题和困境都要有一颗平静的心和坚持不懈的精神,一颗浮躁的心是不会到达成功的彼岸。这次课程设计,给我更多的是一种模块化的思想,将系统按我们所需的功能和系统所能提供的功能进行模块化的分类,将会使我们的工作变得一目了然,非常清晰。比如说这次我选的避障小车,可以分成超声波测速模块,电机驱动模块,单片机核心模块三个,首都师范大学本科毕业设计论文

三个部分各司其职,无论从硬件上还是软件上,都能够比较清晰地将他们的功能区分开,从而有利于硬件的连接和程序的编写。

从以后工作来看,这种模块化处理问题的方式将会更加的有用,在公司和以后得科研项目中,系统一定是越来越复杂,不可能一个人完成所有的任务,一定是一个团队来做这些系统的设计,所以模块化之后,能够将任务分配给每个人,最后大家还能够很好的综合到一起,大大的缩短了开发周期。这次的毕设实践学习让我受益匪浅。

基于行为设计的移动机器人设计与实现

第六章 设想与展望

随着科技的迅猛发展,智能已经成为了现在的高科技的热词,智能机器人可以解决无数人类无法或者是很难解决的难题。本智能小车系统最诱人的前景就是可用于未来的智能汽车上了,当驾驶员因疏忽或打瞌睡时这样的智能汽车的设计就能体现出它的作用。如果汽车偏离车道或距障碍物小于安全距离时,汽车就会发出警报,提醒驾驶员注意,如果驾驶员没有及时作出反应,汽车就会自动减速或停靠于路边,这样就大大增大了驾车的安全系数,想的再长远一点,这个避障功能可以作为无人驾驶机动的一个基本功能。无人驾驶的机动车行驶在路上,拥有定位和导航的功能后就可以将人或物品送到我们所需要送到的位置。这样智能机器人的应用,就大大的减少了人力和物力,并且方便了更多不会驾驶机动车的市民。

这样的避障小车还可以用于月球探测等的无人探月车,帮助我们传达月球上更多的信息,让我们更加的了解月球,为将来登月做好充分准备。这样的小车在科学考察探测车上也有广阔的应用前景,在科学考察中,有很多危险且人们无法涉足的地方,这时,智能科学考察车就能够派上用场,在它上面装上摄像机,代替人们进行许多无法进行的工作。智能车的应用减少了人们的工作危险系数,解决了恶劣环境下勘探的需求,实现了即是没有人操作应用机器也能很好的完成工作,这项研发可谓是一举多得。

在未来的社会中智能也是大势所趋,而智能车作为智能机器人中一类必不可少的组成部分。最近几年发展更是迅速,各个国家更是投入大量资金。它广泛涉及人工智能、计算机视觉、自动控制、精密仪器、传感和信息等一系列学科的创新研究,其研究成果可广泛应用于工业、农业、医药军事、航空、信息技术等实际领域,智能机器人的发展水平可反映出一个国家的高科技水平和综合国力,是国家综合国力强大的标志,也是人类文明进步的标志。在我们未来的工作与生活中,会越来越多的需要机器人代替人力来工作和完成一些难度较大或较为费力的任务,对这些实用的机器人的需求也会越来越大。因此,机器人研发的前景是不可估量的。

首都师范大学本科毕业设计论文

参考文献

[1] 袁新娜,与红英编着.超声波传感器在智能小车避障系统中的应用.[A]中北大学(2009)08-0085-04 [2] 邵贝贝.单片机嵌入式应用的在线开发方法[M].北京.清华大学出社.2004 [3] 王晓明.电动机的单片机控制[M].北京.北京航空航天大学出版社.2002 [4] 臧杰,阎岩.汽车构造[M].北京.机械工业出版社.2005 哈尔滨工业大学课程设计说明书

[5] 安鹏,马伟.S12单片机模块应用及程序调试[J].电子产品世界.2006.第211期. 162-163 [6] 童诗白,华成英.模拟电子技术基础[M].北京.高等教育出版社.2000 [7] 沈长生.常用电子器件使用一读通[M].北京.人民邮电出版社.2004 [8] 宗光华.机器人的创意设计与实践[M].北京.北京航空航天大学出社.2004 [9] 张伟等.Protel DXP高级应用[M].北京.人民邮电出版社.2002 [10] 张文春.汽车理论[M].北京.机械工业出版社.2005 [11] 江海波,王卓然,耿德根编着.深入浅出AVR单片机.中国电力出版社,2008.31

基于行为设计的移动机器人设计与实现

致谢

历时三个月的毕业设计已经告一段落。在我和我组成员张硕的共同努力下,本避障小车的任务已经基本完成。在这段时间里,非常感谢在遇到困难时我的同学们所给予的支持和鼓励,给我提供专业的意见和建议。还有和我同组的同学张硕,我们共同查阅资料,克服许多在选择小车部件、小车搭建和编程上的种种困难。也正是这次毕业设计使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验大学四年的学习成果。我更明白了团队合作的重要性。两个人不仅有两个大脑和更多的主意和知识,最重要的事能够在遇到困难时可以相互鼓励学习,互相分担。也正是这种团结合作的精神促使了我们这次毕设任务的圆满成功。

这三个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。也非常感谢指导老师徐老师的支持和指导,每次我给徐老师发邮件她都会认真的给我批改,指出我的不足。也正是因为在老师的指导下我的论文进行不断的改正,才有机会变得越来越好。

由于自身水平有限,设计中一定存在很多不足之处。虽然这次的毕业设计对于知识的运用和衔接还不够熟练,但是我将在以后的工作和学习中继续努力、不断完善。敬请各位老师批评指正。

首都师范大学本科毕业设计论文

附录

超声波智能避障车程序(ARDUINO)

L = 左 R = 右 F = 前 B = 后 */ #include int pinLB=6;// 定义6脚位左后 int pinLF=9;// 定义9脚位左前

int pinRB=10;// 定义10脚位右后 int pinRF=11;// 定义11脚位右前

int inputPin = A0;// 定义超音波信号接收脚位 int outputPin =A1;// 定义超音波信号发射脚位

int Fspeedd = 0;// 前速 int Rspeedd = 0;// 右速 int Lspeedd = 0;// 左速

int directionn = 0;// 前=8 后=2 左=4 右=6 Servo myservo;// 设 myservo int delay_time = 250;// 伺服马达转向后的稳定时间

int Fgo = 8;// 前进 int Rgo = 6;// 右转 int Lgo = 4;// 左转 int Bgo = 2;// 倒车

基于行为设计的移动机器人设计与实现

void setup(){ Serial.begin(9600);// 定义马达输出脚位 pinMode(pinLB,OUTPUT);// 脚位 8(PWM)pinMode(pinLF,OUTPUT);// 脚位 9(PWM)pinMode(pinRB,OUTPUT);// 脚位 10(PWM)pinMode(pinRF,OUTPUT);// 脚位 11(PWM)

pinMode(inputPin, INPUT);// 定义超音波输入脚位 pinMode(outputPin, OUTPUT);// 定义超音波输出脚位

myservo.attach(5);// 定义伺服马达输出第5脚位(PWM)} void advance(int a)// 前进 { digitalWrite(pinRB,LOW);// 使马达(右后)动作 digitalWrite(pinRF,HIGH);digitalWrite(pinLB,LOW);// 使马达(左后)动作 digitalWrite(pinLF,HIGH);delay(a * 100);}(电机前进函数)

void right(int b)//右转(单轮){ digitalWrite(pinRB,LOW);//使马达(右后)动作右后方的引脚的低电频 digitalWrite(pinRF,HIGH);右前引脚高电频 digitalWrite(pinLB,HIGH);digitalWrite(pinLF,HIGH);delay(b * 100);}

首都师范大学本科毕业设计论文

void left(int c)//左转(单轮){ digitalWrite(pinRB,HIGH);digitalWrite(pinRF,HIGH);digitalWrite(pinLB,LOW);//使马达(左后)动作 digitalWrite(pinLF,HIGH);delay(c * 100);}(high高频是向前 low低频向后)void turnR(int d)//右转(双轮){ digitalWrite(pinRB,LOW);//使马达(右后)动作 digitalWrite(pinRF,HIGH);digitalWrite(pinLB,HIGH);digitalWrite(pinLF,LOW);//使马达(左前)动作 delay(d * 100);} void turnL(int e)//左转(双轮){ digitalWrite(pinRB,HIGH);digitalWrite(pinRF,LOW);//使马达(右前)动作 digitalWrite(pinLB,LOW);//使马达(左后)动作 digitalWrite(pinLF,HIGH);delay(e * 100);} void stopp(int f)//停止 { digitalWrite(pinRB,HIGH);digitalWrite(pinRF,HIGH);digitalWrite(pinLB,HIGH);digitalWrite(pinLF,HIGH);

基于行为设计的移动机器人设计与实现

delay(f * 100);} void back(int g)//后退 {

digitalWrite(pinRB,HIGH);//使马达(右后)动作 digitalWrite(pinRF,LOW);digitalWrite(pinLB,HIGH);//使马达(左后)动作 digitalWrite(pinLF,LOW);delay(g * 100);}

void detection()//测量3个角度(0.90.179){ intdelay_time = 250;// 伺服马达转向后的稳定时间 ask_pin_F();// 读取前方距离

if(Fspeedd< 10)// 假如前方距离小于10公分 { stopp(1);// 清除输出资料 back(2);// 后退 0.2秒 }

if(Fspeedd< 25)// 假如前方距离小于25公分 { stopp(1);// 清除输出资料 ask_pin_L();// 读取左方距离

delay(delay_time);// 等待伺服马达稳定 ask_pin_R();// 读取右方距离

delay(delay_time);// 等待伺服马达稳定

首都师范大学本科毕业设计论文

if(Lspeedd>Rspeedd)//假如左边距离大于右边距离 { directionn = Rgo;//向右走 }

if(Lspeedd<= Rspeedd)//假如左边距离小于或等于右边距离 { directionn = Lgo;//向左走 }

if(Lspeedd< 10 &&Rspeedd< 10)//假如左边距离和右边距离皆小于10公分 { directionn = Bgo;//向后走 } } else //加如前方不小于(大于)25公分 { directionn = Fgo;//向前走 } } void ask_pin_F()// 量出前方距离 { myservo.write(90);digitalWrite(outputPin, LOW);// 让超声波发射低电压2μs delayMicroseconds(2);digitalWrite(outputPin, HIGH);// 让超声波发射高电压10μs,这里至少是10μs delayMicroseconds(10);digitalWrite(outputPin, LOW);// 维持超声波发射低电压

基于行为设计的移动机器人设计与实现

float Fdistance = pulseIn(inputPin, HIGH);// 读差相差时间

Fdistance= Fdistance/5.8/10;// 将时间转为距离距离(单位:公分)Serial.print(“F distance:”);//输出距离(单位:公分)Serial.println(Fdistance);//显示距离

Fspeedd = Fdistance;// 将距离读入Fspeedd(前速)} void ask_pin_L()// 量出左边距离 { myservo.write(5);delay(delay_time);digitalWrite(outputPin, LOW);// 让超声波发射低电压2μs delayMicroseconds(2);digitalWrite(outputPin, HIGH);// 让超声波发射高电压10μs,这里至少是10μs delayMicroseconds(10);digitalWrite(outputPin, LOW);// 维持超声波发射低电压 float Ldistance = pulseIn(inputPin, HIGH);// 读差相差时间

Ldistance= Ldistance/5.8/10;// 将时间转为距离距离(单位:公分)Serial.print(“L distance:”);//输出距离(单位:公分)Serial.println(Ldistance);//显示距离

Lspeedd = Ldistance;// 将距离读入Lspeedd(左速)} void ask_pin_R()// 量出右边距离 { myservo.write(177);delay(delay_time);digitalWrite(outputPin, LOW);// 让超声波发射低电压2μs delayMicroseconds(2);digitalWrite(outputPin, HIGH);// 让超声波发射高电压10μs,这里至少是10μs delayMicroseconds(10);digitalWrite(outputPin, LOW);// 维持超声波发射低电压

首都师范大学本科毕业设计论文

float Rdistance = pulseIn(inputPin, HIGH);// 读差相差时间

Rdistance= Rdistance/5.8/10;// 将时间转为距离距离(单位:公分)Serial.print(“R distance:”);//输出距离(单位:公分)Serial.println(Rdistance);//显示距离

Rspeedd = Rdistance;// 将距离读入Rspeedd(右速)}

void loop(){ myservo.write(90);//让伺服马达回归预备位置准备下一次的测量 detection();//测量角度并且判断要往哪一方向移动

if(、n == 2)//假如directionn(方向)= 2(倒车){ back(8);// 倒退(车)turnL(2);//些微向左方移动(防止卡在死巷里)Serial.print(“ Reverse ”);//显示方向(倒退)} if(directionn == 6)//假如directionn(方向)= 6(右转){ back(1);turnR(6);// 右转

Serial.print(“ Right ”);//显示方向(左转)} if(directionn == 4)//假如directionn(方向)= 4(左转){ back(1);turnL(6);// 左转

Serial.print(“ Left ”);//显示方向(右转)}

基于行为设计的移动机器人设计与实现

if(directionn == 8)//假如directionn(方向)= 8(前进){ advance(1);// 正常前进 Serial.print(“ Advance ”);//显示方向(前进)Serial.print(“ ”);}

arduino单片机 篇3

关键词:Arduino;数码

中图分类号:TP273.5

电子产品智能化使人们可以在炎炎夏日躲在被窝里开启空调调节室内温度,茶余饭后坐在沙发上使用遥控器更换电视频道,开车迷路时可以打开GPS导航寻找出路……其实,生活中很多的电器或者设备的控制并不都需要使用高性能计算机实现,而是采用单片机来实现控制的。在众多的单片机开发工具中,你不需要关心程序的具体实现过程,只需要学会使用单片机提供的工具包即可,简化了开发过程。

1 开发平台及工具简介

1.1 Arduino单片机简介。Arduino是基于AVR指令集单片机的一种开发平台,相对于传统的单片机而言,Arduino基于C/C++这种入门级的程序设计语言基础上进行编程,大量库文件可以直接从网络中下载获得,价格也比普通单片机便宜,软硬件平台均开源,常用的计算机操作系统(Windows、Linux等)均支持Arduino软件。Arduino电路板提供6个模拟输入/输出端口,14个数字输入/输出端口,可以读取传感器、各种开关元件的信号来控制各种电子设备,实现时可以仅开发一个Arduino独立项目,也可以建立与PC机中程序的相互通讯。基于以上优势,Arduino具有很好的发展前景。

1.2 编程语言。要实现设备控制,少不了进行编写程序。在使用Arduino编程语言编程时,很多参数设置均已函数化处理了,只需要用户直接调用即可。要掌握好Arduino编程语言,就需要认真复习C语言语法。Arduino编程语言中运算符号、数据类型、流程控制语句均可参考C语言要求,而Arduino程序的主要结构包括初始化变量、设置管教模式的void setup()函数和类似于C语言中void main()函数功能的循环执行函数void loop()。Arduino编程语言提供数字I/O口输入输出模式的定义函数、模拟I/O输入输出函数、时间函数和数学函数等众多函数。

1.3 主要硬件设备——数码管。数码管是一种用于显示数字0-9(也可包含小数点)的可发光元件,按照段数分有七段数码管和八段数码管,八段数码管多一位小数点。若将数码管的8个发光二极管的阳极并接在一起,8个阴极分开,则为共阳极数码管;若将数码管的8个发光二极管的阴极并接在一起,8个阳极分开,则为共阴极数码管。实际的数码管引脚排列可按以下方法判别:从数码管正面看,左下角第一个引脚为1脚,以逆时针方向依次为1~10脚,其中3脚和8脚连通,称为公共脚。

2 功能和硬件材料简介

2.1 功能简介。通过数码管连线和程序编写,通过程序控制数码管连续循环显示数字9~1,每显示一个数字后间隔1s再显示下一个数字。

2.2 工作原理。通过对数码管特性的分析,将数码管的管脚通过限流电阻的一端连接到数字I/O接口中,公共极接5V(共阳极数码管)或者接GND(共阴极数码管)。对于共阳极数码管来说,通过程序给连接好数码管的数字口设置低电平时,数码管在该管脚和公共极之间就会产生压降,因此可以将数码相应字段点亮。反言之,通过程序给连接好数码管的数字口设置高电平时,数码管在该管脚和公共极之间则不产生压降,数码相应字段就不亮。

2.3 硬件材料清单。主要的硬件材料包括:1个Arduino 328控制板、1个原形开发扩展板、1个面包板、1个8位数码管、8个220欧电阻、5根多彩面包板实验跳线、1根USB连接线。

2.4 硬件线路连接。将Arduino 328控制板、原形开发扩展板和面包板连接好,并将USB线接入相应插口。按照数码管的接线规则,从数码管的正面看,将数码管的第10个管脚(即左上角的管脚)连接1个220欧电阻,电阻的另一端连接数字口的第9个引脚。同理,将数码管的第9、7、6个管脚分别通过1个电阻连接到数字口的第8、7、6个引脚。将数码管的第5、4个管脚分别通过1个电阻和1根跳线连接到数字口的第5、4个引脚,第8个管脚(公共极)通过1根跳线与5V接口连接,另一个数码管公共极即第3管脚不做连接。

3 驱动程序开发与运行情况

3.1 驱动程序设计。驱动程序中共定义了9个全局变量,分别对应数码管的各数字段;定义了9个用于显示9~1数字的子函数digital_9~digital_1供loop()函数调用;在执行loop()函数之前,先在setup()函数中设置数字口4~11引脚为输出模式。digital_1子函数代码如下:

void digital_1(void)

{ unsigned char j;

digitalWrite(c,HIGH);

digitalWrite(b,HIGH);

for(j=7;j<=11;j++)

digitalWrite(j,HIGH);

digitalWrite(dp,HIGH);

}

3.2 运行问题。在运行过程中,数码管能够显示出各数字段和小数点段,说明线路是连通的,因此排除电路板线路连接不通的问题。仔细观察数码管显示的数字段情况后,要显示数字3本应点亮数码管的A、B、C、D和G段,但是实际数码管点亮了E、F和DP段;要显示数字4本应点亮数码管的B、C、F和G段,但是实际数码管点亮了A、E、D和DP段;要显示数字6本应点亮数码管的A、C、D、E、F和G段,但是实际数码管点亮了B和DP段……以此类推,发现数码管点亮的数字段和应该点亮的数字段均相反,因此考虑可能是线路接反导致的。

3.3 问题分析与解决方法。重新检查线路后发现连接线路是按照共阳极数码管的连接规则连接的,运行问题可能是由于数码管阴极和阳极电路接反导致的。从电路板上拆下数码管仔细观察后发现,初始程序源代码是根据共阳极数码管特性编写的,电路板也是根据共阳极数码管性质连接的,而实际准备的材料很可能是共阴极数码管。

使用万用表进行测试,把万用表调到测阻档,红笔端接公共端,黑笔端接任意段码端,没有数字段发亮;将红笔端和黑笔端调换,有数字段发亮,因此使用的为共阴极数码管,所以程序运行后实现的效果与预期的正好相反。

经过对原连接线路的分析,将数码管的公共极改为接地,并对程序代码中进行修改,将代码中所有设置为高电平的地方改为低电平,低电平的地方改为设置高电平。

交通灯倒计时显示器的设计,使我真正理解和掌握了数码管的工作原理和应用方法,并且为拓展设计奠定了基础。比如可以进一步设计智能掷骰器,即再添加一个按键,通过按键来控制数码管数字的显示,按下按键时,数码管停留在当前数字不变;松开按键,数码管继续显示下一个数字并继续循环显示。

参考文献:

[1]邵军.基于单片机控制的交通灯设计[J].中国新技术新产品,2010(14).

[2]王洁琼,王红卫,敬敏.基于单片机的实用交通灯设计[J].科协论坛,2009(06).

作者简介:王希娟(1983.01-),女,西安人,管理科学与工程教研室主任,讲师,工程师,硕士,研究方向:数据库、智能控制方向。

作者单位:陕西国际商贸学院,陕西咸阳 712046

arduino单片机 篇4

单片机是一种集成电路芯片,采用超大规模集成电路技术,把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上,构成一个小而完善的微型计算机系统,在工业生产、科学研究、智能家庭、机器人、车模、航模中有广泛的应用。

在中小学信息技术教育中加入单片机教学内容,既可了解单片机的硬件原理,又可接触单片机编程,更重要的是可以利用单片机的强大功能,把金点子转化成实际产品。

1 Arduino单片机概述

Arduino是一个基于开放源代码的软硬件平台,构建于开放源代码Simple I/O介面版,具有类似Java、C语言的开发环境。

Arduino能通过各种传感器感知环境,读取数字、模拟量,通过控制灯光、马达和其它装置作出反馈。可以通过Arduino的编程语言来编写程序。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其它在PC上运行的软件。

2 Arduino单片机在教学中的优势

2.1 Arduino单片机支持图形化编程

用于中小学教育的单片机种类很多,但是绝大部分单片机编程都要先学习编写代码,这对学生来说是一个很大的障碍。很多学生有很好的想法,但是碍于没学过单片机编程,无法把自己的想法变成实物,错失了深入研究下去的机会。

Arduino支持图形化编程界面,见图1,学生不需要学习复杂的代码,用图形化界面就可以编写出有很强功能的程序。比如,用MIND+程序图形化编程,降低了学习编程的难度,很容易入门。在学习完图形化实例程序之后,再学习用代码编程就会相对容易。

图1 图形化编程界面

2.2 Arduino单片机开放源代码、提供原始设计图

Arduino开放源代码和设计图,程序开发接口可以免费下载,甚至可按照自己的需求修改电路板,为学习单片机硬件原理提供了很好的条件。

2.3 Arduino单片机价格便宜

Arduino单片机价格便宜,使用价格低廉的微处理控制器ATMEGA8或ATmegal28。Arduino单片机也非常容易购买,很多网店都有不同规格的Arduino单片机出售。

2.4 Arduino单片机烧录程序方便

Arduino单片机烧录程序非常方便,只需要通过USB接口就可以烧录,支持ISP在线烧录,可以将新的“bootloader”固件烧入,有了bootloader之后,可以通过串口更新固件。

2.5 可以创造独特的Arduino模块

学生可依据官方提供的Eagle格式PCB和SCH电路图,简化Arduino模块,制作自己的Arduino模块。Arduino可与各种传感器、各式各样的电子元件连接,比如:可见光传感器、红外线传感器、超音波传感器、热敏电阻、光敏电阻、步进电机、舵机等,形成具有特殊功能的模块。制作这些模块,锻炼了学生的创新能力[1]。

2.6 可以用Arduino构建有线无线输入设备

利用Arduino,突破了以往只能使用鼠标、键盘、手柄等输入的局限,可以自己构建输入设备。比如在一根香蕉插上电极来控制LED、制作水果钢琴、制作一款家用电器万能遥控器等。

3 信息技术教育中引入Arduino单片机意义

3.1 丰富信息技术教育内容

目前,学校的信息技术教育内容过于陈旧。信息技术兴趣小组实践内容大多为多媒体制作,不能充分挖掘学生的创新、创造能力。而依靠Arduino单片机的强大功能,学生可以创造出各种各样具有实用价值的新产品,丰富了信息技术教育内容,使信息技术教育跟上时代步伐。

3.2 提高实践动手能力

用Arduino开发产品不只培养编程能力,还能培养连接电路的能力、设计制作产品的能力,Arduino单片机课程为学生提供了实践的机会[2]。

3.3 提高创新能力

现代社会需要加强创新人才的培养,将实践与创新相结合,注重理论和实践的同时,将信息技术教育课程与STEM(科学、技术、工程、数学)创新联系起来。

通过Arduino项目,积极组织学生参加课题研究,承担具体任务,在实践中锻炼学生发现问题、研究问题、解决问题的能力,培养创新能力。Arduino单片机为学生的金点子提供了试验平台,激发了学习热情。

创造多元化的科技教育与实践方法,建立相应的项目学习(PBL)课程,鼓励学生参与到实际的项目中去,从项目中学习知识和技能,培养学生的设计能力。

4 Arduino教学案例

以利用Arduino单片机制作“物联网药盒”为例。众所周知,我国正面临人口老龄化问题,很多老人和子女分开居住,有一些独居老人记忆力不是很好,如果他们生了病,按时服药就成了很大的问题。

学生C发现这个问题后,就想开发一款可以提醒老人服药的智能药盒。首先C作了需求分析,按设计思路制作了组织结构图,见图2;然后C统计了需要的硬件,发现要实现智能提醒必须用到单片机,在网上查阅了有关资料后,C决定使用Arduino单片机。

由于智能药盒需要随身携带,所以C选用了在Arduino单片机家族中体形较小的Arduino nano单片机,见图3。

在制作药盒(图4)的同时,C也关注网上的一些信息,发现能够用声音提醒患者服药的药盒在美国已经量产。

C认为:随着技术的进步,药盒除了能发出响声等提示之外,还应该能给患者家属发送手机短信,让家属了解老人的服药情况。于是,C在原有的智能药盒上进行了创新,给药盒增加了一个蓝牙模块,用蓝牙模块给老人的手机发送吃药提示,如果老人还是没有服药,药盒就控制手机程序给老人的亲属发短信[3]。

图2 设计思路

图3 Arduino nano

图4 药盒设计

通过不断努力,C的智能药盒终于达到了设计要求。在这个过程中,C不但学会了Arduino单片机编程,而且学会了三维建模、手机编程等多项技术,体会到了创新的乐趣。

摘要:分析了Arduino单片机功能与特性。在中小学信息技术教育中引进Arduino单片机教学,不但能够了解单片机硬件、学会编程,而且能让学生把自己的金点子转化为现实产品。Arduino图形化的编程界面,跳过了繁琐的代码,非常适合小学和初中低年级学生进行创新开发,有利于培养学生的创新能力。

关键词:Arduino单片机,信息技术,创新能力

参考文献

[1]谢四莲.浅谈电子竞赛与创新能力的培养[J].科技视界,2012(17):91-92.

[2]常淑娟,和煦.实验教学改革与学生电子竞赛的思考[J].西安邮电学院学报,2011(16):65-67.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:农村社会调查 下一篇:农村社会改革