这是一个有趣的项目,我们在其中探索Arduino和Android的功能来创建监视设备,该设备使用Arduino和超声波传感器通过蓝牙将信息广播到移动应用程序(Android)。
自古以来,安全一直是我们关注的主要问题。安装具有夜间模式且带有倾斜和平移选项的安全摄像机会在我们的口袋上烧一个大洞。因此,让我们制造一种经济的设备,其功能几乎相同,但没有任何视频功能。
该设备借助超声波传感器感应物体,因此即使在夜间也可以工作。另外,我们还将US(Ultra Sonic)传感器安装在伺服电机上,可以将该伺服电机设置为自动旋转以扫描区域,也可以使用我们的移动应用手动进行旋转,以便我们可以将超声波传感器聚焦我们所需的方向,并感应到那里的物体。美国传感器感应到的所有信息都将使用蓝牙模块(HC-05)广播到我们的智能手机中。因此它将像声纳或雷达一样工作。
有趣的权利?….让我们看看执行此项目需要什么。
要求:
硬件:
- + 5V电源(我正在使用Arduino(另一个)板供电)
- Arduino Mega(您可以使用从pro mini到Yun的任何东西)
- 伺服电机(任何等级)
- 蓝牙模块(HC-05)
- 超声波传感器(HC-SR04)
- 面包板(非强制性)
- 连接线
- Android手机
- 编程计算机
软件:
- Arduino软件
- Android SDK
- 处理Android(创建移动应用程序)
一旦我们准备好材料,就让我们开始构建硬件。为了方便理解,我将本教程分为Arduino部分和Processing部分。刚接触处理的人员不必担心,因为完整的代码在本教程的末尾提供,可以直接使用。
下载和安装软件:
该Arduino的IDE可以从这里进行安装。根据您的操作系统下载软件并安装。 Arduino IDE将需要驱动程序才能与Arduino硬件通信。将主板与计算机连接后,应会自动安装此驱动程序。尝试从示例中上传一个眨眼程序,以确保Arduino已启动并正在运行。
该处理IDE可以从这里进行安装。处理是一个出色的开源应用程序,可以用于很多事情,它具有多种模式。在“ Java模式”下,我们可以创建Windows计算机应用程序(.EXE文件);在“ Android模式”下,我们可以创建Android移动应用程序(.APK文件)。它还具有其他模式,例如“ Python模式”,您可以在其中编写python程序。本教程将不涉及处理的基础知识,因此,如果您想学习Java编程或处理,请直接访问此YouTube频道。
Arduino硬件部分和电路图:
该项目涉及许多组件,例如伺服电机,蓝牙模块,超声波传感器等。因此,如果您是绝对的初学者,那么建议您先从一些涉及这些组件的基础教程开始,然后再回到这里。在此处查看我们有关伺服电机,蓝牙模块和超声波传感器的各种项目。
所有组件均不由Arduino本身供电,因为伺服电机,蓝牙模块和US传感器总共消耗了Arduino无法提供的大量电流。因此,严格建议使用任何外部+ 5V电源。如果您手头没有外部+ 5V电源,则可以像我一样在两个Arduino板之间共享组件。我已将Servos电源轨连接到另一个Arduino板(红色),并将蓝牙模块HC-05和超声波传感器HC-SR04连接到Arduino mega。注意:使用一块Arduino板为所有这些模块加电会炸毁Arduino稳压器。
该基于Arduino的Sonar项目的连接图如下所示:
连接完成后,如下所示将US传感器安装到您的伺服电机上:
我使用了装在垃圾中的小塑料片和双面胶带来安装传感器。您可以提出自己的想法进行相同的操作。市场上也有可用于相同目的的伺服支架。
一旦安装好伺服并给出连接,它应该看起来像这样。
如果连接有误,请按照顶部的示意图进行操作。现在让我们开始使用Arduino IDE编程Arduino Mega。
Arduino软件部分:
我们必须编写代码,以便我们可以计算对象与超声传感器之间的距离并将其发送到我们的移动应用程序。我们还必须为伺服电机编写代码以进行扫频,并从蓝牙模块接收的数据中进行控制。但是不用担心,由于有了Arduino及其库,该程序比您想象的要简单得多。完整的代码在下面的代码部分中给出。
下面的功能用于使伺服电机自动从左向右扫动(170至10),然后再次从右向左扫动(10至170)。两个 for 循环用于实现相同目的。在两个函数中都调用函数us(),以计算传感器与对象之间的距离,并将其广播到蓝牙。给出50毫秒的延迟以使伺服器缓慢旋转。电机旋转速度越慢,读数就越准确。
// **伺服扫描的功能** //无效的伺服功能(){Serial.println(“ Sweeping”); //对于for(posc = 10; posc <= 170; posc ++)进行调试//使用10到170度比0到180度更安全,因为某些伺服器可能无法正常运行。 //设置伺服电机延时的位置(50);我们(); //使用US传感器测量物体的距离} for(posc = 170; posc> = 10; posc--){Servo.write(posc);延迟(50);我们(); //使用美国传感器测量物体的距离} Serial.println(“扫描完成”); //对于调试标志= 0; } // **伺服扫描功能结束** //
如前所述,还可以通过智能手机手动控制伺服电机。您只需向右滑动即可使电动机向右移动,向左滑动即可使电动机向左移动。以上功能用于实现相同目的。蓝牙模块将直接接收伺服电机的角度并将其存储在变量 BluetoothData中 ,然后通过使用 serial.write(BluetoothData)行将 伺服器定位在该特定 角度。
// **手动控制伺服的功能** // void manualservo(){us(); //从用户那里获取价值并控制伺服器(Blueboy.available()){BluetoothData = Blueboy.read(); Serial.println(BluetoothData); Servo.write(BluetoothData); Serial.println(“ Written”); 如果(BluetoothData =='p'){flag = 0; }}} // __结束手动控制功能__ //
物体下方的距离将通过下面的函数计算。它使用一个简单的公式表示速度=距离/时间。由于我们知道了US Wave的速度和所花费的时间,因此可以使用上述公式来计算距离。
// **测量距离的功能** // void us(){int duration,distance; digitalWrite(trigPin,HIGH); delayMicroseconds(1000); digitalWrite(trigPin,LOW); 持续时间= pulseIn(echoPin,HIGH); 距离=(持续时间/ 2)/ 29.1; //如果(distance <200 && distance> 0)Blueboy.write(distance);则计算到传感器的距离。} // __距离测量功能的结束__ //
如果您对该程序有任何疑问,请随时使用注释部分进行查询。因此,一旦我们准备好代码,就可以立即将代码转储到我们的硬件中。但是,监视设备只有将其连接到Android应用程序后才能开始工作。另外,请在最后检查视频,以确保其正常工作。
适用于超声波雷达的Android移动应用程序:
如果您不想制作自己的应用程序,而只想安装本教程中使用的相同应用程序,则可以按照以下步骤操作。
1.您可以从下面的链接直接下载APK文件。这个APK档案是为Android 4.4.2以上版本(Kitkat a以上)制作的。从zip文件中提取APK文件。
超声波雷达的Android应用程序
2.将.Apk文件从计算机传输到手机。
3.在Android设置中启用从未知来源安装应用程序。
4.安装应用程序。
如果安装成功,您将在手机上找到名为“ Zelobt”的应用程序,如下所示:
如果您已安装此APK,则可以跳过以下部分并跳至下一部分。
使用处理对自己的应用程序进行编程:
您可以使用上面提供的.APK文件,也可以使用此处所述的处理功能来构建自己的应用。很少有编程知识,也很容易为自己的android应用程序编写代码。但是,如果您只是开始,那么不建议从此代码开始,因为它比初学者水平高。
该程序使用两个库,即 “ Ketai库” 和 “ ControlP5库” 。ketai库用于控制手机内部存在的所有硬件。该库可轻松访问电话电池电量,接近传感器值,加速度传感器值,蓝牙控制选项等内容。在此程序中,我们使用此库在电话蓝牙和Arduino蓝牙(HC-05)之间建立通信。该 “ControlP5库” 被用来绘制图表为我们的雷达系统。
该完整的Android程序连接,你可以从这里下载。
注意:不要忘记安装上述库,也不要单独复制粘贴代码部分,因为代码从数据文件夹中导入图像,以上附件中给出了这些图像。因此,请仅下载和使用。
完成编码部分并成功编译后,您可以通过数据线将手机直接连接到计算机,然后单击“播放”按钮将应用程序复制到手机上。还要检查我们的其他处理项目:使用Arduino的Ping Pong游戏和使用处理的智能手机控制FM收音机。
工作说明:
现在,我们已经准备好硬件和软件部分。接通硬件电源,然后将手机与蓝牙模块配对。配对后,打开我们刚刚安装的“ Zelobt”应用程序,现在等待一秒钟,您应该注意到您的蓝牙模块(HC-05)自动与智能手机建立了连接。建立连接后,您将看到以下屏幕:
您会注意到它显示已连接到:屏幕顶部的设备名称(硬件地址)。它还显示伺服电机的当前角度和US传感器之间的距离。根据测得的距离,在红色背景上还会绘制一个蓝色图表。物体越靠近,蓝色区域越高。上方第二张图也显示了一些物体放置在附近时测得的曲线图。
如前所述,您还可以通过移动应用程序控制伺服电机。为此,只需单击停止按钮。这将阻止您的伺服器自动清扫。您还可以在屏幕底部找到一个圆形齿轮,轻扫后它将按顺时针或逆时针方向旋转。通过滑动该轮子,您还可以使伺服电机朝该特定方向旋转。下图显示了轮滑和滑动后更新的图表。
Arduino代码在下面给出,Android应用程序的APK文件在此处。下面的视频显示了整个项目的工作。希望您理解该项目。如果您有任何疑问,请使用下面的评论部分。