亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

UltrasonicEyes

组件和用品

超声波传感器 - HC-SR04(通用)
× 2
Arduino Nano R3
× 1
光敏电阻
× 1
Maxim Integrated 8x8 LED 矩阵 MAX7219
× 2
无焊面包板半尺寸
× 1
跳线(通用)
× 1
电阻 330 ohm
× 1

应用和在线服务

Arduino IDE

关于这个项目

我想使用一些 8x8 矩阵 LED 和一些超声波传感器来制作一个古怪的项目......与其他人通常用超声波制作的东西不同 - 我希望它既有趣又好玩。

所以我创造了我所谓的 UltrasonicEyes - 一个有趣的项目,你坐在靠近人们走动的地方,它会环顾四周,眨眼,好吧,只是以一种有趣和令人毛骨悚然的方式让你感到奇怪!

我们需要什么?

超声波传感器模块设计用于检测障碍物并确定障碍物的距离,因此它们的检测距离一般可达3-4米,对于这个项目放置在客厅或办公室内是一个很好的距离区域。

我使用的是从 e-Bay 购买的 2 个 HC-SR04 模块。你会发现它们超级便宜。

这些模块使用起来非常简单,只需要 3 或 4 根线,即可连接到 Arduino 微控制器。

我选择使用的 8x8 led 矩阵模块允许链接,所以其中一个模块需要连接到 Arduino,第二个模块连接到第一个。

这些模块使用 SPI,因此我们只需要 5 根电线连接到 Arduino 即可控制两个显示器上的眼睛图像。我们当然需要其中的两个!

注意: 提供的代码使用硬件 SPI ,所以如果您使用的是与 Nano 不同的 Arduino 板,请检查哪些引脚是 MOSI 和 SCK 的硬件 SPI 引脚,并相应地连接它们!

您还需要某种类型的 Arduino 兼容微控制器。我使用的是 Nano(兼容),因为它足够小,可以放入机箱,有 USB 用于为固件供电/编程,还有一堆 GPIO 可以连接所有东西。

我已经将所有东西都焊接到一个与半面包板大小相同的原型板上,但我建议您先将所有东西都构建在半面包板上,因为这样项目就不需要焊接并且可以轻松地拉开或改变了。

您需要的最后几样东西是用于检测光的 LDR(光敏电阻器)、一个 330 欧姆的电阻器和一堆面包板线,公对母,母对母。

注意: 你可以在这个项目中使用任何颜色的电线......没有要求使用我指定的相同颜色,但是 , 电源和地使用红色和黑色总是好的做法,其他布线使用其他颜色,因为这样可以非常容易地识别哪些电线有电源通过它们,哪些电线用于数据和信号。

把它们放在一起

让我们首先将 Nano 插入面包板的最后,这样 USB 就挂在边缘,但仍然保持所有引脚插入电路板。

电源和地连接

现在将一根黑线从 Nano 上的 GND 连接连接到面包板上的 GND 导轨。现在用一根红线做同样的事情,将 3V(或 5V,如果这就是你的全部)连接到面包板上的电源轨。

当我们处理 GND 和 POWER 时,让我们在面包板每一侧的两个 GND 导轨之间连接一根黑线。用一根红线和两条 POWER 导轨做同样的事情。

*注意: 某些矩阵 LED 面板可能需要 5V 而不是 3.3V,具体取决于品牌。如果您发现结果不可靠,请尝试使用 Arduino 的 5V 引脚。

让我们连接超声波传感器

将每个超声波传感器上的 GND 引脚之间的黑线连接到面包板上的 GND 导轨。对传感器上的红线和 VCC(电源)引脚以及面包板上的电源轨执行相同操作。

现在让我们连接以下白线和蓝线:

  • 从传感器 1 上的 TRIG 引脚到 Arduino 上的数字引脚 2 的白线
  • 从传感器 1 上的 ECHO 引脚到 Arduino 上的数字引脚 3 的蓝线
  • 从传感器 2 上的 TRIG 引脚到 Arduino 上的数字引脚 4 的白线
  • 从传感器 2 上的 ECHO 引脚到 Arduino 上的数字引脚 5 的蓝线

很好!这就是超声波传感器!

连接两个 8x8 LED 矩阵显示器

在其中一个 LED 矩阵显示器上的输入 GND 引脚与面包板上的 GND 轨之间连接一根黑线。对显示器上的红线和输入 VCC(电源)引脚以及面包板上的电源轨执行相同操作。

