ImageVerifierCode 换一换
格式:DOC , 页数:72 ,大小:2.94MB ,
资源ID:3676469      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3676469.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc

1、1.1 研究背景与意义11.2 研究内容21.3 论文整体结构22核心硬件模块与软件模块简介32.1 树莓派32.2 L298N电机驱动模块32.3 车架42.4 Python52.5 SSH协议62.6 GPIO63.项目需求分析83.1 功能需求83.1.1 控制移动83.1.2远程控制83.2 性能需求93.2.1响应时间需求93.2.2 安全性需求93.2.3 可用性需求93.2.4扩展性需求93.3前期准备94各模块电路114.1电机电路114.2 L298N模块电路114.3树莓派电路124.4 整体连接电路135编码模块145.1移动控制模块145.2远程控制165.2.1 远程

2、控制技术165.2.2 树莓派的远程控制技术175.3超声波测距模块*186项目实现及扩展206.1小车实现206.1.1 电机连接206.1.2 L298N模块连接206.1.3 树莓派连接226.1.4 完整连接236.2项目相关扩展246.2.1 小车相关扩展246.2.2 树莓派相关扩展257总结26参考文献27声 明28致 谢29附录30译文30671.引言1.1 研究背景与意义随着当今科技不断地进步,各种有益于人们生活方方面面的技术不断涌现,不断丰富我们的日常生活,不断为我们日常生活添加各种便利。而各样小型的终端设备以更加轻便、便携的优势逐渐取代个人PC在人们心中的重要地位,“卡片

3、电脑”的概念热度上升。树莓派(Raspberry Pi)主板可以说是个“微型”的奇迹,它和一张信用卡的大小差不多,却拥有非常强的计算能力。它拥有多种接口模式,支持许多拓展功能。并且,按照官方规定,树莓派把Python作为其最主要的程序设计语言之一。而由于Python本身跨平台性,易于编写阅读的特点,使其更容易受大家接受。总结得出结论,树莓派作为一块简单的开发板备受大家欢迎主要具备以下两大优势1:1、 软硬件优势:树莓派之所以在全球范围内备受大家热捧,原因不仅在于支持Python、Java、C等丰富的语言进行开发,并且它所提供的Raspbian操作系统是移植超过1900个 Linux软件包的十分

4、强大的操作系统。创始人Eben博士目前任树莓派的主芯片设计公司Boradcom的IC设计主管,可以很好的控制CPU及开发板的性价比和质量(Boradcom是全球领先的通信领域的半导体公司)。因此,树莓派同时拥有CPU、操作系统、应用开发环境三个方面的背景优势。此外,由于内置GPU支持1080P视频硬解码, OpenELEC和RASPBMC操作系统作为界面友好的系统被官方推荐给大众,因此,树莓派可以借助这些优势搭建成家庭媒体中心,成为网络电视机顶盒。2、 资源优势:全球有数以百万计的开发者在为树莓派进行开发,有丰富的软硬件开发资源可供参考与借鉴。软件巨头Oracle推出了基于树莓派和Java F

5、x的DukePad方案,并开设了互联网免费课程“Develop Java Embedded Applications Using a Raspberry Pi”(使用树莓派开发Java嵌入式应用)。RaspiRobotBoard是一个典型的树莓派扩展板,可将树莓派扩展为机器人控制器,它有专门的Python库支持, 支持对机器人的控制。利用它的Python库实现一个简易的“漫步者机器人”只需三十几行代码。考虑到这种种因素,本文研究与实现的应用方式是为大家提供一种树莓派进行编程扩展应用的思路,可以通过为其添加各种模块(在树莓派允许的功率范围内)以便实现更多的功能。通过对树莓派的了解学习,启发自己的

6、程序设计思路,锻炼动手能力。 1.2 研究内容本项目为基于树莓派的Python小车,小车以树莓派2代B型作为核心控制主体,通过为其连接各模块,编程实现通过远程个人PC控制小车移动。本项目需要进行大量的硬件连接工作,需要使用杜邦线或导线对各个模块进行连接,而在连接处需要使用一些手段加以固定否则在小车移动过程中会发生脱落。本项目大概需要进行的步骤如下:1、 需要利用树莓派本身自带的GPIO接口连接各部分组件,通过杜邦线完成连接,2、 利用L298N模块驱动电机转动。3、 驱动控制部分利用Python代码编写操控程序,4、 利用SSH协议,在Windows下利用PuTTY进行远程Shell控制。1.

7、3 论文整体结构论文的第一章描述了论文所研究项目的背景与意义,并对论文研究项目所开发的功能给出了简要描述。第二章给出了项目研究时用到的核心硬件模块与核心软件设计模块的简要介绍。第三章对项目开发所必须满足的条件进行了分析,描述了整个项目所需要进行的所有前期准备工作。第四章从物理层次的角度阐述了各硬件模块间的相互连接关系及其相互作用。第五章描述了整个项目代码部分的设计编写情况,描述了各部分是如何与硬件模块相关联。第六章给出了项目的实现与项目成型后的成果展示。第七章对论文所研究的项目进行了总结分析,并讨论了项目在未来的可扩展性。2核心硬件模块与软件模块简介2.1 树莓派Raspberry Pi,中文

8、译名为树莓派,它是一块信用卡大小的卡片式“计算机”,它预装了Linux操作系统,搭载了ARM架构处理器,拥有丰富的接口,理论上具备了计算机的很多功能,玩法多样,在国际上深得业余爱好者及热心DIY的科技迷得喜爱。树莓派以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100 以太网接口,可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口。树莓派迄今发布过很多版本,主要分为两种型号A型和B型,区别主要在于B型具备有线网接口,而在今年2月份,发布3代B型。本项目考虑到通用性以及一些其他因素,采用2代B型作为项目搭载主体2。树莓派2代

9、B型如图1:图1 树莓派2代B型示意图2.2 L298N电机驱动模块L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种电机专用驱动装置。L298N电机驱动模块具有以下性能特点3:1、 可实现电机正反转及调速2、 启动性能好,启动转矩大3、 工作电压可达到36V,4A4、 可同时驱动两台直流电机5、 适合应用于机器人设计及智能小车设计L298N模块如图2:图2 L298N示意图2.3 车架小车的车架作为整个小车各部件的模块搭载,考虑经济因素,采用某宝购买的亚力克板。小车车架连接如图3:图3 小车车架图2.4 PythonPython是一种面向对象、解释型计算机程序设计语言,已经成为

10、最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。由于Python语言的简洁、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多。Python可以在基本功能上很好的取代C/C+,易于使用与学习。在本项目中中,需要使用Python中自带的GPIO库,通过树莓派的GPIO针脚进行控制程序设计,考虑通用性及代码复用性,所以选择使用Python2.7版本。2.5 SSH协议SSH(Secure Shell)协议是

11、建立在应用层和传输层上的安全协议,是目前较可靠,专为远程登录和其他网络服务提供安全性的协议。SSH具有众多优点,包括4-5:1、 SSH 加密口令及数据可以在不安全的网络上透明地提供强认证和安全通信;2、 SSH不涉及与操作系统核心相关的技术细节,容易实现;3、 利用可靠传输服务实现(比如TCP over IP)的所有应用,都可以充分利用SSH提供的TCP端口转发功能实现安全防护的目标;4、 SSH协议设计之初充分考虑到了扩展性的问题,很容易嵌入新的密码算法、认证方式以及密钥交换协议等。对于80多个国家的几百万用户来说,它是远程登录的实时标准,越来越多的组织把它作为利用公用网络(如Intern

12、et)接入公司内部网络的唯一方式。相信不久SSH将会成为一套行之有效的通用网络安全标准协议。2.6 GPIO 树莓派提供了一组GPIO(General Purpose Input Output)接口,其实就是传统单片机上的I/O口,通过这些接口的编程,树莓派就可以实现对外围硬件的控制,比如LED点阵、电机、LCD液晶屏、温度传感器等,可以说,GPIO是树莓派与外界信息交互的重要桥梁之一。树莓派内核中已经编译自带了GPIO的驱动,通过一些第三方写好的库函数来完成具体的操作,比较常见的操作库函数有6:1、 Python GPIO。利用Python作为开发语言,作为树莓派官方资料中推荐且容易上手。P

