当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]每次运行后,摄像头会拍摄秒表的显示画面,利用OCR技术识别显示的时间,并计算与目标值5.00秒之间的差异。下一次尝试则通过调整伺服电机的运行时间来补偿这一误差。为了保持摄像头位置的精确一致,我设计并3D打印了一个专用的相机支架。伺服电机也通过一个定制的3D打印支架固定在位。

我最近获得了一块M5Stack秒表。它的默认固件中包含了秒表功能,正如其名称所示。

一个常见的秒表挑战是尝试在恰好5秒或10秒时停止,但结果出人意料地困难。

这让我萌生了一个想法:将伺服电机连接到M5Stack设备上,让它自动完成这个挑战。

工作原理

伺服电机安装在秒表按钮上方,并由M5Stack控制器控制。

然而,即使伺服电机被设定为在5秒时启动和停止,机械系统和电子元件中的各种延迟仍会使其无法准确准时停止。

为了提高精度,每次尝试的结果都会被测量并反馈给下一次尝试。

每次运行后,摄像头会拍摄秒表的显示画面,利用OCR技术识别显示的时间,并计算与目标值5.00秒之间的差异。下一次尝试则通过调整伺服电机的运行时间来补偿这一误差。为了保持摄像头位置的精确一致,我设计并3D打印了一个专用的相机支架。伺服电机也通过一个定制的3D打印支架固定在位。

OCR实现

ATOMS3R-CAM会拍摄秒表显示的图像,仅裁剪下方四位数字,转换为JPEG格式后通过UART发送至M5Core2。

最初,我尝试使用模板匹配来识别数字。但结果并不可靠,因为光照条件以及所摄取数字的轻微旋转会导致频繁的识别错误。

后来我想起之前购买过LLM模块,于是决定改用它。

LLM模块实现了基于本地AI的OCR功能。AI被指示只识别秒表上的数字,并忽略其他字符。如果识别失败,系统将自动重新拍摄一张图像并重复识别过程。

由于LLM模块占用PORT.C,硬件配置如下:

•PORT.A – 伺服控制

•PORT.B – 与摄像头的UART通信

由于PORT.B上的GPIO36为输入模式,因此将其用作UART的RX引脚。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