1. 项目概述一个基于视觉识别的简易防疫门禁最近在整理工作室的旧项目翻出来一个2020年左右做的小玩意儿——一个用Arduino和Pixy2摄像头做的口罩检测装置。当时的环境大家应该都还记得公共场所佩戴口罩是刚需但总有人会疏忽。我就想能不能用手头现成的开源硬件快速搭一个成本低、原理清晰、还能实际用起来的提醒装置这个项目就是答案。它的核心逻辑非常简单用一个专用的视觉传感器Pixy2去“看”人脸部区域判断是否佩戴了口罩。如果检测到口罩亮绿灯放行如果没检测到则亮红灯并让蜂鸣器发出提示音。整个系统硬件成本可控软件上避开了复杂的深度学习模型训练非常适合电子爱好者、创客或者学生作为入门计算机视觉和嵌入式系统联动的实践项目。你可能会问现在手机APP都能做人脸识别了为什么还要用Arduino和Pixy2这么“原始”的方案我的体会是专物专用和快速原型的价值。手机APP依赖强大的通用算力而Pixy2是一个为特定目标识别颜色、形状优化的专用芯片它功耗低、响应快、接口简单与Arduino搭配能形成一个独立、稳定、不依赖网络和高级操作系统的嵌入式终端。这对于制作一个固定的门禁提示器、智能储物柜锁甚至是教育演示装置来说反而更直接、更可靠。接下来我会拆解整个项目的设计思路、硬件连接、软件配置的所有细节并分享我在调试过程中踩过的坑和总结的经验。无论你是想复现这个项目还是借鉴其思路应用到其他目标检测场景相信都能找到有用的信息。2. 核心硬件选型与设计思路解析做一个项目第一步永远是“用什么”和“为什么用这个”。这个口罩检测系统的硬件骨架非常精简但每一件选品都有其道理。2.1 视觉核心为什么是Pixy2而不是普通摄像头或OpenCV这是整个项目最关键的决策点。市面上常见的方案是树莓派USB摄像头OpenCV/Python但这对于简单的颜色块或特征识别来说有些“杀鸡用牛刀”。Pixy2的本质是一个集成了图像传感器和专用处理芯片的视觉传感器而不是一个需要外部主控进行大量像素处理的“摄像头”。它的核心优势在于片上处理Pixy2内部有一个专为多颜色编码Color Code和常规颜色块识别优化的处理器。它能直接在芯片上完成图像采集、颜色过滤、目标物坐标和尺寸计算等一系列工作。简化输出它不会输出原始的RGB图像流而是通过UART、I2C、SPI或模拟输出等方式直接告诉主控如Arduino“我看到了一个Signature 1签名1的物体它的中心坐标是(x,y)宽度是w高度是h。” 这极大地减轻了主控MCU的运算负担。免驱易用通过配套的PixyMon软件你可以用图形化界面非常直观地“训练”它认识新的物体比如口罩无需编写复杂的图像处理代码。相比之下如果用Arduino直接驱动普通OV7670等摄像头模块你需要处理原始数据流自己编写算法进行颜色空间转换、二值化、轮廓查找对Arduino Uno/Nano这类8位MCU来说几乎是不可能完成的任务。而树莓派方案虽然强大但成本、功耗和系统复杂性都上去了。实操心得Pixy2的“训练”实质上是让你框选一个目标物它学习这个目标物的主要颜色特征并生成一个特征签名Signature。所以它对被检测物体的颜色和纹理的独特性有要求。如果你的口罩是纯色、且与背景人脸、墙壁颜色对比明显识别效果会非常好。2.2 控制大脑Arduino型号的选择与考量原文提到了Arduino Nano、Uno或Mega都可以其他型号不行。这背后涉及的是Pixy2库对硬件资源的依赖。Pixy2通过一个名为Pixy2的Arduino库进行通信。这个库默认使用硬件串口Serial进行数据交换。这就是型号选择的关键Arduino Uno/Nano/Mega它们都有独立的硬件串口RX/TX引脚。库会占用这个串口这意味着在上传程序时你需要暂时断开Pixy2与RX/TX引脚的连接否则会造成串口冲突无法上传。其他型号如Leonardo、Micro它们虽然也有串口但硬件架构不同库可能需要调整。而像ESP8266/ESP32这类芯片串口逻辑更复杂直接使用官方库可能无法兼容需要修改底层通信代码。为什么推荐Nano在这个项目中我首选Nano。因为它体积小巧可以直接插在面包板上方便布线最终成品也更容易做得紧凑。Uno功能完全一样但体积大。Mega则性能过剩引脚太多对于这个简单项目来说显得笨重。注意事项如果你使用Nano或Uno务必记住数字引脚D0(RX)和D1(TX)被Pixy2占用。这意味着你将无法同时使用这两个引脚做其他用途如连接蓝牙模块HC-05因为它们共享同一个硬件串口。如果需要更多外设可以考虑使用SoftwareSerial库将Pixy2连接到其他数字引脚但这需要修改库文件或示例代码会增加复杂度。2.3 执行与反馈单元LED、蜂鸣器与电阻这部分是典型的Arduino输出控制电路。LED与限流电阻红色和绿色LED各一个分别代表“未戴口罩”和“已戴口罩”状态。LED是电流驱动器件必须串联220欧姆的限流电阻直接接到5V和IO口会瞬间烧毁。电阻值在220Ω-1kΩ之间均可220Ω亮度更高。有源蜂鸣器这里使用的是“有源蜂鸣器”。它与“无源蜂鸣器”的区别在于有源蜂鸣器内部有振荡电路只要给电高电平就会响频率固定而无源蜂鸣器需要主控输出特定频率的PWM信号才能发声可以演奏音乐。本项目只需要简单的提示音所以有源蜂鸣器更简单代码只需digitalWrite(BUZZER_PIN, HIGH)即可。电源方案原文提到了“Novoo battery”这很可能是一个移动电源品牌。实际上任何能提供5V USB输出的电源都可以比如充电宝、手机充电器。通过USB线给Arduino供电同时Arduino的5V引脚又可以给Pixy2和面包板上的其他元件供电非常方便。需要注意整个系统的电流需求Arduino Nano通过USB供电时5V引脚能提供的电流有限约500mA。好在Pixy2和几个LED、蜂鸣器功耗不大USB充电宝足以应付。3. 硬件连接与电路搭建详解理论清楚了动手连接是关键。这一步的准确性直接决定了后续程序能否正常运行。3.1 分步接线指南与原理剖析让我们按照电流信号流向一步步搭建电路并理解每一步的作用第一步建立公共地GND将Arduino的任何一个GND引脚用杜邦线连接到面包板的负电源轨通常标有蓝色或黑色“-”号的一排。这是整个电路的参考零电位点所有元件的GND都必须最终汇流到这里形成完整的回路。第二步连接Pixy2摄像头这是最核心的连接。Pixy2一般附带一根6Pin的排线需要连接到Arduino。引脚对应关系通常颜色顺序为黑、棕、红、橙、黄、绿黑色GND - 接Arduino GND。红色VIN (5V-10V) - 接Arduino5V引脚。注意虽然标称支持到10V但接5V最安全稳定。黄色SDA (I2C Data) - 本项目未使用。绿色SCL (I2C Clock) - 本项目未使用。橙色SOUT (Serial Out) - 接Arduino的RX (D0)引脚。这是Pixy2发送数据给Arduino的线。棕色SIN (Serial In) - 接Arduino的TX (D1)引脚。这是Arduino发送指令给Pixy2的线。关键细节接口方向。原文提到了“cable faces inwards/outwards”这指的是连接器上防呆卡扣的方向。对于Nano排线的卡扣朝向板子内侧即USB口相反方向对于Uno卡扣朝外。插反了插不进去但用力过猛可能损坏针脚务必对准轻轻插入。第三步连接输出设备LED与蜂鸣器我们将两个LED和一个蜂鸣器视为三个独立的输出电路并联在Arduino的5V/GND和不同的数字引脚上。绿色LED电路将绿色LED的长脚阳极插入面包板的一个行。将一个220Ω电阻的一端插入同一行另一端插入面包板的另一行。用杜邦线将电阻的这一端连接到Arduino的数字引脚 D8。将绿色LED的短脚阴极-用杜邦线连接到面包板的GND负轨。红色LED电路重复上述过程但将电阻连接至数字引脚 D9。有源蜂鸣器电路有源蜂鸣器通常有正负标志“”或长脚为正。将其正极引脚用杜邦线连接到Arduino的数字引脚 D7。将其负极-引脚用杜邦线连接到面包板的GND负轨。重要检查点连接完成后务必肉眼检查一遍Pixy2的5V和GND是否接对接反必烧。每个LED是否都串联了电阻直接接5V的LED此刻已经在冒烟了。所有元件的GND是否都最终连到了面包板的GND负轨并且该负轨连到了Arduino的GNDPixy2的SOUT(橙)和SIN(棕)是否分别接在了Arduino的RX(D0)和TX(D1)这是通信的生命线。3.2 上电前检查与常见连接错误在接通USB电源前做一次系统的检查短路检查仔细观察面包板是否有任何两条不该连接的金属线或元件引脚意外接触特别是5V和GND之间。引脚冲突检查确认除了Pixy2没有其他设备连接到D0和D1。元件状态检查确保所有跳线插接牢固没有虚接。LED和电阻的引脚在面包板孔内接触良好。常见连接问题与现象问题上传代码时Arduino IDE报错“avrdude: stk500_getsync() attempt X of 10: not in sync”。排查这极大概率是因为Pixy2占用了硬件串口。解决方法上传代码时暂时拔掉Pixy2与Arduino D0、D1连接的线或者整个拔掉Pixy2排线上传成功后再插回去。这是使用硬件串口设备时的一个标准操作。问题上电后Pixy2上的指示灯不亮。排查检查5V和GND连接检查USB电源是否足额尝试换一个USB口或充电宝。问题LED不亮或蜂鸣器不响但Pixy2灯亮。排查检查LED正负极是否接反检查限流电阻是否接了且阻值正确检查代码中引脚定义是否与实际连接一致。4. 软件环境配置与Pixy2训练实战硬件是躯体软件是灵魂。这部分我们要让Pixy2“学会”认识口罩并准备好Arduino的编程环境。4.1 PixyMon软件安装与目标物训练Pixy2的“训练”过程本质上是在教它识别一种特定的颜色特征组合。安装PixyMon从官方Pixy2的Wiki或Github页面下载对应你操作系统Windows/macOS/Linux的PixyMon v2软件。安装过程通常很简单。连接与识别用Micro USB线将Pixy2直接连接到电脑。打开PixyMon软件如果连接成功你会看到软件窗口显示Pixy2拍摄到的实时画面。训练口罩特征将一个你希望识别的口罩放置在Pixy2前方光线均匀、背景不杂乱的位置。确保口罩在画面中清晰可见。在PixyMon软件界面中找到“Action”菜单选择“Set signature 1...”。这时画面会冻结。用鼠标在口罩图像上拖拽出一个矩形框尽可能框住口罩的主体部分避开复杂的背景。松开鼠标后Pixy2会分析框内区域的主要颜色特征并生成一个“签名1”Signature 1。此时画面上应该会持续显示一个彩色框颜色代表签名编号跟踪着你框选的区域并标注“s1”。关键一步保存配置。点击“File” - “Configure” - “Signature labels”。在弹出的窗口中找到“Signature 1”的标签栏输入“face mask”或任何你喜欢的名字如“mask”。点击OK。这样Pixy2不仅记住了颜色特征还关联了一个人类可读的标签。这个配置会保存在Pixy2的板载闪存中即使断电也不会丢失。训练技巧与避坑指南光线是关键Pixy2基于颜色识别光线变化会严重影响颜色感知。尽量在稳定、均匀的室内光下训练和使用。避免阳光直射或闪烁的灯光。背景要干净训练时尽量让口罩处于单一颜色的背景前如白墙减少背景中与口罩颜色相近的干扰物。多角度训练可选如果希望从不同角度都能识别可以重复“Set signature”步骤在稍微不同的角度下框选口罩。Pixy2会将多个样本的特征合并到同一个签名中提高鲁棒性。但注意不要差异过大。签名冲突Pixy2最多支持7个签名。如果你之前训练过其他物体注意签名编号不要冲突。可以通过“Clear signature”来清除某个签名的训练数据。4.2 Arduino IDE与Pixy2库的安装要让Arduino和Pixy2对话我们需要在Arduino IDE中安装专用的库。下载库文件访问Pixy2官方Arduino库的Github页面通常搜索“Pixy2 Arduino Library”即可找到下载库的ZIP压缩包。导入库打开Arduino IDE。点击“项目” - “加载库” - “添加.ZIP库...”。在弹出的文件选择器中找到你刚刚下载的ZIP文件选中并打开。IDE会提示库已添加成功。你可以在“文件” - “示例”中下拉列表的最下方找到“Pixy2”的分类里面会有很多示例程序证明库安装成功。验证安装为了快速测试硬件连接和库是否工作我们可以先上传一个最简单的示例程序。打开“示例” - “Pixy2” - “hello_world”。按照之前说的上传前拔掉Pixy2与D0/D1的连接线。上传成功后再接回Pixy2。打开串口监视器波特率115200你应该能看到Pixy2不断打印出它检测到的物体块Block信息包括签名、坐标、大小等。如果能看到数据恭喜你软硬件通信基础已经打通。5. 代码解析与程序设计逻辑有了能通信的硬件和训练好的视觉模型现在我们来编写让整个系统“活”起来的逻辑代码。我将逐段解析代码并解释其背后的设计考量。5.1 主程序框架与核心逻辑流我们先来看完整的代码结构它遵循了Arduino程序的经典setup-loop模式。#include Pixy2.h // 引入Pixy2库 // 引脚定义 #define BUZZER_PIN 7 #define GREEN_LED_PIN 8 #define RED_LED_PIN 9 // 创建Pixy2对象 Pixy2 pixy; void setup() { // 初始化串口通信用于调试可选 Serial.begin(115200); Serial.print(Starting...\n); // 初始化输出引脚模式 pinMode(BUZZER_PIN, OUTPUT); pinMode(GREEN_LED_PIN, OUTPUT); pinMode(RED_LED_PIN, OUTPUT); // 初始状态关闭所有输出 digitalWrite(BUZZER_PIN, LOW); digitalWrite(GREEN_LED_PIN, LOW); digitalWrite(RED_LED_PIN, LOW); // 初始化Pixy2摄像头 pixy.init(); } void loop() { static bool maskDetected false; // 静态变量用于记录上一次检测状态 bool currentDetection false; // 当前检测状态 // 获取Pixy2检测到的数据块目标物 pixy.ccc.getBlocks(); // 判断是否检测到签名1即我们训练的“口罩” if (pixy.ccc.numBlocks pixy.ccc.blocks[0].m_signature 1) { currentDetection true; // 检测到口罩 } else { currentDetection false; // 未检测到口罩 } // 仅当检测状态发生变化时才更新输出防抖动优化 if (currentDetection ! maskDetected) { maskDetected currentDetection; // 更新状态记录 if (maskDetected) { // 状态已戴口罩 digitalWrite(GREEN_LED_PIN, HIGH); digitalWrite(RED_LED_PIN, LOW); digitalWrite(BUZZER_PIN, LOW); // 确保蜂鸣器关闭 Serial.println(Mask ON - Green Light); } else { // 状态未戴口罩 digitalWrite(GREEN_LED_PIN, LOW); digitalWrite(RED_LED_PIN, HIGH); digitalWrite(BUZZER_PIN, HIGH); // 触发蜂鸣器 Serial.println(Mask OFF - Red Light Buzzer!); } } // 短暂延迟降低循环频率节省资源 delay(100); }程序逻辑流解析初始化Setup配置引脚、初始化Pixy2。将所有输出置于已知的关闭状态这是一个好习惯。主循环Loop数据获取pixy.ccc.getBlocks()是核心函数它向Pixy2请求最新的检测结果并将数据填充到pixy.ccc.blocks[]数组中。结果判断检查numBlocks检测到的目标数量是否大于0并且第一个目标的签名m_signature是否为1我们训练的口罩签名。状态切换与输出这里引入了一个重要的优化——状态变化触发。只有当前检测结果与上一次记录的状态不同时才去改变LED和蜂鸣器的状态。这避免了LED在检测边缘频繁闪烁也防止了蜂鸣器持续鸣叫使系统行为更稳定。延迟一个100ms的延迟将主循环频率控制在约10Hz。这对于人机交互来说足够快也避免了Arduino全速运行做无用功。5.2 关键代码段深度解读与优化空间让我们深入几个关键点并探讨如何让代码更健壮。1. 关于pixy.ccc.getBlocks()这个函数调用会通过硬件串口向Pixy2请求数据。Pixy2会返回它当前“看到”的所有符合签名特征的目标块Block。每个块是一个结构体包含丰富信息m_signature: 签名编号1-7。m_x,m_y: 目标中心点的坐标Pixy2视野坐标系。m_width,m_height: 目标的宽度和高度。m_age: 该目标被连续跟踪的帧数可用于过滤瞬时干扰。在我们的简单应用中只用了签名和是否存在判断。但如果你需要更精确的控制比如只有口罩在画面中心区域才亮绿灯就可以利用m_x, m_y坐标信息。2. 防抖动逻辑的重要性原始示例代码可能直接在loop中根据检测结果设置输出这会导致一个问题当人站在检测边界或者光线稍有变化时Pixy2可能会在“检测到”和“未检测到”之间快速跳动造成LED疯狂闪烁蜂鸣器“哔哔”乱叫。引入maskDetected这个静态变量记录上一次的状态只在状态真正改变时行动极大地提升了用户体验和系统稳定性。这是一种简单的软件去抖。3. 扩展性与优化建议增加检测置信度可以不止判断第一个块(blocks[0])而是遍历blocks数组寻找面积最大(m_width * m_height)的签名1目标这可能是最正对摄像头的口罩提高准确性。蜂鸣器提示音优化持续的高电平蜂鸣声很刺耳。可以改为间歇性鸣叫例如响0.5秒停0.5秒。这需要引入时间控制使用millis()函数进行非阻塞延时。// 在loop中或全局定义 unsigned long previousBeepTime 0; const long beepInterval 500; // 蜂鸣间隔500ms // 在触发蜂鸣的状态下 if (currentMillis - previousBeepTime beepInterval) { previousBeepTime currentMillis; digitalWrite(BUZZER_PIN, !digitalRead(BUZZER_PIN)); // 状态翻转 }增加调试信息通过串口打印更详细的信息如检测到的块数量、坐标等这在调试阶段非常有用。6. 系统调试、优化与问题排查实录代码上传了硬件连好了但第一次运行往往不会一帆风顺。这部分分享我从“跑通”到“好用”过程中遇到的实际问题和解决方法。6.1 上电调试与初步验证供电与启动连接好所有线路记得Pixy2的线要插回去通过USB线上电。观察Arduino板上的电源指示灯应亮起。Pixy2摄像头上的LED应亮起可能是红色或绿色取决于状态。面包板上的LED不应亮起除非代码初始化是高电平。基础功能测试将训练时用的口罩放在Pixy2前方约30-50厘米处保持正面朝向。预期结果绿色LED应点亮红色LED熄灭蜂鸣器安静。移开口罩。预期结果绿色LED熄灭红色LED点亮蜂鸣器鸣响。如果蜂鸣器不响检查其正负极是否接反或者尝试用代码digitalWrite(BUZZER_PIN, HIGH);单独测试。串口监视器辅助调试打开Arduino IDE的串口监视器波特率115200你会看到程序打印的状态信息。这是最强大的调试工具。你可以看到“Mask ON”或“Mask OFF”的提示确认程序逻辑判断是否正确。6.2 典型问题场景与解决方案即使按照步骤操作你也可能会遇到下面这些问题。这里是我的排查笔记问题一检测不稳定时灵时不灵现象口罩明明在眼前绿灯却闪烁不定或者偶尔变红。排查与解决光线复查这是最常见的原因。用手或纸板在设备上方制造一个均匀的光环境避免顶灯在口罩上形成高光或阴影。可以考虑在Pixy2上方加一个小遮光罩。距离与角度Pixy2的有效检测距离和视野有限。确保口罩在Pixy2的视野中心区域且距离在20cm到1米左右取决于镜头。口罩正面朝向摄像头不要倾斜过大。签名干扰检查环境中是否有与口罩颜色非常接近的物体比如同色系的衣服、海报。尝试移开或更换训练用的口罩选择颜色更独特的。调整检测阈值在PixyMon的“File”-“Configure”-“Interface”中可以调整“Signature 1”的检测阈值。适当提高阈值可以过滤掉一些相似颜色的干扰但可能会降低检测灵敏度。需要微调找到平衡点。问题二完全无法检测到口罩现象无论放不放口罩串口始终打印“Mask OFF”红灯常亮。排查与解决签名确认首先确认你训练时设置的签名是“1”并且代码中判断的是m_signature 1。在PixyMon中重新连接看看画面中是否还能显示“face mask”的跟踪框。如果没有需要重新训练。数据获取检查在代码中在pixy.ccc.getBlocks();后添加调试语句Serial.println(pixy.ccc.numBlocks);。上电后观察这个数字。如果始终为0说明Pixy2没有返回任何检测块。问题可能出在通信故障检查Pixy2与Arduino的RX/TX连接线是否松动或接反SOUT-RX, SIN-TX。库版本确保安装的Pixy2库版本与你的Pixy2硬件版本匹配。电源不足尝试用独立的5V/2A电源适配器通过Arduino的电源接口供电排除USB供电能力不足的可能。问题三蜂鸣器常响或LED状态错误现象红灯绿灯同时亮或蜂鸣器一直响。排查与解决引脚短路用万用表通断档检查面包板上LED和蜂鸣器的连接点看是否有意料之外的短路。特别是相邻的插孔。代码逻辑错误检查setup()中是否将所有输出引脚都正确设置为OUTPUT模式并初始化为LOW。检查loop()中的if-else逻辑确保绿灯和红灯、蜂鸣器的开关状态是互斥的。电源噪声如果蜂鸣器在应该关闭时仍有轻微“滋滋”声可能是电路中的噪声。可以在蜂鸣器两端并联一个反向的续流二极管如1N4148或者在代码控制引脚和蜂鸣器之间加一个三极管驱动电路进行隔离。6.3 性能优化与场景适配建议当基本功能实现后可以考虑根据实际应用场景进行优化响应速度优化默认的delay(100)意味着每秒检测10次。对于快速走过的人可能反应不够快。可以尝试减少延迟到50ms甚至30ms。但要注意过高的频率会增加Arduino和串口的负担可能得不偿失。Pixy2本身的处理帧率也有上限。增加检测区域限制你可能只关心门口一个小区域是否有人戴口罩。可以利用Pixy2返回的坐标信息(m_x, m_y)。在代码中增加判断只有当检测到的目标中心点落在设定的矩形区域内时才认为是有效检测。这可以过滤掉远处的干扰。多级警报例如首次未戴口罩亮红灯持续3秒未戴则触发蜂鸣器。这需要引入状态机和时间戳millis()代码复杂度会增加但交互更友好。降低功耗如果使用电池供电可以考虑让Pixy2间歇性工作通过Arduino控制其电源或使用睡眠模式或者降低检测频率。7. 项目总结与扩展思路这个基于Arduino和Pixy2的口罩检测系统作为一个原型已经很好地完成了它的使命验证了利用专用视觉传感器与开源硬件平台快速构建特定目标识别应用的可行性。它的优势在于开发速度快、成本相对较低、逻辑清晰直观非常适合作为教育案例或简单场景下的自动化触发装置。回顾整个项目我认为最关键的成功因素有三点一是正确选择了Pixy2这个专为嵌入式视觉设计的传感器它极大地降低了算法门槛二是设计了状态变化触发的输出逻辑避免了输出设备的抖动三是在训练阶段充分考虑了光线和背景环境这是基于颜色识别方案稳定工作的前提。当然它也有明显的局限性。其核心依赖颜色特征因此对光照变化、口罩颜色与背景的对比度非常敏感。在复杂光照如傍晚、霓虹灯下或有人穿着与口罩同色系衣服时误检和漏检率会上升。它也无法区分“正确佩戴口罩”和“口罩挂在脖子上”这两种情况。扩展思路 如果你对这个项目感兴趣并想进一步探索这里有几个方向升级视觉核心可以尝试用ESP32-CAM或树莓派OpenCV的方案。利用Haar级联分类器或轻量化的深度学习模型如TensorFlow Lite for Microcontrollers进行真正的人脸和口罩特征识别这将大幅提升准确性和鲁棒性但开发难度和成本也会增加。增加交互与联网功能为Arduino Nano加上一个Wi-Fi模块如ESP-01S或直接使用ESP32做主控。当检测到未戴口罩时除了本地声光报警还可以通过网络向管理员的手机发送一条通知或者记录一条数据到云端。与其他系统联动将这个检测装置作为一个触发节点。例如与一个简单的舵机锁联动只有检测到戴口罩时锁才打开或者连接一个显示屏显示实时提示语和统计人数。识别其他物体Pixy2的潜力不止于此。你可以训练它识别特定的工具是否放回原位、货架上某种商品是否缺货、或者区分不同颜色的物料球。思路是一样的训练签名获取数据触发动作。最后一个小建议在最终部署时可以考虑用3D打印一个外壳将Arduino、面包板整合进去只露出Pixy2镜头和指示灯这样既美观也能保护电路。硬件项目的乐趣一半在编程另一半就在这最后的“包装”里。希望这个详细的拆解能帮你顺利复现或启发你的新想法。