收藏 分销(赏)

物联网系统优秀课程设计.doc

上传人:精**** 文档编号:2656804 上传时间:2024-06-03 格式:DOC 页数:24 大小:626.54KB
下载 相关 举报
物联网系统优秀课程设计.doc_第1页
第1页 / 共24页
物联网系统优秀课程设计.doc_第2页
第2页 / 共24页
物联网系统优秀课程设计.doc_第3页
第3页 / 共24页
物联网系统优秀课程设计.doc_第4页
第4页 / 共24页
物联网系统优秀课程设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、物联网系统课程设计学系名称:物联网工程班级名称:物联网工程 2 班学生姓名:朱泓锦 6239指导老师:肖迎元 助教: 二零一六年十月摘要智能车辆是集环境感知、计划决议、多等级辅助驾驶等功效于一体综合系统,是智能交通系统一个关键组成部分。它在军事、民用、太空开发等领域有着广泛应用前景。伴随电子工业发展,智能技术广泛利用于多种领域,利用于智能家居中产品更是越来越受到大家青睐。以arduino程序和蓝牙模组,app为基础,是蓝牙模组,arduino小车和手机之间信息交互关键。本课题所研究物联网应用系统以arduino程序为关键,利用蓝牙模组,arduino小车和app等实现基础功效。基础功效:利用蓝

2、牙模组和app之间信息交互,控制小车移动,从而达成无线控制效果 注:仅能实现小车基础操作 关键词:arduino程序,arduino小车,app,蓝牙模组1 绪论伴随科技进步,现代工业技术发展越来越表现出机电一体化特征。不管是在金属加工、汽车技术、工业生产等等方面,机器设备表现了所谓智能化、集成化、小型化、高精度化发展趋势。 1.1 选题背景伴随汽车工业快速发展,相关汽车研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次全部有智能小车这方面题目,全国各高校也全部很重视该题目标研究。可见其研究意义很大。本设计就是在这么背景下提出,指导老师已经有充足准备。本题目是结合科研项目而确定设计类课

3、题。设计智能电动小车应该能够实现适应能力,能自动避障,能够智能计划路径。智能化作为现代社会新产物,是以后发展方向,她能够根据预先设定模式在一个特定环境里自动运作,无需人为管理,便能够完成预期所要达成或是更高目标。同遥控小车不一样,遥控小车需要人为控制转向、启停和进退,比较优异遥控车还能控制器速度。常见模型小车,全部属于这类遥控车;智能小车,则能够经过计算机编程来实现其对行驶方向、启停和速度控制,无需人工干预。操作员能够经过修改智能小车计算机程序来改变它行驶方向。所以,智能小车含有再编程特征,是机器人一个。中国自1978年把“智能模拟”作为国家科学技术发展计划关键研究课题,开始着力研究智能化。从

4、概念引进到试验室研究实现,再到现在高端领域(航天航空、军事、勘探等)应用,这一过程为智能化全方面发展奠定基石。智能化全方面发展是实现其对资源合理充足利用,以尽可能少投入得到最大收益,大大提升工业生产效率,实现现有工业生产水平从自动化向智能化升级,实现当今智能化发展由高端向大众普及。从先前模拟电路设计,到数字电路设计,再到现在集成芯片应用,多种能实现一样功效元件越来越小为智能化产物生成奠定了良好物质基础。智能小车,是一个集环境感知、计划决议,自动行驶等功效于一体综合系统,它集中地利用了计算机、传感、信息、通信、导航、人工智能及自动控制等技术,是经典高新技术综合体。1.2 智能小车研究现实状况智能

5、车辆作为智能交通系统关键技术,是很多高新技术综合集成载体。智能车辆驾驶是一个通用性术语,指全部或部分完成一项或多项驾驶任务综合车辆技术。智能车辆一个基础特征是在一定道路条件下实现全部或部分自动驾驶功效,下面简单介绍一下中国外智能小车研究发展情况。1.2.1 国外智能车辆研究现实状况国外智能车辆研究历史较长,始于上世纪50年代。它发展历程大致能够分成三个阶段:第一阶段 20世纪50年代是智能车辆研究初始阶段。1954年美国Barrett Electronics 企业研究开发了世界上第一台自主引导车系统AGVS(Automated Guided Vehicle System)。该系统只是一个运行在

