2406|7

1942

帖子

3

TA的资源

版主

楼主
 

【环境专家之智能手表】Part18:下井模式 [复制链接]

 

1.介绍

因为手表可以日常佩戴,所以需要有一个机制进行模式的切换,【RSL10-SENSE-GEVK】开发套件有两个按钮,所以可以利用这两个按钮进行设计,下井模式和正常佩戴模式使用的场景显而易见,下井模式则是下井时使用,正常模式则是平时佩戴时使用。

2.设计介绍

首先介绍一下这次的设计,有两个按钮,为了防止误触,所以都采用长按的机制,下面是两个模式的切换设计:

图1

其中下井模式还有三种状态,分别是:正常状态、报警状态和呼救状态,状态之间互相切换的框图如下图2:

图2

三种状态是可以相互切换的,而且这三种状态也是满足正常使用的,当遇到危险时,长按某个按键,则会将自己的状态转换为呼救状态,这样矿井外人员看到设备上有人呼救,则立马对齐进行定位(通过中继器大致定位),并进行救援。

3.程序设计

其实没有太多的难点,首先定义按键,检测3秒和5秒的长按,具体实现如下:

void PB_TransitionEvent(void *arg)
{
	static uint32_t btn0_rpessed_time, btn1_rpessed_time;
    ButtonName btn = (ButtonName)arg;

    bool button_pressed = BTN_Read(btn);

    switch (btn)
    {
    case BTN0:
    	if(button_pressed == BTN_PRESSED)	//按键按下
    	{
    		btn0_rpessed_time = HAL_Time();
    	}
    	else
    	{
    		if(HAL_Time() - btn0_rpessed_time > 3000)	//大于3秒钟
    		{
    			if(status_get_downhole_flag())	//不是正常模式
    			{
    				status_led_set(LED_SWITCH_NORMAL);	//切换为正常模式
    			}
    		}
    	}
        break;
    case BTN1:
    	if(button_pressed == BTN_PRESSED)	//按键按下
		{
			btn1_rpessed_time = HAL_Time();
		}
		else
		{
			if(HAL_Time() - btn1_rpessed_time > 3000)	//大于3秒钟
			{
				if(status_get_downhole_flag() == 0)		//不是下井模式
				{
					status_led_set(LED_WITCH_DOWNHOLE);	//切换为下井模式
				}
			}
			if(status_get_downhole_flag())
			{
				if(HAL_Time() - btn1_rpessed_time > 5000)	//大于5秒钟
				{
					if(status_get_downhole_status() < 2)
						status_led_set(LED_DOWNHOLE_HELP);	//切换呼救模式
					else
						status_led_set(LED_DOWNHOLE_NORMAL);	//切换为普通模式
				}
			}
		}
        break;
    default:
        return;
    }
}

然后修改广播协议,在气压值后面添加上状态标志,矿井外设备从中获取到设备是否处于下井模式,如果处于下井模式,则显示到屏幕上,如果不处于则过滤。

这里有一个设计冲突,如果矿井外设备检测到有设备进入下井模式,那么屏幕上会显示出该设备,当如果这台设备关闭下井模式,屏幕是否应该继续显示该设备的状态?最终我设计成这样的,当检测到有设备进入下井模式,如果该设备退出下井模式,会继续显示在屏幕上,同时屏幕上显示该设备的处于正常模式,为什么要这样设计,主要是怕下井人员误触,如果矿井外设备查看到此标志,则需通过对讲机或其他通信设备告知佩戴该设备的人员,开启下井模式,因为正常模式进入低功耗,更新数据会比较慢,会造成延时!

4.总结

最终下井模式就设计完毕了,矿井外设备的扫描机制需要做一些修改,同时还需要添加窗口置顶的功能,用于提示该设备处于呼救状态,而且需要设计窗口优先级,这个需要专门写一篇帖子进行分析设计。

最新回复

啥办法?科普一下   详情 回复 发表于 2021-7-9 21:39
点赞 关注
 
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

井人员误触是必须注意点

楼主设计的很细

 

 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

要是一直被误触发长按呢?

点评

那就只能按另一个按键退出了。  详情 回复 发表于 2021-7-7 11:53
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

1942

帖子

3

TA的资源

版主

4
 
freebsder 发表于 2021-7-6 22:20 要是一直被误触发长按呢?

那就只能按另一个按键退出了。

点评

哈哈,好吧,故意破坏确实没啥好的办法。  详情 回复 发表于 2021-7-7 17:40
 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

5
 
w494143467 发表于 2021-7-7 11:53 那就只能按另一个按键退出了。

哈哈,好吧,故意破坏确实没啥好的办法。

点评

是啊,其实也有别的办法,不过目前不好实现。  详情 回复 发表于 2021-7-7 20:00
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

1942

帖子

3

TA的资源

版主

6
 
freebsder 发表于 2021-7-7 17:40 哈哈,好吧,故意破坏确实没啥好的办法。

是啊,其实也有别的办法,不过目前不好实现。

点评

啥办法?科普一下  详情 回复 发表于 2021-7-9 21:39
 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

7
 
w494143467 发表于 2021-7-7 20:00 是啊,其实也有别的办法,不过目前不好实现。

啥办法?科普一下

点评

就是进入下井模式,由矿井外人员设置,通过扫描NFC标签获取设备MAC地址,然后通过矿井外设备对下井设备进行设置。  详情 回复 发表于 2021-7-10 08:06
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

1942

帖子

3

TA的资源

版主

8
 
freebsder 发表于 2021-7-9 21:39 啥办法?科普一下

就是进入下井模式,由矿井外人员设置,通过扫描NFC标签获取设备MAC地址,然后通过矿井外设备对下井设备进行设置。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表