这是一个非常有趣的项目,我们将在其中学习如何使用Arduino和Processing实现虚拟现实。对于我们大多数人来说,乔恩·法夫洛(Jon Favreau)的电影《钢铁侠》(Iron man)一直是创造新事物的灵感,这些事物将使我们的生活更加轻松和有趣。我个人很欣赏电影中显示的技术,并且一直想建立类似的技术。因此,在这个项目中,我试图模仿电影中发生的虚拟现实事物,就像我们可以简单地将手在计算机前摇动并将指针移至所需位置并执行一些任务一样。
在这里,我将向您展示如何简单地在摄像头前挥手并在计算机上画些东西。我还将向您展示如何通过虚拟移动手并用手指在空中点击来切换灯光。
概念:
为了实现这一点,我们必须利用Arduino和Processing的强大功能。大多数人会熟悉Arduino,但是处理对于您来说可能是新的。处理是与Arduino一样的应用程序,它也是开源的,可以免费下载。使用“处理”,您可以创建简单的系统应用程序,Android应用程序等等。它还具有进行图像处理和语音识别的能力。就像Arduino一样,它很容易学习,但是不用担心,如果您是完全陌生的人,因为我已经非常简单地编写了本教程,因此任何有兴趣的人都可以立即使用它。
在本教程中,我们将使用处理来创建一个简单的系统应用程序,该应用程序为我们提供一个UI并使用图像处理来跟踪手的位置。现在,我们必须用手指左键单击和右键单击。为此,我使用了两个霍尔传感器(一个在食指上,另一个在中指上),这将由Arduino Nano读取。Arduino还通过蓝牙将点击状态无线传输到计算机。
听起来可能很复杂,但是,请相信我;它并不像听起来那样难。因此,让我们看一下该项目启动和运行所需的材料。
所需材料:
- Arduino纳米
- 霍尔传感器(A3144)– 2号
- 一小块磁铁
- 蓝牙模块(HC-05 / HC-06)
- 9V电池
- 连接线点板。
- 一副手套
- Arduino IDE(软件)
- 处理IDE(软件)
- 具有网络摄像头和蓝牙的计算机(您也可以将外部蓝牙或网络摄像头用于计算机)
原理图和硬件:
该项目的硬件部分非常简单,易于构建。完整的原理图如下所示。
如下图所示,将Arduino,电阻器和拉杆引脚焊接到点板上。
霍尔传感器和蓝牙模块焊接到连接线,如下所示。
一旦准备好这两部分,就可以将其组装到手套上,以便于使用。我用过一次性塑料手套,可以从您附近的任何医疗店购买。您应该确保将磁铁贴在拇指手指上,并且霍尔传感器1和霍尔传感器2应该分别位于食指和中指之前。我已经用鸭胶带将组件固定到位。组件组装完成后,外观应如下所示。
Arduino程式:
此Arduino代码的目的是读取霍尔传感器的状态并使用蓝牙模块进行广播。它还应从蓝牙接收数据,并根据输入值切换板载LED。完整的程序在本教程的结尾给出。我还在下面解释了几行。
if(Phs1!= HallState_1-Phs2!= HallState_2)//检查是否按下了新键{如果(HallState_1 == LOW && HallState_2 == LOW)Aisha.write(1); 如果(HallState_1 == HIGH && HallState_2 == LOW)Aisha.write(2); 如果(HallState_1 == LOW && HallState_2 == HIGH)Aisha.write(3); 如果(HallState_1 == HIGH && HallState_2 == HIGH)Aisha.write(4); }
如以上各行所示,基于霍尔传感器的状态,蓝牙将写入特定值。例如,如果霍尔传感器1为高而霍尔传感器2为低,那么我们将通过蓝牙模块广播淡谷“ 2”。确保将值写入BT模块,而不打印它们。因为只有写了它们,才很容易在处理端读取它们。此外,该值仅在与先前值不同时才发送。
如果(BluetoothData =='y')digitalWrite(ledpin,HIGH); 如果(BluetoothData =='n')digitalWrite(ledpin,LOW);
这些线用于根据BT模块接收的值来切换连接到引脚13的板载LED。例如,如果模块收到“ y”,则LED亮起;如果收到“ n”,则LED灭。
处理程序:
处理程序的目的是创建一个系统应用程序,该系统应用程序可用作UI(用户界面),并且还执行图像处理以跟踪特定对象。在这种情况下,我们跟踪上面粘在手套上的蓝色物体。该程序基本上有四个屏幕。
- 校准画面
- 主屏幕
- 油漆屏风
- LED切换屏
我们只需挥动双手并拖动屏幕即可从一个屏幕导航到另一个屏幕。我们还可以单击所需的位置以切换LED甚至在屏幕上绘制一些东西。
您可以复制粘贴完整的Processing程序(最后给出)并根据您的创造力进行修改,也可以从此处简单下载EXE文件,然后按照以下步骤启动应用程序。
- 如果您以前未安装JAVA,请在计算机中安装它
- 在计算机上完美安装You Cam
- 接通Arduino的电源,并将计算机与蓝牙模块配对
- 启动应用程序文件
如果一切正常,您应该能够注意到蓝牙模块上的LED指示灯变稳定并且网络摄像头灯点亮。如果您有任何问题,请通过评论部分与我联系,我会为您提供帮助。
观看最后的视频,了解如何校准和使用应用程序。
如果要修改代码并在其中添加更多功能,则可以使用该程序的以下见解
可以从此处下载处理IDE。如果您想了解有关处理的更多信息并创建更多有趣的项目,则可以在此处访问教程。
处理具有读取串行数据的能力,在此程序中,串行数据来自蓝牙COM端口。您必须使用下面的此行选择您的蓝牙连接到哪个COM端口
port =新的Serial(this,Serial.list(),9600);
在这里,我选择了我的第一个COM端口(在我的情况下为COM5)(见下图),并且我提到蓝牙模块以9600波特率运行。
如前所述,处理还具有图像处理能力,在本教程中,图像是使用网络摄像头在草图内发送的。在每个图像中,我们跟踪一个特定的对象。要了解有关此内容的更多信息,请访问本教程。
我已经尽力通过注释行解释了该程序(最后给出)。您可以在此处下载文件。
如果您想了解更多有关草图的信息,可以通过评论部分与我联系,我会为您提供帮助。
加工:
准备好硬件和软件后,请戴上手套并准备采取一些措施。现在,只需为Arduino供电,然后启动应用程序即可。蓝牙模块上的指示灯应该稳定。现在,这意味着您的系统应用程序已与Arduino建立了蓝牙链接。
您将获得以下屏幕,在其中必须选择要跟踪的对象。单击对象即可轻松完成此跟踪。在这种情况下,对象是蓝光盘。现在,您可以移动对象,并注意指针跟随您的对象。使用独特的颜色对象和明亮的房间以获得最佳效果。
现在,用食指触摸您的拇指手指,您应该看到消息“已按下键1”,而当您用中指按下拇指时,您应该看到“已按下键2”,这表明一切正常,并且校准结束。现在,单击完成按钮。
按下“完成”按钮后,您将被带到主屏幕,您可以在空中进行绘画或切换Arduino板上的LED,如下面的视频所示。