6、固定线路上拖车式运货平台,但它却含有了智能车辆最基础得特征即无人驾驶。早期研制AGVS目标是为了提升仓库运输自动化水平,应用领域仅局限于仓库内物品运输。伴随计算机应用和传感技术发展,智能车辆研究不停得到新发展。第二阶段 从80年代中后期开始,世界关键发达国家对智能车辆开展了卓有成效研究。在欧洲,普罗米修斯项目于1986年开始了在这个领域探索。在美洲,美国于1995年成立了国家自动高速公路系统联盟(NAHSC),其目标之一就是研究发展智能车辆可能性,并促进智能车辆技术进入实用化。在亚洲,日本于1996年成立了高速公路优异巡航/辅助驾驶研究会,关键目标是研究自动车辆导航方法,促进日本智能车辆技术整

7、体进步。进入80年代中期,设计和制造智能车辆浪潮席卷全世界,一大批世界著名企业开始研制智能车辆平台。第三阶段 从90年代开始,智能车辆进入了深入、系统、大规模研究阶段。最为突出是,美国卡内基.梅隆大学(Carnegie Mellon University)机器人研究所一共完成了Navlab系列10台自主车(Navlab1Navlab10)研究,取得了显著成就。现在,智能车辆发展正处于第三阶段。这一阶段研究结果代表了目前国外智能车辆关键发展方向。在世界科学界和工业设计界中,众多研究机构研发智能车辆含有代表性有:德意志联邦大学研究 1985年,第一辆VaMoRs智能原型车辆在户外高速公路上以100

8、km/h速度进行了测试,它使用了机器视觉来确保横向和纵向车辆控制。1988年,在全部灵PROMRTHEUS项目第一次委员会会议上,智能车辆维塔(VITA,7t)进行了展示,该车能够自动停车、行进,并能够向后车传送相关驾驶信息。这两种车辆全部配置了UBM视觉系统。这是一个双目视觉系统,含有极高稳定性。荷兰鹿特丹港口研究 智能车辆研究关键表现在工厂货物运输。荷兰Combi road系统,采取无人驾驶车辆来往返运输货物,它行驶路面上采取了磁性导航参考物,并利用一个光阵列传感器去探测障碍。荷兰南部现在正在讨论工业上利用这种系统问题,政府正考虑已经有高速公路新建一条专用车道,采取这种系统将货物从鹿特丹运

9、往各地。日本大阪大学研究 大阪大学Shirai试验室所研制智能小车,采取了航位推测系统(Dead Reckoning System),分别利用旋转编码器和电位计来获取智能小车转向角,从而完成了智能小车定位。另外,斯特拉斯堡试验中心、英国国防部门研究、美国卡内基梅隆大学、奔驰企业、美国麻省理工学院、韩国理工大学对智能车辆也有较多研究。1.2.2 中国智能车辆研究现实状况相比于国外,中国开展智能车辆技术方面研究起步较晚,开始于20世纪80年代。而且大多数研究处于于针对某个单项技术研究阶段。即使中国在智能车辆技术方面研究总体上落后于发达国家,而且存在一定得技术差距,不过我们也取得了一系列结果,关键有

10、:(1)中国第一汽车集团企业和国防科技大学机电工程和自动化学院和研制成功中国第一辆自主驾驶轿车。该自主驾驶轿车在正常交通情况下高速公路上,行驶最高稳定速度为13km/h,最高峰值速度达170km/h,而且含有超车功效,其总体技术性能和指标已经达成世界优异水平。(2)南京理工大学、北京理工大学、浙江大学、国防科技大学、清华大学等多所院校联合研制了7B.8军用室外自主车,该车装有彩色摄像机、激光雷达、陀螺惯导定位等传感器。计算机系统采取两台Sun10完成信息融合、路径计划,两台PC486完成路边抽取识别和激光信息处理,8098单片机完成定位计算和车辆自动驾驶。其体系结构以水平式结构为主,采取传统“

11、感知-建模-计划-实施”算法,其直线跟踪速度达成20km/h,避障速度达成5-10km/h。智能车辆研究也是智能交通系统ITS关键技术。现在,中国很多高校和科研院所全部在进行ITS关键技术、设备研究。伴随ITS研究兴起,中国已形成一支ITS技术研究开发技术专业队伍。而且各交通、汽车企业越来越加大了对ITS及智能车辆技术研发投入,整个社会关注程度在不停提升。交通部已将ITS研究列入“十五”科技发展计划和长久计划。相信经过相关领域共同努力,中国ITS及智能车辆技术水平一定会得到很大提升。能够估计,中国飞速发展经济实力将为智能车辆研究提供一个愈加宽广前景。我们要结合中国国情,在某首先或一些方面,对智

12、能车进行深入细致研究,为它以后发展及实际应用打下坚实基础。1.3 课题关键内容本课题南京嵌入之梦工作室fira智能小车平台,选择通用、价廉Arduino单片机为控制平台,经过细化设计要求,结合传感器技术和电机控制技术相关知识实现小车多种功效。实现小车前进倒退、转向行驶,达成设计目标。2 智能小车总体结构2.1 方案综述本设计以两直流电动机为主驱动,经过各类传感器件来采集各类信息,送入主控单元Arduino单片机处理数据后完成对应动作,以达成本身控制。电机驱动电路采取H桥驱动模块,驱动2个直流电机;最终由控制单元处理数据后经过编程有序合理将各模块信号整合在一起并完成对应动作,实现了智能控制,相当

13、于简易机器人。依据设计作品要达成效果,本系统以Arduino单片机为关键控制器,关键由电源模块、电机驱动模块、组成。系统结构框图以下图1所表示。Arduino单片机驱动电路直流电动机轮子电源图2.1 系统结构框图2.2 主控单元方案比较和选择根据题目要求,控制器关键用于控制电机,经过相关传感器对路面轨迹信息进行处理,并将处理信号传输给控制器,然后控制器做出对应处理,实现小车自动循迹和自动避障。 方案一:能够采取ARM为系统控制器,优点是该系统功效强大,片上外设集成度搞密度高,提升了稳定性,系统处理速度也很高,适合作为大规模实时系统控制关键。方案二:采取Arduino单片机作为系统控制方案。Ar

14、duino单片机算术运算功效强,软件编程灵活、自由度大,功耗低、体积小、技术成熟,成本也比ARM低。考虑到性价比问题,本设计选择 用Arduino单片机做控制器。2.3 “小车”必需信息 步进电机参数:步进电机技术要求:步进电机示例图:智能小车底盘参考电路图:蓝牙模块:3智能小车大脑这是学习单片机应用平台,而单片机种类众多,除了流行 8位机:51、AVR、PIC系列,还有日渐被接收 16位机 MSP430系列,和最近升势很猛 ARMCortexM系列,这些单片机各有优势,无法说谁好谁坏,完全取决于学习者需求和喜好,另外还有越来越靠近 MCUDSP,所以我将这个权力交还给用户。 而且我认为:所谓

15、单片机应用学习,最关键就是能自己消化一个 MCU,依据控制需求自己分配 MCU 资源,编写对应程序,使之能按自己想法工作。这才是掌握单片机应用关键! 5.1 Arduino单片机介绍Arduino单片机,是一块基于开放源代码USB接口Simple i/o接口板(包含12通道数字GPIO,4通道PWM输出,6-8通道10bit ADC输入通道),而且含有使用类似Java,C语言IDE集成开发环境。 让您能够快速使用Arduino语言和Flash或Processing等软件,作出互动作品。 Arduino能够使用开发完成电子元件比如Switch或sensors或其它控制器、LED、步进马达或其它输

16、出装置。Arduino也能够独立运作成为一个能够跟软件沟通接口,比如说:flash、processing、Max/MSP、VVVV 或其它互动软件。Arduino开发IDE接口基于开放源代码原,能够让您无偿下载使用开发出更多令人惊艳互动作品。 Arduino单片机特色:1、开放源代码电路图设计,程序开发接口无偿下载,也可依需求自己修改。 2、使用低价格微处理控制器(ATMEGA8或ATmega128)。能够采取USB接口供电,不需外接电源。也能够使用外部9VDC输入 3、Arduino支持ISP在线烧,能够将新“bootloader”固件烧入ATmega8或ATmega128芯片。有了boot