13、ython GPIO 是一个小型的Python库,可以帮助用户完成Raspberry Pi相关IO口操作。也作为本项目所选取的库进行代码编写。2、 wiringPi。利用C语言作为开发语言,适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiringPi的API函数和arduino非常相似。3、 BCM2835 C Library。利用C语言作为开发语言,即使用C语言实现的相关底层驱动。BCM2835 C Library的驱动库包括GPIO、SPI和UART等,可以通过学习BCM2835 C Library熟悉BCM2835相关的寄存器操作。传统的树莓派具有26针

14、脚的GPIO接口,而本项目采用的树莓派2代B型具有40针脚。树莓派2代B型的GPIO针脚如图4:图4 树莓派GPIO针脚图3.项目需求分析3.1 功能需求本项目所要完成的核心功能为远程控制使小车完成移动,主要功能可以大致划分成控制移动和远程控制两大部分。逻辑关系如图5:图5 逻辑关系图3.1.1 控制移动这部分内容需要在完成代码编写的基础上,通过利用树莓派的GPIO针脚,利用Python的GPIO库编程,对树莓派GPIO接口完成信号输入。通过利用电高低电平控制方式来实现电机是否工作,进一步实现小车前进、左转、右转和后退的控制。3.1.2远程控制为了方便实时控制小车的移动轨迹,需要引入远程控制的

15、方法,可以使在有效距离之内能通过其他终端控制小车移动。在本项目中选择使用了个人PC作为远程控制终端。而远程控制树莓派主要具有两种方式,一种是远程登录到树莓派的shell中进行命令行操作,而另一种则是连接到树莓派的Xwindows中。3.2 性能需求3.2.1响应时间需求项目采用远程控制小车移动,需要对终端发出的指令进行响应,响应时间和所采用的远程控制方式以及距离有很大关联,为此,选择了其中一种被广泛使用的。相对安全的方式:SSH(Secure Shell)。3.2.2 安全性需求本项目所涉及到的安全性主要是指硬件连接方面对于硬件的保护。由于项目会使用到许多硬件模块连接到树莓派上进行功能扩展,而

16、不恰当的接线方式会使整个小车发生短路等各种问题。因此在接线是需要注意避免一些没有经过降压处理或者接线错误发生的问题。3.2.3 可用性需求由于整个小车是通过SSH协议进行远程控制,因此只需要为树莓派设置SSH服务开启后,Windows系统下采用SSH客户端,比如一些商业软件:XShell、PuTTY、Tunnelier等,Mac OS系统下可以直接使用系统自带终端提示符输入命令访问树莓派Shell。3.2.4扩展性需求由于树莓派具有各种非常多的接口类型,因此非常方便进行模块扩展,这也是广大DIY爱好者十分喜爱树莓派的原因。借用面包板或者其他PCB,连接上新的模块,编写程序即可。而在小车成型的基

17、础上,还可以再为其添加摄像头等等硬件,连线,设计新的功能,实现一些其他的功能或者性能需求。3.3前期准备由于本项目是在硬件连接之后进行程序设计控制小车移动,所以需要在开始之前把所需用到的工具准备完毕。所需准备的工具及硬件如下:树莓派,考虑通用性,本项目选用了树莓派2代B型;小车车架,小车车架主要需要考虑材质问题,本项目选用了亚力克板子;L298N模块,这作为一个电机驱动模块有很多种版本,选择最通用版本;电池盒,或者供电模块,这里指的是为L298N电机驱动模块供电的设备。最好选取自带开关的模块,方便对L298N进行控制,预防一些操作失误引起的短路,过载等问题;便携网卡,由于本项目是通过Inter

18、net进行远程控制,所以需要为树莓派准备网卡接入网络,最好使用免驱动的网卡,方便使用;电机,也就是俗称的马达,采用小型直流式电机4个;杜邦线、导线若干,进行连接;螺丝刀工具包。在把所有硬件都准备好之后,由于小车主体是树莓派,所以需要启动树莓派,为其安装系统,进行基本设置,安装编程工具及库文件。4各模块电路4.1电机电路直流电机驱动电路使用最广泛的就是H型全桥式电路,这种驱动电路可以很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。它的基本原理图如图6所示:图6 电机电路原理图全桥式驱动电路的4只开关管都工作在斩波状态,S1、S2为一组,S3、S4 为另一组,两组的状态互补

19、,一组导通则另一组必须关断。当S1、S2导通时,S3、S4关断,电机两端加正向电压,可以实现电机的正转或反转制动;当S3、S4导通时,S1、S2关断,电机两端为反向电压,电机反转或正转制动7。由于本项目采取H型全桥式驱动电路,因此需要两侧电机两两并联,再与L298N模块相连。左侧两电机并联连接L298N模块输出A端,右侧两电机并联连接L298N模块输出B端。4.2 L298N模块电路该L298是在一个15引脚Multiwatt和PowerSO20包集成单片电路。它是一种高电压,大电流的双全桥驱动器设计成接受标准TTL逻辑电平驱动感性负载,如继电器,螺线管,DC和步进电机。两个使能提供的输入独立

20、于输入信号的开启或关闭该设备。每个桥的下部晶体管的发射极被连接在一起,并相应的外部终端可以用于外部感测电阻器的连接。提供了一种额外的电源输入,使得所述逻辑工作在一个较低的电压。它的模块电路图如图78:图7 L298原理电路图L298N模块作为连接各硬件部分的中心,十分重要,其负责把树莓派所传输的信号经过内部电路处理后输出表现为高或低电频,以此来控制电机转动。4.3树莓派电路树莓派系统的核心部分使用的是一个称之为Broadcom BCM2835的片上系统(System-on-chip,SoC),BCM2835集成了CPU和GPU。这是一种多媒体处理器系统,意味着绝大部分系统组件,包括中央处理单元

21、、图形单元以及音频和通信硬件,都可以集成在一块芯片上,并位于主板中央的一块256MB内存芯片之下。它还使用了ARM指令集结构作为处理器设计。由于树莓派可以看做是一个完整的“电脑”,因此它各部分都具有很多的电路原理图,在这就只列出其中一个。电路原理图如图8:图8 树莓派电路原理图9树莓派在其中主要通过对GPIO口的编程结果,运行代码后产生电信号传输至L298N模块。4.4 整体连接电路之前三节所叙述的为各模块的内部逻辑电路图,电路图为辅助完成画出连接电路图,再根据电路图连接各硬件部分。L298N模块作为其中核心部件,各其余部件都是围绕其连接。实际的连接操作见第六章内容。实际连接简易电路图如图:图

22、9 整体连接简易电路图5编码模块5.1移动控制模块通过调用Python的GPIO库对树莓派GPIO接口进行操作,遵循电机的真值逻辑进行代码编写。真值表如图:图10 电机真值表10-11该模块代码如下17-19:import RPi.GPIO as gpioimport timeimport sysimport Tkinter as tk#选取树莓派GPIO接口时,选取了11、12、13及15IN1 = 11IN2 = 12IN3 = 13IN4 = 15#初始化接口def init(): GPIO.setup(IN1,GPIO.OUT) GPIO.setup(IN2,GPIO.OUT) GPI

23、O.setup(IN3,GPIO.OUT) GPIO.setup(IN4,GPIO.OUT)#前进def forward(tf): GPIO.output(IN1,GPIO.HIGH) GPIO.output(IN2,GPIO.LOW) GPIO.output(IN3,GPIO.HIGH) GPIO.output(IN4,GPIO.LOW) time.sleep(tf) gpio.cleanup()#后退def reverse(tf): GPIO.output(IN1,GPIO.LOW) GPIO.output(IN2,GPIO.HIGH) GPIO.output(IN3,GPIO.LOW)

24、GPIO.output(IN4,GPIO.HIGH)#左转def turn_left(tf): GPIO.output(IN1,False) GPIO.output(IN2,False)#右转def turn_right(tf): GPIO.output(IN3,False) GPIO.output(IN4,False)#键盘输入控制部分def key_input(event): init() print Key:,event.char key_press = event.char sleep_time = 0.03#利用WASD进行方向控制,可以通过长按保持一个方向移动 if key_press.lower() = w: forward(sleep_time) el

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2