搜档网
当前位置:搜档网 › 成功实现手机蓝牙控制智能小车机器人!视频+程序源代码(Android)

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

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

上次成功实现了通过笔记本电脑蓝牙来控制智能小车机器人的运动,但是通过电脑控制毕竟不方便,于是乎~本人打算将控制程序移植到手机上。

目前主流的手机操作系统有塞班、安卓(Android)、Windows Mobile,对比了一下,首先,塞班是用C++写的,这么多门语言我唯独看到C++就头大···,放弃了···,Windows Moblie 其实和之前发的电脑端程序基本是一样的,也就没什么意思了,最后决定选择目前正火的Android手机作为控制平台。

Android是个开源的应用,使用Java语言对其编程。于是这次的开发我选用Eclipse作为开发工具,用Java语言开发手机端的控制程序,由于之前对Android的蓝牙通信这块涉及不多,一开始感觉有点小茫然,而网上也少有这方面的例程,有少数人做出了类似的东西,但是只传了个视频装X!雪特····

经过几天的研究,最终确定了手机蓝牙通信其实就是Socket编程,再经过一番编写和调试,昨晚终于大功告成!

这是视频:

下面开始介绍Android手机端控制程序的编写:

首先打开Eclipse,当然之前的Java开发环境和安卓开发工具自己得先配置好,这里就不多说了,网上教程一大摞。

然后新建一个Android项目,修改布局文件main.xml,代码如下:

android:id="@+id/widget0"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

xmlns:android="https://www.sodocs.net/doc/0d19238304.html,/apk/res/android"

>

android:id="@+id/btnF"

android:layout_width="100px"

android:layout_height="60px"

android:text="前进"

android:layout_x="130px"

android:layout_y="62px"

>

android:id="@+id/btnL"

android:layout_width="100px"

android:layout_height="60px"

android:text="左转"

android:layout_x="20px"

android:layout_y="152px"

>

android:id="@+id/btnR"

android:layout_width="100px"

android:layout_height="60px"

android:text="右转"

android:layout_x="240px"

android:layout_y="152px"

>

android:id="@+id/btnB"

android:layout_width="100px"

android:layout_height="60px"

android:text="后退"

android:layout_x="130px"

android:layout_y="242px"

>

android:id="@+id/btnS"

android:layout_width="100px"

android:layout_height="60px"

android:text="停止"

android:layout_x="130px"

android:layout_y="152px"

>

这个布局文件的效果就是如视频中所示的手机操作界面。

然后是权限声明,这一步不能少,否则将无法使用安卓手机的蓝牙功能。权限声明如下:

打开AndroidManifest.xml文件,修改代码如下:

package="com.ThinBTClient.www"

android:versionCode="1"

android:versionName="1.0">

android:label="@string/app_name">

其中红色、加粗部分就是要添加的权限声明。

然后编写Activity中的执行代码,这些代码的作用就是发送指令,控制小车的运动。

代码如下:

package com.ThinBTClient.www;

import android.app.Activity;

import android.os.Bundle;

import java.io.IOException;

import java.io.OutputStream;

import java.util.UUID;

import android.app.Activity;

import android.bluetooth.BluetoothAdapter;

import android.bluetooth.BluetoothDevice;

import android.bluetooth.BluetoothSocket;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.os.Bundle;

import https://www.sodocs.net/doc/0d19238304.html,monDataKinds.Event;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

public class ThinBTClient extends Activity {

private static final String TAG = "THINBTCLIENT";

private static final boolean D = true;

private BluetoothAdapter mBluetoothAdapter = null;

private BluetoothSocket btSocket = null;

private OutputStream outStream = null;

Button mButtonF;

Button mButtonB;

Button mButtonL;

Button mButtonR;

Button mButtonS;

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

private static String address = "00:11:03:21:00:43"; // <==要连接的蓝牙设备MAC 地址

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.sodocs.net/doc/0d19238304.html,yout.main);

//前进

mButtonF=(Button)findViewById(R.id.btnF);

