android 蓝牙控制继电器——单片机控制端
16lz
2022-05-07
一直没怎么写博客,贴一个比较简单小例子(以前做的 android 通过wifi实现万能遥控器 中拆分出来的小案例):
android客户端通过蓝牙协议,控制继电器(想控制其他玩意,自己设计)
图示:
今晚,先说硬件电路以及单片机部分。
最小单片机系统板以及外围电路,这个电路非常简单(注意继电器的接法),不做过多介绍。
单片机端程序(蓝牙模块做串口使用):
/*********************************************************** C52与蓝牙连线: 单片机程序需要复位一次 才能有效接收注意对比特率的设置蓝牙模块接法 蓝牙 51 RXD TXD TXD RXD unsigned int tmp=0x00; //初始tmp定义 主要表明tmp接收的是16进制数据unsigned char tmp 表明tmp接收的字符型数据其他连线: P11接一个继电器 蓝牙模块做串口使用***********************************************************/ #include <reg52.h> #include <intrins.h> unsigned int tmp=0x00; //初始tmp定义 主要表明tmp接收的是16进制数据//unsigned char tmp 表明tmp接收的字符型数据sbit ji=P1^1; //继电器 void init(); //初始化void delay(unsigned int i); //延时函数void ctrl(); //根据接受信息做出操作 void main() { init(); ji=0; while(1) { //RI 用来接收和发送的标志位RI==1,表示接收到了 RI==0,表示发送出去了 if(RI==1) // 是否有数据到来 { tmp = SBUF; RI = 0; // 暂存接收到的数据 ctrl(); //根据接受信息做出操作 } } } void init() //初始化 { TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率 TH1=0xFD; TL1=0xFD; // 波特率9600 SCON = 0x50; // 设定串行口工作方式1 允许接收,相当于下面三句 PCON =0x00; // 波特率不倍增 TR1 = 1; EA=1; ES=1; } void delay(unsigned int i) { unsigned char j; for(i; i > 0; i--) for(j = 200; j > 0; j--) ; } void ctrl() //根据接受信息做出对应操作 { switch(tmp) //已经把SBUF中的数据赋值到tmp中了 { case 0x01: ji=1; //收到字符1,继电器0关 break; case 0x02: //收到字符2,继电器开 ji=0; break; default: break; } }
下一篇: android蓝牙控制继电器——android客户端设计
更多相关文章
- Android(安卓)Bluetooth蓝牙开发:Bluetooth蓝牙设备配对Paired Bl
- Android应用程序注冊广播接收器(registerReceiver)的过程分析
- Android开机自动运行服务
- 基于Android的传感器和语音识别的设计与实现
- Android的基本概念的小整理(二)
- 基于android和arduino 的小车控制
- android 中发送短信
- Android通过intent发送彩信
- Android应用程序注冊广播接收器(registerReceiver)的过程分析