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

上传人:聆听****声音 文档编号:3676469 上传时间:2023-05-02 格式:DOC 页数:72 大小:2.94MB
下载 相关 举报
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第1页
第1页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第2页
第2页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第3页
第3页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第4页
第4页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第5页
第5页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第6页
第6页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第7页
第7页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第8页
第8页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第9页
第9页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第10页
第10页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第11页
第11页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第12页
第12页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第13页
第13页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第14页
第14页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第15页
第15页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第16页
第16页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第17页
第17页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第18页
第18页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第19页
第19页 / 共72页
毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc_第20页
第20页 / 共72页
亲,该文档总共72页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc》由会员分享,可在线阅读,更多相关《毕业论文--基于树莓派的Python小车研究与实现 (2)Word下载.doc(72页珍藏版)》请在冰点文库上搜索。

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

1.1研究背景与意义 1

1.2研究内容 2

1.3论文整体结构 2

2.核心硬件模块与软件模块简介 3

2.1树莓派 3

2.2L298N电机驱动模块 3

2.3车架 4

2.4Python 5

2.5SSH协议 6

2.6GPIO 6

3.项目需求分析 8

3.1功能需求 8

3.1.1控制移动 8

3.1.2远程控制 8

3.2性能需求 9

3.2.1响应时间需求 9

3.2.2安全性需求 9

3.2.3可用性需求 9

3.2.4扩展性需求 9

3.3前期准备 9

4.各模块电路 11

4.1电机电路 11

4.2L298N模块电路 11

4.3树莓派电路 12

4.4整体连接电路 13

5.编码模块 14

5.1移动控制模块 14

5.2远程控制 16

5.2.1远程控制技术 16

5.2.2树莓派的远程控制技术 17

5.3超声波测距模块* 18

6.项目实现及扩展 20

6.1小车实现 20

6.1.1电机连接 20

6.1.2L298N模块连接 20

6.1.3树莓派连接 22

6.1.4完整连接 23

6.2项目相关扩展 24

6.2.1小车相关扩展 24

6.2.2树莓派相关扩展 25

7.总结 26

参考文献 27

声明 28

致谢 29

附录 30

译文 30

67

1.引言

1.1研究背景与意义

随着当今科技不断地进步,各种有益于人们生活方方面面的技术不断涌现,不断丰富我们的日常生活,不断为我们日常生活添加各种便利。

而各样小型的终端设备以更加轻便、便携的优势逐渐取代个人PC在人们心中的重要地位,“卡片电脑”的概念热度上升。

树莓派(RaspberryPi)主板可以说是个“微型”的奇迹,它和一张信用卡的大小差不多,却拥有非常强的计算能力。

它拥有多种接口模式,支持许多拓展功能。

并且,按照官方规定,树莓派把Python作为其最主要的程序设计语言之一。

而由于Python本身跨平台性,易于编写阅读的特点,使其更容易受大家接受。

总结得出结论,树莓派作为一块简单的开发板备受大家欢迎主要具备以下两大优势[1]:

1、软硬件优势:

树莓派之所以在全球范围内备受大家热捧,原因不仅在于支持Python、Java、C等丰富的语言进行开发,并且它所提供的Raspbian操作系统是移植超过1900个Linux软件包的十分强大的操作系统。

创始人Eben博士目前任树莓派的主芯片设计公司Boradcom的IC设计主管,可以很好的控制CPU及开发板的性价比和质量(Boradcom是全球领先的通信领域的半导体公司)。

因此,树莓派同时拥有CPU、操作系统、应用开发环境三个方面的背景优势。

此外,由于内置GPU支持1080P视频硬解码,OpenELEC和RASPBMC操作系统作为界面友好的系统被官方推荐给大众,因此,树莓派可以借助这些优势搭建成家庭媒体中心,成为网络电视机顶盒。

2、资源优势:

全球有数以百万计的开发者在为树莓派进行开发,有丰富的软硬件开发资源可供参考与借鉴。

软件巨头Oracle推出了基于树莓派和JavaFx的DukePad方案,并开设了互联网免费课程“DevelopJavaEmbeddedApplicationsUsingaRaspberryPi”(使用树莓派开发Java嵌入式应用)。

RaspiRobotBoard是一个典型的树莓派扩展板,可将树莓派扩展为机器人控制器,它有专门的Python库支持,支持对机器人的控制。

利用它的Python库实现一个简易的“漫步者机器人”只需三十几行代码。

考虑到这种种因素,本文研究与实现的应用方式是为大家提供一种树莓派进行编程扩展应用的思路,可以通过为其添加各种模块(在树莓派允许的功率范围内)以便实现更多的功能。

通过对树莓派的了解学习,启发自己的程序设计思路,锻炼动手能力。

1.2研究内容

本项目为基于树莓派的Python小车,小车以树莓派2代B型作为核心控制主体,通过为其连接各模块,编程实现通过远程个人PC控制小车移动。

本项目需要进行大量的硬件连接工作,需要使用杜邦线或导线对各个模块进行连接,而在连接处需要使用一些手段加以固定否则在小车移动过程中会发生脱落。

本项目大概需要进行的步骤如下:

1、需要利用树莓派本身自带的GPIO接口连接各部分组件,通过杜邦线完成连接,

2、利用L298N模块驱动电机转动。

3、驱动控制部分利用Python代码编写操控程序,

4、利用SSH协议,在Windows下利用PuTTY进行远程Shell控制。

1.3论文整体结构

论文的第一章描述了论文所研究项目的背景与意义,并对论文研究项目所开发的功能给出了简要描述。

第二章给出了项目研究时用到的核心硬件模块与核心软件设计模块的简要介绍。

第三章对项目开发所必须满足的条件进行了分析,描述了整个项目所需要进行的所有前期准备工作。

第四章从物理层次的角度阐述了各硬件模块间的相互连接关系及其相互作用。

第五章描述了整个项目代码部分的设计编写情况,描述了各部分是如何与硬件模块相关联。

第六章给出了项目的实现与项目成型后的成果展示。

第七章对论文所研究的项目进行了总结分析,并讨论了项目在未来的可扩展性。

2.核心硬件模块与软件模块简介

2.1树莓派

RaspberryPi,中文译名为树莓派,它是一块信用卡大小的卡片式“计算机”,它预装了Linux操作系统,搭载了ARM架构处理器,拥有丰富的接口,理论上具备了计算机的很多功能,玩法多样,在国际上深得业余爱好者及热心DIY的科技迷得喜爱。

树莓派以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100以太网接口,可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口。

树莓派迄今发布过很多版本,主要分为两种型号A型和B型,区别主要在于B型具备有线网接口,而在今年2月份,发布3代B型。

本项目考虑到通用性以及一些其他因素,采用2代B型作为项目搭载主体[2]。

树莓派2代B型如图1:

图1树莓派2代B型示意图

2.2L298N电机驱动模块

L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。

是一种电机专用驱动装置。

L298N电机驱动模块具有以下性能特点[3]:

1、可实现电机正反转及调速

2、启动性能好,启动转矩大

3、工作电压可达到36V,4A

4、可同时驱动两台直流电机

5、适合应用于机器人设计及智能小车设计

L298N模块如图2:

图2L298N示意图

2.3车架

小车的车架作为整个小车各部件的模块搭载,考虑经济因素,采用某宝购买的亚力克板。

小车车架连接如图3:

图3小车车架图

2.4Python

Python是一种面向对象、解释型计算机程序设计语言,已经成为最受欢迎的程序设计语言之一。

2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。

Python是完全面向对象的语言。

函数、模块、数字、字符串都是对象。

并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。

由于Python语言的简洁、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多。

Python可以在基本功能上很好的取代C/C++,易于使用与学习。

在本项目中中,需要使用Python中自带的GPIO库,通过树莓派的GPIO针脚进行控制程序设计,考虑通用性及代码复用性,所以选择使用Python2.7版本。

2.5SSH协议

SSH(SecureShell)协议是建立在应用层和传输层上的安全协议,是目前较可靠,专为远程登录和其他网络服务提供安全性的协议。

SSH具有众多优点,包括[4-5]:

1、SSH加密口令及数据可以在不安全的网络上透明地提供强认证和安全通信;

2、SSH不涉及与操作系统核心相关的技术细节,容易实现;

3、利用可靠传输服务实现(比如TCPoverIP)的所有应用,都可以充分利用SSH提供的TCP端口转发功能实现安全防护的目标;

4、SSH协议设计之初充分考虑到了扩展性的问题,很容易嵌入新的密码算法、认证方式以及密钥交换协议等。

对于80多个国家的几百万用户来说,它是远程登录的实时标准,越来越多的组织把它作为利用公用网络(如Internet)接入公司内部网络的唯一方式。

相信不久SSH将会成为一套行之有效的通用网络安全标准协议。

2.6GPIO

树莓派提供了一组GPIO(GeneralPurposeInputOutput)接口,其实就是传统单片机上的I/O口,通过这些接口的编程,树莓派就可以实现对外围硬件的控制,比如LED点阵、电机、LCD液晶屏、温度传感器等,可以说,GPIO是树莓派与外界信息交互的重要桥梁之一。

树莓派内核中已经编译自带了GPIO的驱动,通过一些第三方写好的库函数来完成具体的操作,比较常见的操作库函数有[6]:

1、PythonGPIO。

利用Python作为开发语言,作为树莓派官方资料中推荐且容易上手。

PythonGPIO是一个小型的Python库,可以帮助用户完成RaspberryPi相关IO口操作。

也作为本项目所选取的库进行代码编写。

2、wiringPi。

利用C语言作为开发语言,适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。

wiringPi的API函数和arduino非常相似。

3、BCM2835CLibrary。

利用C语言作为开发语言,即使用C语言实现的相关底层驱动。

BCM2835CLibrary的驱动库包括GPIO、SPI和UART等,可以通过学习BCM2835CLibrary熟悉BCM2835相关的寄存器操作。

传统的树莓派具有26针脚的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远程控制

为了方便实时控制小车的移动轨迹,需要引入远程控制的方法,可以使在有效距离之内能通过其他终端控制小车移动。

在本项目中选择使用了个人PC作为远程控制终端。

而远程控制树莓派主要具有两种方式,一种是远程登录到树莓派的shell中进行命令行操作,而另一种则是连接到树莓派的Xwindows中。

3.2性能需求

3.2.1响应时间需求

项目采用远程控制小车移动,需要对终端发出的指令进行响应,响应时间和所采用的远程控制方式以及距离有很大关联,为此,选择了其中一种被广泛使用的。

相对安全的方式:

SSH(SecureShell)。

3.2.2安全性需求

本项目所涉及到的安全性主要是指硬件连接方面对于硬件的保护。

由于项目会使用到许多硬件模块连接到树莓派上进行功能扩展,而不恰当的接线方式会使整个小车发生短路等各种问题。

因此在接线是需要注意避免一些没有经过降压处理或者接线错误发生的问题。

3.2.3可用性需求

由于整个小车是通过SSH协议进行远程控制,因此只需要为树莓派设置SSH服务开启后,Windows系统下采用SSH客户端,比如一些商业软件:

XShell、PuTTY、Tunnelier等,MacOS系统下可以直接使用系统自带终端提示符输入命令访问树莓派Shell。

3.2.4扩展性需求

由于树莓派具有各种非常多的接口类型,因此非常方便进行模块扩展,这也是广大DIY爱好者十分喜爱树莓派的原因。

借用面包板或者其他PCB,连接上新的模块,编写程序即可。

而在小车成型的基础上,还可以再为其添加摄像头等等硬件,连线,设计新的功能,实现一些其他的功能或者性能需求。

3.3前期准备

由于本项目是在硬件连接之后进行程序设计控制小车移动,所以需要在开始之前把所需用到的工具准备完毕。

所需准备的工具及硬件如下:

树莓派,考虑通用性,本项目选用了树莓派2代B型;

小车车架,小车车架主要需要考虑材质问题,本项目选用了亚力克板子;

L298N模块,这作为一个电机驱动模块有很多种版本,选择最通用版本;

电池盒,或者供电模块,这里指的是为L298N电机驱动模块供电的设备。

最好选取自带开关的模块,方便对L298N进行控制,预防一些操作失误引起的短路,过载等问题;

便携网卡,由于本项目是通过Internet进行远程控制,所以需要为树莓派准备网卡接入网络,最好使用免驱动的网卡,方便使用;

电机,也就是俗称的马达,采用小型直流式电机4个;

杜邦线、导线若干,进行连接;

螺丝刀工具包。

在把所有硬件都准备好之后,由于小车主体是树莓派,所以需要启动树莓派,为其安装系统,进行基本设置,安装编程工具及库文件。

4.各模块电路

4.1电机电路

直流电机驱动电路使用最广泛的就是H型全桥式电路,这种驱动电路可以很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。

它的基本原理图如图6所示:

图6电机电路原理图

全桥式驱动电路的4只开关管都工作在斩波状态,S1、S2为一组,S3、S4为另一组,两组的状态互补,一组导通则另一组必须关断。

当S1、S2导通时,S3、S4关断,电机两端加正向电压,可以实现电机的正转或反转制动;

当S3、S4导通时,S1、S2关断,电机两端为反向电压,电机反转或正转制动[7]。

由于本项目采取H型全桥式驱动电路,因此需要两侧电机两两并联,再与L298N模块相连。

左侧两电机并联连接L298N模块输出A端,右侧两电机并联连接L298N模块输出B端。

4.2L298N模块电路

该L298是在一个15引脚Multiwatt和PowerSO20包集成单片电路。

它是一种高电压,大电流的双全桥驱动器设计成接受标准TTL逻辑电平驱动感性负载,如继电器,螺线管,DC和步进电机。

两个使能提供的输入独立于输入信号的开启或关闭该设备。

每个桥的下部晶体管的发射极被连接在一起,并相应的外部终端可以用于外部感测电阻器的连接。

提供了一种额外的电源输入,使得所述逻辑工作在一个较低的电压。

它的模块电路图如图7[8]:

图7L298原理电路图

L298N模块作为连接各硬件部分的中心,十分重要,其负责把树莓派所传输的信号经过内部电路处理后输出表现为高或低电频,以此来控制电机转动。

4.3树莓派电路

树莓派系统的核心部分使用的是一个称之为BroadcomBCM2835的片上系统(System-on-chip,SoC),BCM2835集成了CPU和GPU。

这是一种多媒体处理器系统,意味着绝大部分系统组件,包括中央处理单元、图形单元以及音频和通信硬件,都可以集成在一块芯片上,并位于主板中央的一块256MB内存芯片之下。

它还使用了ARM指令集结构作为处理器设计。

由于树莓派可以看做是一个完整的“电脑”,因此它各部分都具有很多的电路原理图,在这就只列出其中一个。

电路原理图如图8:

图8树莓派电路原理图[9]

树莓派在其中主要通过对GPIO口的编程结果,运行代码后产生电信号传输至L298N模块。

4.4整体连接电路

之前三节所叙述的为各模块的内部逻辑电路图,电路图为辅助完成画出连接电路图,再根据电路图连接各硬件部分。

L298N模块作为其中核心部件,各其余部件都是围绕其连接。

实际的连接操作见第六章内容。

实际连接简易电路图如图:

图9整体连接简易电路图

5.编码模块

5.1移动控制模块

通过调用Python的GPIO库对树莓派GPIO接口进行操作,遵循电机的真值逻辑进行代码编写。

真值表如图:

图10电机真值表[10-11]

该模块代码如下[17-19]:

importRPi.GPIOasgpio

importtime

importsys

importTkinterastk

#选取树莓派GPIO接口时,选取了11、12、13及15

IN1=11

IN2=12

IN3=13

IN4=15

#初始化接口

definit():

GPIO.setup(IN1,GPIO.OUT)

GPIO.setup(IN2,GPIO.OUT)

GPIO.setup(IN3,GPIO.OUT)

GPIO.setup(IN4,GPIO.OUT)

#前进

defforward(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()

#后退

defreverse(tf):

GPIO.output(IN1,GPIO.LOW)

GPIO.output(IN2,GPIO.HIGH)

GPIO.output(IN3,GPIO.LOW)

GPIO.output(IN4,GPIO.HIGH)

#左转

defturn_left(tf):

GPIO.output(IN1,False)

GPIO.output(IN2,False)

#右转

defturn_right(tf):

GPIO.output(IN3,False)

GPIO.output(IN4,False)

#键盘输入控制部分

defkey_input(event):

init()

print'

Key:

'

event.char

key_press=event.char

sleep_time=0.03

#利用WASD进行方向控制,可以通过长按保持一个方向移动

ifkey_press.lower()=='

w'

:

forward(sleep_time)

el

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

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

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