基于蓝牙的防丢器

11 篇文章 40 订阅
5 篇文章 4 订阅

功能介绍:
1、蓝牙断开后会发出声光报警
2、蓝牙连接时,可使用APP发送控制命令
3、蓝牙断开发出声光报警,及时连上后停止报警
4、若不及时连上将拨打用户的手机号码提醒,同时发短信给手机,短信内容为定位信息

硬件准备:
1、stm32f103c8t6最小系统板
2、蓝牙4.0模块
3、无源蜂鸣器,用于播放MIDI音乐
4、SIM868模块,用于发短信、打电话、定位
5、升压模块,由于SIM868模块需要5V-18V 供电,供电电压 5V 时, 电流要保证 1.5A 或以上。
6、LED灯,使用的是板上PC13引脚处的小灯。
7、ST-LINK下载器,用于下载程序。
硬件接线:
蓝牙模块:TX—PB11 RX—PB10 VCC–5V GND–GND STATE–PA4
有源蜂鸣器:IO–PA5
无源蜂鸣器:IO–PA6
SIM868模块:VCC–5~18V RX–PA2 TX–PA3 GND–GND
演示图片:
1、实物
在这里插入图片描述
2、串口输出信息
由于在室内,所以定位不准。
在这里插入图片描述
3、手机端会接到电话和短信
在这里插入图片描述
4、手机APP
使用的是HC蓝牙助手APP下载链接
通过发送字符0声光报警,发送字符1关闭声光,发送字符2开灯。
在这里插入图片描述

代码实现:
main.c文件

/*
蓝牙模块4.0测试代码
蓝牙模块与串口3相接
即:TX---PB11  RX---PB10 VCC--5V GND--GND  STATE--PA4
有源蜂鸣器接线:IO--PA5
无源蜂鸣器接线:IO--PA6
SIM868模块接线:
VCC--5~18V,5V时,电流要保证1.5A以上
RX--PA2
TX--PA3
GND--GND
VDD--3.3V/5V.
VDD是用来做电平匹配的,当外部系统为 5V 时,VDD接5V。当外部系统是3.3V时,VDD接3.3V

蓝牙断开连接时,STATE引脚输出低电平,即蓝牙模块上的红灯处于闪烁状态
蓝牙连接时,STATE引脚输出高电平,红灯处于常亮状态
通过PA4的外部中断即可判断蓝牙是否断开

要修改的地方
main.c文件中:callPhone,拨打的号码改为你自己的号码
sim868.c文件中:短信接收号码和短信中心号码
*/
#include <stm32f10x.h>
#include <stdbool.h>
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "exti.h"
#include "beep.h"
#include "buzzer.h"
#include "timer.h"
#include "sim868.h"

int g_isBreak = true; //是断开状态
int g_handle = 0;  //断开后如何处理,1:声光报警,2:打电话,3:发定位信息
char PUB_BUF[100] = {0};    //存储定位信息
char time[20],longitude[20],latitude[20];//存储:定位时间、经纬度
char *callPhone = "ATD10086;\r\n";  //拨打电话,修改这里可以修改拨打的电话号

int main(void)
{
	//设置NVIC优先级分组
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	SysTick_Init(72);  //初始化延时函数
	//初始化硬件
	led0_init();  //PC13
	BEEP_Init(); //有源蜂鸣器初始化PA5
	BUZZER_Init();//无源蜂鸣器初始化PA6
	BUZZER_BEEP1();//无源蜂鸣器响一声
	
	EXTIX_PA4_Init();  //外部中断初始化
	USART1_Init(9600);	//设置波特率为9600--调试用的
	USART2_Init(9600);	//设置波特率为9600--SIM868使用
	USART3_Init(9600);	//设置波特率为9600--蓝牙使用
	Timer2_Init_Config();  //定时1S,用于sim868定时发送AT指令
	printf("蓝牙模块开始配置\r\n");
	ble_config_set();  //蓝牙模块的配置
	printf("蓝牙模块配置完毕\r\n");
	printf("SIM868模块开始配置\r\n");
	Wait_CREG();    //查询等待模块注册成功
	Set_Text_Mode();//设置短信为TEXT模式
	GPS_Init();      //初始化GPS功能
	GET_GPS(PUB_BUF,time, longitude,latitude); 	//获取定位信息,放入PUB_BUF数组中
	//Send_GPS_Msg(PUB_BUF);  //发送定位消息
	printf("SIM868模块配置完毕\r\n");

	while(1)
	{
		if(g_isBreak==false) //连接状态
		{
			printf("蓝牙已连接\r\n");
			g_handle = 1;  //下次断开时可以声光报警
			//LED0 = 1;
		}
		
		else                 //断开状态
		{
			printf("蓝牙未连接\r\n"); 
			if(g_handle == 3)
			{
				g_handle = 4;
				printf("正在发送定位信息...\r\n");
				
				GET_GPS(PUB_BUF,time, longitude,latitude); //获取定位信息,放入PUB_BUF数组中
				printf("PUB_BUF = %s\r\n",PUB_BUF); //定位消息
				Send_GPS_Msg(PUB_BUF);  //发送定位消息
				//Send_GPS_Msg("Something has been lost");  //发送自定义消息,不能中文
			}	
			else if(g_handle==2)
			{
				g_handle = 3;
				printf("正在拨打电话....\r\n");
				UART2_SendString(callPhone);     //拨打指定电话
			}
			else if(g_handle==1)  //蓝牙未连接时g_handle == 1;
			{
				g_handle = 2;    //当连上蓝牙后再断开才会再次报警
				printf("正在声光报警....\r\n");
				MIDI_PLAY(); //播放MIDI音乐并且闪烁LED灯
			}
		}
		 delay_ms(1000);
	}
}
  • 0
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
蓝牙4.0丢器概述: 该蓝牙4.0 丢器基于GB2540模块设计。GB254X 是一款采用美国德州仪器 TI 蓝牙 4.0 CC2540 or CC2541作为核心处理器的高性能、超低功耗(Bluetooth Low Energy)射频收发系统模块,遵循低功耗蓝牙协议,适合单模式低功耗蓝牙应用。 具体功能是: 出围栏模式:当手机丢器连接时,如果信号强度小于手机设定值或无信号,手机响,丢器响。 入围栏模式:当手机扫描到丢器时,如果信号强度大于手机设定值,手机响,丢器响。 来电提醒功能:当手机来电,丢器蜂鸣器响,这样冬天手机放包包里,就不会听不到啦。 电池使用的是:锂电池,可反复充电,可以1个月充一次电。 距离嘛:20米到30米到60米到70米都有可能,因为根据环境、手机信号等好多因素影响。 注意如下: 为了设备寻找不到,排除多数丢器需要按按扭才能连接的方法,采用慢速持续广播的方式,这样,当你的东西不知道放什么地方的时候可以寻找,真正起到丢器的作用(如果东西找不到啦,还要按键连接个球啊,开源不是光 公布个源码 公布个PCB 公布个原理图,公布后,我会在这个帖子里说为啥这样设计,庖丁解牛的解析,讨论,分析,要开就彻底开,遮遮掩掩反倒误导大家 连接采用设备端在连接后主动发起绑定请求的方式,当请求30秒未响应,则主动断开连接。采用确定和取消的方式,有需要可以修改为密码方式,止别人连接你的丢器。 提示音支持自定义铃声,只需要把想要的音乐的乐谱拿到,然后把音调转换为频率,把节拍音符转化为时间长度,对应写入到BUZZER文件的铃声数组中,格式为一个频率跟一个时间长度,以0,0结束即可,满足对不同铃声的人的需求。工程已实现NOKIA的铃声。 蓝牙4.0 丢器电路截图: 蓝牙4.0 丢器电路PCB截图:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

⁽⁽ଘ晴空万里ଓ⁾⁾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值