所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

老人“智能”拖鞋

云天 云天 2021-05-23 12:34:48
10
2
简单

制作人:宋美佳,出生年月:2008年8月

projectImage

主旨:确保健康的生活方式,促进各年龄段人群的福祉

【项目背景】

  中国人盛行的是:“百善孝为先”,从历史文化传承来说,尊老敬老爱老是中华民族的传统美德,中华民族之所以是中华民族,之所以血浓于水,之所以历尽沧桑生生不息,之所以“人情味”非常浓厚,就是因为咱们中国人关爱老人爱护孩童。

  老人,为社会奉献,为家庭奉献,是知识的宝库,是智慧的钥匙,不仅养育我们,还以言传和身教向我们传播做人的道理, 所以我们应该关爱老人。关爱老人,就要敬重老人,就要提供更多的便利使老人感受到关爱,就要用科技为老人创造更好的颐养天年的环境,让老年人有一个健康的生活方式。

  我使用Micro:bit为“老人”设计了这款“智能拖鞋”,它具有以下三个功能:1、跌倒“报警”;2、跷二郎腿“提醒”;3、久坐“提醒”。

材料清单 材料清单
2x
micro:bit
1x
拖鞋一双

【功能一】跌倒“报警”

  据调查,全球50%以上的老人,跌倒事件都发生在家中,约有15万的老年人死于家中意外摔倒。随着年龄的增长,跌倒死亡风险更高。

  我国65岁的老年人已达1.5亿,每年约有4000万老人跌倒,40%~70%跌倒所引起的伤害需要进行医疗处理,而家里人无法及时发现可能会酿成严重后果。

【设计思想】

  通过Micro:bit的陀螺议传感器来判断老年人的“跌倒”。如“徽标朝上”、“徽标朝下”或“屏幕朝下”,可判定已经“跌倒”,发出“报警音”。

projectImage

【程序实现】

projectImage

  如因特殊情况出现“误判”,可通过按下“徽标”,关闭“报警音”。

【功能二】阻止“二郎腿”

  现代人爱翘二郎腿。但翘二郎腿坐着的时候容易弯腰驼背,造成腰椎与胸椎压力分布不均,长此以往,势必压迫脊椎神经,引起下背痛。 而据美国纽约市静脉治疗中心负责人说,翘二郎腿还会妨碍腿部血液循环,造成腿部静脉曲张,严重者常出现腿部静脉回流不畅、青筋暴突、溃疡、静脉炎、出血和其它疾病。

  老年人聚在一起聊天或者打牌等娱乐的时候,喜欢翘二郎腿,而且不停地摇晃,长时间坐着,认为这个姿势会舒服些。但是,大家能仔细看一下,大部分老年人腿上都会有静脉曲张,就是肉眼能看到的青筋,在翘二郎腿的时候,青筋会更加明显突出,这是因为腿部静脉回流不畅,所以要常常保持双腿平放地面的姿势,以保证血液畅通。

【设计思路】

  比较两只拖鞋上Microbit记录的晃动次数,在一定时间段内(如10分钟),当差值较大时,可判定为在翘“二郎腿”,进行“报警音”提醒。

【程序实现】

projectImage

  Micro:bit(右脚)通过“振动”记录“运动次数”。系统运动时间间隔达到10分钟,通过“无线”向Microbit(左脚)发送“右脚”的“运动次数”。

  运行时间使用的是“ms”,10分钟=10*60*1000=600000毫秒。

projectImage

  当 Microbit(左脚)收到Microbit(右脚)的“运动次数”,用自己的“运动次数”与之做差,差值绝对值处理后与“100”(数值有待进行一步测试)相比较,如果大于,可判定使用者正在“跷二郎腿”,“报警音”提醒。

  使用可通过按下“徽标”,停止“报警音”。

【功能三】久坐提醒

  退体后的老人,不必每天早七晚五,披星戴月的上班工作了,儿女们也乐得让他们坐下来在家休闲。殊不知,久坐并非好事,中医早就提出“久坐伤气”的说法。

例如,坐沙发会感觉很舒服,但未必有利于老年人的身体健康,因为久坐沙发会导致精神怠倦、浑身疲乏、腰酸腿痛、四肢无力、厌食、坐骨神经痛和痔疮等疾病。

  在现代城市家庭里,许多离退休的老年人喜欢坐在柔软的沙发上看书看报、看电视、聊天、钩织毛线、做手工活或给孙子、孙女讲故事。

  然而,有关研究表明,久坐沙发会导致“沙发综合症”。因为,人若久坐于沙发中会使大脑的活动逐渐迟钝,思维敏捷度明显衰退,精神怠倦、浑身疲乏、腰酸腿痛、四肢无力、厌食等;另外,还会引起坐骨神经痛和痔疮等病症。

  所以,老年人,即使长时间在家里,也应多起身活动活动。

【设计思路】

  通过Micro:bit的“振动”进行计数,当30分钟“运动次数”小于“50”时,判定为久坐未动,提醒进行运动,屏幕显示为“哭脸”。当“运动次数”“300”时,显示为“笑脸”。

【程序实现】

 

projectImage

【完整代码】

1、Microbit(左脚)代码

projectImage

源代码分享

https://makecode.microbit.org/_3RaVHvhypdj1

projectImage

2、Micro:bit(右脚)代码

projectImage

源代码分享

https://makecode.microbit.org/_KJAVHkRT0fMe

projectImage

【修改第二版】

projectImage
projectImage

【第二版】为了演示,在时间上做了些调整,并为了两个Micro:bit板显示图案一致,在代码上进行了适当修改。

【左脚代码】

projectImage
代码 代码
	                    					input.onGesture(Gesture.ScreenDown, function () {
    跌倒 = 1
    radio.sendString("D")
})
radio.onReceivedNumber(function (receivedNumber) {
    if (Math.abs(receivedNumber - 运动次数) > 3) {
        跷二郎腿 = 1
        radio.sendString("A")
    }
})
input.onLogoEvent(TouchButtonEvent.Touched, function () {
    basic.showIcon(IconNames.Happy)
    跌倒 = 0
    跷二郎腿 = 0
    不运动 = 0
    music.stopAllSounds()
    radio.sendString("B")
})
input.onGesture(Gesture.LogoDown, function () {
    跌倒 = 1
    radio.sendString("D")
})
input.onGesture(Gesture.Shake, function () {
    运动次数 += 1
    basic.showNumber(运动次数)
})
input.onGesture(Gesture.LogoUp, function () {
    跌倒 = 1
    radio.sendString("D")
})
let 运动次数 = 0
let 不运动 = 0
let 跌倒 = 0
let 跷二郎腿 = 0
radio.setGroup(7)
let 开始时间 = input.runningTime()
跷二郎腿 = 0
跌倒 = 0
不运动 = 0
soundExpression.twinkle.play()
basic.showIcon(IconNames.Happy)
basic.forever(function () {
    if (跌倒 == 1) {
        basic.showIcon(IconNames.Sad)
        运动次数 = 0
        开始时间 = input.runningTime()
        soundExpression.soaring.playUntilDone()
    } else {
        if (跷二郎腿 == 1) {
            basic.showIcon(IconNames.Sad)
            运动次数 = 0
            开始时间 = input.runningTime()
            soundExpression.happy.playUntilDone()
        } else {
            if (不运动 == 1) {
                开始时间 = input.runningTime()
                运动次数 = 0
                soundExpression.giggle.playUntilDone()
            } else {
                if (input.runningTime() - 开始时间 > 20000) {
                    if (运动次数 > 5) {
                        basic.showIcon(IconNames.Happy)
                        开始时间 = input.runningTime()
                        运动次数 = 0
                    } else {
                        basic.showIcon(IconNames.Sad)
                        不运动 = 1
                        radio.sendString("C")
                    }
                }
            }
        }
    }
})

	                    				

左脚代码分享:https://makecode.microbit.org/_2PJU5barhLHE

【右脚代码】

projectImage
代码 代码
	                    					input.onGesture(Gesture.Shake, function () {
    运动次数 += 1
    basic.showNumber(运动次数)
})
radio.onReceivedString(function (receivedString) {
    if (receivedString == "A") {
        运动次数 = 0
        basic.showIcon(IconNames.Sad)
    }
    if (receivedString == "B") {
        运动次数 = 0
        basic.showIcon(IconNames.Happy)
    }
    if (receivedString == "C") {
        运动次数 = 0
        basic.showIcon(IconNames.Sad)
    }
    if (receivedString == "D") {
        运动次数 = 0
        basic.showIcon(IconNames.Sad)
    }
})
let 运动次数 = 0
radio.setGroup(7)
let 运行时间 = input.runningTime()
运动次数 = 0
basic.forever(function () {
    if (input.runningTime() - 运行时间 > 6000) {
        radio.sendNumber(运动次数)
        运行时间 = input.runningTime()
    }
})

	                    				

右脚代码分享:https://makecode.microbit.org/_bczdpyd1rJbE

Makelog作者原创文章,未经授权禁止转载。
10
2
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]