求教如何制作一个安卓手机蓝牙制作的app程序,用于和单片机上的蓝牙模块,实现数据的传送

求教如何制作一个安卓手机蓝牙制作的app程序,用于和单片机上的蓝牙模块,实现数据的传送,第1张

下位机,用串口和蓝牙模块连接,通信

上位机,安卓app开发用eclipse或者是android studio,蓝牙有相关的函数,,连接,断开,接受,网上大部分代码套着用就行了,,如果需要修改也修改的不多,,主ui界面的时候,不能有进程的占用和其他的一些的线程的 *** 作,所以就得到子线程里面去执行了,还是先学学基础吧,之后再看这些的话,就容易的多了

#include<reg52h>//声明头文件

#define uchar unsigned char//宏定义

#define uint unsigned int//宏定义

sbit deng=P2^0;//定义车灯的控制引脚

sbit z=P2^1;//定义左转向灯的控制引脚

sbit y=P2^2;//定义右转向灯的引脚

sbit BEEP=P2^3;//定义蜂鸣器的引脚

sbit zuo1=P0^0;//定义控制左边电机的单片机引脚

sbit zuo2=P0^1;//定义控制左边电机的单片机引脚

sbit you1=P0^2;//定义控制右边电机的单片机引脚

sbit you2=P0^3;//定义控制右边电机的单片机引脚

uchar a=0;//定义一个变量a,用来读取串口的数据

void delay(uint z)//一个带参数的延时程序

{

int i,j;//定义两个变量

for(i=10;i>0;i--)

for(j=z;j>0;j--);//将参数z赋值给j

}

void init()//初始化子程序

{

TMOD=0x20; //设置定时器T1为工作方式2

TH1=0xfd;

TL1=0xfd; //T1定时器装初值

TR1=1; //启动定时器T1

REN=1; //允许串口接收

SM0=0;

SM1=1; //设置串口工作方式1

EA=1; //开总中断

ES=1; //开串口中断

}

void go()//前进子程序

{

zuo1=0;

zuo2=1;//左边轮子正转

delay(25);//pwm有用值,越大左边方向的轮子越快

zuo1=1;//关闭左边轮子

you1=0;

you2=1; //右边轮子正转

delay(24);//pwm有用值,越大右边的轮子越快

you1=1;//关闭右边轮子

delay(100);//pwm无用值,越大,小车跑的越慢

z=1;

y=1;//关闭转向灯

}

void hui()//小车后退的子程序

{

zuo1=1;

zuo2=0;//左边轮子倒转

delay(25);//pwm有用值,越大左边方向的轮子越快

zuo2=1;//关闭左边轮子

you1=1;

you2=0; //右边轮子倒转

delay(24);//pwm有用值,越大右边的轮子越快

you2=1;//关闭右边轮子

delay(100);//pwm无用值,越大,小车跑的越慢

z=1;

y=1;//关闭转向灯

}

void turnleft()//小车左转弯子程序

{

zuo1=1;

zuo2=1;//左边轮子停止转动

you1=0;

you2=1; //右边轮子正转

delay(24);//pwm有用值,越大右边的轮子越快

you1=1;//右边轮子停止

delay(100);//pwm无用值,越大,小车跑的越慢

z=1;

y=1;//关闭转向灯

z=~z;//左转向灯打开

}

void turnright()//小车右转弯子程序

{

zuo1=0;

zuo2=1;//左边轮子正转

delay(25);//pwm有用值,越大左边方向的轮子越快

zuo1=1;//左边轮子停止

you1=1;

you2=1; //右边轮子停止

delay(100);//pwm无用值,越大,小车跑的越慢

z=1;

y=1;//关闭转向灯

y=~y;//右转向灯打开

}

void down()//停止子程序

{

zuo1=1;

zuo2=1;

you1=1;

you2=1; //左右轮全部停止

z=1;

y=1;//关闭转向灯

}

void onbeep()//蜂鸣器鸣响子程序

{

BEEP=0;

}

void offbeep()//蜂鸣器鸣响子程序

{

BEEP=1;

}

void main()//主程序

{

init();//调用初始化子程序

while(1)//死循环

{

switch(a)//判断a从串口读取到的数据

{

case 0x1f://如果是0x1f就前进

go();

break;

case 0x2f://如果是0x2f就后退

hui();

break;

case 0x3f://如果是0x3f就左转

turnleft();

break;

case 0x4f://如果是0x4f就右转

turnright();

break;

case 0x00://如果是0x00就停止

down();

break;

case 0xa0://如果是0xa0车灯打开

deng=0;

break;

case 0xb0://如果是0xb0车灯关闭

deng=1;

break;

case 0xc0://如果是0xc0蜂鸣器鸣响

onbeep();

break;

case 0xd0://如果是0xc0蜂鸣器鸣响

offbeep();

break;

}

}

}

void chuan() interrupt 4//串口中断服务程序

{

RI=0;//软件清除串口响应

a=SBUF;//读取单片机串口接受的蓝牙模块发送的数据

}

分两种情况,蓝牙模块是做主模式,则需要考虑设备类型码。比如用蓝牙模块BF10,则需要设置设备类型码,自动连接手机,手机蓝牙这边有个小软件。 配对,建立连接之后会形成一个虚拟com口,打开对应com口就能全双工数据通信了。

如果蓝牙模块BF10作为从模块,就更简单,手机找到BF10,建立连接,之后会形成一个虚拟com口,打开对应com口就能全双工数据通信了。

1)单片机与蓝牙模块连接调试好,通常都是通过串口连接;

2)单片机通过蓝牙模块与手机的握手连接及数据传输调试好;

3)单片机如果RAM的容量足够,可以不需要外扩内存,否则就需要外扩内存,以保存更多数据;

蓝牙技术的数据传输以智能医疗为例;现阶段的健康医疗设备通常是可穿戴产品或其它小型物品,以蓝牙技术为基础,比如内置BLE蓝牙模块的体温计,心率计,血糖血压计,温度计,电子秤等,心率计中的心率传感器实时采集心率信息,将采集到的心率数据传输给蓝牙模块SKB378的主控MCU,由MCU计算得到心率值,一方面可以把心率值通过对应接口显示到LED屏上;另一方面也可以把心率数据通过BLE蓝牙模块透传至手机APP,手机APP负责接收和分析接收到的心率数据,从而实现在手机端实时监控心率的数值。各项生理数据的采集和大量数据汇总,便于建立医疗健康大数据,为诊治做出更好的指导。

以SKB360 BLE 蓝牙模块为例说明:首先你的手机需要安装APP,而且APP需要支持BLE这个服务的特征值,之后再打开手机里的蓝牙,然后点击APP里的连接,这样你就可以发数据给蓝牙模块了。

由于没有提供具体的芯片型号和电路,只能从信号传输的角度简单聊一下,欢迎追问,如果有错误请指出。

一般的蓝牙传输模块,比如MS47FS3,其实内部是有一个arm核心的,单片机和蓝牙模块之间的通讯可以看成两个mcu之间的通讯。通讯的过程要考虑的问题主要有两个,一个是通讯信号的质量问题,一个是通讯信号能否被识别,也就是通讯协议的问题。

首先,对于通讯信号的质量,简单的说是我们会期望我发出的高电平在接收时仍然是高电平,这时候我们会期望接收端的输入阻抗尽可能的大。为了实现这一要求,通常会在接收端前加入驱动电路。这个电路可以是简单的运放电路,可以是专用的收发芯片;但这对于简单的实验,这一点可能不是必须的。

通讯协议可能更加重要。首先,接收端和发送端应该是同样的通讯方式,比如其他回答中提到SPI(串行)或者并行。同样的通讯方式,对于电平的识别方式是否一致,比如232和485,就是普通的串行和差分的串行,就无法相互识别。

至于指令集的问题,我感觉只是你的通讯能够顺利建立之后,因为蓝牙模块本质也是一个arm芯片,如果你只给他通讯一个数据,他其实不知道要进行什么 *** 作。这时候需要你通过指令集来告诉他,接收到这个数据之后,你希望他执行什么样的动作。

以上就是关于求教如何制作一个安卓手机蓝牙制作的app程序,用于和单片机上的蓝牙模块,实现数据的传送全部的内容,包括:求教如何制作一个安卓手机蓝牙制作的app程序,用于和单片机上的蓝牙模块,实现数据的传送、求蓝牙模块hc-05、stc89c52 小车c程序、手机蓝牙怎么传数据到蓝牙模块等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9410706.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存