搜档网
当前位置:搜档网 › 基于手机蓝牙的遥控小车的设计与制作

基于手机蓝牙的遥控小车的设计与制作

基于手机蓝牙的遥控小车的设计与制作
基于手机蓝牙的遥控小车的设计与制作

南华大学电气工程学院

《通信原理课程设计》任务书

设计题目:基于手机蓝牙的遥控小车的设计与制作

专业:电子信息工程

学生姓名: 陈鹏学号: 20124470115 学生姓名: 唐愉晶学号: 20124470107 学生姓名: 任凯学号: 20124470122 学生姓名: 赵江哲学号: 20124470125 学生姓名: 陈熙学号: 20124470120 学生姓名: 陈方方学号: 20124470105 起迄日期: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文件中添加

然后是对软件界面的开发,使用的是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();

#endif

if(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;//接收数据错误,重新开始接收

}

}

}

附蓝牙程序源码:

android:layout_height="match_parent"

android:orientation="vertical" >

android: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" />

android: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" />

android: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" />

android: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" />

android: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" />

android: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" />

获得本地蓝牙的句柄,从而操作手机的蓝牙设备

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

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.sodocs.net/doc/de18476761.html,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() { @Override

public 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("正在搜寻设备。");

}

//接收活动结果,响应startActivityForResult()

public void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode){

case REQUEST_CONNECT_DEVICE: //连接结果,由DeviceListActivity设置返回

// 响应返回结果

if (resultCode == Activity.RESULT_OK) { //连接成功,由DeviceListActivity设置返回

// MAC地址,由DeviceListActivity设置返回

String address = data.getExtras()

.getString(DeviceListActivity.EXTRA_ DEVICE_ADDRESS);

// 得到蓝牙设备句柄

_device = bAdapter.getRemoteDevice(address);

// 用服务号得到socket

try{

_socket = _device.createRfcommSocketToServiceRecord(UUID.fromString(MY_UUID));

}catch(IOException e){

Toast.makeText(this, "连接失败!", Toast.LENGTH_SHORT).show();

}

//连接socket

Button btn = (Button) findViewById(R.id.imageButton5);

try{

_socket.connect();

Toast.makeText(this, "连接"+_device.getName()+"成功!",

Toast.LENGTH_SHORT).show();

btn.setText("断开");

}catch(IOException e){

try{

Toast.makeText(this, "连接失败!", Toast.LENGTH_SHORT).show();

_socket.close();

_socket = null;

}catch(IOException ee){

Toast.makeText(this, "连接失败!", Toast.LENGTH_SHORT).show();

}

return;

}

}

break;

default:break;

}

}

//连接设备

public void onConenectButtonClicked(View v){

try{

_socket.connect();

text0.setText("成功建立连接,可以发送数据!"+_device.getName());

}catch(IOException e){

//text0.setText(e.toString());

text0.setText("连接失败");

}

}

}

智能小车课程设计

智能循迹小车 【摘要】 本课题是基于低功耗单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以单片机为系统控制处器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 一、实验目的 这次设计智能小车的目的是为了掌握电路设计的方法和技巧。如何将学习到的理论知识运用到实际当中去,怎样能够活学活用,深入的了解电子元器件的使用方法,了解各种元器件的基本用途和方法,能够灵活敏捷的判断电路中出现的故障,学会独立设计电路,积累更多的设计经验,加强焊接能力和技巧,完成基本的要求。并能完美的完成这次实训。 根据老师给的控制要求,和自己的发挥扩充能力,独立的,大胆的去实践,开拓创新,能够将自己的想法体现到实际电路当中去。 二、设计方案 该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片发出控制命令,控制电机的工作状态以实现对小车姿态的控制。 三、各芯片说明 W981216BH-6 一种髙速度同步动态随机存取存储器(SDRAM),具有1M 字(words) *4 层(banks)*16 位(bits)的存储结构组织.传输数据带宽最高达166M 字/秒(-6)。

对SDRAM是否访问是突发导向。在一个页面连续的内存位置可在一个1, 2, 4, 8或整页突发访问时长和行选择组由活动命令。列地址自动生成的SDRAM 的内部计数器在突发运作。随机栏也可以通过阅读在每个时钟周期提供其地址。该多组特性使交织在内部银行隐藏预充电时间。通过让一个可编程的模式寄存器,该系统可以改变突发长度,延时周期,交错或连续突发最大限度地发挥其性能。 W981216BH是在理想的主内存高性能应用。 特征: 1、.3V±0.3V电源 2、截至143 MHz时钟频率 3、2,097,152字×4层×16 位组织 4、自动刷新和自刷新 5、CAS 延时:2和3 6、突发长度:1, 2, 4, 8,和整页 7、突发读,写单人模式 8、自动预充电和预充电控制 9、4K刷新周期/ 64 ms TE28F160C3BD70(快闪记忆体)

基于stm32f4的蓝牙控制小车

ARM-STM32校园创新大赛 项目报告 题目:基于stm32f4的蓝牙控制小车 学校:中南民族大学 指导教师: 视频观看地址:https://www.sodocs.net/doc/de18476761.html,/v_show/id_XNjA3NTE4MzU2.html

题目:基于stm32f4的蓝牙控制小车 关键词:STM32F4 LM2940-5.0 L298N FBT06_LPDB 蓝牙串口通信android 摘要 “基于stm32f4的蓝牙控制小车”是一个基于意法半导体与ARM公司生产的STM32F4 DISCOVERY开发板的集电机驱动模块、电源管理模块、stm32f4主控模块、蓝牙串口通信模块、android控制端模块。电机驱动模块使用了两个L298N 芯片来驱动4路电机,使能端连接4路来自主控板的PWM波信号,8个输入端接主控板的8个输出端口;电源管理模块使用了LM2940-5.0芯片进行12V到5V 的转换,12V用于电机模块的供电,5V用于蓝牙模块、传感器等的供电;主控模块采用了MDK编辑程序,然后下载到主控板,实现硬件与软件的交互;蓝牙串口通信模块则是采用了FBT06_LPDB针插蓝牙模块,与主控板进行串口通信,同时与android手机进行通信;android控制端模块是一个集开启蓝牙、搜索蓝牙、控制小车等功能。用户可以通过android控制端进行控制小车的运动,实现一些用户需要的功能和服务。 1.引言 蓝牙的创始人是瑞典爱立信公司,蓝牙技术是一种无限数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动设备通信环境建立一个特别连接。手机之间通过蓝牙实现数据共享成为常理,将手机变为遥控器为人们的生活带来无限方便。遥控小车在工业、国防、科研等领域应用越来越广泛,例如说:消防遥控小车、探测小车等。本文详细阐述了使用蓝牙通信的手机遥控小车前行、倒退、左转、右转和停止等功能的软硬件设计过程。 2.系统方案 该系统分为电机驱动模块、电源管理模块、主控板、蓝牙通信模块、android 控制端等5个模块,如图2.1所示:

自动循迹小车课程设计

课程报告 课程名称:嵌入式系统与应用项目名称:自动循迹小车院系:理学院 专业:自动化1401 学号:xxxxxxxxxxxxxxxxxxxxx 姓名:xxxxxxxx 指导导师:xxxxxxxx 2017年05月23日 西京学院理学院制

摘要 本次课程设计主要完成基于STM32F103微处理器的智能小车控制系统的系统设计。此智能小车系统的组成主要包括STM32F103控制器、电机驱动电路、红外探测电路。本次试验采用STM32F103微处理器为核心芯片,利用PWM技术对速度进行控制,循迹模块进行黑白检测,其他外围扩展电路实现系统整体功能。实现了智能小车能够自动跟踪地面上的黑色轨迹的任务。 关键字:STM32;红外探测;PWM;电机控制

Abstract This course design mainly completes the system design of intelligent car control system based on STM32F103 microprocessor. The composition of this intelligent car system mainly includes STM32F103 controller, motor drive circuit, infrared detection circuit. This test uses STM32F103 microprocessor as the core chip, the use of PWM technology to control the speed, tracking module for black and white detection, other peripheral expansion circuit to achieve the overall function of the system. To achieve the smart car can automatically track the black track on the ground task. Keywords:STM32;infrared detection;PWM;motor control

蓝牙串口通信遥控小车

蓝牙串口通信遥控小车

————————————————————————————————作者:————————————————————————————————日期:

蓝牙串口通信遥控小车 目录 1系统方案论证及方案选择 2本系统软硬件设计 2.1单元硬件电路设计 2.2软件部分设计 参考文献 附录1原器件清单 附录2电路原理图及印制板图 附录3程序 1. 系统方案论证及方案选择 1.总体设计方案 题目要求设计一个蓝牙串口遥控小车,通过对电机转速的控制,调节速度的大小,改变小车角度,并能实现转弯和旋转。设计主要由主控单片机STC 12C5A60S2驱动直流电机,使车轮工作,带动小车的转动。

2.基本工作原理

3.STC89C52RC有定时器T0 T1 T2,在自动控制领域经常把T1作为串口通信了T0作PWM调速用因此有必要把T2定时器拿出来作定时器作为声音频谱程序。下面介绍T2的用法 STC89C52RC有定时器T2 ?void main(void) ?{ ?/* T2定时器赋预装载值,溢出16次就是1秒。*/ ?RCAP2H=(65536-5000)/256; ?RCAP2L=(65536-5000)%256; ?ET2=1; //允许T2定时器中断 ?EA=1; //打开总中断 ?TR2=1; //启动T2定时器

?while(1); // 死循环,等待T2定时器的溢出中断 ?} ?void Timer2_Server(void) interrupt5 ?{ ?staticuint Timer2_Server_Count; ?// 定义静态变量,用来计数T2定时器的溢出次数(进入本函数的次数) ?TF2=0; ?// T2定时器发生溢出中断时,需要用户自己清除溢出标记,而51的其他定时器是自动清除的 ?Timer2_Server_Count++; ?if(Timer2_Server_Count==16)// T2定时器的预装载值为0x0BDC,溢出16次就是1秒钟。 ?{ ?Timer2_Server_Count=0; ?P1_7=~P1_7; // LED11反转显示。 ?} ?} ?voidTimer2_Server(void)interrupt5

基于单片机的红外遥控小车设计

单片机系统设计实例 红外遥控小车 专业:信息对抗技术 姓名:吴志飞 学号:1411050121 指导教师:张东阳

目录 1 绪论 (1) 2 系统分析 (2) 2.1系统框架 (2) 2.2电机驱动模块 (3) 2.3 LCD显示模块 (4) 3 系统硬件设计 (5) 3.1主控模块的电路设计 (6) 3.1.1AT89C51单片机的简介 (8) 3.1.2AT89C51管脚功能 (8) 3.2红外遥控模块的电路设计 (9) 3.2.1红外遥控的实现原理 (10) 3.2.2红外发射器 (11) 3.2.3红外接收器 (12) 3.3电机驱动模块的电路设计 (12) 3.4显示模块的电路设计 (13) 4 系统软件设计 (14) 4.1程序代码 (14) 4.2软件流程图 (17) 5 调试与仿真 (18) 5.1在keil中进行调试 (18) 5.2在Proteus中进行仿真 (19) 6 总结 (21) 参考文献 (22) I

沈阳理工大学课程设计说明书 1 绪论 随着计算机、微电子、信息技术的快速进步,智能化技术的开发速度越来越快,,智能化程度越来越高,应用范围也越来越广,包括海洋开发、宇宙探测、工农业生产、军事、社会服务、娱乐等各个领域。智能电动小车系统以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科。主要由路径识别、角度控制及车速控制等功能模块组成。同时,当今机器人技术发展的如火如荼,其在国防等众多领域的应用广泛开展。神五、神六升天、无人飞船等等无不得益于机器人技术的迅速发展。一些发达国家已把机器人制作比赛作为创新教育的战略性手段,参加者多数为学生,目的在于通过大赛全面培养学生的动手能力、创造能力、合作能力和进取精神,同时也普及智能机器人的知识。从某种意义上来说,机器人技术反映了一个国家综合技术实力的高低,而智能电动小车是机器人的雏形,它的控制系统的研制将有助于推动智能机器人控制系统的发展,同时为智能机器人的研制提供更有利的手段。 本次课设设计的红外遥控智能小车可以分为四大组成部分:红外遥控部分、显示部分、执行部分、控制部分。智能小车可以实现按遥控指示前行,后退,左转和右转。该设计主要通过对系统硬件电路的设计,软件设计和程序的编写,然后通过后期软硬件调试达到设计初衷。 1

汽车设计课程设计

XX大学 汽车设计课程设计说明书设计题目:轿车转向系设计 学院:X X 学号:XXXXXXXX 姓名:XXX 指导老师:XXX 日期:201X年XX月XX日

汽车设计课程设计任务书 题目:轿车转向系设计 内容: 1.零件图1张 2.课程设计说明书1份 原始资料: 1.整车性能参数 驱动形式4 2前轮 轴距2471mm 轮距前/后1429/1422mm 整备质量1060kg 空载时前轴分配负荷60% 最高车速180km/h 最大爬坡度35% 制动距离(初速30km/h) 5.6m 最小转向直径11m 最大功率/转速74/5800kW/rpm 最大转矩/转速150/4000N·m/rpm 2.对转向系的基本要求 1)汽车转弯行驶时,全部车轮应绕顺时转向中心旋转; 2)操纵轻便,作用于转向盘上的转向力小于200N; 3)转向系的角传动比在15~20之间,正效率在60%以上,逆效率在50%以上;4)转向灵敏; 5)转向器和转向传动机构中应有间隙调整机构; 6)转向系应有能使驾驶员免遭或减轻伤害的防伤装置。

目录 序言 (4) 第一节转向系方案的选择 (4) 一、转向盘 (4) 二、转向轴 (5) 三、转向器 (6) 四、转向梯形 (6) 第二节齿轮齿条转向器的基本设计 (7) 一、齿轮齿条转向器的结构选择 (7) 二、齿轮齿条转向器的布置形式 (9) 三、设计目标参数及对应转向轮偏角计算 (9) 四、转向器参数选取与计算 (10) 五、齿轮轴结构设计 (12) 六、转向器材料 (13) 第三节齿轮齿条转向器数据校核 (13) 一、齿条强度校核 (13) 二、小齿轮强度校核 (15) 三、齿轮轴的强度校核 (18) 第四节转向梯形机构的设计 (21) 一、转向梯形机构尺寸的初步确定 (21) 二、断开式转向梯形机构横拉杆上断开点的确定 (24) 三、转向传动机构结构元件 (24) 第五节参考文献 (25)

单片机蓝牙控制小车

课题:基于单片机得蓝牙控制小车专业: 班级: 学号: 姓名: 指导教师: 设计日期: 成绩: 重庆大学城市科技学院电气信息学院

目录 1、设计目得作用 (2) 2、设计要求.............................................. 23、设计得具体实现?2 3、1设计原理 (2) 3、2系统设计12? 3、3系统实现13? 4、总结19? 参考文献................................................ 20附录 ................................................... 21附录121? 附录22?2

C51蓝牙控制小车设计报告 1设计目得与意义 目得与意义:提高学生动手能力,培养学生得思维,巩固理论知识,让我们能对单片机更加深入得了解,加深同学们对单片机得认识,通过自己动手让小车跑起来还能让同学们更加有积极性,参与感,成就感.让学生们亲自体验这门课程得神奇性。 因为无线技术得广泛使用,使蓝牙技术得发展成为了趋势之一,蓝牙可以发送与接受语音与数据,满足了大多数人得需求,它也融合了其她相关产品得特点,也就是这样技术变得更多样性。实现了无线控制小车,摆脱了有线控制得不方便,更加智能。 2设计要求 SPP蓝牙串口调试助手---—》聊天窗口-—》 1、在Bluetooth_Car项目中添加超声波躲避障碍功能(在小车前进得过程中,实时检测障碍物,一旦检测得距离,接近设定得值,触发蜂鸣器,报警系统工作,小车停止前进); 2、在Bluetooth_Car项目中得串口中断服务函数中,添加小车前进得8个方向 ,前后左右,左前,右前,左后,右后; 3、利用外部中断,强制停止小车运行(无论小车现在处于什么状态),蜂鸣器报警1s后,可再运行; 4、用手机得蓝牙串口调试助手来远程操作小车。 3、设计得具体实现 3、1设计原理 芯片常识: STM8、C52 、STM32 、ARM C52:主要做末端得控制11、0592MHZ STM32:主要做工业控制领域--智能设备168M ARM:主要做消费市场——手机

智能小车设计

2016—2017学年第二学期期末考试《单片机原理及应用*》实践考核 项目设计说明书 专业:电子科学与技术 学号: 20160060156

姓名:张一鸣 2017年6 月14日 考核项目及要求 项目一:电机驱动模块的设计与制作 1.考核要点 (1) 掌握驱动电路的工作原理; (2) 掌握电机驱动的制作方法; (3) 掌握焊接技术; 2.作品要求 学生自行运用工具进行作品的设计制作,作品达到电路连接正确、布局合理、美观整洁。 项目二:单片机最小系统板的设计制作 1.考核要点 (1) 掌握单片机在实际操作中的基本知识; (2) 实验板包括单片机最小系统、蓝牙遥控模块、温度检测模块、液晶模块、 报警模块电路等的设计; (3) 使用Proteus仿真软件绘制实验板所包含的所有模块电路; (4) 熟练使用keil编程软件编写各模块电路的演示程序。 2.作品要求 学生自行运用工具进行作品的设计、仿真及演示,达到正确实现、布局合理、美观整洁。 项目三:智能小车底盘设计 1.考核要点 (1) 理解电机的工作原理; (2) 了解部分机械机构的设计方法; (3) 掌握智能小车的整体安装方法。

