資料介紹
描述
項(xiàng)目概況
人們每周花大約 5 個小時在鏡子里看著自己。對于我們大多數(shù)人來說,這是我們與自己相處的時間:回顧一天中發(fā)生的事情,準(zhǔn)備好出門或只是欣賞我們的反思。但對其他人來說,這并不容易。
研究表明,五分之二的人在照鏡子時總是對自己不滿意。這些人會不惜一切代價(jià)避開鏡子,并且不喜歡我們其他人所做的“我的時間”。同一項(xiàng)研究還指出,在 40% 的人中,大多數(shù)人都是女性。
我敢肯定,在某些時候,我們都為符合他人的期望并融入我們的社會群體而感到不安。不斷地照鏡子并質(zhì)疑我們的外表是有壓力的。有時我們走出家門,認(rèn)為自己看起來很糟糕。
更年期的女性在照鏡子時很容易感到失望。研究表明,女性在圍絕經(jīng)期體重會增加 1 到 2 公斤(盡管很多人會增加更多)。這與情緒不穩(wěn)定的潛在增加一起可能導(dǎo)致女性鄙視自己,不惜一切代價(jià)避免反思。
更令人擔(dān)憂的是,每 8 名成年人中就有 1 人因身體形象而產(chǎn)生過自殺念頭。照鏡子對這些人來說是可怕的,但如果我們讓他們相信生活超越了他們的外表,不管你的頭發(fā)看起來如何,每個人都以自己的方式美麗。

這是微笑鏡。我決定簡化解決這個問題的方法,并考慮人們在照鏡子時想聽到什么。也許是“你可以做到”或“繼續(xù)前進(jìn)”。我想這就像你在 Duolingo 上學(xué)習(xí)時一樣,每次你連續(xù)得到 5 或 10 個答案時,Duo 就會彈出并祝賀你。雖然我知道 Duo 是一只活潑的鳥,但當(dāng)我受到稱贊時,我確實(shí)為自己感到自豪。
如果我們能把這種積極的反饋帶到鏡子上呢?這就是 SmileMirror 的目標(biāo)。該應(yīng)用程序包括一個放置在鏡子上的人工智能驅(qū)動的智能相機(jī),提供邊緣面部識別。當(dāng)這個人花時間在鏡子前時,設(shè)備會檢測到這一點(diǎn),并在他們的手機(jī)上向他們發(fā)送一條帶有鼓舞人心的消息的通知,讓他們度過一天。
雖然簡單,但這個應(yīng)用程序可以真正提升一個人對自己的印象,并讓他們感到被欣賞。讓每個人都能愉快地照鏡子!
什么是微笑鏡?
SmileMirror 由安裝在用戶鏡子上的人工智能智能相機(jī)組成。該相機(jī)在邊緣有一個面部識別模塊,這意味著沒有圖像數(shù)據(jù)被發(fā)送到相機(jī)之外。相機(jī)與 Arduino 微控制器配對,用于檢查相機(jī)是否檢測到人臉。
如果在 2 分鐘內(nèi)檢測到人臉,設(shè)備將選擇本地存儲的勵志消息,并通過由 Blynk 后端提供支持的移動通知發(fā)送給用戶。然后,設(shè)備將等到該人不再在鏡子中,然后再次開始循環(huán)。
一次恭維,SmileMirror 可以使用戶受益。
更進(jìn)一步,會是什么?
我覺得可以對該產(chǎn)品進(jìn)行有希望的發(fā)展,以進(jìn)一步取得成功并使其大規(guī)模生產(chǎn)。以下是我在開發(fā)產(chǎn)品時想到的一些改進(jìn)。這些改進(jìn)可以在項(xiàng)目的第二個版本中實(shí)施。
- 在設(shè)備邊緣添加面部表情識別功能,使其能夠在用戶出現(xiàn)情緒低落時定位其消息。
- 使用工業(yè)組件降低產(chǎn)品的整體成本(例如,用更便宜的替代品替換 Arduino Yun)
了解細(xì)節(jié)
我喜歡將我的項(xiàng)目視為具有前端和后端:前端是物聯(lián)網(wǎng)設(shè)備,后端是發(fā)生在云中的應(yīng)用程序和流程。在詳細(xì)介紹此應(yīng)用程序時,我將其分為這兩個部分。
前端

該項(xiàng)目的前端由 Arduino 微控制器和 Huskylens 相機(jī)模塊組成。攝像頭模塊一直處于開啟狀態(tài),由云驅(qū)動。相機(jī)已經(jīng)經(jīng)過訓(xùn)練,可以檢測和注冊人臉,這就是它在開機(jī)時所做的事情。如果檢測到已知人臉,相機(jī)模塊將告訴微控制器識別出已知人臉。
如果單片機(jī)連續(xù)2分鐘接收到這個數(shù)據(jù),就會意識到有人在照鏡子(這樣做是為了防止有人經(jīng)過鏡子時發(fā)送消息)。然后,微控制器將向 Blynk 發(fā)送一個數(shù)據(jù)包,其中包含設(shè)備上隨機(jī)生成的鼓舞人心的消息。

我選擇使用 Arduino Yun 是因?yàn)樗浅R子谑褂谩?/font>由于它的板載 WiFi 和連接選項(xiàng),這讓我能夠在幾個小時內(nèi)開發(fā)一個應(yīng)用程序。Huskylens 是 DF Robot 開發(fā)的智能攝像系統(tǒng)。該設(shè)備于今年早些時候(或去年,我不記得)在 Kickstarted 上首次亮相。當(dāng)我聽說這臺相機(jī)時,我急忙去拿它。
老實(shí)說,這是一個不錯的設(shè)備,面部識別工作非常順利(考慮到它是在邊緣完成的)。它可以使用串行或 I2C 連接到任何微控制器。可以輕松訓(xùn)練相機(jī)識別人臉、物體或顏色。這實(shí)際上是通過按下按鈕來完成的。
這兩種設(shè)備都非常昂貴,但請記住,這是一個原型,我選擇使用這些設(shè)備是因?yàn)樗刮夷軌蚋斓厣蓱?yīng)用程序。如果大規(guī)模生產(chǎn),可以考慮使用更便宜的替代品。

后端

該項(xiàng)目的后端僅由 Blynk 的基礎(chǔ)設(shè)施組成,該基礎(chǔ)設(shè)施將消息從 IoT 設(shè)備中繼到移動應(yīng)用程序。Arduino Yun 向 Blynk 發(fā)送一個包含鼓舞人心的信息的字符串。然后將該消息中繼到應(yīng)用程序,該應(yīng)用程序?qū)⑵渥鳛橥ㄖl(fā)送給用戶。該應(yīng)用程序可以輕松創(chuàng)建,然后部署在 iOS 和 Android 上。
市場調(diào)查
已經(jīng)簡要進(jìn)行了市場調(diào)查,以確定競爭并確定產(chǎn)品的 USP。以下是所進(jìn)行的市場調(diào)查的摘要。
競爭產(chǎn)品和類似產(chǎn)品
市面上有好幾種類似的產(chǎn)品,在谷歌上搜索“智能鏡子”可以找到。這些產(chǎn)品的問題在于它們非常專注于一個復(fù)雜的系統(tǒng),其中溫度和天氣預(yù)報(bào)等數(shù)據(jù)顯示在鏡子上。
與這些產(chǎn)品相反,SmileMirror 旨在擁有一個簡單的功能,如果他們照鏡子,它會簡單地向用戶發(fā)送一個鼓舞人心的信息。這種簡單性在這些旨在在用戶的鏡子上顯示大量信息的設(shè)計(jì)中是獨(dú)一無二的。
獨(dú)特的賣點(diǎn)
該應(yīng)用程序的 USP 是一種將人放在首位的方法,并開發(fā)了一個系統(tǒng),當(dāng)人們照鏡子時,他們可以得到提升,從而提高他們對自己的尊重和自我價(jià)值。
用戶角色

典型人物的角色是40到50歲的女性。雖然這個設(shè)備是針對女性的,但大多數(shù)人都可以從中受益。用戶最好有中等收入并且在他們的身體形象方面遇到問題。
項(xiàng)目實(shí)施
我在下面總結(jié)了創(chuàng)建這個項(xiàng)目所需的所有步驟。
讓我們準(zhǔn)備好東西吧!
首先,我們需要獲取項(xiàng)目所需的組件。這些組件在下面列出。
- Arduino Yun Rev2
- DF Robot Huskylens
- 移動電源
- 電線
- 面包板

或者,您可以使用 Arduino Uno 和 ESP8266 模塊。如果您需要任何幫助,請?jiān)谶@種情況下修改代碼或給我發(fā)送消息。
設(shè)置相機(jī)
我們需要做的第一件事是設(shè)置相機(jī)模塊。我們希望對其進(jìn)行設(shè)置,以便在我們看它時它能夠識別我們的臉。
此鏈接位于 DF Robot 提供的文檔中,并解釋了如何在設(shè)備上注冊人臉。請按照上述文檔中提供的步驟,并在繼續(xù)下一步之前用相機(jī)記住一張臉。
硬件方面

現(xiàn)在我們已經(jīng)設(shè)置了相機(jī),我們可以移動到 Arduino Yun 上。如果您的 Arduino Yun 開箱即用,您需要對其進(jìn)行設(shè)置并將其連接到 WiFi。Arduino 發(fā)布的這個頁面可以指導(dǎo)您完成設(shè)置。
在您的 Arduino Yun 啟動并運(yùn)行后,接下來要做的就是連接電路。下圖顯示了相機(jī)應(yīng)連接到 Arduino Yun 的方式。對于這個項(xiàng)目,我們將使用 Serial 與相機(jī)進(jìn)行通信。

請?jiān)徤厦娴氖疽鈭D中包含 Arduino Uno,不幸的是,DF Robot 沒有可用于其 Huskylens 模塊的fritzing 部件,因此我不得不使用他們網(wǎng)站上發(fā)布的接線圖。
讓我們看一下代碼
所以現(xiàn)在我們的電路已經(jīng)啟動并運(yùn)行了,讓我們看一下這個項(xiàng)目所需的代碼。我使用下面代碼部分中鏈接的 Arduino IDE 編譯了一個程序。在這一部分中,我將引導(dǎo)您了解代碼中的主要功能,并解釋它們的作用并將它們放在上下文中。
// 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!"
};
這段代碼可以在程序的開頭找到。第一個變量需要由用戶編輯以允許設(shè)備連接到自定義 Blynk 應(yīng)用程序。然后設(shè)備會將幾條鼓舞人心的信息存儲為一個數(shù)組。您可以更改這些消息,但要注意 Arduino Yun 上的存儲使用情況,因?yàn)槿绻粩U(kuò)展,它會非常有限。
// 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)
更多變量,這些非常重要,盡管用戶可以更改所有變量,但了解每個變量控制的內(nèi)容至關(guān)重要。
- waitTime以秒為單位的時間量,如果一直存在人臉,則向用戶發(fā)送通知
- 計(jì)數(shù)存儲 2 分鐘是否計(jì)數(shù)。看到人臉時開始計(jì)數(shù)
- currentTime UNIX 中的當(dāng)前時間。來自 Blynk RTC
- startTime在 UNIX 中開始計(jì)數(shù)的時間。
- errorNr相機(jī)未檢測到人臉的讀取次數(shù)
- errorAdmital在設(shè)備放棄計(jì)數(shù)之前允許的未檢測到面部的讀取次數(shù)。
// 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;
}
}
}
}
這是微控制器不斷運(yùn)行的循環(huán)。循環(huán)讀取攝像頭模塊輸出的數(shù)據(jù)。設(shè)備檢查模塊是否連接,是否正在上報(bào)數(shù)據(jù)。這個循環(huán)還負(fù)責(zé)錯誤計(jì)數(shù);如果相機(jī)沒有檢測到人臉,錯誤的數(shù)量將增加。
// 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;
}
現(xiàn)在這個循環(huán)看起來有點(diǎn)混亂,但它的功能很簡單;檢查 2 分鐘是否結(jié)束并發(fā)送通知。除此之外,如果注意到一張臉,循環(huán)開始計(jì)算 2 分鐘并重置返回的錯誤數(shù)。
編譯代碼

接下來要做的是在 Arduino 中打開代碼,將 Arduino Yun 插入并將應(yīng)用程序上傳到設(shè)備上。取消注釋 void loop() 中的最后幾行很重要,因?yàn)檫@會將所有變量轉(zhuǎn)儲到串行監(jiān)視器。
調(diào)試時,嘗試將waitTime設(shè)置為 5 秒,并在這段時間內(nèi)將您的臉放在框架中。保持串行監(jiān)視器打開,如果你得到一個打印說數(shù)據(jù)正在發(fā)送到 Blynk,你就完成了!
如果您沒有成功,請不要擔(dān)心。Huskylens 模塊背面有一個 RGB LED,如果它檢測到一個記憶的臉,它會變成綠色,如果它檢測到一個它不熟悉的臉,它會變成藍(lán)色。如果它是藍(lán)色的,請確保您的面部已注冊。如果它關(guān)閉,請確保相機(jī)處于面部識別模式,方法是旋轉(zhuǎn)滾輪(在相機(jī)頂部,在您的左側(cè)),直到出現(xiàn)面部識別。如果沒有任何效果,而您根本不知道該怎么做,請隨時給我發(fā)消息。
讓后端排序
現(xiàn)在讓我們在Blynk方面工作。您可以獲得適用于Android和iOS 的應(yīng)用程序。安裝應(yīng)用程序后,請按照以下步驟開始。創(chuàng)建一個帳戶并確保您已登錄,然后再繼續(xù)。

打開 Blynk 應(yīng)用程序,您應(yīng)該會看到如上圖所示的屏幕(可能沒有項(xiàng)目空間)。

接下來,向右滑動直到出現(xiàn)此屏幕,單擊“新建項(xiàng)目”按鈕以創(chuàng)建一個新項(xiàng)目。

現(xiàn)在為項(xiàng)目命名并從下拉菜單中選擇 Arduino Yun。按創(chuàng)建。

您現(xiàn)在將被引導(dǎo)到一個空白畫布,您可以在其中構(gòu)建您的應(yīng)用程序。單擊畫布或向左滑動以顯示可用的小部件。

從列表中,依次選擇通知和 RTC 小部件并將它們放置在畫布上。

你應(yīng)該最終得到這樣的東西。現(xiàn)在您需要做的最后一件事是單擊屏幕頂部的齒輪圖標(biāo),然后按Copy All按鈕將身份驗(yàn)證令牌復(fù)制到剪貼板(包含它的電子郵件也已發(fā)送給您)。現(xiàn)在將其粘貼到第 30 行變量 auth[] 的代碼中。

按屏幕右上角的開始按鈕開始運(yùn)行應(yīng)用程序。你準(zhǔn)備好了!
把它放在一起!
最后,再次運(yùn)行調(diào)試代碼,您應(yīng)該會在手機(jī)上收到帶有啟發(fā)性消息的通知。尤里卡!現(xiàn)在注釋掉最后的調(diào)試并上傳最終代碼以在設(shè)備上分發(fā)。剩下要做的就是把它放在鏡子上。

讓我們安裝它
最后,需要很少努力的部分(希望如此)。我很幸運(yùn),在墻壁和鏡子背面之間有驚人的空間,讓我可以把所有的組件都扔到鏡子后面,只留下鏡子前面的相機(jī)。
這對您來說可能會有所不同。如果您真的很喜歡這個項(xiàng)目,請考慮為該設(shè)備添加一個 3d 外殼。如果要批量生產(chǎn)該設(shè)備,顯然需要所有設(shè)計(jì)的一致性,因此最好使用 3D 打印外殼。


反射
嗯,這是一個有趣的項(xiàng)目(對我來說)。我在臨近截止日期的時候參加了比賽,我正忙于學(xué)習(xí),但后來冠狀病毒來了,再也沒有什么可學(xué)習(xí)的了。無論如何,我需要用家里的東西做一些東西。Huskylens 是我首先想到的,因?yàn)槲抑皼]有機(jī)會使用它。
所以,我想出了一個競賽的點(diǎn)子,它最好以心理健康為目標(biāo),并想出了一個智能鏡子設(shè)計(jì)。我最初想把鼓舞人心的信息寫在鏡子上,當(dāng)有人看著它時點(diǎn)亮它,但由于時間限制,我不得不重新考慮并想出了向用戶發(fā)送信息通知的想法。
總體而言,該項(xiàng)目進(jìn)行得相當(dāng)順利,我認(rèn)為它可以大規(guī)模生產(chǎn),也許整個設(shè)備可以安裝到 PCB 上并以這種方式運(yùn)輸。但無論如何,我決定針對更年期帶來的多種癥狀,而不是制造那個時期女性獨(dú)有的產(chǎn)品。SmileMirror,雖然是針對更年期女性的,但每個人都可以使用。
我必須承認(rèn),我在開發(fā)產(chǎn)品時面臨的最大挑戰(zhàn)是使用變量。我已經(jīng)有一段時間沒有真正用 C++ 編寫代碼了,在玩過 JS 和 python 之后,很難回到變量類型。我花了大約一個小時尋找在 Yun 上存儲 UNIX 時間的方法(因?yàn)?Yun 以比其他微控制器更小的精度存儲所有數(shù)值變量)。但除此之外,這是一個令人愉快的項(xiàng)目。我希望你喜歡它!

?
- 開源硬件之保護(hù)花園免受貓的侵害
- 開源硬件之孩子們的拼寫挑戰(zhàn)
- 開源硬件-警燈
- 開源硬件之Gerber文件
- AirBits開源硬件
- 開源硬件之明星有多亮
- 音箱開源硬件分享
- 開源硬件之電流傳感器交流
- HBus開源硬件
- 開源硬件之篡改防護(hù)設(shè)備
- 開源硬件之向所有有禮貌的司機(jī)表示感謝
- 門鈴開源硬件
- 開源硬件之語音控制LED
- 開源硬件之ArduBand 拯救你的眼睛
- 主流的開源硬件有哪些詳細(xì)資料說明
- 偏振鏡和減光鏡的區(qū)別 3046次閱讀
- 安信可小安派-Knob旋轉(zhuǎn)編碼器驅(qū)動板簡介 600次閱讀
- 安派-Eyes-DU開發(fā)板的參數(shù)說明 646次閱讀
- 小安派-SCP-2.4 無線中控器參數(shù)概述 851次閱讀
- 用小安派開源硬件制作一個桌面天氣站 1007次閱讀
- 開源之夏總結(jié)runk:基于Rust的OCI runtime實(shí)現(xiàn) 3595次閱讀
- 使用開源硬件的烹飪過程 1500次閱讀
- 尋找開源硬件成功的觸發(fā)器 755次閱讀
- dfrobotDFRobot Bluno M3控制器簡介 1996次閱讀
- 源創(chuàng)通信BPI-M1+ 開源硬件開發(fā)板介紹 2811次閱讀
- 源創(chuàng)通信開源智能路由器 MTK 7623N 介紹 3078次閱讀
- 關(guān)于FPGA在開源方面的探索淺析 3864次閱讀
- 基于Altium Designer的OSHw開源項(xiàng)目 3738次閱讀
- 三大主流開源硬件對比:Arduino vs BeagleBone vs Raspberry Pi 6657次閱讀
- 開源硬件究竟有多“Open”?看完這個你就清楚了 7124次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費(fèi)
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費(fèi)
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費(fèi)
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費(fèi)
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費(fèi)
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費(fèi)
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護(hù)等級說明
- 0.08 MB | 次下載 | 免費(fèi)
本月
- 1貼片三極管上的印字與真實(shí)名稱的對照表詳細(xì)說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計(jì)指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費(fèi)
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論