蓝牙小车安卓软件开发

高跟鞋控
620次浏览
2020年01月06日 14:19
最佳经验
本文由作者推荐
android的app用什么软件开发
学校:华南师范大学
学院:物理与电信工程学院
作者:黄世隆
学号:20113100019
指导老师:刘朝辉
使用的蓝牙小车是基于STC89C52RC单片机开发板,蓝牙模块是HC-06,模块端通过USB 转TTL,通过接收安卓手机发来的16进制指令进行运动。安卓软件控制小车的方式有按键控制以及重力感应控制两种。其中按键方式是默认开启的,重力感应控制方式可以自由选择开启与关闭。
关键词:蓝牙小车  安卓软件  重力感应
手机发送的指令格式为四位16进制指令:
上:  1F 00;
下:  2F 00;
左:  3F 00;
右:  4F 00;
在程序中,为了实现成功与小车蓝牙建立连接,要先选用与之相对应的UUID(单片机的UUID为“00001101-0000-1000-8000-00805F9B34FB”)和蓝牙MAC地址(我做使用的为HC-06蓝牙模块,MAC地址为“98:D3:31:B2:18:43”),并且要事先建立配对,获取本地蓝牙适配器,实现连接。成功建立连接之后,采用的通信方式是socket通信。
重力感应控制则是获取手机重力感应的X、Y、Z值(即手机不同摆放方向,例如手机屏幕朝上、朝下、左侧转、右侧转等),判断X、Y、Z值代表的方向,然后往输出流写相应的指令达到控制的效果。
相应的重力控制开启关闭功能是定义一个布尔变量,使之是否能够往输入流写指令。
在测试过程中,发现有些手机正确配对后但无法连接小车,原因不明,可能与手机的硬件有关。对于指令(四位十六进制数)的发送,一次只能发送两位十六进制数,所以需要连续发送两次。重力感应控制功能,由于需要根据不断改变的重力感应值改变指令,单独开启线程发送指令比较复杂,所以直接把发送数据的程序放在了重力感应的监听器里面。
Android开发权威指南 (第二版)  李宁 编著
/blog/echo000001/9500097
/view/
XML文件布局:
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/ky"
tools:context=".MainActivity" >
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_toRightOf="@+id/imageButton1"
android:text="断开连接" />
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/imageButton3"
android:layout_centerHorizontal="true"
android:layout_marginBottom="19dp"
android:src="@drawable/up" />
android:id="@+id/imageButton4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/imageButton5"
android:layout_alignRight="@+id/button2"
android:layout_marginBottom="24dp"
android:src="@drawable/right" />
android:id="@+id/imageButton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/imageButton4"
android:layout_toLeftOf="@+id/button2"
android:src="@drawable/stop" />
android:id="@+id/imageButton5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="39dp"
android:layout_toRightOf="@+id/imageButton2"
android:src="@drawable/down" />
android:id="@+id/imageButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageButton1"
android:layout_marginRight="18dp"
android:layout_toLeftOf="@+id/imageButton3"
android:src="@drawable/left" />
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/imageButton2"
android:text="建立连接" />