大数跨境
0
0

【精华项目】行空板—“ AI助‘手’ ”,让残障者无阻操作现代化设备

【精华项目】行空板—“ AI助‘手’ ”,让残障者无阻操作现代化设备 蘑菇云创造
2023-03-15
2
导读:用行空板加载人工智能模型,控制设备的开关和调节。

点击蘑菇云创造 关注我们


项目背景


截至2018年底,中国残疾人总数为8,890.7万人,其中手部残疾人数为1,890.7万人。手部残疾人在生活中有很多不方便,其中一些现代化设备上的按钮、及各种遥控器,都是为有手指的健康人设计,上面小按键,对于手部有残疾的人,尤其是无手掌的残疾人,更无法使用。


项目设计


本项目使用行空板,加上腕带,固定在手臂上,通过手臂的摆动,可在行空板上画出各种图形。使用行空板加载人工智能模型识别这些图形,向物联网发送指令,控制相应设备,启动、关闭、调节等,如遥控电视开关、调台、音量,空调、热水器、风扇、照明灯等。


项目实现


本项目,通过掌控板接收物联网指令,模拟控制风扇、台灯。



采集数据


通过行空板的内置的加速度传感器配合unihiker库中基于tkinter库封装的一个GUI类,在屏幕上画图,再利用“pyautogui”库截屏分类保存图片(back,up,down,left,right)。





Mind+图形化程序



python代码



# -*- coding: UTF-8 -*-
# MindPlus# Pythonfrom pinpong.extension.unihiker import *from pinpong.board import Board,Pinfrom unihiker import GUIimport pyautoguiimport time

u_gui=GUI()Board().begin()YunXingShiJian = time.time()x=u_gui.draw_text(text="行空板",x=0,y=0,font_size=20, color="#0000FF")yuan=u_gui.fill_circle(x=120,y=160,r=10,color="#0000FF")S0y = 0S0x = 0DuiXiangMing = "xian"XuHao = 0BiaoShi = 0i = 0
while True: ShiJianCha = (time.time() - YunXingShiJian) if (ShiJianCha > 0.06): YunXingShiJian = time.time() Sty = (S0y + (accelerometer.get_x() * 10)) Stx = (S0x + (accelerometer.get_y() * 10)) yuan.config(y=(160 + Sty)) yuan.config(x=(120 - Stx)) if (((Stx > 10) or (Stx < -10)) or ((Sty > 10) or (Sty < -10))): if (BiaoShi == 0): QiDongShiJian = time.time() BiaoShi = 1 if (BiaoShi == 1): DuiXiangMingZuHe = (str(DuiXiangMing) + str(XuHao)) DuiXiangMingZuHe=u_gui.draw_line(x0=(120 - S0x),y0=(160 + S0y),x1=(120 - Stx),y1=(160 + Sty),width=5,color="#0000FF") XuHao = (XuHao + 1) if ((time.time() - QiDongShiJian) > 5): img = pyautogui.screenshot(region=[0,0,240,320]) # x,y,w,h img.save('back'+str(i)+'.png') i = (i + 1) BiaoShi = 0 u_gui.clear() yuan=u_gui.fill_circle(x=120,y=160,r=10,color="#0000FF") Stx = 0 Sty = 0 time.sleep(3) S0y = Sty S0x = Stx

左右滑动,查看完整代码


图形可扩展到数字、多边形、各种简易图案等



训练模型


将图片数据集,上传到“英荔AI训练平台”进行模型训练,下载模型到行空板。



识别指令


采集实时控制图形,加载模型识别指令,发送物联网。


Mind+图形化程序



python代码



# -*- coding: UTF-8 -*-
# MindPlus# Pythonfrom pinpong.extension.unihiker import *from pinpong.board import Board,Pinimport tensorflow.kerasfrom unihiker import GUIfrom PIL import Imageimport numpy as npimport pyautoguiimport timeimport siot