2.作品要求 学生独立设计安装,车身结构美观,布局合理,功能实现。 目录 1.功能说明 (1) 1-1.蓝牙无线遥控 (1) 1-2.实时温度显示 (1) 2.硬件设计 (2) 2-1.元器件选择 (2) 2-2.硬件设计原理说明 (4) 3.软件设计 (5) 3-1.程序总体设计 (5) 3-2.程序详细设计 (5) 4.测试与总结 (6) 4-1驱动电路板测试 (6) 4-2控制电路板测试 (6) 4-3最终整体效果 (7) 4-4总结 (7)

循迹小车课程设计

H a r b i n I n s t i t u t e o f T e c h n o l o g y 课程设计说明书(论文) 课程名称:单片机课程设计 设计题目:智能循迹小车 院系:测控技术与仪器系 班级:1001104 设计者:陈哲 学号:1100100534 指导教师:周庆东 设计时间:2013/9/2—2013/9/13 哈尔滨工业大学

哈尔滨工业大学课程设计任务书

开题报告 (一)立项背景 本次的课程设计的主要任务是设计一个能够通过红外对管识别黑线、通过PWM电路模块进行调速跟踪黑色条纹带以及通过LCD液晶模块进行脉冲、速度、PWM的占空比三个参数的显示的智能小车。控制板的设计以16位的MC9S128单片机为控制核心,MC9S12XS128是一款功能强大的16位微控制器,具有非常丰富的片上资源,如:10位精度的ADC,节省了片外AD;强大的定时器,方便对电机进行控制,可以进行浮点型运算。另外还有精密的比较器,大容量的RAM和ROM,可存储大容量的程序。驱动板则以L289N 驱动芯片为核心,应用红外对管和LCD液晶模块,成功的实现小车的循迹、测速、调速和显示功能这四大功能。课题完成了红外对管、单片机、控制板、驱动板选择,采购接口电路的设计和连接以传感器和电路的安装位置和方式的安排,并完成了整个硬件的安装工作。除此之外,还对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成了软件和硬件的融合,基本实现了智能小车要求实现的预期的功能。 为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以选择“基于单片机的智能小车循迹设计”一题作为尝试。 本次设计主要解决问题是如何实现所要求的四大功能,最后完成硬件实物的组装,并编制相关程序,使其实现功能的融合,做出具有预先要求功能的实物。 (二)课题目的 在我们基本掌握了51单片机的基本使用方法的基础之上,本学期开学初,单片机课程设计给了我们更大的挑战,课题的目的有以下几点。 (1)进一步熟练其他更加高级的单片机的使用方法、提高程序的编写能力 (2)掌握单片机系统外扩器件的连接与使用 (3)学会选择合适的传感器来完成任务 (4)掌握软件和硬件调试的基本技巧与方法 (三)设计思路

基于Android的蓝牙遥控小车设计

成绩评定表

课程设计任务书

阐述一种通过手机蓝牙遥控小车行走的软、硬件设计。手机蓝牙作为客户端,小车上的蓝牙模块HC-05作为服务端。客户端采用Eclipse 开发环境,J2ME编程,服务端采用单片机控制。双方通过串口仿真协议进行通信,单片机驱动直流电机控制小车行动。实验结果表明,小车可以接收手机遥控信号并灵活地进行前行、倒退、左转、右转和停止等功能。 关键词:89c52,hc-05,遥控小车,Andriod

目录 1引言 (1) 1.1课题设计目的及意义 (1) 1.1.1设计的目的 (1) 1.1.2设计的意义 (2) 2 方案比较与论证 (2) 2.1无线单元方案与比较 (2) 3 硬件电路设计 (4) 3.1 总体设计 (4) 3.2 单片机模块 (5) 3.2.1 STC89C52简介 (5) 3.2.2 L298N驱动模块及原理介绍 (6) 3.2.3 蓝牙模块 (7) 4 软件设计 (8) 4.1 智能车运动控制程序 (8) 4.2 Android蓝牙客户端设计与实现 (9) 4.2.1 客户端界面设计 (10)

4.2.2 BluetoothCar类设计 (10) 4.2.3 单片机C语言代码 (10) 5 实验结果及分析 (16) 6 心得体会 (17) 参考文献 (17)

1引言 1.1课题设计目的及意义 1.1.1设计的目的 遥控小车起源于美国,由于政府对无线遥控小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在遥控小车技术上占据着明显优势。我国的无线遥控小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。在研发应用方面取得了重要发展,但是与国际先进还存在一定的差距。无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势。目前在信息家电方面应用正在铺。遥控小车起源于美国,由于政府对无线遥控小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在遥控小车技术上占据着明显优势。我国的无线遥控小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。在研发应用方面取得了重要发展,但是与国际先进还存在一定的差距。无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势。目前在信息家电方面应用正在铺开。各种家电共用遥控,并可组网与公众互联网相接,共享有用信息。目前蓝牙技术实现无线遥控的短板在于传输距离短和芯片

循迹小车课程设计报告

南京工程学院 工程基础实验与训练中心 本科课程设计说明书(论文)题目:自动循迹小车 专业: 班级: 学号: 学生姓名: 指导教师: 起迄日期:2012.6.11~2012.7.6 设计地点:工程中心B208

目录 摘要: (4) Abstract (5) 一、系统方案 (6) 1、课设要求: (6) 1.1、完成基本设计功能: (6) 1.2、发挥部分 (6) 2、总体设计 (6) 3、模块方案比较与论证 (7) 3.1、电源模块: (7) 3.2、电机驱动模块: (7) 3.3、传感器模块: (9) 3.4、显示模块: (10) 3.5、测速模块 (12) 二、循迹小车硬件设计 (13) 1、机械设计 (13) 2、小车各模块分布 (13) 3、小车传感器位置排布 (13) 三、循迹小车软件设计 (14) 1、循迹小车主函数流程图 (14) 2、计算路程模块流程图 (14) 3、循迹模块流程图 (16)

四、程序 (18) 五、开发总结与心得 (18) 1、总体方案论证和确立 (18) 2、各分立模块的制作调试 (18) 3、总车的装配调试 (19) 4、总结与展望 (19) 六、参考文献 (19)

课程设计说明书(论文)中文摘要 摘要: 硬件设计:自动循迹小车控制器采用STC89C52单片机,采用LCD1602液晶显示屏显示当前小车速度和里程等数据;电机正反转采用L298N集成电路模块来驱动,也可以直接采用三极管组成桥式驱动电路来控制。里程检测传感器采用霍尔传感器或光电发射接收对管。跑道标志线采用光电发射接收对管检测并使用软件整形消抖措施,电源采用4节7号充电电池供电(在条件允许情况下单片机与电机可使用独立稳压电源供电)。 软件设计:主程序主要任务一方面扫描光电发射接收对管检测到的信号,然后判断小车转向;另一方面主程序还需要完成速度里程显示任务。采用外部中断0来实现小车速度检测,通过光电接收对管或霍尔传感器检测小车转速,小车每转动一周将会使传感器发出一中断申请信号;采用外部中断1来实现金属块检测,传感器选用接近开关,检测到金属后,接近开关将申请中断。 关键词:单片机液晶显示桥式驱动电路主程序

成功实现手机蓝牙控制智能小车机器人!视频+程序源代码(Android)

上次成功实现了通过笔记本电脑蓝牙来控制智能小车机器人的运动,但是通过电脑控制毕竟不方便,于是乎~本人打算将控制程序移植到手机上。 目前主流的手机操作系统有塞班、安卓(Android)、Windows Mobile,对比了一下,首先,塞班是用C++写的,这么多门语言我唯独看到C++就头大···,放弃了···,Windows Moblie 其实和之前发的电脑端程序基本是一样的,也就没什么意思了,最后决定选择目前正火的Android手机作为控制平台。 Android是个开源的应用,使用Java语言对其编程。于是这次的开发我选用Eclipse作为开发工具,用Java语言开发手机端的控制程序,由于之前对Android的蓝牙通信这块涉及不多,一开始感觉有点小茫然,而网上也少有这方面的例程,有少数人做出了类似的东西,但是只传了个视频装X!雪特···· 经过几天的研究,最终确定了手机蓝牙通信其实就是Socket编程,再经过一番编写和调试,昨晚终于大功告成! 这是视频: 下面开始介绍Android手机端控制程序的编写: 首先打开Eclipse,当然之前的Java开发环境和安卓开发工具自己得先配置好,这里就不多说了,网上教程一大摞。 然后新建一个Android项目,修改布局文件main.xml,代码如下: