资料介绍
描述
项目概况
人们每周花大约 5 个小时在镜子里看着自己。对于我们大多数人来说,这是我们与自己相处的时间:回顾一天中发生的事情,准备好出门或只是欣赏我们的反思。但对其他人来说,这并不容易。
研究表明,五分之二的人在照镜子时总是对自己不满意。这些人会不惜一切代价避开镜子,并且不喜欢我们其他人所做的“我的时间”。同一项研究还指出,在 40% 的人中,大多数人都是女性。
我敢肯定,在某些时候,我们都为符合他人的期望并融入我们的社会群体而感到不安。不断地照镜子并质疑我们的外表是有压力的。有时我们走出家门,认为自己看起来很糟糕。
更年期的女性在照镜子时很容易感到失望。研究表明,女性在围绝经期体重会增加 1 到 2 公斤(尽管很多人会增加更多)。这与情绪不稳定的潜在增加一起可能导致女性鄙视自己,不惜一切代价避免反思。
更令人担忧的是,每 8 名成年人中就有 1 人因身体形象而产生过自杀念头。照镜子对这些人来说是可怕的,但如果我们让他们相信生活超越了他们的外表,不管你的头发看起来如何,每个人都以自己的方式美丽。
这是微笑镜。我决定简化解决这个问题的方法,并考虑人们在照镜子时想听到什么。也许是“你可以做到”或“继续前进”。我想这就像你在 Duolingo 上学习时一样,每次你连续得到 5 或 10 个答案时,Duo 就会弹出并祝贺你。虽然我知道 Duo 是一只活泼的鸟,但当我受到称赞时,我确实为自己感到自豪。
如果我们能把这种积极的反馈带到镜子上呢?这就是 SmileMirror 的目标。该应用程序包括一个放置在镜子上的人工智能驱动的智能相机,提供边缘面部识别。当这个人花时间在镜子前时,设备会检测到这一点,并在他们的手机上向他们发送一条带有鼓舞人心的消息的通知,让他们度过一天。
虽然简单,但这个应用程序可以真正提升一个人对自己的印象,并让他们感到被欣赏。让每个人都能愉快地照镜子!
什么是微笑镜?
SmileMirror 由安装在用户镜子上的人工智能智能相机组成。该相机在边缘有一个面部识别模块,这意味着没有图像数据被发送到相机之外。相机与 Arduino 微控制器配对,用于检查相机是否检测到人脸。
如果在 2 分钟内检测到人脸,设备将选择本地存储的励志消息,并通过由 Blynk 后端提供支持的移动通知发送给用户。然后,设备将等到该人不再在镜子中,然后再次开始循环。
一次恭维,SmileMirror 可以使用户受益。
更进一步,会是什么?
我觉得可以对该产品进行有希望的发展,以进一步取得成功并使其大规模生产。以下是我在开发产品时想到的一些改进。这些改进可以在项目的第二个版本中实施。
- 在设备边缘添加面部表情识别功能,使其能够在用户出现情绪低落时定位其消息。
- 使用工业组件降低产品的整体成本(例如,用更便宜的替代品替换 Arduino Yun)
了解细节
我喜欢将我的项目视为具有前端和后端:前端是物联网设备,后端是发生在云中的应用程序和流程。在详细介绍此应用程序时,我将其分为这两个部分。
前端
该项目的前端由 Arduino 微控制器和 Huskylens 相机模块组成。摄像头模块一直处于开启状态,由云驱动。相机已经经过训练,可以检测和注册人脸,这就是它在开机时所做的事情。如果检测到已知人脸,相机模块将告诉微控制器识别出已知人脸。
如果单片机连续2分钟接收到这个数据,就会意识到有人在照镜子(这样做是为了防止有人经过镜子时发送消息)。然后,微控制器将向 Blynk 发送一个数据包,其中包含设备上随机生成的鼓舞人心的消息。
我选择使用 Arduino Yun 是因为它非常易于使用。由于它的板载 WiFi 和连接选项,这让我能够在几个小时内开发一个应用程序。Huskylens 是 DF Robot 开发的智能摄像系统。该设备于今年早些时候(或去年,我不记得)在 Kickstarted 上首次亮相。当我听说这台相机时,我急忙去拿它。
老实说,这是一个不错的设备,面部识别工作非常顺利(考虑到它是在边缘完成的)。它可以使用串行或 I2C 连接到任何微控制器。可以轻松训练相机识别人脸、物体或颜色。这实际上是通过按下按钮来完成的。
这两种设备都非常昂贵,但请记住,这是一个原型,我选择使用这些设备是因为它使我能够更快地生成应用程序。如果大规模生产,可以考虑使用更便宜的替代品。
后端
该项目的后端仅由 Blynk 的基础设施组成,该基础设施将消息从 IoT 设备中继到移动应用程序。Arduino Yun 向 Blynk 发送一个包含鼓舞人心的信息的字符串。然后将该消息中继到应用程序,该应用程序将其作为通知发送给用户。该应用程序可以轻松创建,然后部署在 iOS 和 Android 上。
市场调查
已经简要进行了市场调查,以确定竞争并确定产品的 USP。以下是所进行的市场调查的摘要。
竞争产品和类似产品
市面上有好几种类似的产品,在谷歌上搜索“智能镜子”可以找到。这些产品的问题在于它们非常专注于一个复杂的系统,其中温度和天气预报等数据显示在镜子上。
与这些产品相反,SmileMirror 旨在拥有一个简单的功能,如果他们照镜子,它会简单地向用户发送一个鼓舞人心的信息。这种简单性在这些旨在在用户的镜子上显示大量信息的设计中是独一无二的。
独特的卖点
该应用程序的 USP 是一种将人放在首位的方法,并开发了一个系统,当人们照镜子时,他们可以得到提升,从而提高他们对自己的尊重和自我价值。
用户角色
典型人物的角色是40到50岁的女性。虽然这个设备是针对女性的,但大多数人都可以从中受益。用户最好有中等收入并且在他们的身体形象方面遇到问题。
项目实施
我在下面总结了创建这个项目所需的所有步骤。
让我们准备好东西吧!
首先,我们需要获取项目所需的组件。这些组件在下面列出。
- Arduino Yun Rev2
- DF Robot Huskylens
- 移动电源
- 电线
- 面包板
或者,您可以使用 Arduino Uno 和 ESP8266 模块。如果您需要任何帮助,请在这种情况下修改代码或给我发送消息。
设置相机
我们需要做的第一件事是设置相机模块。我们希望对其进行设置,以便在我们看它时它能够识别我们的脸。
此链接位于 DF Robot 提供的文档中,并解释了如何在设备上注册人脸。请按照上述文档中提供的步骤,并在继续下一步之前用相机记住一张脸。
硬件方面
现在我们已经设置了相机,我们可以移动到 Arduino Yun 上。如果您的 Arduino Yun 开箱即用,您需要对其进行设置并将其连接到 WiFi。Arduino 发布的这个页面可以指导您完成设置。
在您的 Arduino Yun 启动并运行后,接下来要做的就是连接电路。下图显示了相机应连接到 Arduino Yun 的方式。对于这个项目,我们将使用 Serial 与相机进行通信。
请原谅上面的示意图中包含 Arduino Uno,不幸的是,DF Robot 没有可用于其 Huskylens 模块的fritzing 部件,因此我不得不使用他们网站上发布的接线图。
让我们看一下代码
所以现在我们的电路已经启动并运行了,让我们看一下这个项目所需的代码。我使用下面代码部分中链接的 Arduino IDE 编译了一个程序。在这一部分中,我将引导您了解代码中的主要功能,并解释它们的作用并将它们放在上下文中。
// CHANGE: Insert your Blynk token here
char auth[] = ""; // insert project token
// define messages
int numberOfMessages = 4; // set manually to reduce use of memory
String inspirationalMessages[] = // you can change the messages just be aware of the memory on the device
{
"Keep Going!",
"You can do this!",
"You’re doing great!",
"Show them what you've got!"
};
这段代码可以在程序的开头找到。第一个变量需要由用户编辑以允许设备连接到自定义 Blynk 应用程序。然后设备会将几条鼓舞人心的信息存储为一个数组。您可以更改这些消息,但要注意 Arduino Yun 上的存储使用情况,因为如果不扩展,它会非常有限。
// globals
float waitTime = 120; // time to wait until sending message (seconds)
bool counting = false; // are we counting time?
time_t currentTime;
time_t startTime;
int errorNr = 0;
int errorAdmital = 25; // quit on 25 (cannot be bigger than waitTime)
更多变量,这些非常重要,尽管用户可以更改所有变量,但了解每个变量控制的内容至关重要。
- waitTime以秒为单位的时间量,如果一直存在人脸,则向用户发送通知
- 计数存储 2 分钟是否计数。看到人脸时开始计数
- currentTime UNIX 中的当前时间。来自 Blynk RTC
- startTime在 UNIX 中开始计数的时间。
- errorNr相机未检测到人脸的读取次数
- errorAdmital在设备放弃计数之前允许的未检测到面部的读取次数。
// get the data from the camera module
void processCamera()
{
if(huskylens.request())
{
if(huskylens.available())
{
while(huskylens.available())
{
HUSKYLENSResult result = huskylens.read();
processResult(result);
}
}
else
{
errorNr++;
if(errorNr > errorAdmital) // if face not detected for a while, stop counting
{
startTime = 0;
counting = false;
}
if(errorNr > 1000) // reset value to prevent overspill
{
errorNr = 0;
}
}
}
}
这是微控制器不断运行的循环。循环读取摄像头模块输出的数据。设备检查模块是否连接,是否正在上报数据。这个循环还负责错误计数;如果相机没有检测到人脸,错误的数量将增加。
// process the data coming from the Huskylens module
bool processResult(HUSKYLENSResult result) // only runs if block detected
{
if(result.command == COMMAND_RETURN_BLOCK) // if block returned
{
if((currentTime - startTime) > waitTime) // check if the waiting time is over
{
if(counting) // if so, send the phone notification
{
Serial.println("");
Serial.println("[loop] Face Identified for " + String(waitTime) + " seconds");
Blynk.notify(getMessage()); // send the inspirational message
delay(30 * 60 * 1000); // Set to 30 minutes. If device does not resume running the code, consider using an alarm from time library
errorNr = 0;
counting = false;
}
}
if(result.ID == 0) // if face not recognised
{
Serial.println("Face Not Recognised ID: " + String(result.ID));
if(counting)
{
errorNr = 0;
}
}
else // if face is recognised
{
Serial.println("Face Recognised ID: " + String(result.ID));
if(!counting) // if the face was just noticed, start counting
{
startTime = now();
Serial.println("face set at" + String(startTime));
}
counting = true;
errorNr = 0;
}
}
return true;
}
现在这个循环看起来有点混乱,但它的功能很简单;检查 2 分钟是否结束并发送通知。除此之外,如果注意到一张脸,循环开始计算 2 分钟并重置返回的错误数。
编译代码
接下来要做的是在 Arduino 中打开代码,将 Arduino Yun 插入并将应用程序上传到设备上。取消注释 void loop() 中的最后几行很重要,因为这会将所有变量转储到串行监视器。
调试时,尝试将waitTime设置为 5 秒,并在这段时间内将您的脸放在框架中。保持串行监视器打开,如果你得到一个打印说数据正在发送到 Blynk,你就完成了!
如果您没有成功,请不要担心。Huskylens 模块背面有一个 RGB LED,如果它检测到一个记忆的脸,它会变成绿色,如果它检测到一个它不熟悉的脸,它会变成蓝色。如果它是蓝色的,请确保您的面部已注册。如果它关闭,请确保相机处于面部识别模式,方法是旋转滚轮(在相机顶部,在您的左侧),直到出现面部识别。如果没有任何效果,而您根本不知道该怎么做,请随时给我发消息。
让后端排序
现在让我们在Blynk方面工作。您可以获得适用于Android和iOS 的应用程序。安装应用程序后,请按照以下步骤开始。创建一个帐户并确保您已登录,然后再继续。
打开 Blynk 应用程序,您应该会看到如上图所示的屏幕(可能没有项目空间)。
接下来,向右滑动直到出现此屏幕,单击“新建项目”按钮以创建一个新项目。
现在为项目命名并从下拉菜单中选择 Arduino Yun。按创建。
您现在将被引导到一个空白画布,您可以在其中构建您的应用程序。单击画布或向左滑动以显示可用的小部件。
从列表中,依次选择通知和 RTC 小部件并将它们放置在画布上。
你应该最终得到这样的东西。现在您需要做的最后一件事是单击屏幕顶部的齿轮图标,然后按Copy All按钮将身份验证令牌复制到剪贴板(包含它的电子邮件也已发送给您)。现在将其粘贴到第 30 行变量 auth[] 的代码中。
按屏幕右上角的开始按钮开始运行应用程序。你准备好了!
把它放在一起!
最后,再次运行调试代码,您应该会在手机上收到带有启发性消息的通知。尤里卡!现在注释掉最后的调试并上传最终代码以在设备上分发。剩下要做的就是把它放在镜子上。
让我们安装它
最后,需要很少努力的部分(希望如此)。我很幸运,在墙壁和镜子背面之间有惊人的空间,让我可以把所有的组件都扔到镜子后面,只留下镜子前面的相机。
这对您来说可能会有所不同。如果您真的很喜欢这个项目,请考虑为该设备添加一个 3d 外壳。如果要批量生产该设备,显然需要所有设计的一致性,因此最好使用 3D 打印外壳。
反射
嗯,这是一个有趣的项目(对我来说)。我在临近截止日期的时候参加了比赛,我正忙于学习,但后来冠状病毒来了,再也没有什么可学习的了。无论如何,我需要用家里的东西做一些东西。Huskylens 是我首先想到的,因为我之前没有机会使用它。
所以,我想出了一个竞赛的点子,它最好以心理健康为目标,并想出了一个智能镜子设计。我最初想把鼓舞人心的信息写在镜子上,当有人看着它时点亮它,但由于时间限制,我不得不重新考虑并想出了向用户发送信息通知的想法。
总体而言,该项目进行得相当顺利,我认为它可以大规模生产,也许整个设备可以安装到 PCB 上并以这种方式运输。但无论如何,我决定针对更年期带来的多种症状,而不是制造那个时期女性独有的产品。SmileMirror,虽然是针对更年期女性的,但每个人都可以使用。
我必须承认,我在开发产品时面临的最大挑战是使用变量。我已经有一段时间没有真正用 C++ 编写代码了,在玩过 JS 和 python 之后,很难回到变量类型。我花了大约一个小时寻找在 Yun 上存储 UNIX 时间的方法(因为 Yun 以比其他微控制器更小的精度存储所有数值变量)。但除此之外,这是一个令人愉快的项目。我希望你喜欢它!
- 开源硬件之保护花园免受猫的侵害
- 开源硬件之孩子们的拼写挑战
- 开源硬件-警灯
- 开源硬件之Gerber文件
- AirBits开源硬件
- 开源硬件之明星有多亮
- 音箱开源硬件分享
- 开源硬件之电流传感器交流
- HBus开源硬件
- 开源硬件之篡改防护设备
- 开源硬件之向所有有礼貌的司机表示感谢
- 门铃开源硬件
- 开源硬件之语音控制LED
- 开源硬件之ArduBand 拯救你的眼睛
- 主流的开源硬件有哪些详细资料说明
- 偏振镜和减光镜的区别 2022次阅读
- 安信可小安派-Knob旋转编码器驱动板简介 481次阅读
- 安派-Eyes-DU开发板的参数说明 534次阅读
- 小安派-SCP-2.4 无线中控器参数概述 718次阅读
- 用小安派开源硬件制作一个桌面天气站 809次阅读
- 开源之夏总结runk:基于Rust的OCI runtime实现 3116次阅读
- 使用开源硬件的烹饪过程 1313次阅读
- 寻找开源硬件成功的触发器 636次阅读
- dfrobotDFRobot Bluno M3控制器简介 1823次阅读
- 源创通信BPI-M1+ 开源硬件开发板介绍 2648次阅读
- 源创通信开源智能路由器 MTK 7623N 介绍 2897次阅读
- 关于FPGA在开源方面的探索浅析 3706次阅读
- 基于Altium Designer的OSHw开源项目 3609次阅读
- 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi 6363次阅读
- 开源硬件究竟有多“Open”?看完这个你就清楚了 6939次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多