u_gui=GUI()siot.init(client_id="",server="192.168.31.9",port=1883,user="siot",password="dfrobot")Board().begin()siot.connect()siot.loop()YunXingShiJian = time.time()yuan=u_gui.fill_circle(x=120,y=160,r=10,color="#0000FF")S0y = 0S0x = 0DuiXiangMing = "xian"XuHao = 0BiaoShi = 0i = 0model = tensorflow.keras.models.load_model('keras_model.h5')labels=['back','up','down','left','right']
while True: ShiJianCha = (time.time() - YunXingShiJian) if (ShiJianCha > 0.06): YunXingShiJian = time.time() Sty = (S0y + (accelerometer.get_x() * 10)) Stx = (S0x + (accelerometer.get_y() * 10)) yuan.config(y=(160 + Sty)) yuan.config(x=(120 - Stx)) if (((Stx > 10) or (Stx < -10)) or ((Sty > 10) or (Sty < -10))): if (BiaoShi == 0): QiDongShiJian = time.time() BiaoShi = 1 if (BiaoShi == 1): DuiXiangMingZuHe = (str(DuiXiangMing) + str(XuHao)) DuiXiangMingZuHe=u_gui.draw_line(x0=(120 - S0x),y0=(160 + S0y),x1=(120 - Stx),y1=(160 + Sty),width=5,color="#0000FF") XuHao = (XuHao + 1) if ((time.time() - QiDongShiJian) > 5): img = pyautogui.screenshot(region=[0,0,240,320]) # x,y,w,h img=img.resize((224, 224), Image.ANTIALIAS) img = np.array(img,dtype=np.float32) img = np.expand_dims(img,axis=0) img = img/255 prediction = model.predict(img) predicted_class = labels[np.argmax(prediction)] i = (i + 1) BiaoShi = 0 u_gui.clear() yuan=u_gui.fill_circle(x=120,y=160,r=10,color="#0000FF") Stx = 0 Sty = 0 识别结果=u_gui.draw_text(text=predicted_class,x=0,y=100,font_size=40, color="#0000FF") if (predicted_class == "up"): siot.publish(topic="ai/hand", data="1") if (predicted_class == "down"): siot.publish(topic="ai/hand", data="2") if (predicted_class == "left"): siot.publish(topic="ai/hand", data="3") if (predicted_class == "right"): siot.publish(topic="ai/hand", data="4") time.sleep(3) 识别结果.remove() S0y = Sty S0x = Stx


左右滑动,查看完整代码


模拟控制


使用掌控板连接物联网接收指令,通过电磁继 电器控制台灯,通过L289N驱动板控制风扇。模拟控制家用电器。



演示视频



本文来源:DF创客社区

作者:云天


往期推荐



【精华项目】行空板—“AI助听器”,让“听障者”看到声音

【比赛优秀作品】我爱上海—神奇的电子立体书

【最新】聚焦青少年“好奇心、想象力、探求欲”,上海新增18家科创教育基地

【比赛优秀作品】蒸蒸日上,海纳百川

任友群,黄荣怀,熊 璋 || 从信息技术到信息科技——关于《义务教育信息科技课程标准(2022年版)》的对话

信息技术与物理学科深度融合案例|自由落体测量重力加速度

【人民教育】郭华:跨学科主题学习,提升育人质量的一条新路径


【声明】内容源于网络
0
0
蘑菇云创造
蘑菇云是DFRobot旗下专注于AI人工智能、创客、STEAM、劳动教育的科技创新教育品牌;以为中国培养下一代科技创新人才为使命,为学校提供k12全龄段科技创新教育解决方案。
内容 969
粉丝 0
蘑菇云创造 蘑菇云是DFRobot旗下专注于AI人工智能、创客、STEAM、劳动教育的科技创新教育品牌;以为中国培养下一代科技创新人才为使命,为学校提供k12全龄段科技创新教育解决方案。
总阅读1.4k
粉丝0
内容969