2744浏览
查看: 2744|回复: 1

[项目] 行空板——卧床老人“AI助手”

[复制链接]
本帖最后由 云天 于 2023-3-27 14:07 编辑

【项目背景】
2021年5月11日,第七次全国人口普查结果显示,中国60岁及以上人口占比超18%,人口老龄化程度进一步加深。 随着我国步入老龄化社会,老年人的脑血管意外,下肢骨折以及严重的心肺疾病,老年性痴呆等导致老人长时间卧床,甚至卧床至生命终结的情况逐渐增多。

这些卧床老人当中,部分说话口齿不清,手臂无力。当身旁无人时,无法向另一个房间的亲人或陪护人表达自己的需求。
  【项目设计】
本项目使用行空板结合光传感器,通过人工智能识别模型及物联网,只需卧床的老人挥挥手,如一个手指、两个手指、三个手指等等,就可以发出不同的指令。接收装置发出灯光及语音提醒,同时手机app进行震动及文字、语音提醒。
行空板——卧床老人“AI助手”图1

  【硬件设备】
识别装置:行空板——国产开源硬件,光传感器——行空板集成,供电——双节锂电池,结构简单占用空间小。
行空板——卧床老人“AI助手”图2

  
接收装置:掌控板——  国产开源硬件,集成LED灯3颗,语音合成传感器。
行空板——卧床老人“AI助手”图3


  【采集数据】

利用循环程序根据读取行空板的集成的光传感器数据,在屏幕上从左到右依次画线。有遮挡时画黑线,无遮挡时画白线。当屏幕画满后,通过pyautogui库截屏保存为图片。
  1. #  -*- coding: UTF-8 -*-
  2. # MindPlus
  3. # Python
  4. from pinpong.extension.unihiker import *
  5. from pinpong.board import Board,Pin
  6. from unihiker import GUI
  7. from PIL import Image
  8. import pyautogui
  9. import time
  10. import math
  11. def numberMap(x, in_min, in_max, out_min, out_max):
  12.   return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
  13. # 自定义函数
  14. def JiSuanYanSe():
  15.     global YanSe
  16.     YanSe = light.read()
  17.     YanSe = (numberMap(YanSe, 0, 1850, 0, 255))
  18.     if (YanSe > 200):
  19.         YanSe = (str("#ffffff"))
  20.     else:
  21.         YanSe = hex((math.floor(YanSe)))
  22.         YanSe = (str("#000000"))
  23.     return YanSe
  24. u_gui=GUI()
  25. Board().begin()
  26. YunXingShiJian = time.time()
  27. YZuoBiao = 0
  28. DuiXiangMing = ""
  29. DuiXiangXuHao = 0
  30. i=0
  31. while True:
  32.     if ((time.time() - YunXingShiJian) > 0.0125):
  33.         YunXingShiJian = time.time()
  34.         DuiXiangMing = (str("D") + str(DuiXiangXuHao))
  35.         DuiXiangMing=u_gui.draw_line(x0=0,y0=YZuoBiao,x1=240,y1=YZuoBiao,width=1,color=JiSuanYanSe())
  36.         DuiXiangXuHao = (DuiXiangXuHao + 1)
  37.         YZuoBiao = (YZuoBiao + 1)
  38.     if (YZuoBiao > 320):
  39.         img = pyautogui.screenshot(region=[0,0,240,320])
  40.         img.save("one"+str(i)+".png")
  41.         i=i+1
  42.         YZuoBiao = 0
  43.         DuiXiangXuHao=0
  44.         u_gui.clear()
复制代码
行空板——卧床老人“AI助手”图5


  【模型训练】
将采集的图像分类上传到“AI训练平台”进行模型训练,并将模型下载,保存到行空板。
行空板——卧床老人“AI助手”图6

   【推理识别】
