×

覆盆子和Arduino的色光疗法

消耗积分:0 | 格式:zip | 大小:2.23 MB | 2022-12-12

王英

分享资料个

描述

技术如何帮助我们改善生活?

这是我在考虑要实现的新项目时问自己的问题。

每天我花很多时间在电脑前工作,我希望科技能“照顾”我,试着了解我的心情,找到让我放松和快乐的方法。

我的电脑如何解读我的表情并让我感觉良好?

答案很明确……使用Microsoft 认知服务和我最喜欢的小工具(Raspberry 和 Arduino)。

说说我的项目吧,走吧!

理念

在色光疗法中,每种颜色都与个人特定的心理和精神特征相关,支持者认为同样会对身体机能产生特殊影响。

没有临床或科学证据证明这些未经证实的断言的优点。

然后,每种颜色都与特定属性相关联,通常基于简单的心理类比。

我创建了一个系统,能够看到我的表情,了解我是否快乐,并决定房间的最佳颜色是什么,以改变我的心情。

我认为它非常酷!!!

硬件设置

我的硬件如下图

 
poYBAGONY4SAD-X3AAfXqmH5zVo260.png
图式
 

软件

阿杜诺

第一步是在我的设备(Raspberry 和 Arduino)之间建立通信。为此,我决定使用SoftwareSerial Library。我受到David Jones ProjectJiong Shi主持的项目的启发

下一步是更改我的蓝牙设备的默认名称。模块的默认名称是HC-05 ,这并不酷!

要更改蓝牙模块的名称,我们应该学习和使用 AT 命令。有关 AT 命令以及如何使用 Arduino 和蓝牙模块使用它们的更多信息,请参阅此链接。

正如我所说,Raspberry 和 Anrduino 之间的通信是由蓝牙连接组成的。我决定在 UWP 应用程序中实现一种方法,将包含 3 个字符(相当于 3 个字节)的字符串发送到 Arduino,Arduino 接收并解码输入数据。

仅供参考,一段Arduino解码代码如下所示(完整源码见下方代码部分):

if (BTSerial.available())
{ 
	// Read string from Raspberry 
	delay(10); 
	ch1 = BTSerial.read(); 
	delay(10); 
	ch2 = BTSerial.read(); 
	delay(10); 
	ch3 = BTSerial.read(); 
	delay(10); 
	if (ch1 == '1') 
		digitalWrite(GREEN, HIGH); 
	else 
		digitalWrite(GREEN, LOW); 
	if (ch2 == '1') 
		digitalWrite(BLUE, HIGH); 
	else 
		digitalWrite(BLUE, LOW); 
	if (ch3 == '1') 
		digitalWrite(RED, HIGH); 
	else 
		digitalWrite(RED, LOW); 
	... 
	... 
	... 
} 

现在是时候创建一个新的解决方案并实现我们的代码了!

通用 Windows 平台应用程序

我决定探索 Microsoft 的Emotion API (有关 SDK 的更多详细信息,请参阅链接)。

 
 
 
 
poYBAGOSzPuAGsLCAADvetmW7qU185.png
 
1 / 2图 1 - Emotion Api 标头
 
如果您从头开始创建 UWP 项目,则必须安装“Oxford”包,在 Visual Studio 中打开“NuGet 包管理器控制台”并键入Install-Package Microsoft.ProjectOxford.Emotion

确保您已通过 Azure 生成了情感服务密钥。为此,转到并单击“在 Azure 上购买”

 
poYBAGOSzP-ARys4AACONwAuAiw038.png
在 Azure 上购买
 

然后,您将被重定向到您的 Azure 帐户,现在您必须编译一些字段,如下所示,我使用了“免费定价层”,每月允许您进行 30000 次图像交易。(如果您没有免费的 Azure 帐户,请访问此链接

 
pYYBAGOSzQKAGpphAACFTRBp92I494.png
Azure - 在您的 Azure 中创建认知服务
 

现在探索您在 Azure 中的认知服务帐户并转到密钥部分。

 
pYYBAGOSzQeAE4yXAACpYbJhwqo920.png
Azure - 复制你的密钥
 

有 2 个键,选择一个并在以下字符串中“复制并粘贴” MainPage.xaml.cs中的值:

string subscriptionKey = "xxxxxxxxxxxxxxxxxxx";

UWP 必备

要访问蓝牙和其他各种功能,如网络摄像头、图片等,我们需要在“ Package.appmanifest ”文件中提及它们。

为此,请按照提到的步骤操作:

 
pYYBAGOSzQuAHbHkAAG8BqgirsE588.png
设备能力
 

代码片段:

<Capabilities>
  <Capability Name="internetClient" /> 
  <uap:Capability Name="picturesLibrary" /> 
  <uap:Capability Name="removableStorage" /> 
  <DeviceCapability Name="bluetooth.rfcomm"> 
    <Device Id="any"> 
      <Function Type="name:serialPort"/> 
    Device> 
  DeviceCapability> 
  <DeviceCapability Name="webcam" /> 
  <DeviceCapability Name="microphone" /> 
Capabilities>

基本理念(图像捕捉、UWP 应用程序)

我们需要将捕获的图像转换为 MemoryStream。为此:

var reader= new Datareader(photoStream.GetInputStreamAt(0);
var bytes = new byte[photoStream.Size];
await reader.LoadAsync((uint)photoStream.Size);
reader.ReadBytes(bytes); 
var stream = new MemoryStream(bytes);

所以现在,使用一次调用,您可以从 Azure 检索情绪结果:

Emotion[] emotionResult;           
emotionResult = await emotionServiceClient.RecognizeAsync(stream);

硬件

 
 
 
 
poYBAGOSzTSAd76LAAjWTZOkKa8098.jpg
 
1 / 3色光疗法系统视图 1
 

UWP应用程序

在第一张图片中,您可以看到应用程序启动屏幕。在左侧,它显示从网络摄像头捕获的图片。在中间的情绪状态和右侧,您可以配置与 Arduino 的蓝牙连接。

 
 
 
 
pYYBAGOSzTeAH5hwAAA6ZIrwT6o168.png
 
1 / 4图 1 - 应用布局
 

每次获取图像时,系统都会评估打开灯光的最佳颜色,并通过蓝牙将其发送到 Arduino。(正如您从后面的代码中看到的那样,我创建了一个每 10 秒捕获一次图片的计时器。)

目前UWP应用程序在我的PC上运行,因为它很容易截图,但它是一个UWP应用程序,所以在Raspberry上部署应用程序不是问题。

目前,系统管理以下 3 种颜色,但创建逻辑非常容易,您会更喜欢:

if (emotionResult[0].Scores.Happiness >= 0.85) 
{ 
	Send("111"); 
} 
else if (emotionResult[0].Scores.Happiness >= 0.50 && emotionResult[0].Scores.Happiness < 0.85) 
{ 
	Send("001"); 
} 
else if (emotionResult[0].Scores.Happiness > 0.25 && emotionResult[0].Scores.Happiness < 0.50) 
{ 
	Send("100"); 
} 
else 
{ 
	Send("110"); 
} 

我假设颜色组合为:

000 = Cyan
001 = Light green  // Mild Happy
010 = Violet
011 = Red
100 = Light blue   // Neutral
101 = Green
110 = Blue
111 = OFF          // Happy
如您所见,如果您快乐,则不需要点亮 :)

让我们看看实际效果

 

未来发展

  • Emotion Api 能够确定图像帧中每个人的状态分数。所以你将能够确定幸福的平均值 :) 并决定打开你房间的最佳颜色
  • 为硬件创建一个漂亮的包装器
  • 在这个项目中,我只评估“幸福”,但您可以尝试开发一种算法,考虑 API 中可用的所有状态……这非常简单!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !