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

    作者:课课家教育更新于: 2016-04-08 10:01:12

      嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有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平台嵌入式开发的蓝牙智能控制终端步骤,学习是要多做写笔记,多回来记忆,理解透。

课课家教育

未登录