采集实时光传感器信息绘制图形,加载模型识别指令,发送物联网。
  1. #  -*- coding: UTF-8 -*-
  2. # MindPlus
  3. # Python
  4. from pinpong.extension.unihiker import *
  5. from dfrobot_speech_synthesis import *
  6. from pinpong.board import Board,Pin
  7. import tensorflow.keras
  8. from unihiker import GUI
  9. from PIL import Image
  10. import numpy as np
  11. import pyautogui
  12. import time
  13. import math
  14. import siot
  15. def numberMap(x, in_min, in_max, out_min, out_max):
  16.   return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
  17. # 自定义函数
  18. def JiSuanYanSe():
  19.     global YanSe
  20.     YanSe = light.read()
  21.     YanSe = (numberMap(YanSe, 0, 1850, 0, 255))
  22.     if (YanSe > 200):
  23.         YanSe = (str("#ffffff"))
  24.     else:
  25.         YanSe = hex((math.floor(YanSe)))
  26.         YanSe = (str("#000000"))
  27.     return YanSe
  28. def FaSongZhiLing(ZhiLing, XianShi):
  29.     siot.publish(topic="help/control", data=ZhiLing)
  30.     buzzer.play(buzzer.BA_DING,buzzer.Once)
  31.     显示.config(text=XianShi)
  32.     gravity_sstts.speak(XianShi)
  33.     time.sleep(2)
  34. siot.init(client_id="",server="192.168.31.8",port=1883,user="siot",password="dfrobot")
  35. u_gui=GUI()
  36. Board().begin()
  37. siot.connect()
  38. siot.loop()
  39. gravity_sstts = DFRobot_SpeechSynthesis_I2C()
  40. YunXingShiJian = time.time()
  41. YZuoBiao = 0
  42. DuiXiangMing = ""
  43. DuiXiangXuHao = 0
  44. model = tensorflow.keras.models.load_model('keras_model.h5')
  45. labels=['back','one','two','three','four','five']
  46. gravity_sstts.begin(gravity_sstts.V1)
  47. gravity_sstts.speak("初始化成功")
  48. while True:
  49.     if ((time.time() - YunXingShiJian) > 0.0125):
  50.         YunXingShiJian = time.time()
  51.         DuiXiangMing = (str("D") + str(DuiXiangXuHao))
  52.         DuiXiangMing=u_gui.draw_line(x0=0,y0=YZuoBiao,x1=240,y1=YZuoBiao,width=1,color=JiSuanYanSe())
  53.         DuiXiangXuHao = (DuiXiangXuHao + 1)
  54.         YZuoBiao = (YZuoBiao + 1)
  55.     if (YZuoBiao > 320):
  56.         img = pyautogui.screenshot(region=[0,0,240,320])
  57.         u_gui.clear()
  58.         显示=u_gui.draw_text(text="正在识别",x=10,y=100,font_size=40, color="#0000FF")
  59.         img=img.resize((224, 224), Image.ANTIALIAS)
  60.         img = np.array(img,dtype=np.float32)
  61.         img = np.expand_dims(img,axis=0)
  62.         img = img/255
  63.         prediction = model.predict(img)
  64.         predicted_class = labels[np.argmax(prediction)]
  65.         if (predicted_class == (str("one"))):
  66.             FaSongZhiLing("1", "口渴了")
  67.         elif (predicted_class == (str("two"))):
  68.             FaSongZhiLing("2", "想解手")
  69.         elif (predicted_class == (str("three"))):
  70.             FaSongZhiLing("3", "想翻身")
  71.         elif (predicted_class == (str("four"))):
  72.             FaSongZhiLing("4", "想吃饭")
  73.         elif (predicted_class == (str("five"))):
  74.             FaSongZhiLing("5", "不舒服")
  75.         YZuoBiao = 0
  76.         DuiXiangXuHao = 0
  77.         显示.config(text="请下指令")
  78.         time.sleep(2)
  79.         显示.remove()
复制代码


【显示提醒】
1、硬件提醒装置
行空板——卧床老人“AI助手”图4

行空板——卧床老人“AI助手”图7


2、手机app提醒程序

连接行空板物联网,接收指令,屏幕显示信息,并响铃震动。

行空板——卧床老人“AI助手”图8

【演示视频】



木子呢  管理员

发表于 2023-3-23 11:20:05

期待~
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail