基于手机蓝牙的遥控小车的设计与制作
- 格式:doc
- 大小:1.72 MB
- 文档页数:21
蓝牙小车毕业设计蓝牙小车毕业设计在现代科技的快速发展下,我们身边的各种智能设备越来越多。
而作为工程师的我们,不仅需要掌握相关的理论知识,更需要具备实践能力。
因此,在我即将毕业的这个时候,我决定选择一个有挑战性的毕业设计项目——蓝牙小车。
蓝牙小车是一种可以通过蓝牙技术进行遥控的智能车辆。
它不仅可以实现基本的前进、后退、左转、右转等动作,还可以通过手机或其他蓝牙设备进行遥控。
这种小车的设计不仅需要了解电子电路的原理,还需要掌握编程技术,以实现与蓝牙设备的通信。
首先,我需要设计一个电子电路来控制小车的运动。
这个电路主要由电机驱动模块、蓝牙模块、电源模块和微控制器组成。
电机驱动模块用于控制小车的轮子转动,蓝牙模块用于接收来自蓝牙设备的指令,电源模块提供电能给整个系统,而微控制器则负责控制整个电路的运行。
接下来,我需要编写一段代码来实现与蓝牙设备的通信。
这段代码将通过蓝牙模块接收来自手机的指令,并将这些指令转化为电机驱动模块可以理解的信号,从而控制小车的运动。
在编写代码的过程中,我需要了解蓝牙通信的协议和相关的编程语言,以确保代码的正确性和稳定性。
当电路和代码都完成后,我将进行系统的调试和测试。
我会使用手机或其他蓝牙设备来发送指令,观察小车的反应。
如果小车能够按照指令正确地运动,那么说明我的设计和实现是成功的。
如果出现问题,我将通过排除法来找出问题所在,并进行修复。
除了基本的运动控制,我还计划给蓝牙小车添加一些附加功能。
比如,我可以在小车上安装一个摄像头,通过蓝牙设备来实时观察小车周围的情况。
我还可以添加一个避障传感器,以便小车能够自动避开障碍物。
这些附加功能将进一步提升小车的智能化水平。
在整个毕业设计的过程中,我将面临很多挑战和困难。
但是,我相信通过不断学习和努力,我一定能够克服这些困难,并成功完成这个项目。
蓝牙小车毕业设计不仅是对我所学知识的检验,也是对我的能力和创新思维的考验。
通过这个毕业设计项目,我将不仅仅是理论的学习者,更是实践的探索者。
基于安卓蓝牙控制的智能车设计报告设计报告:基于安卓蓝牙控制的智能车一、引言智能车是指在汽车领域中应用了先进的计算机、物联网和传感器等技术的车辆,它可以自动感知周围环境并做出相应的反应。
本设计报告将介绍一种基于安卓蓝牙控制的智能车设计,旨在通过安卓手机与智能车之间建立蓝牙连接,实现对智能车的远程控制。
二、设计思路智能车的设计主要包括硬件设计和软件设计两个部分。
硬件设计主要包括车体结构设计、传感器布置和电路控制等;软件设计主要包括安卓手机应用的开发。
1.硬件设计智能车的车体结构应选择轻便坚固的材料制作,以满足高速行驶过程中的稳定性要求。
车体内部应布置传感器,如红外线传感器和超声波传感器,用于感知车辆周围环境。
此外,智能车还需要安装直流电机和舵机等电路控制元件来实现行驶和转向等功能。
2.软件设计软件设计主要针对安卓手机应用的开发。
首先,应编写安卓手机应用程序,通过蓝牙模块与智能车建立蓝牙连接。
然后,根据用户的指令,向智能车发送相应的控制信号,实现对智能车的远程控制。
同时,可以设计一个用户界面,显示智能车周围环境信息以及智能车的状态。
三、系统功能1.远程控制:通过安卓手机应用与智能车建立蓝牙连接,实现对智能车的远程控制,包括前进、后退、左转、右转等。
2.传感器感知:智能车内置红外线传感器和超声波传感器,可以感知车辆周围的障碍物并做出相应的反应,以避免碰撞。
3.环境信息显示:通过安卓手机应用的用户界面,显示智能车周围环境信息,包括障碍物距离、车速等。
四、系统实现系统实现主要包括软件编程和硬件部署。
1.软件实现首先,编写安卓手机应用程序,包括蓝牙连接的建立和控制信号的发送。
通过安卓手机的蓝牙模块与智能车建立蓝牙连接后,将用户输入的指令通过蓝牙发送给智能车,实现远程控制。
2.硬件实现搭建智能车主体结构,选用轻便坚固的材料,将直流电机和舵机安装在车体上,并连接相应的电路控制模块。
将红外线传感器和超声波传感器布置在车体上,可以接收到周围环境的信号。
如何做一台自己的手机蓝牙遥控车最近很多人问我有关蓝牙遥控车的事情,就在这里统一写一个日志详细说说怎么做吧。
采用模块搭建的方法比较简单。
不费事儿~材料清单:普通遥控车一辆30 元(遥控坏不坏的都行只要电机没问题)蓝牙串口模块一个25 元(电子商务有卖)电烙铁一把价格略,买一把够用好多年(焊锡、松香少量)STC 的单片机一个 4 元(推荐用个STC89C52RC,虽然大点)安卓手机一台带蓝牙价格略L298N 电机驱动模块14 元(电子商务有卖)18650 锂电池2 节15 元(电子商务,最好连电池盒也一起买了。
当然买14500 电池更好,跟5 号电池一样大,直接放在车子的电池盒。
注意电压是3.7V 的)TTL 下载线15 元(用来下载程序到单片机中,算是很常见的一个东西了,没有的话就电子商务吧)电阻电容之类的若干(主要是给单片机做最小系统,不想费劲的话就买个STC89C52RC 的最小系统板10 元)导线若干先上张完成图:动力比较足,用电池压住后轮,不然打滑严重。
思路:手机发送控制指令经蓝牙发送至蓝牙串口模块串口模块把数据通过单片机串口送入单片机单片机处理数据,作出反应,是该前进还是后退介绍下电机驱动模块我们使用的是AB/CD 两组直流电机驱动口。
无视图上的步进电机。
在本次制作中AB 口驱动后轮的电机,控制小车前后动作;CD口驱动前轮方向电机,控制小车左右动作。
信号输入端口inA/inB/inC/inD,给一个高电平+5,就可以驱动相应的电机正反转稍微介绍下STC89C52RCP1.4 接inA,P1.5 接inB,P1.6 接inC,P1.7 接inD。
单片机最小系统要么买个小板子,要么找STC 官网的PDF 看,这里就不。
毕业设计(论文)设计(论文)题目:基于安卓手机蓝牙控制的智能小车设计摘要随着物联网的兴起,Android手机以其独有的开放性优势正在为我们提供更多优质便捷的技术成果。
本课题研究的是基于安卓手机蓝牙控制的智能小车设计,基于手机平台,借助于蓝牙技术,设计和实现了一种无线遥控小车新的解决方案。
设计以手机控制平台、蓝牙通讯模块、电机驱动模块等硬件模块组成的遥控小车。
实现小车的前进、后退、前左转弯、前右转弯、后左转弯、后右转弯等实时控制功能。
为遥控玩具小车的设计提出了一种新的思路,同时可以为将来智能家居的遥控设计提供一定的参考意义。
阐述一种通过手机蓝牙遥控小车行走的软、硬件设计。
手机蓝牙作为客户端,小车上的蓝牙模块HC-06作为服务端。
客户端采用Eclipse开发环境,JAVA编程,服务端采用单片机控制。
双方通过串口进行通信,单片机驱动直流电机控制小车行动。
实验结果表明,小车可以接收手机遥控信号并灵活地进行前行、倒退、左转、右转和停止等功能。
本文介绍了基于安卓手机的蓝牙智能小车控制要实现的功能,接着阐述该系统电路的设计及原理的说明,包括了方案的设计、重要元器件的介绍、电路设计的说明(包括单片机控制电路、电机驱动电路)安卓手机软件界面设计、软件设计流程以及系统的调试。
最后总结了基于安卓的蓝牙智能小车控制设计完成的任务,分析系统出现的不足。
【关键词】Andriod蓝牙智能小车智能手机AT89C52单片机ABSTRACTWith the rise of the Internet of Things, Android phones with its unique advantage of being open for us to provide more quality and convenient technological achievements. The research is based on the Android mobile phone Bluetooth controlled smart car design, based on mobile platforms, by means of Bluetooth technology, design and implementation of a wireless remote control car new solutions. Control platform designed for mobile phones, Bluetooth communication module, motor drive modules and other hardware modules remote control car. Realize the car forward, backward, turn left in front, front right turn after turn left, turn right after the other real-time control functions. For the remote control toy car design presents a new way of thinking, and can for the future smart home remote control designed to provide some reference value.Describes one kind of walking through the phone's Bluetooth remote control car software and hardware design. Bluetooth mobile phone as a client, a small car Bluetooth Module HC-06 as a server. Clients using the Eclipse development environment, JAVA programming, client services using micro-controller. The two sides communicate through the serial port, the microcontroller drive DC motor control car action. Experimental results show that the car can receive mobile phone remote control signals and the flexibility to move forward, backward, turn left, turn right and stop functions.Introduces the based on Andrews's the Bluetooth intelligent trolley control want to achieve the function is trolley be able to forward, backward, turn left, turn right, then expounded that the system circuit design and principle of description, including the program design, it is important components introduction, circuit design Description of (, including SCM control circuit, the motor drive circuit) Andrews mobile phone software interface design, software design flow as well as system debugging. Finally summed up the based on Andrews's the Bluetooth intelligent trolley control design is completed the task of, analysis system appear deficiencies.【Key words】Andriod Bluetooth Intelligent car Smartphone AT89C52 SCM目录前言 (1)第一章绪论 (2)第一节国内外研究现状 (2)第二节发展趋势分析 (4)第三节本章小结 (4)第二章设计方案分析 (5)第一节设计方案分析确定 (5)第二节本章小结 (8)第三章安卓操作系统概述 (9)第一节安卓操作系统发展历史及趋势 (9)第二节 Android开发环境搭建 (9)一、 Android的基本介绍 (9)二、 Android系统构架 (10)三、 Android开发包及其工具的安装和配置 (11)第三节本章小结 (13)第四章系统硬件电路设计 (14)第一节单片机最小系统 (14)第二节电机驱动模块 (17)第三节蓝牙模块 (21)第四节本章小结 (22)第五章系统软件程序设计 (23)第一节主程序设计 (23)第二节手机端程序设计 (25)一、手机界面程序设计 (27)二、手机监听程序设计 (28)第三节本章小结 (29)第六章系统整体的调试 (31)第一节调试的方案 (31)第二节硬件电路调试 (31)一、独立元件的检测 (31)二、单片机最小系统的调试 (33)三、电源电路的测试 (34)四、驱动电路的调试 (34)第三节软件调试 (37)第四节系统整体调试 (38)第五节本章小结 (40)结论 (41)致谢 (43)参考文献 (44)附录 (46)一、英文原文 (46)二、英文翻译 (54)三、源程序 (60)前言遥控小车是玩具市场一种很常见的玩具,但是每个小车都有自己特定的遥控器,原装遥控器坏了很难与其它型号的进行匹配。
智能小车蓝牙控制技术设计方案一、引言智能小车是一种可以通过蓝牙进行远程控制的无人驾驶车辆。
在本设计方案中,我们将介绍智能小车蓝牙控制技术的设计和实现方法。
二、设计目标本设计方案的目标是实现通过蓝牙控制智能小车的前进、后退、转向和停止等功能。
同时,还要保证通信的可靠性和稳定性。
三、硬件设计1.MCU选择我们选择一款性能强大且低功耗的MCU芯片,如STM32系列。
该芯片具有高度集成、高性能和低功耗的特点,适合用于嵌入式系统的设计。
2.传感器智能小车需要依靠传感器来获取周围环境信息,以实现自主导航和避障功能。
常用的传感器包括红外线传感器、超声波传感器等。
这些传感器将与MCU进行连接,提供实时数据。
3.电机驱动为实现小车的运动控制,我们需要选择合适的电机驱动器件。
DC电机驱动器件常用的有L298N、L293D等,可以方便地控制电机的运动方向和速度。
4.蓝牙模块我们需要选择一款蓝牙模块,实现小车与远程设备的通信。
常用的蓝牙模块包括HC-05、HC-06等,它们可以通过串口与MCU进行通信。
四、软件设计1.系统架构我们将使用C语言编写嵌入式系统的固件代码,实现小车的运动控制、通信和传感器数据的处理等功能。
固件代码将运行在MCU上,通过与蓝牙模块和传感器的交互,实现智能小车的控制和数据处理。
2.蓝牙通信协议为了实现蓝牙控制功能,我们需要定义一套通信协议。
例如,可以通过串口发送指令来控制小车的运动,如前进、后退、左转、右转和停止等指令。
同时,小车也需要可以向远程设备发送传感器数据,如距离、温度等信息。
3.控制算法小车的运动控制算法可以根据具体的需求进行设计。
例如,可以根据传感器数据判断小车是否遇到障碍物,并进行相应的避障动作。
同时,还可以根据远程设备传输的指令实现运动控制。
五、测试和优化在完成硬件和软件设计后,我们需要对设计的智能小车进行测试并进行优化。
首先,我们可以通过调试工具和调试指令来验证代码的正确性。
然后,我们可以通过模拟实际场景来测试小车的功能和性能,例如在不同的地形和环境下测试小车的运动控制和避障功能。
基于手机蓝牙的遥控小车的设计与制作200446《通信原理课程设计》任务书设计题目:基于手机蓝牙的遥控小车的设计与制作《通信原理课程设计》任务书3.主要参考文献:[1]樊昌信.通信原理(第6版)[M].北京:电子工业出版社,2012,12.[2]樊昌信,曹丽娜 .通信原理教程(第3版)[M].北京:国防工业出版社,2006,9.[3]刘学勇 .详解MATLAB/Simulink通信系统建模与仿真[M].北京:电子工业出版社,2011,11.[4]张水英 ,徐伟强 .通信原理及MATLAB/Simulink仿真[M].北京:人民邮电出版社,2012,9.[5]赵鸿图,茅艳 .通信原理MATLAB仿真教程[M].北京:人民邮电出版社,2010,11.[6]赵静 ,张瑾 .基于MATLAB的通信系统仿真[M].北京:北京航空航天大学出版社,2010,1.[7]赵谦 .通信系统中MATLAB基础与仿真应用[M].西安:西安电子科技大学出版社,2010,3.[8]段吉海 ,黄智伟. 基于CPLD/FPGA的数字通信系统建模与设计[M].北京:电子工业出版社,2004,8.[9]赵全利,肖兴达 . 单片机原理及应用教程[M].北京: 机械工业出版,2007, 6.[10]金纯 ,林金朝. 蓝牙协议及其源代码分析[M].北京: 国防工业出版社,2006, 6.[11]黄智伟 .基于NI Multisim的电子电路计算机仿真设计与分析(修订版)[M].北京:电子工业出版社,2011, 6.[12]孙屹 ,戴妍峰 . SystemView通信仿真开发手册[M].北京:国防工业出版社,2004,11.[13]刘斌.JavaME使用详解——用Eclipse进行移动开发[M].北京: 电子工业出版社,2007,2.4.课程设计工作进度计划:序号起迄日期工作内容1 2015.5.5 系统方案设计2 2015.5.10 利用EDA软件进行仿真设计,软件设计3 2.15.6.1 硬件设计、调试和测量,排除故障,分析实验结果4 2015.6.25 整理设计报告指导教师李圣日期:2015年 5 月5日《通信原理课程设计》设计说明书格式一、纸张和页面要求A4纸打印;页边距要求如下:页边距上下各为2.5 厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。
策划书蓝牙遥控小车3篇篇一《蓝牙遥控小车策划书》一、项目背景随着科技的不断发展,遥控小车已经成为了一种非常受欢迎的玩具和工具。
传统的遥控小车通常使用红外线或无线电波进行控制,但是这些控制方式存在一些局限性,例如控制距离较短、容易受到干扰等。
蓝牙技术的出现为遥控小车的控制提供了一种新的解决方案。
蓝牙技术具有控制距离远、抗干扰能力强、功耗低等优点,可以实现更加稳定和可靠的遥控控制。
因此,我们计划开发一款基于蓝牙技术的遥控小车,以满足市场需求。
二、项目目标1. 开发一款基于蓝牙技术的遥控小车,实现远程控制、自动避障、路径规划等功能。
2. 提高遥控小车的控制精度和稳定性,使其能够在复杂的环境中稳定运行。
3. 降低遥控小车的成本,提高其性价比,使其能够被更广泛的用户所接受。
三、项目内容1. 硬件设计:主控芯片:选择一款高性能、低功耗的微控制器作为主控芯片,如STM32F103C8T6。
蓝牙模块:选择一款高性能、低功耗的蓝牙模块,如 HC-05。
电机驱动模块:选择一款高性能、低功耗的电机驱动模块,如 L298N。
传感器模块:选择一款高性能、低功耗的传感器模块,如超声波传感器、红外传感器等。
电源模块:选择一款高性能、低功耗的电源模块,如 18650 锂电池。
2. 软件设计:操作系统:选择一款实时操作系统,如 FreeRTOS。
蓝牙通信协议:选择一款蓝牙通信协议,如 SPP 协议。
电机控制算法:选择一款电机控制算法,如 PID 算法。
传感器数据处理算法:选择一款传感器数据处理算法,如卡尔曼滤波算法。
路径规划算法:选择一款路径规划算法,如 A算法。
3. 机械设计:车身结构:设计一款结构简单、坚固耐用的车身结构,以提高遥控小车的稳定性和可靠性。
车轮设计:设计一款高性能、低阻力的车轮,以提高遥控小车的行驶速度和灵活性。
悬挂系统:设计一款高性能、低噪音的悬挂系统,以提高遥控小车的行驶舒适性和稳定性。
四、项目进度1. 第一阶段:需求分析和方案设计([开始时间 1]-[结束时间 1])完成项目的需求分析和方案设计。
基于安卓手机蓝牙控制的智能小车设计智能小车是一种集成了多种智能技术的机械装置,可以通过蓝牙控制进行操作。
本文将基于安卓手机蓝牙控制的智能小车设计进行详细介绍。
1.设计背景和目标智能小车是近年来智能家居和物联网技术的热门应用之一、本设计旨在通过安卓手机蓝牙控制,实现对小车的远程操控,并能够获取小车的状态数据。
2.硬件设计本设计所需的硬件主要有:安卓手机、Arduino控制器、蓝牙模块、直流电机和车轮。
2.1 Arduino控制器Arduino控制器作为智能小车的主控,负责接收蓝牙模块发送的指令,并控制直流电机完成相应的运动。
2.2蓝牙模块蓝牙模块负责与安卓手机进行通信。
当用户在手机上发送指令时,蓝牙模块将指令通过串口发送给Arduino控制器。
2.3直流电机和车轮直流电机是智能小车的推动力源,通过车轮将电机的转动转化为小车的运动。
可以根据实际需要选择单个电机或多个电机的配置。
3.软件设计本设计主要涉及两个方面的软件设计:安卓手机控制应用和Arduino控制程序。
3.1安卓手机控制应用安卓手机控制应用是用户与智能小车交互的界面。
用户可以通过应用界面发送指令给小车,控制其前进、后退、转向等行为。
应用还可以显示小车的实时状态数据,例如电池电量、速度等。
3.2 Arduino控制程序Arduino控制程序是小车的控制逻辑,通过与蓝牙模块的通信接收指令,并控制直流电机完成相应的动作。
可以根据用户指令的不同,控制电机正转、反转或停止。
4.系统功能本设计的智能小车主要具备以下功能:1)远程控制:通过安卓手机控制应用,用户可以远程控制小车的行动。
2)实时数据显示:应用可以显示小车的实时状态数据,方便用户了解小车的工作状态。
3)电量提醒:当小车的电池电量低于设定值时,应用将会提醒用户及时充电。
4)编程扩展性:用户可以通过简单的编程方式扩展小车的功能,例如添加避障传感器、红外遥控等模块。
5)兼容性:本设计兼容大多数安卓手机,并且可以与其他智能设备进行蓝牙通信。
目录1、设计目标2、设计背景3、设计内容4、实验方案5、系统软/硬件设计6、任务分配7、收获体会8、参考文献9、附件一、设计目标设计出一款“基于手机蓝牙技术的遥控小车”二、设计背景遥控小车起源于美国,由于政府对无线遥控小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在遥控小车技术上占据着明显优势。
我国的无线遥控小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。
在研发应用方面取得了重要发展,但是与国际先进还存在一定的差距。
无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势。
目前在信息家电方面应用正在铺。
遥控小车起源于美国,由于政府对无线遥控小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在遥控小车技术上占据着明显优势。
我国的无线遥控小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。
在研发应用方面取得了重要发展,但是与国际先进还存在一定的差距。
无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势。
目前在信息家电方面应用正在铺开。
各种家电共用遥控,并可组网与公众互联网相接,共享有用信息。
目前蓝牙技术实现无线遥控的短板在于传输距离短和芯片价格高方面。
随着科技发展,这些问题正在逐步得以解决。
无线遥控机器人有着广阔的应用前景,但是目前国内的无线系统在传输可靠性、传输速度、抗干扰能力等方面仍有不足,亟待提高。
三、设计内容(1)利用安卓系统手机的蓝牙功能,配备车载的蓝牙装置,建立无线通信;(2)自行设计驱动电路并配备蓝牙模块,实现手机蓝牙遥控小车的进退与转向运动(10米范围内实现蓝牙连接,20米范围内均可操作)。
做到操作准确、响应迅速,实现无线遥控小车运动的设计要求;(3)启动手机主控软件,操作手机搜索车载蓝牙模块,搜索到用手机向单片机发送一个确认连接指令,单片机接收到指令以后进行自检并返回给手机一个应答信号,手机再确认连接,通讯建立,再可通过手机向小车发出进退与转向命令;(4)单片机对接收到的指令进行处理,而后启动相应电机动作实现命令内容。
南华大学电气工程学院《通信原理课程设计》任务书设计题目:基于手机蓝牙的遥控小车的设计与制作专业:电子信息工程学生姓名: 陈鹏学号: 20124470115 学生姓名: 唐愉晶学号: 20124470107 学生姓名: 任凯学号: 20124470122 学生姓名: 赵江哲学号: 20124470125 学生姓名: 陈熙学号: 20124470120 学生姓名: 陈方方学号: 20124470105 起迄日期:2015年5月5日指导教师:李圣副教授系主任:陈忠泽教授《通信原理课程设计》任务书3.主要参考文献:[1]樊昌信.通信原理(第6版)[M].北京:电子工业出版社,2012,12.[2]樊昌信,曹丽娜 .通信原理教程(第3版)[M].北京:国防工业出版社,2006,9.[3]刘学勇 .详解MATLAB/Simulink通信系统建模与仿真[M].北京:电子工业出版社,2011,11.[4]张水英 ,徐伟强 .通信原理及MATLAB/Simulink仿真[M].北京:人民邮电出版社,2012,9.[5]赵鸿图,茅艳 .通信原理MATLAB仿真教程[M].北京:人民邮电出版社,2010,11.[6]赵静 ,张瑾 .基于MATLAB的通信系统仿真[M].北京:北京航空航天大学出版社,2010,1.[7]赵谦 .通信系统中MATLAB基础与仿真应用[M].西安:西安电子科技大学出版社,2010,3.[8]段吉海 ,黄智伟. 基于CPLD/FPGA的数字通信系统建模与设计[M].北京:电子工业出版社,2004,8.[9]赵全利,肖兴达 . 单片机原理及应用教程[M].北京: 机械工业出版,2007, 6.[10]金纯 ,林金朝. 蓝牙协议及其源代码分析[M].北京: 国防工业出版社,2006, 6.[11]黄智伟 .基于NI Multisim的电子电路计算机仿真设计与分析(修订版)[M].北京:电子工业出版社,2011, 6.[12]孙屹 ,戴妍峰 . SystemView通信仿真开发手册[M].北京:国防工业出版社,2004,11.[13]刘斌.JavaME使用详解——用Eclipse进行移动开发[M].北京: 电子工业出版社,2007,2.4.课程设计工作进度计划:序号起迄日期工作内容1 2015.5.5 系统方案设计2 2015.5.10 利用EDA软件进行仿真设计,软件设计3 2.15.6.1 硬件设计、调试和测量,排除故障,分析实验结果4 2015.6.25 整理设计报告指导教师李圣日期:2015年 5 月5日附件:《通信原理课程设计》设计说明书格式一、纸张和页面要求A4纸打印;页边距要求如下:页边距上下各为2.5 厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。
二、说明书装订页码顺序(1)任务书 (2)论文正文 (3)参考文献,(4)附录三、课程设计说明书撰写格式见范例引言(黑体四号)☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(首行缩进两个字,宋体小四号)1☆☆☆☆(黑体四号)正文……(首行缩进两个字,宋体小四号)1.1(空一格)☆☆☆☆☆☆(黑体小四号)正文……(首行缩进两个字,宋体小四号)1.2 ☆☆☆☆☆☆、☆☆☆正文……(首行缩进两个字,宋体小四号)2 ☆☆☆☆☆☆ (黑体四号)正文……(首行缩进两个字,宋体小四号)2.1 ☆☆☆☆、☆☆☆☆☆☆,☆☆☆(黑体小四号)正文……(首行缩进两个字,宋体小四号)2.1.1☆☆☆,☆☆☆☆☆,☆☆☆☆(楷体小四号)正文……(首行缩进两个字,宋体小四号)(1)……图1. 工作波形示意图(图题,居中,宋体五号)①………………5结论(黑体四号)☆☆☆☆☆☆(首行缩进两个字,宋体小四号)参考文献(黑体四号、顶格)参考文献要另起一页,一律放在正文后,不得放在各章之后。
只列出作者直接阅读过或在正文中被引用过的文献资料,作者只写到第三位,余者写“等”,英文作者超过3人写“et al”。
几种主要参考文献著录表的格式为:⑴专(译)著:[序号]著者.书名(译者)[M].出版地:出版者,出版年:起~止页码.⑵期刊:[序号]著者.篇名[J].刊名,年,卷号(期号):起~止页码.⑶论文集:[序号]著者.篇名[A]编者.论文集名[C] .出版地:出版者,出版者. 出版年:起~止页码.⑷学位论文:[序号]著者.题名[D] .保存地:保存单位,授予年.⑸专利文献:专利所有者.专利题名[P] .专利国别:专利号,出版日期.⑹标准文献:[序号]标准代号标准顺序号—发布年,标准名称[S] .⑺报纸:责任者.文献题名[N].报纸名,年—月—日(版次).附录(居中,黑体四号)☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(首行缩进两个字,宋体小四号)(另起一页。
附录的有无根据说明书(设计)情况而定,内容一般包括正文内不便列出的冗长公式推导、符号说明(含缩写)、计算机程序、整体仿真原理图、系统仿真结果图等。
引言本设计是基于手机蓝牙的遥控小车的设计与制作,蓝牙选择的是android手机的蓝牙,使用的是Eclipse + androidSDK IDE开发环境,使用JA V A语言进行开发。
小车的控制是基于STM32控制器,通过串口接收指令来完成相应的控制。
1手机蓝牙软件设计1.1简介蓝牙:是一种无线技术标准,可实现固定设备,移动设备和楼宇个人域网之间的短距离数据交换(使用2.4-2.485GHz的ISM波段的UHF无线电波)。
蓝牙技术最初由爱立信公司于1994年创立,当时是作为RS232数据线的无线替代方案,蓝牙可连接多个设备,克服了数据同步的难题。
1.2通信协议电缆替代协议(RFCOMM)RFCOMM是基于ETSI-07.10规范的串行线仿真协议。
它在蓝牙基带协议上仿真RS-232控制和数据信号,为使用串行线传送机制的上层协议提供服务。
点对点协议(PPP)在蓝牙技术中,PPP位于PFCOMM上层,完成点对点的连接。
1.3基于android手机的蓝牙设计对android操作系统,在进行蓝牙开发之前需要先获得蓝牙权限。
方法为在AndroidManifest.xml文件中添加<uses-permissio android:name= "android.permission.BLUETOOTH_ADMIN"/> <uses-permission android:name="android.permission.BLUETOOTH"/>然后是对软件界面的开发,使用的是RelativeLayout排布方法;完成图如下UI完成图2 STM32串口通信设计2.1 简介通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。
USART利用分数波特率发生器提供宽范围的波特率选择。
它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。
它还允许多处理器通信。
使用多缓冲器配置的DMA方式,可以实现高速数据通信。
2.2 USART功能概述接口通过三个引脚与其他设备连接在一起(见图248)。
任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。
RX:接收数据串行输。
通过过采样技术来区别数据和噪音,从而恢复数据。
TX:发送数据输出。
当发送器被禁止时,输出引脚恢复到它的I/O端口配置。
当发送器被激活,并且不发送数据时, TX引脚处于高电平。
在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。
●总线在发送或接收前应处于空闲状态●一个起始位●一个数据字(8或9位),最低有效位在前● 0.5, 1.5, 2个的停止位,由此表明数据帧的结束●使用分数波特率发生器—— 12位整数和4位小数的表示方法。
●一个状态寄存器(USART_SR)●数据寄存器(USART_DR)●一个波特率寄存器(USART_BRR), 12位的整数和4位小数●一个智能卡模式下的保护时间寄存器(USART_GTPR)在同步模式中需要下列引脚:●CK:发送器时钟输出。
此引脚输出用于同步传输的时钟, (在Start位和Stop位上没有时钟脉冲,软件可选地,可以在最后一个数据位送出一个时钟脉冲)。
数据可以在RX上同步被接收。
这可以用来控制带有移位寄存器的外部设备(例如LCD驱动器)。
时钟相位和极性都是软件可编程的。
在智能卡模式里, CK 可以为智能卡提供时钟。
在IrDA模式里需要下列引脚:●IrDA_RDI: IrDA模式下的数据输入。
●IrDA_TDO: IrDA模式下的数据输出。
下列引脚在硬件流控模式中需要:● nCTS: 清除发送,若是高电平,在当前数据传输结束时阻断下一次的数据发送。
● nRTS: 发送请求,若是低电平,表明USART准备好接收数据2.3 USART编程设计串口设置的一般步骤可以总结为如下几个步骤:1) 串口时钟使能, GPIO 时钟使能2) 串口复位3) GPIO 端口模式设置4) 串口参数初始化5) 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)6) 使能串口7) 编写中断处理函数其中,中断函数为本设计的关键,我们定义发送的指令以Q结尾,向左转为A,向右转为D,前进为W,后退为S,停止位P,所以下位机的程序流程图为:3 系统调试3.1上位机的调试:刚开始时,蓝牙APP发送的数据不对,经过检查,发现回调函数不对,更改后正常了。
3.2下位机的调试:下载好程序进行硬件调试,在串口中断中设置了断点,可发现当有数据从手机中发送过来时,下位机程序进不到串口中断中,后来发现原来是串口通信的TX与RX线没有接对,刚开始时是天真的以为是TX与TX相连,RX 与RX相连。
对调连线后,下位机程序正常了。
3.3系统总体调试:一切正常,但由于实验空间有限,车子运行起来容易撞墙,所以后来又自己新添加了一个超声波测距模块,这样便能很好的防止车子很快就被损坏。
4 总结要有团队合作精神,这次课设能按标准完成就是团队合作很好的表现。
做任何事都要细心,特别是对于编程来说,你的任何一个不注意的错误可能会让你查一天都查不出来主要参考文献:[1]赵全利,肖兴达 . 单片机原理及应用教程[M].北京: 机械工业出版,2007, 6.[2]樊昌信.通信原理(第6版)[M].北京:电子工业出版社,2012,12.[3]金纯 ,林金朝. 蓝牙协议及其源代码分析[M].北京: 国防工业出版社,2006, 6.[4]刘斌.JavaME使用详解——用Eclipse进行移动开发[M].北京: 电子工业出版社,2007,2.附实物图:附上位机串口中断处理程序:void USART1_IRQHandler(void) //串口1中断服务程序{u16 set_speed;u8 Rx_lenth;u8 Res;u8 get_order;#ifdef OS_TICKS_PER_SEC //如果时钟节拍数定义了,说明要使用ucosII了.OSIntEnter();#endifif(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据是以Q结尾的){Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据if(Res=='Q'){Rx_lenth=USART_RX_STA;if(Rx_lenth<2){get_order=USART_RX_BUF[0];if(get_order=='D'){if(dir<=1870 ){dir+=5;TIM_SetCompare1(TIM4,dir);}else;//right}else if(get_order=='A'){if(dir>=1830 ){dir-=5;TIM_SetCompare1(TIM4,dir);}else;//left}else if(get_order=='S'){if(speed<=3099 ){speed+=500;if(speed>0){GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5);TIM_SetCompare3(TIM1,speed);TIM_SetCompare4(TIM1,speed);}else{.GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5);set_speed=-speed;TIM_SetCompare3(TIM1,set_speed);TIM_SetCompare4(TIM1,set_speed);}}else;//back}else if(get_order=='W'){if(speed>=-3099 ){speed-=500;if(speed>0){GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5);TIM_SetCompare3(TIM1,speed);TIM_SetCompare4(TIM1,speed);}else{GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5);set_speed=-speed;TIM_SetCompare3(TIM1,set_speed);TIM_SetCompare4(TIM1,set_speed);}}else;//forward}else if(get_order=='P'){speed=0;GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5); //急刹TIM_SetCompare3(TIM1,3599);TIM_SetCompare4(TIM1,3599);//stop}else{USART_RX_STA=0;//接收数据错误,重新开始接收}}else{USART_RX_STA=0;//接收数据错误,重新开始接收}}else{USART_RX_BUF[USART_RX_STA]=Res ;USART_RX_STA++;if(USART_RX_STA>(USART_REC_LEN-1)){USART_RX_STA=0;//接收数据错误,重新开始接收}}}附蓝牙程序源码:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageButtonandroid:id="@+id/imageButton2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/imageButton3"android:layout_toRightOf="@+id/imageButton4"android:contentDescription="@string/down"android:src="@drawable/ic_down" /><ImageButtonandroid:id="@+id/imageButton3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/imageButton1"android:layout_toRightOf="@+id/imageButton2"android:contentDescription="@string/right"android:src="@drawable/ic_right" /><ImageButtonandroid:id="@+id/imageButton1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_marginTop="90dp"android:layout_toLeftOf="@+id/imageButton3"android:contentDescription="@string/up"android:src="@drawable/ic_up" /><ImageButtonandroid:id="@+id/imageButton6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/imageButton3"android:layout_below="@+id/imageButton2"android:layout_marginLeft="22dp"android:layout_marginTop="25dp"android:contentDescription="@string/stop"android:src="@drawable/ic_stop" /><ImageButtonandroid:id="@+id/imageButton5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/imageButton4"android:layout_alignTop="@+id/imageButton6"android:contentDescription="@string/bluetooth"android:onClick="onBluetoothButton"android:src="@drawable/ic_bluet" /><ImageButtonandroid:id="@+id/imageButton4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/imageButton1"android:layout_marginLeft="43dp"android:contentDescription="@string/left"android:src="@drawable/ic_left" /></RelativeLayout>获得本地蓝牙的句柄,从而操作手机的蓝牙设备BluetoothAdapter mBtAdapter = BluetoothAdapter.getDefaultAdapter();主要源码public class MainActivity extends Activity {private final static int REQUEST_CONNECT_DEVICE = 1;private final static String MY_UUID = "00001101-0000-1000-8000-00805F9B34FB";BluetoothSocket _Socket = null;BluetoothDevice _device = null;BluetoothSocket _socket = null;boolean _discoveryFinished = false;private TextView text0;//private EditText edit0;//获得本地蓝牙适配器private BluetoothAdapter bAdapter = BluetoothAdapter.getDefaultAdapter();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);//蓝牙打开不成功if(bAdapter == null){Toast.makeText(MainActivity.this, "手机蓝牙打开不啊!大侠确定你手机有蓝牙?,", Toast.LENGTH_LONG).show();finish();return;}new Thread(){public void run(){if(!bAdapter.isEnabled()){Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);int REQUEST_ENABLE = 1;startActivityForResult(enabler,REQUEST_ENABLE );}}}.start();}public void onBluetoothButton(View V){if(!bAdapter.isEnabled()){Toast.makeText(MainActivity.this,"别急!蓝牙打开中...", Toast.LENGTH_LONG).show();return;}//Button BluetoothButton = (Button)findViewById(R.id.imageButton6);if(_Socket == null){Intent serverIntent = new Intent(MainActivity.this, DeviceListActivity.class); //跳转程序设置startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE); //设置返回宏定义}else{try {_Socket.close();_Socket = null;//BluetoothButton.setText("连接");} catch (Exception e) {// TODO: handle exception}}return;}//定义广播接收器private BroadcastReceiver _foundReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) {_device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);;text0.setText("找寻到设备:"+_device.getName());}};private BroadcastReceiver _discoveryReceiver = new BroadcastReceiver() { @Overridepublic void onReceive(Context context, Intent intent){/* 卸载注册的接收器*/unregisterReceiver(_foundReceiver);unregisterReceiver(this);_discoveryFinished = true;}};//连接搜寻服务public void onSearchButtonClicked(View v){IntentFilter discoveryFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);registerReceiver(_discoveryReceiver, discoveryFilter);IntentFilter foundFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);registerReceiver(_foundReceiver, foundFilter);new Thread(){public void run(){//开始搜索bAdapter.startDiscovery();for (;;){if (_discoveryFinished){break;}try{Thread.sleep(100);}catch (InterruptedException e){}}}}.start();text0.setText("正在搜寻设备。