【毕业设计】基于M5Stack UnitV2的手写识别计算器的设计与制作

2023-10-29

目录

一、简介

二、设计原理

三、系统设计

四、注意点

五、困难

一、简介

       耗时五个月,终于完成了毕业设计和毕业答辩,在这里记录一下学习与实现过程。

       题目是导师给的,这是主要任务和工作内容:利用M5Stack UnitV2的目标检测功能,用摄像头拍摄样本,通过训练,识别手写的数字和运算符,设计并制作一款能够自动识别手写数字和运算符的简易计算器。

二、设计原理

       使用M5Stack UnitV2摄像头内置的目标检测功能,拍摄手写的数字以及运算符,使用V-training功能训练平台训练出可识别模型,然后用M5Stack UnitV2的Objection功能识别出手写数字和运算符,将识别结果发送至M5Stack Basic上位机解析并展示计算结果,计算完成发出“嘀”声,提示结束。

三、系统设计

1.硬件设备

(1)M5Stack UnitV2

          一种基于ESP32芯片的多功能开发平台,内嵌Linux操作系统,即插即用,通过USB-C接口连接到PC时,自动与UnitV2建立网络连接,也可以通过WI-FI连接和调试。UART串口通讯,所有识别内容通过串口自动以JSON格式输出。

(2)M5Stack Basic

        一款采用了ESP32物联网芯片作为微控制器,集成Wi-Fi,拥有2个CPU内核,16MB的SPI内存和蓝牙5.0功能的开发板,可用于连接其他设备或者无线通讯,具有双核低功耗的特点。

       本设计作为上位机用来解析、展示手写计算式以及计算结果。

 (3)CH340——USB转TTL模块

2.软件平台

(1)V-training功能训练平台

训练步骤根据这个链接操作:

http://docs.m5stack.com/zh_CN/quick_start/unitv2/v_traininghttp://docs.m5stack.com/zh_CN/quick_start/unitv2/v_training

训练平台:

http://vtraining.m5stack.com/build/index.htmlhttp://vtraining.m5stack.com/build/index.html

(2)摄像头目标检测界面

http://unitv2.pyhttp://unitv2.py

(3)串口调试助手——UartAssist

(4)Thonny

         Python集成开发环境,本设计用于调试M5Stack Basic的MicroPython程序。

3.制作步骤

   (1)首先拍摄30张以上手写计算式样本,将样本图片上传至V-training,添加标签训练可识别模型。

   (2)模型如果训练成功,则损失曲线收敛。

(3)上传可识别模型至目标检测界面,开启摄像头,可看到识别兴趣框和识别结果。

(4)设计M5Stack Basic上位机的UIFLOW界面

设计步骤:https://flow.m5stack.com/

结果:

(5)将上图右侧识别出的JSON结果复制到串口调试助手,连接USB-TTL模块与M5Stack Basic上位机,运行程序,进行调试。 

(6)连接M5Stack UnitV2摄像头和M5Stack Basic上位机,实现整体联调。用摄像头识别手写计算式,上位机精准迅速展示出识别计算式及计算结果,然后发出“嘀”声表示计算结束。

4.结果展示    

手写识别计算器

四、注意点

       手写识别和计算器之间存在某种关联性。手写识别技术可以应用于计算器的输入,使得用户可以用手写数字或符号来进行输入,而不必使用键盘。此外,手写识别技术还可以用于计算器的自动识别功能,通过识别手写的数学表达式,自动计算出结果并显示在屏幕上。这种技术可以提高计算器的使用便捷性和用户体验。

USB-TTL与Basic上位机接线:G-G,RX-TX(SCL),TX-RX(SDA)

M5Stack UnitV2摄像头与Basic连线:G-G,pin1(黄色)-SCL,pin2(白色)-SDA

五、困难

1.样本简单,只写了加减法,后续可增加乘除以及三角函数等复杂运算;

2.训练过程中V-training平台总是出现问题导致训练的模型不收敛,识别不出标记的数字,最好使用Nanodet模型训练大量样本,正在学习这块;

3.UnitV2摄像头容易发烫,连续识别时间短,使用一段时间需要重启才能继续识别;

4.接线错误没有反馈出结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【毕业设计】基于M5Stack UnitV2的手写识别计算器的设计与制作 的相关文章

