下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Android平台嵌入式开发的蓝牙智能控制终端

作者:课课家教育     来源: http://www.kokojia.com点击数:1288发布时间: 2016-04-08 10:01:12

标签: Android平台嵌入式开发Android

  嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,Linux,Android等。另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm11,powerpc,mips,mipsel等,或加上操作系统也属于嵌入式的开发。Android平台上的嵌入式开发是工程师必备的技术,Android平台上开发最好用的蓝牙控制终端, 支持SMartBar,界面友好美观。

Android平台嵌入式开发的蓝牙智能控制终端_Android平台_嵌入式开发_Android_课课家

 

  本软件时针对电子信息工程、通信工程、自动化等接触硬件较多的专业开发的一款软件,是一款专业软件

  专业方面学习多以硬件为主,安卓开发只是业余爱好。所以软件的问题还请多多包含。

  设计初衷

  在平常开发过程中,调试什么的很不方便,有时候分析数据不得不使用网上下载的上位机,然后将数据上传到电脑上进行分析处理,但是别人开发的软件,往往功能都不符合使用要求,调试起来很不方便。而移动平台的调试软件更是少之又少,而且基本有广告,没广告的界面也丑陋,并且功能单一,像我这种有点强迫症的人是完全不能忍受的。为什么我们这些专业的孩子们没有个像样的专业软件呢,为啥没人开发,好吧我自己来动手好了。

    特色功能

  1.支持以帧形式发送,以帧形式接收,确保数据的无误性。

  2.支持会话模式,方便数据的观看以及调试。

  3.可以自定义帧长,以及帧头和帧尾。

  4.一共19个按钮,下位机接收相应指令,控制相应功能。

  5.支持按钮名称自定义。

  6.一共支持9路数据接收,并绘制曲线图。

  7.数据传输稳定,基本没有丢包情况。

  8.可自定义图以及曲线名称。

  9.支持查看以及存储数据表至SD卡,方便数据分析以及处理,可以将数据导入到电脑用Matlab分析处理。

  10.界面友好美观,无广告,无不良权限。

  11.支持smartbar

  会话功能

  这个主要是用来分析调试数据的(当然,还可以聊天)

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  先看第一个首选项,会有数据格式,你可以自定义帧头、帧尾和数据长度。

  这个大家做过数据传输的应该都熟悉吧。我这里规定帧头和帧尾都是2 字节的字符。

  注意:大家在发送数据的时候记得以字符串的形式发送。之所以用字符串的形式收发。是因为适用性更强。

  比如说:

  用户定义定义帧头:#S

  帧头:E*

  数据长度:6

  那么:

  如果你要发送数字 123 那么你下位机必须发送#S000123E*

  如果你要发送数字 1.23 那么你下位机必须发送#S001.23E*

  如果你要发送数字 -1.23 那么你下位机必须发送#S-01.23E*

  就是你要保证数据长度是6

  你可以用C语言的格式控制吧数据转化成这个形式再发送,

  上位机只需直接将接收的数据直接转化成数字就行了。

  所以你的帧头帧尾中间的数据不能有 '0'~'9' 和 ‘.’ 和 '-' 之外的字符,这个都会被当错错误数据包给过滤掉

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  上面的选项可以选择是否以帧形式接收和发送。

  可以看上面接收的数据,都是一个相同长度的,加了帧头帧尾后数据根本就不会出错

  注意:当你选择为帧接收时,如果下位机不按帧发送数据,安卓将不会有数据显示

  选择为帧发送之后,你发送128,程序为自动将其格式化为你定义的数据格式发送。#S000128E*(帧头#S 帧尾:E* 数据长度:6)

  控制模式

  这个功能说的高大上一点,是可以构建DIY的智能家居

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  这是控制窗口,每个按钮的指令都是固定的,数据,点击按钮后,上面的窗口会有提示消息,也会有发送的指令,下位机可以按发送的指令对数据进行解析就行了。为了保证数据的无误性,每次发送的数据都是有帧头帧尾的。

  上面的11个按钮,每次点击只发送一个指令,而下方的8个按钮,可以用来控制灯的。

  大家可以用下位机可以用蓝牙来接收指令,然后再通过24L01来扩展相应的灯,这样就可以构建一个智能家居控制平台了。

  当然也可以用来控制小车什么的,这么多组按钮,应该能满足大多数的控制需求。

  指令发送格式和上面会话模式一样。

  另外

  可以长按给每个按键单独命名。

  长按消息区,可以清除指令发送消息

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

 数据绘图

  这是将接收的数据绘图,这个数据传输有一点不同的是,数据包中去掉帧头的第一位是绘图通道号

  假如你定义的:

  帧头:#S

  帧尾:E*

  数据长度:6

  比如:

  你要发送的数据是123,并需要将它绘制在图1 上,绘制曲线1

  那么你需要将发送的数据格式定为:

  #S100123E*

  或者你需要将它显示到图1曲线2上,那么就是

  #S200123E*

  对应的:

  图1:

  曲线1:#S100123E*

  曲线2:#S200123E*

  曲线3:#S300123E*

  图2:

  曲线1:#S400123E*

  曲线2:#S500123E*

  曲线3:#S600123E*

  图3:

  曲线1:#S700123E*

  曲线2:#S800123E*

  曲线3:#S900123E*

  如果发送: -1.23

  图1曲线1的数据格式是

  #S1-1.23E*

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  这是在调试飞控,一定会使用的六轴传感器,

  这个是六轴传感器MPU6050传回来的数据,大家在做卡尔曼滤波算法的时候,这个软件将是非常好的,一共可以接收9组数据。

  然后你可以给每个图像及曲线命名的,长按每个数据组就可以弹出设置,曲线名称重启后才生效。

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  然后点击菜单的绘图设置,还可以设置绘图的数据点数

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  然后点击每个数据显示框,会弹出详细的数据表,而且可以以txt形式保存到SD卡,大家如果有必要,可以将数据保存下来,用Matlab分析数据,这是常用的数据处理方法。

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  最后整个功能和使用就介绍完了。

可能存在的问题

  1.本人专业是学习硬件的,安卓也才自学大半个月,程序很多地方都是边百度边写的。所以很多问题还不明白,如果软件存在什么bug,请反馈给我,不要给差评,您的支持就是我最大的动力。

  2.还有安卓布局方面的东西,我感觉真的不好整,网上资料不多,不好学习啊,所以可能排版不佳,请不要见怪。

  3.借了同学的MX3,貌似在切换Tab的时候,输入法不会自动隐藏,好多办法也试过了,实在是不知道怎么解决,请大神能指点。

  实际使用

  file:///C:/Users/DanyWork/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif

  这是我连接的MPU6050六轴传感器,然后通过蓝牙将数据发送回来的,然后我找同学借的3个蓝牙模块,

  有一个蓝牙4.0的HC10模块,4.0的模块,据我同学说,可以配对但是无法建立连接发送数据,然后我试过用我自己的软件也是这样的,从网上下载的其它类似软件也无法建立连接,可以配对成功但是,无法建立连接,貌似是和手机硬件的有一些不兼容,这个蓝牙4.0模块的芯片是TI的CC2540,由于还是学生狗,没办法验证其它的蓝牙4.0模块是否可用。

  另外两个一个是HC05一个是HC06,都是蓝牙2.0模块,都可以建立连接发送数据。然后波特率设置为11520或更高,大多数情况是没有问题的,但是偶尔会出现蓝牙模块数据阻塞的情况,断开重新连接就可以了。淘宝卖家说蓝牙模块串口速度不要调太快。所以这个应该是蓝牙模块的问题。大家不必担心。115200的串口速度基本是可以驾驭大部分的ADC采样数据传输的,再说了数据太快,肯定是不能就只用一个小小的安卓手机的。当然后续会打算继续开发,OTG转串口的调试软件,这个串口速度就可以很快了。

  上位机:帧头:#S 帧尾:E* 数据包长度:6

  我的下位机数据是这样发送的,将printf直接映射到串口上,按这种就可以发送数据了。

去年这个时候自学过20来天的java,本来想学习JAVA,然后再开发安卓软件的,无奈由于实验室比赛的事情搁浅了。后来又对UCOSII感兴趣了,然后安卓开发有搁着了。前些时间吧,刚刚参加完机械大赛,成绩还不错。正心情好的时候,突如其来的事情,让我整个人都不好了。哎哎哎,于是想起了搁浅很久的安卓开发,这不,说干就开始干。

  一开始的时候,说实话很困难,因为和平时的单片机C语言开发,完全不一样,功能太多了,简直不知从何开始,但是自己深知万事开头难嘛,以前学习单片机的时候,也是这么蛋疼过来的,一开始比较困难的是,根本不清楚工程文件结构,比如一开始不知道在Manifest里面注册Activity,甚至为了导入一个开源的包是各种出错,网上各种方法都不行,花了一天时间才搞定这个小问题,这半个月,差不多从早到晚,就为了我写这个软件,反正也好,什么事情都不用想,也就不会心烦了。后来慢慢有了手感之后,就发现开发不是那么难了。

  最后的感叹就是啊,这种高级语言简直强大的可怕,开发速度不是一般的快,之前用C#开发了一个简单的上位机,差不多一个星期就搞定了,而我之前在机械大赛的时候,用单片机在彩屏上写了一个简单的操作界面,总共就3个界面,然后却快把我逼疯了,基本每个图形色块我都要计算像素点坐标,当时本来准备在单片机里面跑UCOSII + UCGUI的,但是由于网上资料很少,当时还不熟悉,又不敢使用,所以放弃使用操作系统了,等做起来之后才发现痛苦了。我必须协调整个操作界面的交互,从此,一定要好好学习嵌入式操作系统,现在完全不敢想象在单片机里面写操作界面了,而同时又感叹安卓里面的强大,一个按钮一拖动就出来了,唉唉唉,以后绝不裸跑单片机。

  其实一开始设计这个软件是为了DIY一个智能家居的,但是最后做成了调试助手。

       这么详细的Android平台嵌入式开发的蓝牙智能控制终端步骤,学习是要多做写笔记,多回来记忆,理解透。

赞(11)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程