17、loader以后,能够经过串口或USB to Rs232线更新固件。 4、可依据官方提供Eagle格式PCB和SCH电路图,简化Arduino模组,完成独立运作微处理控制。可简单地和传感器,各式各样电子元件连接(EX:红外线,超音波,热敏电阻,光敏电阻,伺服马达,等) 5、支持多个互动程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等 6、应用方面,利用Arduino,突破以往只能使用鼠标,键盘,CCD等输入装置互动内容,能够更简单地达成单人或多人游戏互动。5.2 Arduino单片机引脚介绍Arduino数字I/O被分成两个部分,其中每个部分全部包含有6个可用I

18、/O管脚,即管脚2到管脚7和管脚8到管脚13。在数字电路中开关(switch)是一个基础输入形式,它作用是保持电路连接或断开。Arduino从数字I/O管脚上只能读出高电平(5V)或低电平(0V),所以我们首先面临到一个问题就是怎样将开关开/断状态转变成Arduino能够读取高/低电平。处理措施是经过上/下拉电阻,根据电路不一样通常又能够分为正逻辑(Positive Logic)和负逻辑(Inverted Logic)两种。Arduino优势在于对数字信号识别和处理,但我们所生活真实世界并不是数字(digital)化,简单到只要用0和1就能够表示全部现象。比如温度这一我们已经司空见惯概念,它只

19、能在一个范围之内连续改变,而不可能发生像从0到1这么瞬时跳变,类似这么物理量被大家称为是模拟(analog)。Arduino是无法了解这些模拟量,它们必需在经过模数转换后变成数字量后,才能被Arduino深入处理。像温度这么数据必需先被转换成微处理器能够处理形式(比如电压),才能被Arduino处理,这一任务通常由各类传感器(sensor)来完成。比如,电路中温度传感器能够将温度值转换成0V到5V间某个电压,比如0.3V、3.27V、4.99V等。因为传感器表示是模拟信号,它不会像数字信号那样只有简单高电平和低电平,而有可能是在这二者之间任何一个数值。至于到底有多少可能值则取决于模数转换精度,

20、精度越高能够得到值就会越多。Arduino所采取ATmega8微处理器一其有6个模数转换器(ADC,Analog to Digital Converter),每一个模数转换器精度全部是10bit,也就是说能够读取1024(210 = 1024)个状态。在Arduino每一个模拟输入管脚上,电压改变范围是从0V到5V,所以Arduino能够感知到最小电压改变是4.8毫伏(5/1024 = 4.8mV)。图5.2 Arduino单片机引脚定义就像模拟输入一样,在现实物理世界中我们常常需要输出除了0和1之外其它数值。比如,除了想用微控制器找开或关闭电灯之外,我们还会想控制灯光亮度,这时就需要用到模拟

21、输出。因为Arduino微控制器只能产生高电压(5V)或低电压(0V),而不能产生改变电压,所以必需采取脉宽度调制技术(PWM,Pulse Width Modulation)来模拟模拟电压。PWM是一个开关式稳压电源应用,它是借助微处理器数字输出来对模拟电路进行控制一个很用效技术,广泛应用在从测量、通信到功率控制和变换很多领域中。简而言之,PWM是一个对模拟信号电平进行数字编码方法,它经过对半导体开关器件导通和关断进行控制,使输出端得到一系列幅值相等但宽度不相等脉冲,而这些脉冲能够被用来替换正弦波或其它所需要波形。在Arduino数字I/O管脚9、10和11上,我们能够经过analogWrit

22、e()函数来产生模拟输出。该函数有两个参数,其中第一个参数是要产生模拟信号引脚(9、10或11);第二个参数是用于产生模拟信号脉冲宽度,取值范围是0到255。脉冲宽度值取0能够产生0V模拟电压,取255则能够产生5V模拟电压。不难看出,脉冲宽度取值改变1,产生模拟电压将改变0.0196V(5/255 = 0.0196)。图5.3 Arduino单片机引脚功效表在很多实际应用场所中我们会要求在Arduino和其它设备之间实现相互通信,而最常见通常也是最简单措施就是使用串行通信。在串行通信中,两个设备之间一个接一个地往返发送数字脉冲,它们之间必需严格遵照对应协议以确保通信正确性。在PC机上上最常见

23、串行通信协议是RS-232串行协议,而在多种微控制器(单片机)上采取则是TTL串行协议。因为这二者电平有很大不一样,所以在实现PC机和微控制器通信时,必需进行对应转换。完成RS-232电平和TTL电平之间转换通常采取专用芯片,如MAX232等,但在Arduino上是用对应电平转换电路来完成。依据Arduino原理图我们不难看出,ATmegaRX和TX引脚首先直接接到了数字I/O端口0号和1号管脚, 其次又经过电平转换电路接到了串口母头上。所以,当我们需要用Arduino和PC机通信时,能够用串口线将二者连接起来;当我们需要用Arduino和微控制器(如另一块Arduino)通信时,则能够用数字

24、I/O端口0号和1号管脚。串行通信难点在于参数设置,如波特率、数据位、停止位等,在Arduino语言能够使用Serial.begin()函数来简化这一任务。为了实现数据发送,Arduino则提供了Serial.print()和Serial.println()两个函数,它们区分在于后者会在请求发送数据后面加上换行符,以提升输出结果可读性。5.3 Arduino编程软件Arduino 语言是建立在 C/C+基础上,其实也就是基础 C 语言,Arduino 语言只不过把 AVR 单片机(微控制器)相关部分寄存器参数设置等全部函数化了,不用我们去了解她底层,让不太了解 AVR 单片机(微控制器)好友也

25、能轻松上手。图5.4 编程界面Arduino 语言是以 setup()开头,loop()作为主体一个程序构架。官方网站是这么描述 setup():用来初始化变量,管脚模式,调用库函数等等,此函数只运行一次。loop()函数是一个循环函数,函数内语句周而复始循环实施,功效类似 c 语言中“main();”。4智能小车控制步骤及程序开始蓝牙模组待机开启app和蓝牙模组配对利用app对小车进行操作4.2arduino烧录程序:*前进 按下发出 ONA 松开ONF 后退:按下发出 ONB 松开ONF 左转:按下发出 ONC 松开ONF 右转:按下发出 OND 松开ONF 停止:按下发出 ONE 松开O

26、NF 蓝牙程序功效是按下对应按键实施操,松开按键就停止*/char getstr; /定义字符变量int Left_motor_go=8; /左电机前进(IN1)int Left_motor_back=9; /左电机后退(IN2)int Right_motor_go=10; / 右电机前进(IN3)int Right_motor_back=11; / 右电机后退(IN4)/定义电机接口void setup() /初始化电机驱动IO为输出方法 Serial.begin(9600); pinMode(Left_motor_go,OUTPUT); / PIN 8 (无PWM) pinMode(Lef

27、t_motor_back,OUTPUT); / PIN 9 (PWM) pinMode(Right_motor_go,OUTPUT);/ PIN 10 (PWM) pinMode(Right_motor_back,OUTPUT);/ PIN 11 (PWM)void run() digitalWrite(Right_motor_go,HIGH); / 右电机前进 digitalWrite(Right_motor_back,LOW); /analogWrite(Right_motor_go,150);/PWM百分比0255调速,左右轮差异略增减 /analogWrite(Right_motor_

28、back,0); digitalWrite(Left_motor_go,LOW); / 左电机前进 digitalWrite(Left_motor_back,HIGH); /analogWrite(Left_motor_go,0);/PWM百分比0255调速,左右轮差异略增减 /analogWrite(Left_motor_back,150); /delay(time * 100); /实施时间,能够调整 void brake() /刹车,停车 digitalWrite(Right_motor_go,LOW); digitalWrite(Right_motor_back,LOW); digit

29、alWrite(Left_motor_go,LOW); digitalWrite(Left_motor_back,LOW); void left() digitalWrite(Right_motor_go,HIGH);/ 右电机前进 digitalWrite(Right_motor_back,LOW); /analogWrite(Right_motor_go,150); /analogWrite(Right_motor_back,0);/PWM百分比0255调速 digitalWrite(Left_motor_go,LOW); /左轮后退 digitalWrite(Left_motor_bac

30、k,LOW); /analogWrite(Left_motor_go,0); /analogWrite(Left_motor_back,0);/PWM百分比0255调速 /delay(time * 100);/实施时间,能够调整 void spin_left(int time) /左转(左轮后退,右轮前进) digitalWrite(Right_motor_go,HIGH);/ 右电机前进 digitalWrite(Right_motor_back,LOW); /analogWrite(Right_motor_go,200); /analogWrite(Right_motor_back,0);

31、/PWM百分比0255调速 digitalWrite(Left_motor_go,HIGH); /左轮后退 digitalWrite(Left_motor_back,LOW); /analogWrite(Left_motor_go,200); /analogWrite(Left_motor_back,0);/PWM百分比0255调速 /delay(time * 100);/实施时间,能够调整 void right() digitalWrite(Right_motor_go,LOW); /右电机后退 digitalWrite(Right_motor_back,LOW); /analogWrite

32、(Right_motor_go,0); / analogWrite(Right_motor_back,0);/PWM百分比0255调速 digitalWrite(Left_motor_go,LOW);/左电机前进 digitalWrite(Left_motor_back,HIGH); /analogWrite(Left_motor_go,0); /analogWrite(Left_motor_back,150);/PWM百分比0255调速 /delay(time * 100);/实施时间,能够调整 void spin_right(int time) /右转(右轮后退,左轮前进) digital

33、Write(Right_motor_go,LOW); /右电机后退 digitalWrite(Right_motor_back,HIGH); /analogWrite(Right_motor_go,0); / analogWrite(Right_motor_back,200);/PWM百分比0255调速 digitalWrite(Left_motor_go,LOW);/左电机前进 digitalWrite(Left_motor_back,HIGH); / analogWrite(Left_motor_go,0); / analogWrite(Left_motor_back,200);/PWM百

34、分比0255调速 /delay(time * 100);/实施时间,能够调整 void back() digitalWrite(Right_motor_go,LOW); /右轮后退 digitalWrite(Right_motor_back,HIGH); / analogWrite(Right_motor_go,0); / analogWrite(Right_motor_back,150);/PWM百分比0255调速 digitalWrite(Left_motor_go,HIGH); /左轮后退 digitalWrite(Left_motor_back,LOW); /analogWrite(L

35、eft_motor_go,150); /analogWrite(Left_motor_back,0);/PWM百分比0255调速 /delay(time * 100); /实施时间,能够调整 void loop() getstr=Serial.read(); / 将串口收到数据返回变量 if(getstr=A) /当变量值为A Serial.println(go forward!); run(); else if(getstr=B)/当变量值为B Serial.println(go back!); back(); else if(getstr=C)/当变量值为C Serial.println(

36、go left!); left(); else if(getstr=D)/当变量值为D Serial.println(go right!); right(); else if(getstr=F) Serial.println(Stop!); brake(); else if(getstr=E) Serial.println(Stop!); brake(); /PS:在烧录程序时,一定要将蓝牙模组串口连线拔掉,因为会和下载到小车程序有冲突小 结:在学习知识这段时间里,我和老师建立了浓厚师生友谊。老师们谆谆教导,使我体会了学习乐趣。我和身边很多同学,也建立了良好学习关系,互帮互助,克服难关。锻炼了自我动手和分析问题能力,受益匪浅。经过此次课程设计,我深刻认识到程序和硬件相关性,知道了利用arduino和app之间怎样进行信息交互,使得程序学习愈加深刻,明确了以后要发展方向。参考文件1、 Arduino使用教程 http:/ .cn 2、谭浩强 C程序设计 清华大学出版社3、 何希才 新型实用电子电路400例 电子工业出版社4、 赵负图 传感器集成电路手册,第一版 化学工业出版社5、 陈伯时 电力拖动自动控制系统,第二版 机械工业出版社6、Arduino Homepage Arduino Nano user manual .cc

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服