随机推荐

  • Unity AssetBundle(2):工具UnityStudio

    一 UnityStudio 作用有两个 查看AssetBundle内资源 File gt LoadFile 提取AssetBundle内资源 Export 下载地址 UnityStudio releases地址 Perfare UnityS
  • Linux下Mysql 5.6.21 tar包安装实践

    好久没玩linux 由于项目需要部署新的linux开发环境 包括安装jdk tomcat redis mysql 趁着有时间 赶紧部署好 jdk tomcat redis很快就部署好了 唯独mysql让我折腾了一阵 先安装了我之前就安装过的
  • 数据库性能优化必读,AntDB-M数据库的哈希索引设计

    数据库加快访问速度的关键技术之一就是索引 索引的设计及使用方式极大程度上影响了数据库的性能 AntDB M支持Hash BTree两种索引类型 本文主要讲解Hash索引的相关设计 并给出一些使用建议 1 相关概念 桶 用于定位索引记录的容器
  • 如何在本地操作Redis

    1 下载redis到本地 下载Redis x64 xxx zip压缩包并解压 我这里解压到了D Redis Redis下载地址 2 开启并连接Redis 1 进入解压的文件夹中 按住shift 右击鼠标 点击在此处打开命令窗口 运行命令 r
  • MySQL安装时常见问题和解决方案【详解】

    目录 1 更改不了后缀名 2 配置文件设置错误 3 使用 mysqld install命令安装MySQL服务失败 4 使用 mysqld initialize console命令初始化MySQL 失败 5 使用net start mysql
  • java 中 BigDecimal 详解

    首先 学习一个东西 我们都必须要带着问题去学 这边我分为 为什么 是什么 怎么用 为什么要用BigDecimal 首先 我们先看一下 下面这个现象 那为什么会出现这种情况呢 因为不论是float 还是double都是浮点数 而计算机是二进制
  • 时间的几个实用函数 FILETIME UnixTime的转换

    filetimeToUnixTime windos filetime 起于 1601 01 01T00 00 00Z 单位 100 纳秒 UnixTime 起于 1970 01 01T00 00 00Z 单位 秒 它们的起始时间差了 116
  • Java实现第九届蓝桥杯测试次数

    测试次数 题目描述 x星球的居民脾气不太好 但好在他们生气的时候唯一的异常举动是 摔手机 各大厂商也就纷纷推出各种耐摔型手机 x星球的质监局规定了手机必须经过耐摔测试 并且评定出一个耐摔指数来 之后才允许上市流通 x星球有很多高耸入云的高塔
  • [踩坑记] CUDA环境下bitsandbytes安装报错/异常解决

    关键词 模型量化 bitsandbytes bitsandbytes报错 大模型环境 CUDA环境 1 问题描述 在部署大模型LLaMA的过程中 需要安装量化工具包bitsandbytes 环境如下 操作系统 Ubuntu 18 04 GP
  • 基于ChatGPT3.5 API实现的私有化web程序源码+使用说明,一键部署属于自己定制化的 chatgpt web 程序

    chatgpt web 本项目可以一键部署属于自己定制化的 chatgpt web 程序 兼容gpt3 5 只需下载release中对应平台的项目文件 修改配置后执行 打开 http 127 0 0 1 8080 便可以获得属于自己的cha
  • KEIL5 只有下载程序后不运行,只有在调试模式下多次点击全速运行代码才能跑起来的解决办法

    最近 使用KEIL5下载调试时遇到了一个很奇怪的现象 下载程序后哪怕是断电重启设备 程序都无法运行 在Flash Dowmload 下已经设置了Reset and Run 只有在Debug模式下 且多次点击全速运行 才能够把程序跑起来 最后
  • keyshot场景素材导入_KeyShot导入Rhino室内场景渲染的详细方法

    在KeyShot怎样导入Rhino室内场景渲染呢 下面就为大家分享KeyShot导入Rhino室内场景渲染的图文教程 有需要的可以来了解了解哦 KeyShot导入Rhino室内场景渲染的详细方法 1 打开一个rhino场景 这是一个简单的室
  • powershell 脚本启动优化

    需求分析 powershell 启动慢的主要原因是 profile中的终端配置加载时间长 当我们打开powershell终端进行交互时 加载时间长 尚可忍受 但当我们的脚本 执行powershell脚本时 较长的加载时间 是不可接受的 优化
  • 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java动物爱心救助平台s9dza

    如果你自己基础不好或者是小白的情况下那就建议你选择网站 系统类的去做 但是还得问问你们导师 如果你们导师没问题就可以 因为有的导师是不愿意你们选择做网站 系统的 毕竟做的人比较多 重复率调高 选择这种题目都是要创新功能 所以会比较棘手 以下
  • RT-Thread动态和静态创建线程

    上一篇 RT Thread线程管理教程 http t csdn cn phnwQ 目录 一 静态创建线程和动态创建线程的区别 二 创建线程的常用函数 三 动态创建线程 四 静态创建线程 五 动态和静态创建线程结合 线程调度hook函数使用
  • 计算机科学与技术专业课程有哪些,计算机科学与技术专业课程有哪些

    计算机科学与技术专业简介 计算机科学与技术类专业毕业生的职业发展路线基本上有两条路线 一是纯技术路线 二是由技术转型为管理的路线 计算机科学与技术专业课程 电路原理 模拟电子技术 数字逻辑 数字分析 计算机原理 微型计算机技术 计算机系统结
  • Python——模拟退火在背包问题上的运用(详细代码)

    一 模拟退火简介 二 详细代码 import math import random import matplotlib pyplot as plt def init population n 生成一个种群 个体为全排列的随机排列 popul
  • [每日两题系列]刷算法题咯~~

    今日题目 反转链表 环形链表II 本系列所选题目均来自力扣或者牛客网站 所选题目主要是以其中的简单题为主 中等题为辅 包含少数困难题 原因是 本人目前能力还不够 开展这个系列的目的是督促自己 在暑假的时间里也要保持有一定的刷题量 拒绝摆烂
  • 测试用例(边界值法)

    1 什么是边界值法 有效数据和无效数据的分界点 往往作为程序员编写程序的判断点 是程序员容易犯错的地方 也是测试人员重点测试的内容 我们把这些分界点的值找到 并进行测试的方法 称为边界值法 2 边界值法应用的场合 1 有数据输入的地方 一般
  • 【毕业设计】基于M5Stack UnitV2的手写识别计算器的设计与制作

    目录 一 简介 二 设计原理 三 系统设计 四 注意点 五 困难 一 简介 耗时五个月 终于完成了毕业设计和毕业答辩 在这里记录一下学习与实现过程 题目是导师给的 这是主要任务和工作内容 利用M5Stack UnitV2的目标检测功能 用摄