版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及应用课程设计实训报告班级:计算机科学与技术 141班学生:组长:张广建成员:张校瑄成员:何金蔚成员:韩倩倩目录第一章绪论21.1引言21.2课题任务要求2第二章 系统总体设计22.1小车的机械特性32.2所需程序以及使用的芯片 32.3智能小车控制的基本原理 3第三章 系统硬件设计33.1控制选择33.2小车搭建4第四章 系统软件设计44.1 Linux 系统44.1 Ardui no 软件12第五章实验总结20第一章绪论1.1引言我们所处的这个时代是信息革命的时代, 各种新技术、新思想层 出不穷,纵观世界范围内智能汽车技术的发展, 每一次新的进步无不 是受新技术新思想的推动。随着
2、汽车工业的迅速发展,传统的汽车的发展逐渐趋于饱和。 伴 随着电子技术和嵌入式的迅猛发展, 这使得汽车日渐走向智能化。智 能汽车由原先的驾驶更加简单更加安全更加舒适, 逐渐的向智能驾驶 系统方向发展。智能驾驶系统相当于智能机器人,能代替人驾驶汽车。 它主要是通过安装在前后保险杠及两侧的红外线摄像机,对汽车前后 左右一定区 域进行不停地扫描和监视。计算机、电子地图和光化学 传感器等对红外线摄像机传来的信号进行分析计算,并根据道路交 通信息管理系统传来的交通信息,代替人的大脑发出指令,指挥执行 系统操作汽车。12课题任务要求一是增强学生的动手能力,众所周知,现在企业的招聘需要学生 有动手能力,能够动
3、手参与项目,能够把书本上面的知识更深层次的 理解,并运用到项目中来;二是为了让学生更了解单片机小车的工作 原理。并让学生能够学会在项目中独立、 合作完成项目,不仅仅是完 成自己应该完成的项目部分,更要把整个项目流程都深刻了解, 这样 才能更好的完成项目。第二章系统总体设计2.1小车的机械特性小车采用的是一辆四轮车车模,通过 2个电极控制轮胎的转动, 前后轮根据转速不同和运转情况控制小车前进后退或者转弯。2.2所需程序以及使用的芯片VM虚拟机运行Linux系统、Dreamweave、Arduino,A8开发板,小车开发板,小车模版,轮胎及各种接线,电极等等2.3智能小车控制的基本原理能够用虚拟机
4、运行Linux系统,并把Linux写入开发板,搭建服 务器,通过虚拟机编写网页代码控制开发板。 通过开发板控制小车开 发板,用软件Arduino控制,实现网页控制,有能力的增加辅助功能; 使网页UI更加美观等等。第三章 系统硬件设计3.1控制选择通过虚拟机网页控制、蓝牙控制(增加功能)3.2小车搭建321基础模块A8开发板通过网线连接PC虚拟机,Linux系统移植进入开发板,搭建服务 器,调用Arduino开发板。322蓝牙模块连接蓝牙模块至A8开发板,通过串口调试app连接蓝牙控制Arduino小车第四章系统软件设计4.1 Linux 系统4.1.1 Linux的环境搭建ctr+al+t:默
5、认的路径在家目录ct叶shift+n:默认的路径为上一次终端所处在的路径linu xub un tu:$linux:当前登录用户名.ubuntu:主机名:和$之间:当前用户所处在的工作路径.windows下的工作路径如C:lntelLogslinux下的工作路径是:/././:代表的是/home/linux 这个路径.(家目录).Is(list):列出当前路径下的文件名和目录名.Is -a(all):列出当前路径下的所有文件和目录名,包括了隐藏文件.:当前路径.:上一级路径Is -I:以横排的方式列出文件的详细信息total 269464(当前这个路径总计所占空间的大小,单位是K)drwxr-
6、xr-x 3 linux linux 4096 Dec 4 19:16 Desktop第一个位置:代表的是文件的类型.linux系统下的文件类型有以下几种.b:块设备文件c:字符设备文件d:directory, 目录-:普通文件.l:连接文件.s:套接字文件.p:管道文件.rwxr-xr-x:权限r:读权限-:没有相对应的权限w:写权限x:可执行权限修改权限:chmod u-或者+r/w/x 文件名chmod g-或者+r/w/x 文件名chmod o-或者+r/w/x 文件名第一组:用户权限第二组:用户组的权限第三组:其他用户的权限.chmod三个数(权限)文件名首先根据你想要的权限生成二进
7、制数,再根据二进制数转换成十进制的三 位数rwxr-x-wx1111010117 5 3chmod 753文件名rwx-xr-x第二个位置上的数字:对应目录下的子文件个数,如果是非目录,则数字是1第三个位置:用户名(文件创造者).第四个位置:用户组的名字(前边的用户所处在的用户组的名字).第五个位置:对应文件所占的空间大小(单位为b)第六八个位置:Dec 4 19:16时间戳(最后一次修改文件的时间)最后一个位置:文件名操作文件:1. 创建一个普通文件:touch文件名2. 删除一个文件:rm(remove)文件名3. 新建一个目录:mkdir(make directory) 目录名递归创建目
8、录:mkdir -p 目录1/目录2/目录34. 删除一个目录:rmdir目录名./仅删除一个空目录rm -rf目录名/删除一个非空目录5. 切换目录(change directory):cd 路径linux下的路径分两种相对路径:以.(当前路径)为起点.绝对路径:以/(根目录)为起点,用相对路径的方式进入Music:cd ./Music用绝对路径的方式进入 Desktop:cd /home/li nu x/Desktop返回上一级:cd .返回加家目录的三种方式(1) .cd(2) .cd (3) .cd /home/li nux进入到1目录里并创建一个2普通文件,再退回上一级,并且删除1目
9、录6. 拷贝文件.cp(copy)路径1/源文件 路径2:把路径1下的文件拷贝到路径2下 cp路径1/源文件 路径2/目标文件:把路径1下的文件拷贝到路径2下并 且重命名位目标文件.cp(copy) -r 路径1/目录名 路径2:把路径1下的目录拷贝到路径2下7. 剪切文件mv(move)路径1/源文件 路径2:把路径1下的文件剪切到路径2下 mv路径1/源文件 路径2/目标文件:把路径1下的文件剪切到路径2下并 且重命名位目标文件mv源文件目标文件:重命名文件mv路径1/目录名 路径2:把路径1下的目录剪切到路径2下8. clear:清屏9. exit 退出终端vi编辑器.vi文件名:如果文
10、件不存在则创建并打开如果文件已存在,则直接打开底行模式下的快捷操作1, 对第a行到第b行进行复制:航标a,行标by,enter回车,再把光标移动到 你想要粘贴位置的上一行,输入p即可2, 对第a行到第b行进行删除:航标a,行标bd,enter回车3, 对第a行到第b行进行剪切:航标a,行标bd,enter回车,再把光标移动到 你想要粘贴位置的上一行,输入p即可gcc编译器.gcc文件名:编译成功的话,会在当前目录生成一个a.out可执行程序执行程序:./a.out当然也可以指定可执行程序的名字,命令如下:gcc文件名-o可执行程序名 linux系统的库文件:静态库:.a结尾动态库:.so结尾
11、自己制作一个动态库.首先写一个简单的c功能函数编译成动态库:gcc -fPIC -shared文件名-o lib 库文件名.so在linux系统下.程序运行时默认搜素库的路径是/lib把库拷贝到/lib下:cp lib库文件名.so /lib错误提示:permissiondenied(权限不足)方法:sudo cp lib 库文件名.so /lib 提示让你输入密码1:sudo暂时将普通用户的权限提高到root用户权限再编译一个c应用程序,在程序中来调用库里实现的函数gcc应用程序名-l库名(注意是去掉lib和.so的库名)操作文件:open():打开一个文件read():从文件里边读出数据w
12、rite()向文件里写入数据close()/ 关闭文件man手册:man 2函数名 ope n:头文件#i nclude #i nclude #in clude vfcn tl.h1.1 nt ope n(const char *path name, int flags);/仅限于打开一个已存在文件参数1:文件的路径参数2:打开方式的标志O_RDONL Y,/只读方式打开O_WRONL Y只写方式打开O_RDWR./可读可写方式打开返回值:打开成功:返回一个正数(文件描述符)打开失败:-12.1 nt ope n(const char *path name, int flags, mode_t
13、 mode);/可以打开一个不存在的文件参数1:文件的路径参数2:打开方式的标志O_RDONL Y,/只读方式打开O_WRONL Y只写方式打开O_RDWR./可读可写方式打开如果文件不存在必须|O_CRAET创建该文件参数3:权限 数比如:0666返回值:打开成功:返回一个正数(文件描述符)打开失败:-1write:头文件:#include typedef int ssize_tssize_t write(i nt fd, const void *buf, size_t coun t);参数1:就是open函数的返回值,文件描述符参数2:你想要写入的数据参数3:你想要写入的数据的字节大小返回
14、值:写入成功:返回的是写入的字节大小写入失败:-1strle n:实际长度 sizeof:数组的大小4.1.2 Linux的移植及调试linux系统的启动步骤1. 运行uboot(初始化硬件,引导系统内核的加载)2. 内核的运行(zlmage,linux 的内核).3. 识别文件系统(类似于C盘,D盘,E盘).是rootfs.tgz系统二内核+文件系统.挂载系统.要对uboot环境信息进行设置首先把拨码开关拨到0000位置.选择uboot的启动方式.uboot从外存启动.1. 找到自己的COM口号;打开putty2. 选中Serial,把波特率改为115200,端口号改为自己的端口号 ,Flo
15、wcontrlo 选择 none3. 开启电源,会出现一个倒计时,在倒计时完成之前,随便敲一个键盘.4. 输入命令print可以显示uboot的打印信息确保:ipaddr=00代表开发板的ip地址serverip=00代表 ubuntu 的 IP 地址bootargs二root二 nfsn fsroot=00:/source/rootfsip=00 in it=/li nuxrc con sole二ttySAC0,115200打开虚拟机:1. 进入到/tftpboot 目录下.把zImage拖到虚拟机,前加
16、cp ,后加./使用ls查看一下是否出现zImage2. cd /source把rootfs这个压缩包拖到虚拟机,前加cp ,后加./使用ls查看一下是否出现rootfs.tgz3. 解压命令:sudo tar -xvf rootfs.tgz要让你输入密码;输入1回车即可,密码是不可见的. 再用ls查看是否多了一个蓝色的文件rootfs.4. 修改ubuntu的ip地址.找至 U wiffi 图标,点击选中 edit conn ecti on-IPV4 set in g-ma nu al-add ipn etmaskgateway00192.16
17、8.1.1点击保存.关闭窗口 .再打开图标选中wired connection1再看ip是否改回 来了.5. 网线连接开发板和电脑在 putty 界面输入:pi ng 00如果host 00 is alive,这是挂载系统很好的征兆.not alive的话需要关闭电脑的无线网输入boot或者重启开发板不要再按下任何键了,如果出现#艮快就要挂载成功了女口果出现 TTTTTTTTTTTTTT在 ubuntu 输入命令:sudo service tftpd-hpa restart其中sudo的作用是暂时将用户的权限提升到超级用户(root)的权限.如果出现
18、 Please press En ter to activate this con sole.代表系统挂载成功.通过gcc编译生成的程序不能在开发板上运行.通过命令file a.out看到文件的格式为intel 30386,说明这是X86格式的 程序,只能PC上运行而不能在arm板上运行,解决措施,使用交叉编译器来编译.交叉编译器的配置:将 arm-cortex_a8-linux-gnueabi.tar.bz2拖至U ubuntu 的家目录解压命令tar -xvf arm-co叶tab 键自动补齐,用ls查看是否生成 arm-cortex_a8 个目录.配置交叉编译器:sudo vi /etc
19、/bash.bashrc 文件在最后一行添加 export PATH=$PATH:/home/linux/arm-cortex_a8/bin保存并退出文件保存完成后重启文件:source /etc/bash.bashrc重启成功后输入 arm-cor+tab 键会自动补齐成 arm-cortex_a8-linux-gnueabi-代表交叉编译器配置成功.利用交叉编译器编译程序:arm-cortex_a8-linux-gnueabi-gcc文件名,并将生成的可执行程序拷贝至卩 /source/rootfs下然后再到putty上执行./a.out就可以在开发板上运行程序了4.1 Arduino 软
20、件viod setup()端口的配置;void loop()任务的执行;arduino之呼吸灯实验:int led=13;void setup()pi nM ode(led,OUTPUT);void loop()digitalWrite(led,HIGH);delay(1000);digitalWrite(led,LOW);delay(1000);渐变灯:暗- 亮- 暗PWM波:可调脉冲宽度波.3,5,6,9,10,11这几个端口可以输出pwm波analogWrite(pin, value)/输出 pwm波pin:管脚号35,6,9,10,11中的任意一个value:0255中的任何一个数:0
21、:占空比为0%255:占空比位100%远程视频监控步骤:1将 jpegsrc.v8b.tar.gz( 图片库)和 mjpg-streamer-code-182.tar.gz( 视频查看软件)拷贝到ubuntu的家目录2. 解压缩tar xvf jpegsrc.v8b.tar.gz3. cd jpeg-8b4. ./c on figure / 创建 Makefile 文件5. make6. sudo make in stall /安装程序运行时,默认寻找的头文件的路径在/usr/include, 库文件的路径/libcd /usr/local/i ncludesudo cp * /usr/i n
22、cludecd /usr/local/libsudo cp libjpeg* /lib7. 切换到家目录:cd移植查看视频的软件:tar xvf mjpg-streamer-code-182.tar.gzcd mjpg-streamer-code-182cd mjpg-streamermake clea n /清除已经编译过的程序make运行查看视频的软件:sudo ./start.sh打开火狐浏览器在地址栏输入:8080若发现视频绿屏先强制结束程序运行:ctl+c.解决方法:修改 start.sh将第30行的-y 删除看看是否虚拟机识别到摄像头:ls /dev/video0
23、地址栏输入::8080/?action二stream查看视频信息:8080/?action=snapshot截屏图片,点击 save imageas可以保存图片wi ndows运行之前会有一个系统的引导代码叫BIOS与windows类似,linux 启动之前也有这样的一段代码叫做 bootloader bootloader有很多种,我们选用其中的一种叫做 uboot.相关代码Che.c #i nclude cgic.h#i nclude #i nclude #in clude #in clude vfcn tl.h#in clude void zigbee_
24、serial_i nit(i nt fd) 一 一struct termios opti ons;tcgetattr(fd, &opti on s);optio ns.c_cflag |= (CLOCAL | CREAD);options.c_cflag &= CSIZE;optio ns.c_cflag &二 CRTSCTS;opti on s.c_cflag |= CS8;optio ns.c_cflag &二 CSTOPB;optio ns.c_iflag |= IGNPAR;optio ns.c_iflag &二 (BRKINT | INPCK | ISTRIP | ICRNL | I
25、XON);/optio ns.c_ccVTIME = 2; optio ns.c_ccVMIN = 12;optio ns.c_oflag = 0; optio ns.c_lflag = 0;cfsetispeed(&optio ns, B115200); cfsetospeed(&optio ns, B115200); tcsetattr(fd,TCSANOW,&optio ns);int cgiMai n()int fd;char a=1;cgiHeaderCo nten tType(text/htmlnn);fprin tf(cgiOut,n);fprin tf(cgiOut,n);fp
26、rin tf(cgiOut,n”);fprin tf(cgiOut,n);fprintf(cgiOut,SMART CARn);fprin tf(cgiOut,v/titlen);fprin tf(cgiOut,);fprin tf(cgiOut,v/headn);fprin tf(cgiOut,n);fprintf(cgiOut,n);fprin tf(cgiOut,n);fprin tf(cgiOut,vformacti on二./cgi-b in/keyi.cgimethod=post n);fprin tf(cgiOut,n);fprin tf(cgiOut,n);fprin tf(c
27、giOut,&n bsp ;&n bsp ;&n bsp;&n bsp;n);fprin tf(cgiOut,);fprin tf(cgiOut,&n bsp ;&n bsp ;&n bsp;&n bsp;n);fprin tf(cgiOut,n);fprintf(cgiOut,n);fprin tf(cgiOut,v/formn);fd=ope n(/dev/ttyUSB0,O_RDWR);if(-1=fd)fprintf(cgiOut,open usart failedn);zigbee_serial_i nit(fd);if(cgiFormSuccess=cgiFormSubmitCli
28、cked(up)a=2;write(fd, &a,1); if(cgiFormSuccess=cgiFormSubmitClicked(dow n)a=1;write(fd, &a,1); if(cgiFormSuccess=cgiFormSubmitClicked(right)a=4;write(fd, &a,1); if(cgiFormSuccess=cgiFormSubmitClicked(left)a=3;write(fd, &a,1); if(cgiFormSuccess=cgiFormSubmitClicked(stop)a=0;write(fd, &a,1);fprin tf(c
29、giOut,v/bodyn);fprin tf(cgiOut,v/htmln);close(fd);retur n 0;Test.c#i nclude #i nclude #i nclude #i nclude #in clude vfcn tl.h int main (i nt argc, const char *argv) int fd;char buff20=0;fd=ope n(/dev/ttyUSB0,O_RDWR); if(-1=fd)prin tf(open failed n);retur n -1;while(1)read(fd,buff,sizeof(buff);retur n 0;单片机代码void setup()pi nM ode(2,OUTPUT);pi nM ode(4,OUTPUT);pi nM ode(6,OUTPUT);pi nM od
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年城市照明项目LED路灯购销合同
- 2024年建筑工程分包协议书
- 2024年云计算服务互操作性测试合同
- 2024广告发布委托合同模板样本
- 2024年工程质量检测合同标准
- 2024年度物业服务合同:日常房屋租住过程中的管理与维护
- 2024年度旅游开发项目合同
- 2024年度影视制作与发布协议
- 儿子结婚上父亲致辞
- 习惯为主题的演讲稿3篇
- 批判性思维智慧树知到答案章节测试2023年
- 广联达钢结构算量软件-基础培训
- 特种设备管理办法执行流程图
- GB/T 5210-2006色漆和清漆拉开法附着力试验
- GB/T 40019-2021基础制造工艺通用元数据
- GB 29837-2013火灾探测报警产品的维修保养与报废
- GA/T 1502-2018法庭科学视频中人像动态特征检验技术规范
- 问题解决型QC培训课件
- 西气东输计量交接凭证填报培训PPT-场站课件
- 中国特色社会主义理论与实践研究知识点整理及思考题答案
- 《居家养老服务问题及对策探究【论文】6000字》
评论
0/150
提交评论