在显示器一的输出 GND 引脚和显示器二的输入 GND 引脚之间连接一根黑线。对红线和显示器 1 上的输出 VCC 引脚和显示器 2 上的输入 VCC 引脚执行相同操作。

当我们在 2 个显示器之间连接电线时,让我们完成那部分......

  • 在显示器一的输出 SCK(时钟)引脚和显示器二的输入 SCK 引脚之间连接一条黄线。
  • 在显示器一上的输出 MOSI(数据)引脚和显示器二上的输入 MOSI 引脚之间连接一根蓝线。
  • 在显示器一上的输出 CS(选择)引脚和显示器二上的输入 CS 引脚之间连接一根白线。

伟大的!现在让我们将显示器的其余部分连接到面包板...

  • 在显示器 1 上的传入 SCK 引脚和 Arduino 上的数字引脚 13 之间连接一条黄线。
  • 在显示器 1 上的传入 MOSI 引脚和 Arduino 上的数字引脚 11 之间连接一根蓝线。
  • 在显示器 1 上的输入 CS 引脚和 Arduino 上的数字引脚 10 之间连接一根白线。

记住: 提供的代码使用硬件 SPI ,所以如果您使用的是与 Nano 不同的 Arduino 板,请检查哪些引脚是 MOSI 和 SCK 的硬件 SPI 引脚,并相应地连接它们!

做得好。现在进入最后的接线步骤...

连接 LDR 和电阻以检测环境光

在我们连接这些电线之前,我们为什么还要做这一步?好吧,我很高兴你问了!连接到 Arduino 的 LDR 将使我们能够检测 UltrasonicEyes 周围是亮还是暗,我们将使用该信息相应地使 LED 显示屏变亮或变暗。

我们不希望显示器在夜间像在较暗的光线下过亮,当亮度在 30% 左右时我们仍然可以很好地看到显示器,但是在白天或明亮的房间里,我们需要将亮度调高到使显示更明显。

好的,让我们完成最后一步,以便我们继续将其放入 3D 案例!

将 LDR 连接到面包板上的 2 行引脚,就像上面的接线图一样。留出空间放置电阻器和连接到 Arduino 的电线。

在LDR一侧的一排引脚和面包板的GND轨之间连接330ohm电阻。

将 LDR 另一侧的一排引脚之间的红线连接到面包板的电源轨。

最后,让我们在 330 欧姆电阻连接到的引脚行和 Arduino 上的模拟引脚 5 (A5) 之间连接一根棕色线。它需要是一个模拟引脚,因为我们需要从 LDR(光强度)中读取 0 到 255 之间的值,而不是像我们从数字引脚中读取的那样只读取 0 和 1。

让我们启动并上传代码

好的,就是这样,我们都连接好了。是时候将 USB 电缆插入 Arduino 和您的计算机之间,并上传下面提供的 UltrasonicEyes 草图以查看它是否正常工作。

启动并上传代码后,在传感器前走动,或将手移到传感器前,看看会发生什么!

想让它更持久?

想让您的 UltrasonicEyes 更持久?在此处查看我的视频,其中包括获取面包板版本并将其焊接到原型板上...

然后在任何 3D 打印机上打印外壳的 2 个部分并像我在视频中所做的那样组装!

我也在考虑将 UltrasonicEyes 扩展为具有电容式触摸按钮(或常规按钮)以在不同的眼睛形状之间循环......你可以在这里观看我的实验......

您可以在...unexpectedmaker.com 上查看我的其余项目和视频

在 twitter、Facebook、Instagram 和 Tindie 上关注我

https://www.patreon.com/unexpectedmaker

就这样!

代码

  • 超声波眼
