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

像西斯领主一样进入屋子

组件和用品

粒子光子
× 2
Arduino UNO
× 1
Adafruit Music Maker MP3 Shield
× 1
Adafruit PIR 运动传感器
× 1
LED(通用)
× 2
电阻 220 ohm
× 2
跳线
× 1
扬声器:3W,4 ohms
× 1
面包板(通用)
× 2
USB Micro B 壁式充电器
× 1
USB-A 转 B 线
× 1
Male-Header 36 Position 1 Row- Long (0.1")
× 1

必要的工具和机器

烙铁(通用)

应用和在线服务

粒子云

关于这个项目

我的女儿是星球大战的超级粉丝(尽管她还没有看过任何电影)。毫不奇怪,当我问她是否想建立一个以星球大战为主题的项目时,她已经说完了。我不知道她在穿着达斯维达的服装时让我播放了帝国进行曲(达斯维达的主题曲)多少次,以便她可以隆重地进入房间。所以,我们很快就确定了这个项目的想法——自动检测到有人回家,然后在这个人走进房子之前触发帝国进行曲的播放。

这是一个相当简单的项目,因此非常适合初学者。我发现它很有趣,因为这是我第一次使用发布/订阅模式到/从云。这也是我第一次将不同类型的微控制器集成到一个项目中。在创建云连接解决方​​案时,我喜欢 Photon 的简单性和易用性。而且您无法击败 Arduino 可用的附加硬件的种类和数量。能够如此轻松地将它们组合在一起,使这个项目能够快速组合在一起。


第 1 步:组装传感器

时间:10分钟

零件:光子、220 欧姆电阻、LED、PIR 运动传感器、面包板、公/公跳线、USB micro B 电缆

工具:不适用

首先,将 LED 连接到 Photon。将您的 Photon 安装到面包板中。然后在 Photon 的接地引脚和面包板上的开路行之间连接电阻器。最后,将 LED 的长腿连接到 Photon 上的数字 PIN(我使用引脚 D0),将 LED 的短腿连接到电阻所连接的开路行。坦率地说,LED 是可选的,但我用它来指示传感器的状态,因为 PIR 传感器本身不提供检测到运动的指示,光子在将事件发布到云时也不提供任何指示。

接下来,将 PIR 传感器连接到 Photon。将 PIR 传感器安装到面包板上 - 我使用直角母头针将 PIR 传感器连接到面包板,因为这允许我将 PIR 传感器垂直“固定”到面包板上。 (如果您没有直角头针,则使用一些双面胶带或一些粘性大头针将您的 PIR 传感器安装到桌子或任何您安装它的地方,并使用直接从 PIR 传感器的公头上的母/公跳线引脚连接到面包板。)使用跳线将 PIR 的 GND 连接到 Photon 的 GND 引脚,PIR 的 5V 引脚连接到 Photon 的 Vin 引脚,将 PIR 的信号引脚连接到 Photon 上的数字引脚(我使用引脚 D7)。

仔细检查传感器的数据表,确保正确识别传感器的 5V、GND 和信号引脚,因为它们的顺序因制造商而异。即使我的 PIR 传感器在 5 伏电压下工作,它的信号引脚也只能在 3.3V 下工作,这就是它可以直接连接到 Photon 上的数字引脚的原因。再次仔细检查传感器的数据表,确保信号电压为 3.3V。

通过 Photon 的 USB Micro B 连接器为 PC 或壁装电源插座供电。打开 Particle IDE 并粘贴下面提供的传感器代码。然后将代码刷入 Photon。

现在,如果您在传感器前挥手,LED 应该会亮起。此外,您还可以在 Particle Dashboard 上查看日志以查看事件是否已发布。

第 2 步:组装触发器

时间:10分钟

零件:光子、220 欧姆电阻、LED、面包板、公/母跳线

工具:不适用

就像您在上一步中所做的那样,将 LED 和电阻器连接到光子。同样,LED 是可选的,但我发现指示何时从粒子云接收到事件很有用。接下来,将跳线的公端连接到 Photon 的 Vin、GND 和数字引脚(我使用引脚 D7)。 Photon 的数字引脚将连接到 Music Maker 的 GPIO 引脚之一以触发音乐。 Photon 的 Vin 和 GND 连接将用于从 Arduino 为 Photon 供电。

但首先,在连接到 Arduino 之前,通过 Photon 的 USB Micro B 连接器为 PC 或墙上插座接通电源。打开 Particle IDE 并粘贴下面提供的触发代码。然后将代码烧写到 Photon - 确保您选择了正确的设备来烧写代码,因为您有两个设备连接到 Particle IDE。



第 3 步:组装 Arduino 和 Music Maker 扩展板

时间:20分钟

零件:Arduino Uno、Adafruit Music Maker 屏蔽罩、光子、220 欧姆电阻、LED、迷你面包板、跳线、USB 线

工具:烙铁

Music Maker 防护罩包含头针,但您必须焊接它们。除了将屏蔽连接到 Arduino 的插头引脚之外,我还在屏蔽顶部添加了公插头引脚,用于 GPIO 和来自 Photon 的电源连接。 (如果我有母头针,我会使用它们,这样我就只需要公/公跳线。但是,我手头只有公头针(除了公/母跳线)所以我去了代替路线。)

将跳线从 Photon 的数字引脚连接到屏蔽上的 GPIO 引脚(我使用了屏蔽上的引脚 7)。将 Photon 的 Vin 的跳线连接到屏蔽上的 5v 引脚,将 GND 跳线连接到屏蔽的 GND 引脚。

最后,将扬声器连接到屏蔽上的接线端子 - 一个接线端子用于右扬声器,另一个用于左扬声器。我只是连接了一个扬声器 - 在我们扔掉它之前,我从我女儿的一个坏玩具中抢救了一个小扬声器。

将 Arduino 连接到您的开发机器,将下面的 Arduino 草图粘贴到 Arduino IDE 中,然后上传。

而已。走到传感器前,坐下来等待音乐开始。

关于代码

正如我之前提到的,这是我第一次使用发布/订阅模式。使用 Photon 很容易做到。在传感器代码中,当 PIR 传感器的信号引脚变为高电平时,我打开 LED 并向粒子云发布一个事件。发布事件只需要一行:

published =Particle.publish("motion-detected", NULL, 60, PRIVATE);

最初,我没有将发布设为私有——我不在乎,因为没有个人身份信息。但是,当我去订阅事件时,我收到了很多误报——显然,很多其他用户都在发布面向“运动”的事件。因此,我通过添加“MY_DEVICES”参数将订阅调用切换为仅订阅来自我的设备的事件:

Particle.subscribe("motion", soundAlarm, MY_DEVICES);

为了让订阅功能仅限于我的设备,我必须将发布设为私有。

触发代码只是在运动事件发生时调用事件处理程序 - soundAlarm。事件处理程序所做的就是打开 LED 并将 Music Maker shield 上的 GPIO 引脚设为高电平。 Arduino 草图检测到 GPIO 引脚为高电平,然后在播放 SD 卡上的 MP3 文件之前等待 60 秒(让我停车、收拾东西和进入房子)。


部署项目

我在车库的货架上安装了传感器,就在我停车的地方。我将扳机和带有 Music Maker 防护罩和扬声器的 Arduino 放在厨房柜台上,因为我回家时我女儿通常在厨房的桌子旁。两个地点附近都有墙上插座,可以轻松为项目的两个部分供电。

代码

  • 传感器代码
  • 触发代码
  • Arduino 和 Music Maker 屏蔽代码
传感器代码C/C++
Photon 的示例代码,它在检测到运动时向粒子云发布事件。
// 定义引脚 D0int led =D0 上的 LED;// 定义引脚 D6int pir =D6 上的 PIR 传感器输入;// 跟踪发布是否成功boolpublished;void setup(){ // 将LED引脚设置为输出pinMode(led, OUTPUT); // 将 PIR 传感器输入引脚设置为输入 pinMode(pir, INPUT); // 确保 LED 关闭 digitalWrite(led, LOW);}void loop(){ if (digitalRead(pir) ==HIGH) // 如果检测到运动 { // 打开 LED 作为检测到的指示器数字写入(LED,高);已发布 =Particle.publish("运动检测", NULL, 60, PRIVATE); if (!published) // 如果发布不成功 { // LED 闪烁 10 次作为发布失败的指示器 for (int i =0; i <10; i++) { digitalWrite(led, LOW);延迟(500);数字写入(LED,高);延迟(500); } } } else // 如果没有检测到运动,关闭LED digitalWrite(led, LOW); // 等待 2 秒再进行另一个读取延迟 (2000);}
触发代码C/C++
Photon 的示例代码,它订阅由我的传感器发布的粒子云中的运动事件,然后触发 Music Maker shield 播放 MP3。
// 定义引脚 D0int led =D0 上的 LED;// 定义触发器对于引脚 D7int 上的 Arduino trigger =D7;void soundAlarm(const char *event, const char *data){ // 当运动事件被触发时 // 打开 LED digitalWrite(led, HIGH); // 打开触发器 digitalWrite(trigger, HIGH); // 等待两秒 delay(2000); // 关闭触发器 digitalWrite(trigger, LOW); // 关闭 LED digitalWrite(led, LOW);}void setup(){ // 仅从我的设备订阅运动事件 // 将 soundAlarm 定义为事件处理程序 Particle.subscribe("motion", soundAlarm, MY_DEVICES); // 设置 LED 引脚为输出 pinMode(led, OUTPUT); // 设置触发引脚为输出 pinMode(trigger, OUTPUT);}void loop(){}
Arduino 和 Music Maker 屏蔽代码Arduino
Arduino 的示例代码通过 Music Maker 扩展板根据连接的 Photon 的触发器播放 MP3。
/*********************** ************************************* 本草图使用 Adafruitt Music 从 SD 卡播放 MP3由连接到屏蔽的 GPIO 引脚的光子触发时的 Maker 屏蔽。感谢 Adafruit 编写好的教程和库。 https://learn.adafruit.com/adafruit-music-maker-shield-vs1053-mp3-wav-wave-ogg-vorbis-player/pinouts ***************** ********************************************////包括SPI, Music Maker 和 SD 库#include #include #include // 定义用于音乐制作者屏蔽的引脚#define SHIELD_RESET -1 // VS1053 复位引脚(未使用! )#define SHIELD_CS 7 // VS1053 芯片选择引脚(输出)#define SHIELD_DCS 6 // VS1053 数据/命令选择引脚(输出)#define CARDCS 4 // 卡芯片选择引脚// DREQ 应该是一个 Int 引脚,见 http ://arduino.cc/en/Reference/attachInterrupt#define DREQ 3 // VS1053 数据请求,理想情况下是中断引脚 // 定义音乐播放器Adafruit_VS1053_FilePlayer musicPlayer =Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS); // 定义光子连接的 GPIO 引脚int photonPin =7;void setup(){ // 初始化音乐播放器 musicPlayer.begin(); // 初始化 SD 卡 SD.begin(CARDCS); // 设置左右声道的音量。较低的数字 ==更大的音量!音乐播放器.setVolume(1,1); // 如果 DREQ 在中断引脚上(在 uno、#2 或 #3 上) // 我们可以播放背景音频,但它没有 // 在项目的这个初始阶段使用 // 初始化 DREQ 中断 //音乐播放器.useInterrupt(VS1053_FILEPLAYER_PIN_INT); // 将光子连接的 GPIO 引脚初始化为输入 musicPlayer.GPIO_pinMode(photonPin, INPUT);}void loop(){ if (musicPlayer.GPIO_digitalRead(photonPin) ==HIGH) { // 播放前等待 60 秒以便我 // 在它开始延迟(60000)之后走进房子; // 播放文件,直到完成 musicPlayer.playFullFile("track001.mp3"); }延迟(500);}

示意图

sensor.fzz trigger.fzz

制造工艺

  1. CNC 机床中使用的组件是什么
  2. 危机中良好沟通的关键要素
  3. 制造业的未来会是什么样子?
  4. The Annoy-O-Bug:鸣叫的发光投掷车
  5. 交叉引用的艺术
  6. 纳米技术准备好进入物联网安全战了吗?
  7. 压缩空气系统有哪些组件?
  8. 现代化过程中各种起重机部件会发生什么变化?
  9. 未来的技术员会是什么样子?
  10. 带锯床的主要部件
  11. 设计机加工零件的终极指南
  12. 航空航天部件和精密飞机部件市场