mButtonF.setOnTouchListener(new Button.OnTouchListener(){ @Override

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

String message;

byte[] msgBuffer;

int action = event.getAction();

switch(action)

{

case MotionEvent.ACTION_DOWN:

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

message = "1";

msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

break;

case MotionEvent.ACTION_UP:

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

message = "0";

msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

break;

}

return false;

}

});

//后退

mButtonB=(Button)findViewById(R.id.btnB);

mButtonB.setOnTouchListener(new Button.OnTouchListener(){ @Override

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

String message;

byte[] msgBuffer;

int action = event.getAction();

switch(action)

{

case MotionEvent.ACTION_DOWN:

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

message = "3";

msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

break;

case MotionEvent.ACTION_UP:

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

message = "0";

msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

break;

}

return false;

}

});

//左转

mButtonL=(Button)findViewById(R.id.btnL);

mButtonL.setOnTouchListener(new Button.OnTouchListener(){

@Override

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

String message;

byte[] msgBuffer;

int action = event.getAction();

switch(action)

{

case MotionEvent.ACTION_DOWN:

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

message = "2";

msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

break;

case MotionEvent.ACTION_UP:

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

message = "0";

msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

break;

}

return false;

}

});

//右转

mButtonR=(Button)findViewById(R.id.btnR);

mButtonR.setOnTouchListener(new Button.OnTouchListener(){ @Override

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

String message;

byte[] msgBuffer;

int action = event.getAction();

switch(action)

{

case MotionEvent.ACTION_DOWN:

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

message = "4";

msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

break;

case MotionEvent.ACTION_UP:

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

message = "0";

msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

break;

}

return false;

}

});

//停止

mButtonS=(Button)findViewById(R.id.btnS);

mButtonS.setOnTouchListener(new Button.OnTouchListener(){ @Override

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

if(event.getAction()==MotionEvent.ACTION_DOWN)

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

String message = "0";

byte[] msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

return false;

}

});

if (D)

Log.e(TAG, "+++ ON CREATE +++");

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (mBluetoothAdapter == null) {

Toast.makeText(this, "Bluetooth is not available.", Toast.LENGTH_LONG).show();

finish();

return;

}

if (!mBluetoothAdapter.isEnabled()) {

Toast.makeText(this, "Please enable your Bluetooth and re-run

this program.", Toast.LENGTH_LONG).show();

finish();

return;

}

if (D)

Log.e(TAG, "+++ DONE IN ON CREATE, GOT LOCAL BT ADAPTER +++");

}

@Override

public void onStart() {

super.onStart();

if (D) Log.e(TAG, "++ ON START ++");

}

@Override

public void onResume() {

super.onResume();

if (D) {

Log.e(TAG, "+ ON RESUME +");

Log.e(TAG, "+ ABOUT TO ATTEMPT CLIENT CONNECT +");

}

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);

try {

btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Socket creation failed.", e);

}

mBluetoothAdapter.cancelDiscovery();

try {

btSocket.connect();

Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.");

} catch (IOException e) {

try {

btSocket.close();

} catch (IOException e2) {

Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2);

}

}

// Create a data stream so we can talk to server.

if (D)

Log.e(TAG, "+ ABOUT TO SAY SOMETHING TO SERVER +");

/* try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

String message = "1";

byte[] msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

*/

}

@Override

public void onPause() {

super.onPause();

if (D)

Log.e(TAG, "- ON PAUSE -");

if (outStream != null) {

try {

outStream.flush();

} catch (IOException e) {

Log.e(TAG, "ON PAUSE: Couldn't flush output stream.", e);

}

}

try {

btSocket.close();

} catch (IOException e2) {

Log.e(TAG, "ON PAUSE: Unable to close socket.", e2);

}

}

@Override

public void onStop() {

super.onStop();

if (D)Log.e(TAG, "-- ON STOP --");

}

@Override

public void onDestroy() {

super.onDestroy();

if (D) Log.e(TAG, "--- ON DESTROY ---");

}

}

可以看到,在这个程序中我直接把小车蓝牙模块的MAC地址给写进去了,其实更合理一点应该让程序运行后搜索周围蓝牙设备,然后选择需要连接的设备,获取它的MAC地址再连接,但是我为了图省事,就直接把我的小车的蓝牙MAC给定死了(反正也没那么多小车让我遥控~~~),这样一打开程序,手机将自动连接智能小车。

好了,手机端的开发到此介绍完毕~希望能为需要者提供一点帮助。

下一步是打算增加红外避障功能、超声波测距功能,机械手臂,如果有机会,以后再安装上火控系统发射钻天猴~,不过估计时间不太允许了······

最后在此感谢侯金龙童鞋提供了他心爱的Android手机~

基于stm32f4的蓝牙控制小车

ARM-STM32校园创新大赛 项目报告 题目:基于stm32f4的蓝牙控制小车 学校:中南民族大学 指导教师: 视频观看地址:https://www.sodocs.net/doc/0d19238304.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所示:

基于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等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。在研发应用方面取得了重要发展,但是与国际先进还存在一定的差距。无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势。目前在信息家电方面应用正在铺开。各种家电共用遥控,并可组网与公众互联网相接,共享有用信息。目前蓝牙技术实现无线遥控的短板在于传输距离短和芯片

智能机器人设计报告

智能机器人设计报告 参赛者:庆东肖荣于腾飞 班级:级应用电子技术 指导老师:远明 日期:年月日 一、元器件清单: ,,,,,,,蜂鸣器,光敏电阻,光敏三极管,电阻、电容若干,超亮及普通发光管。二、主要功能: 本设计按要求制作了一个简易智能电动车,它能实现的功能是:从起跑线出发,沿引导线到达点。在此期间检测到铺设在白纸下的薄铁片,并实时存储、显示在“直道区”检测到的薄铁片数目。电动车到达点以后进入“弯道区”,沿圆弧引导线到达点继续行驶,在光源的引导下,利用轻触开关传来的电信号通过障碍区进入停车区并到达车库,完成上述任务后能够立即停车,全程行驶时间越少越好。 本寻迹小车是以有机玻璃为车架,单片机为控制核心,加以减速电机、光电传感器、光敏三极管、轻触开关和电源电路以及其他电路构成。系统由通过口控制小车的前进后退以及转向。寻迹由超亮发光二极管及光敏电阻完成,避障由轻触开关完成,寻光由光敏三极管完成。 并附加其他功能: .声控启动 .数码显示 .声光报警 三、主体设计 车体设计 左右两轮分别驱动,后万向轮转向的方案。为了防止小车重心的偏移,后万向轮起支撑作用。对于车架材料的选择,我们经过比较选择了有机玻璃。用有机玻璃做的车架比塑料车架更加牢固,比铁制小车更轻便,美观。而且裁减比较方便! 电机的固定采用的是铝薄片加螺丝固定,非常牢固,且比较美观。 轮子方案 在选定电机后,我们做了一个万向轮,万向轮的高度减去电机的半径就是驱动轮的半径。轮子用有机玻璃裁出来打磨光华的,上面在套上自行车里胎,以防止打滑。 万向轮 当小车前进时,左右两驱动轮与后万向轮形成了三点结构,这种结构使得小车在前进时比较平稳。

蓝牙串口通信遥控小车

蓝牙串口通信遥控小车

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

蓝牙串口通信遥控小车 目录 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

单片机蓝牙控制小车

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

目录 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:主要做消费市场——手机

人工智能原理及其应用(王万森)第3版 课后习题答案

第1章人工智能概述课后题答案 1.1什么是智能?智能包含哪几种能力? 解:智能主要是指人类的自然智能。一般认为,智能是是一种认识客观事物和运用知识解决问题的综合能力。 智能包含感知能力,记忆与思维能力,学习和自适应能力,行为能力 1.2人类有哪几种思维方式?各有什么特点? 解:人类思维方式有形象思维、抽象思维和灵感思维 形象思维也称直感思维,是一种基于形象概念,根据感性形象认识材料,对客观对象进行处理的一种思维方式。 抽象思维也称逻辑思维,是一种基于抽象概念,根据逻辑规则对信息或知识进行处理的理性思维形式。 灵感思维也称顿悟思维,是一种显意识与潜意识相互作用的思维方式。 1.3什么是人工智能?它的研究目标是什么? 解:从能力的角度讲,人工智能是指用人工的方法在机器(计算机)上实现智能;从学科的角度看,人工智能是一门研究如何构造智能机器或智能系统,使它能模拟、延伸和扩展人类智能的学科。 研究目标: 对智能行为有效解释的理论分析; 解释人类智能; 构造具有智能的人工产品; 1.4什么是图灵实验?图灵实验说明了什么? 解:图灵实验可描述如下,该实验的参加者由一位测试主持人和两个被测试对象组成。其中,两个被测试对象中一个是人,另一个是机器。测试规则为:测试主持人和每个被测试对象分别位于彼此不能看见的房间中,相互之间只能通过计算机终端进行会话。测试开始后,由测试主持人向被测试对象提出各种具有智能性的问题,但不能询问测试者的物理特征。被测试对象在回答问题时,都应尽量使测试者相信自己是“人”,而另一位是”机器”。在这个前提下,要求测试主持人区分这两个被测试对象中哪个是人,哪个是机器。如果无论如何更换测试主持人和被测试对象的人,测试主持人总能分辨出人和机器的概率都小于50%,则认为该机器具有了智能。 1.5人工智能的发展经历了哪几个阶段? 解:孕育期,形成期,知识应用期,从学派分立走向综合,智能科学技术学科的兴起

(完整)基于Android的蓝牙遥控小车设计

(完整)基于Android的蓝牙遥控小车设计 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)基于Android的蓝牙遥控小车设计)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)基于Android的蓝牙遥控小车设计的全部内容。

成绩评定表 课程设计任务书

阐述一种通过手机蓝牙遥控小车行走的软、硬件设计.手机蓝牙作为客户端,小车上的蓝牙模块HC—05作为服务端。客户端采用Eclipse开发环境,J2ME编程,服务端采用单片机控制。双方通过串口仿真协议进行通信,单片机驱动直流电机控制小车行动。实验结果

表明,小车可以接收手机遥控信号并灵活地进行前行、倒退、左转、右转和停止等功能。 关键词: 89c52,hc—05,遥控小车,Andriod 目录 1引言 (1) 1。1课题设计目的及意义 (1) 1。1。1设计的目的 (1) 1.1.2设计的意义 (1) 2 方案比较与论证 (2) 2。1无线单元方案与比较 (2) 3 硬件电路设计 (3) 3。1 总体设计 (3) 3.2 单片机模块 (4) 3.2。1 STC89C52简介 (4) 3.2。2 L298N驱动模块及原理介绍 (5) 3。2.3 蓝牙模块 (6) 4 软件设计 (6) 4。1 智能车运动控制程序 (6) 4。2 Android蓝牙客户端设计与实现 (7) 4。2。1 客户端界面设计 (8)

精品-智能机器人设计与制作word

智能机器人的设计与制作WORD版本可编辑

智能机器人的设计与制作 引言 近几年机器人已成为高技术领域内具有代表性的战略目标。机器人技术的出现和发展,不但使传统的工业生产面貌发生根本性变化,而且将对人类社会产生深远的影响。随着社会生产技术的飞速发展,机器人的应用领域不断扩展。从自动化生产线到海洋资源的探索,乃至太空作业等领域,机器人可谓是无处不在。目前机器已经走进人们的生活与工作,机器人已经在很多的领域代替着人类的劳动,发挥着越来越重要的作用,人们已经越来越离不开机器人帮助。机器人工程是一门复杂的学科,它集工程力学、机械制造、电子技术、技术科学、自动控制等为一体。目前对机器人的研究已经呈现出专业化和系统化,一些信息学、电子学方面的先进技术正越来越多地应用于机器人领域。目前机器人行业的发展与30 年前的电脑行业极为相似。今天在汽车装配线上忙碌的一线机器人,正是当年大型计算机的翻版。而机器人行业的利基产品也同样种类繁多,比如协助医生进行外科手术的机械臂、在伊拉克和阿富汗战场上负责排除路边炸弹的侦察机器人、以及负责清扫地板的家用机器人,还有不少参照人、狗、恐龙的样子制造机器人玩具。舞蹈机器人具有人类外观特征、可爱的外貌、又兼有技术含量,极受青少年的喜爱。我从前年开始机器人方面的研究,在这过程中尝试过很多次的失败,也感受到了无比的乐趣。 图1.1、机器人 1 绪论

机器人技术作为20 世纪人类最伟大的发明之一,自20 世纪60 年代初问世以来,经历40 余年的发展已取得长足的进步。未来的机器人是一种能够代替人类在非结构化环境下从事危险、复杂劳动的自动化机器,是集机械学、力学、电子学、生物学、控制论、计算机、人工智能和系统工程等多学科知识于一身的高新技术综合体。走向成熟的工业机器人,各种用途的特种机器人的多用化,昭示着机器人技术灿烂的明天。 1.1 国内外机器人技术发展的现状 为了使机器人能更好的应用于工业,各工业发达国家的大学、研究机构和大工业企业对机器人系统开发投入了大量的人力财力。在美国和加拿大,各主要大学都设有机器人研究室,麻省理工学院侧重于制造过程机器人系统的研究,卡耐基—梅隆机器人研究所侧重于挖掘机器人系统的研究,而斯坦福大学则着重于系统应用软件的开发。德国正研究开发“MOVE AND PLAY”机器人系统,使机器人操作就像人们操作录像机、开汽车一样。从六十年代开始日本政府实施一系列扶植政策,使日本机器人产业迅速发展起来,经过短短的十几年。到80 年代中期,已一跃而为“机器人王国”。其机器人的产量和安装的台数在国际上跃居首位。按照日本产业机器人工业会常务理事米本完二的说法:“日本机器人的发展经过了60 年代的摇篮期。70 年代的实用期。到80 年代进人普及提高期。” 并正式把1980 年定为产业机器人的普及元年”。开始在各个领域内广泛推广使用机器人。中国机器人的发展起步较晚,1972 年我国开始研制自己的工业机器人。"七五"期间,国家投入资金,对工业机器人及其零部件进行攻关,完成了示教再现式工业机器人成套技术的开发,研制出了喷涂、点焊、弧焊和搬运机器人。1986 年国家高技术研究发展计划(863 计划)开始实施,智能机器人主题跟踪世界机器人技术的前沿,经过几年的研究,取得了一大批科研成果,成功地研制出了一批特种机器人。20 世纪90 年代,我国的工业机器人又在实践中迈进一大步,先后研制出了点焊、装配、喷漆、切割、搬运等各种用途的工业机器人,并实施了一批机器人应用工程,形成了一批机器人产业化基地,为我国机器人产业的腾飞奠定了基础。 1.2 机器人技术的市场应用 机器人融入我们日常生活的步伐有多快?据国际机器人联盟调查,2004 年,全球个人机器人约有200 万台,到2008 年,还将有700 万台机器人投入运行。按照韩国信息通信部的计划,到2013 年,韩国每个家庭都能拥有一台机器人;而日本机器人协会预测,到2025 年,全球机器人产业的“蛋糕”将达到每年500 亿美元的规模(现在仅有50亿美元)。与20 世纪70 年代PC 行业的情况相仿,我们不可能准确预测出究竟哪些用途将推动这个新兴行业进入临界状态。不过看起来,机器人很可能在护理和陪伴老年人的工作上大展宏图,或许还可以帮助残疾人四处走走,并增强士兵、建筑工人和医护人员的体力与耐力。目前,我国从事机器人研发和应用工程的单位200 多家,拥有量为3500 台左右,其中国产占20%,其余都是从日本、美国、瑞典等40 多个国家引进的。2000 年已生产 各种类型工业机器人和系统300 台套,机器人销售额6.74 亿元,机器人产业对国民经济的年收益额为47 亿元,我国对工业机器人的需求量和品种将逐年大幅度增加。1.3 机器人技术的前景展望机器人是人类的得力助手,能友好相处的可靠朋友,将来我们会看到人和机器人会存在一个空间里边,成为一个互相的助手

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

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