超声波眼C/C++
#include  // 我们用它来控制 8x8 LED 矩阵显示器 - 如果你还没有它,你需要从库管理器安装它。#include  // 我们使用 NewPing 来控制超声波传感器 - 如果您还没有这个库,您需要从库管理器安装它。// 定义连接到 LED 矩阵显示器的引脚 1//#define CLK_PIN 13 / / 我们正在使用硬件 SPI - 确保您已将 CLK 引脚连接到设备上的硬件 CLK 引脚//#define DATA_PIN 11 // 我们正在使用硬件 SPI - 确保您已将 MOSI 引脚连接到硬件 MOSI 引脚在您的设备上#define CS_PIN 10 // 芯片选择引脚#define MAX_DEVICES 2 // 显示器数量 - 我们需要 2 个,每只眼睛一个#define LIGHT A5 // 我们使用模拟引脚 5 从 LDR 读取光值/ / 我们使用的硬件 SPI 自动 MD_MAX72XX mx =MD_MAX72XX(CS_PIN, MAX_DEVICES); // 初始化 2 个矩阵显示#define t1 2 // 超声波传感器上的触发引脚 1#define e1 3 // 超声波传感器上的回波引脚 1#define t2 4 // 超声波传感器上的触发引脚 2#define e2 5 // 回波超声波传感器 2 上的引脚#define maxDist 400 // 超声波的最大距离pulseNewPing eyeR(t2, e2, maxDist); // 初始化超声波传感器 2NewPing eyeL(t1, e1, maxDist ); // 初始化超声波传感器 1 // 我们用这个整数变量跟踪系统的当前状态,这样在眨眼后,我们可以将眼睛转回看他们最后所在的方向 // 可能的状态是::// 0:向前看// 1:向右看// 2:向左看int currentState =-1; // 我们将每个超声波传感器的 ping 的时间和距离存储在这些变量中 long duration1, duration2;int distance1, distance2;// 我们希望将眨眼随机插入到循环浮动中 nextBlink =millis() + 1000;//我们当前的光强度存储在此variablefloat lightAmount =0; uint8_t eye_forward [COL_SIZE] ={0b00111100,0b01000010,0b01011010,0b10101101,0b10111101,0b10011001,0b01000010,0b00111100}; uint8_t eye_right [COL_SIZE] ={0b00111100,0b01000010,0b01110010, 0b11011001,0b11111001,0b10110001,0b01000010,0b00111100}; uint8_t eye_left [COL_SIZE] ={0b00111100,0b01000010,0b01001110,0b10010111,0b10011111,0b10001101,0b01000010,0b00111100}; uint8_t eye_blink [COL_SIZE] ={0b00000000,0b00111100,0b01111110,0b11111111, 0b10111101, 0b11000011, 0b01111110, 0b00111100};void setup(){ // 初始化矩阵显示库 mx.begin(); // 设置超声波传感器的引脚模式 1 pinMode( t1, OUTPUT ); pinMode( e1, 输入); // 设置超声波传感器的引脚模式 2 pinMode( t2, OUTPUT ); pinMode( e2, 输入); // 将超声波传感器上的每个触发引脚设置为从低电平开始 digitalWrite( t1, LOW ); digitalWrite( t2, LOW );// 将 LDR 的引脚模式设置为 INPUT pinMode( LIGHT, INPUT ); // 从眼睛向前看 ShowEye_Forward(); currentState =0;}void loop(){ // 读入当前亮度 lightAmount =analogRead( LIGHT ); // 确保光值在显示器的最大强度范围内 lightAmount =( lightAmount / 255 ) * MAX_INTENSITY; // 设置强度 mx.control(MD_MAX72XX::INTENSITY, lightAmount ); // Ping 左眼,递归为 5 distance1 =eyeL.ping_median( 5 ); // 在我们 ping 右眼之前延迟 500 毫秒,所以我们不会得到冲突的结果 delay(500); // Ping 右眼,递归为 5 distance2 =eyeR.ping_median( 5 ); // 检查是否应该尝试插入闪烁 if ( nextBlink  0) { ShowEye_Right();当前状态 =1; } // 现在如果 distance2 大于 distance1 并且 distance2 也大于 0,那么我们要向左看 else if ( distance1  0 ) { ShowEye_Left();当前状态 =2; } // 将循环延迟 250ms 以确保眼睛有时间正确显示 delay(250);}/**************************** ************//************ MAX7219 东西 ************//******** ********************************/void ShowEye_Right(){ // 清除显示 mx.clear(); // 设置当前显示亮度 mx.control(MD_MAX72XX::INTENSITY, lightAmount ); // 遍历显示器的每一行 for (uint8_t row=0; row 

定制零件和外壳

使用任何 3D 打印机打印,无需特定设置。使用任何 3D 打印机打印,无需特定设置。

示意图

超声波眼睛_final_Th84xpUyB2.fzz

制造工艺

  1. UFO 攻击!
  2. 智能百叶窗
  3. 3D RGB Arduclock
  4. MyRiver
  5. 钢铁侠
  6. 带有 Arduino 的简单障碍物传感器
  7. 摇杆游戏
  8. 找到我
  9. Arduino 加湿器控制
  10. 小流浪者
  11. Arduino Joystick
  12. 计步器(Arduino 101)