431浏览
查看: 431|回复: 2

[项目] 行空板——有趣的灯

[复制链接]
本帖最后由 云天 于 2022-12-5 21:21 编辑

IMG_20221205_100418.jpg


【项目背景】
有个小台灯,不用按钮控制、不用语音控制,需要你写字,它才能亮灭。
【改造台灯】
将旧台灯内部电路板、废电池拆掉,灯红线接锂电池正极,黑线引出,电池接线引出,两线接电磁继电器。
IMG_20221203_140912.jpg

【行空板】
MonDecember-202212059579..png



电磁继电器接行空板23引脚,LED灯带(24灯珠)接24引脚,摄像头固定在灯头上,接行空板USB接口。
IMG_20221205_100244.jpg

【功能简介】
通过摄像头采集书写的每一笔,识别后控制彩灯及台灯亮灭。如书写“开”,写第一笔“一”后,LED灯带0号灯至7号灯亮。写完第二笔“二”,LED灯带8号灯至15号灯亮。写完第三笔“?”,LED灯带16号灯至23号灯亮。写完第四笔“开”,台灯亮。书写“关”字,反之。
【训练模型】
识别书写的文字图像通过Google Teachable Machine,Google Teachable Machine是Google免费的无代码深度学习模型创建网络平台。使用该平台你可以构建模型来对图像,音频甚至姿势进行分类。完成上述操作后,你可以下载经过训练的模型并将其用于你的应用程序。你可以使用Tensorflow或PyTorch之类的框架来构建自定义的卷积神经网络,或者如果你想要一种简单的无代码方式进行此操作,则可以使用 Google Teachable Machine(https://teachablemachine.withgoogle.com/)平台为你完成相同的操作。
【英荔 AI 训练平台】
国内可通过英荔 AI 训练平台:
https://train.aimaker.space/train/image

【训练过程】
训练”开“
one.png


two.png


three.png


open.png

训练”关“同上
……
训练”背景“
背景.png

训练模型

训练1.png

预览模型
预览.png

下载模型
下载.png

下载模型,并将模型文件“keras_model.h5”,放到行空板程序所在目录下。
【Mind+编写程序】
MonDecember-202212059183..png


  1. #  -*- coding: UTF-8 -*-

  2. # MindPlus
  3. # Python
  4. from pinpong.extension.unihiker import *
  5. from keras.models import load_model
  6. from pinpong.board import Board,Pin
  7. from pinpong.board import NeoPixel
  8. from unihiker import GUI
  9. import numpy as np
  10. import time


  11. u_gui=GUI()
  12. Board().begin()
  13. import cv2
  14. np.set_printoptions(suppress=True)
  15. model = load_model('keras_model.h5', compile=False)
  16. data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
  17. cap = cv2.VideoCapture()
  18. cap.open(0)
  19. cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320)  #设置摄像头图像宽度
  20. cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) #设置摄像头图像高度
  21. cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)     #设置OpenCV内部的图像缓存,可以极大提高图像的实时性。
  22. labels = [ 'background','one','two','three','open','four','five','six','close']
  23. font = cv2.FONT_HERSHEY_SIMPLEX
  24. success = True
  25. image = 0
  26. pin1=Pin(Pin.P24, Pin.OUT)
  27. np1 = NeoPixel(pin1,24)
  28. 背景=u_gui.fill_rect(x=0,y=0,w=240,h=320,color="#000000")
  29. 显示=u_gui.draw_text(text="趣味台灯",x=5,y=130,font_size=45, color="#FF0000")
  30. while not (False):
  31.     success, image = cap.read()
  32.     if (success == False):
  33.         break
  34.     image = cv2.flip(image,1)
  35.     image = cv2.resize(image,(224,224))
  36.     image = np.array(image,dtype=np.float32)
  37.     image = np.expand_dims(image,axis=0)/255
  38.     prediction = model.predict(image)
  39.     predicted_class = labels[np.argmax(prediction)]
  40.     if (predicted_class == "open"):
  41.         p_p23_out=Pin(Pin.P23, Pin.OUT)
  42.         p_p23_out.write_digital(1)
  43.         显示.config(text="开灯")
  44.     elif (predicted_class == "close"):
  45.         np1.range_color(0,23,0x000000)
  46.         p_p23_out=Pin(Pin.P23, Pin.OUT)
  47.         p_p23_out.write_digital(0)
  48.         显示.config(text="关灯")
  49.     elif (predicted_class == "one"):
  50.         np1.range_color(0,7,0xFF0000)
  51.     elif (predicted_class == "two"):
  52.         np1.range_color(8,15,0xFF0000)
  53.     elif (predicted_class == "three"):
  54.         np1.range_color(16,23,0xFF0000)
  55.     elif (predicted_class == "four"):
  56.         np1.range_color(16,23,0x000000)
  57.     elif (predicted_class == "five"):
  58.         np1.range_color(8,15,0x000000)
  59.     elif (predicted_class == "six"):
  60.         np1.range_color(0,7,0x000000)
  61. cap.release()

复制代码
【演示视频】





rzegkly  版主

发表于 2022-12-6 08:54:07

图像识别很好案例
回复

使用道具 举报

Forgotten  版主

发表于 2022-12-8 14:52:47

很有意思
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail