由于圣诞节快到了,没有装饰和圣诞树,它的本质是不完整的。所以,不要使用我们每年都放的旧圣诞树装饰品,让我们更上一层楼,使用带有 Neo 像素 LED 灯条、JQ6500 语音模块和PIR 传感器的 Arduino 。PIR传感器用于检测运动,JQ6500语音模块用于播放圣诞颂歌,Neo Pixels用于点亮圣诞树。
所需组件
Arduino纳米
Neo Pixel LED灯条
PIR 传感器
JQ6500 语音发声模块
8Ω 0.5W 喇叭
7805稳压器
直流电源插孔(母)
2× 10µf 电容
电路原理图
上面给出了基于 Arduino 的装饰圣诞树的完整电路图。非常简单,我们只需要连接 PIR 传感器、JQ6500 语音模块和 Neo-Pixel LED 灯条。完整的设置由 12V 电池供电。电路的大脑是 Arduino Nano。PIR 传感器用于检测人员的存在。该传感器的三个引脚中的两个,即 Vcc 和 GND 连接到 Arduino 的 5V 和 GND。而数据管脚连接到Arduino Nano的D5,Neo-Pixel条的数据管脚连接到Arduino Nano的D2管脚。
JQ5600 MP3模块是一个3.3V的逻辑模块,所以不能直接连接到Arduino的IO管脚,但是用Arduino的5V电源线供电就可以了。MP3 模块的 RX 和 TX 引脚连接到 Arduino Nano 的数字引脚 9 和 8。在 Arduino 数字引脚 9 和 MP3 模块的 RX 之间放置一个 1kΩ 电阻,以降低 Arduino 的 5V 电压。
为装饰圣诞树编程 Arduino Nano
一旦我们准备好硬件,我们就可以将 Arduino 连接到我们的计算机并开始编程。该项目的完整代码在本页底部给出;您可以将其直接上传到您的 Arduino 板。但是,如果您想知道代码是如何工作的,请进一步阅读。
该代码使用JQ6500_Serial.h、Adafruit_NeoPixel.h和SoftwareSerial.h库。SoftwareSerial 库预安装在Arduino IDE中。可以从此链接安装 JQ6500 串行库。而Adafruit_NeoPixel.h库可以直接从 Arduino IDE 下载。为此,请转到Sketch 》 Include Library 》 Manage Libraries。然后在搜索框中搜索“ Adafruit Neo ”并下载并安装“ Adafruit Neopixel ”库。
像往常一样,通过包含所有必需的库并定义该项目中使用的所有引脚来启动代码。
- #include
- #include
- #include
- #include
复制代码
之后,声明 NeoPixel 条对象,其中参数 1 是 NeoPixel 条中的像素数,参数 2 是连接 LED 灯条的 Arduino 引脚。
- Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
复制代码
然后在setup()函数中初始化输入输出引脚,并初始化串行监视器和 JQ6500 语音模块。
- pinMode(传感器,输入);
- mp3.开始(9600);
- mp3.reset();
- mp3.setVolume(50);
- mp3.setLoopMode(MP3_LOOP_NONE);
- 剥离.开始();
复制代码
首先在主循环中,我们启动 Neo-Pixel LED 灯条的彩虹模式,然后读取 PIR 传感器状态。现在,如果 PIR 传感器的状态为高,我们将调用mp3.play()函数来播放圣诞快乐歌曲,并将 Neo-Pixel 状态更改为 TheaterChaseRainbow 模式。
- 无效循环(){
- 彩虹1(10);
- val = digitalRead(传感器);
- 序列号.print(val);
- 如果(val == HIGH){
- mp3.playFileByIndexNumber(1);
- 剧院追逐彩虹(50);
- 延迟(7000);
- }
- }
复制代码
3D打印星形外壳
接下来,我使用比例尺测量了装置的尺寸,还测量了筒式千斤顶的尺寸,以便为我的装置设计一个外壳。完成后,我的设计如下所示。
完成设计后,我将其导出为 STL 文件,根据打印机设置对其进行切片,最后打印出来。STL 文件也可以从 Thingiverse 下载,您可以使用它打印您的外壳。打印完成后,我继续将项目组装在一个永久性的外壳中,将其安装在圣诞树上。完成连接后,我将电路组装到我的外壳中,正如您在此处看到的那样,一切都非常合适。
圣诞星测试
代码和硬件准备好后,将代码上传到 Arduino Nano。之后将所有东西安装在外壳内,如下图所示:
现在,使用 12V 适配器为设置供电,Neopixel 将开始以彩虹模式照明,当 PIR 传感器检测到有人时,它将播放“圣诞快乐”歌曲并将 Neo-Pixel 模式从彩虹更改为 Theatrechase。
代码
#include
- #include
- #include
- #include
- JQ6500_Serial mp3(8,9);
- #define PIXEL_PIN 2 // 连接到 NeoPixels 的数字 IO 引脚。
- #define PIXEL_COUNT 55 // NeoPixels 的数量
- Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
- 常量 int 传感器 = 5;
- 常量 int 状态 = 低;
- 整数值;
- 整数模式 = 0; // 当前激活的动画模式,0-9
- int r,g,b,数据;
- 无效设置(){
- 序列号.开始(115200);
- pinMode(传感器,输入);
- mp3.开始(9600);
- mp3.reset();
- mp3.setVolume(50);
- mp3.setLoopMode(MP3_LOOP_NONE);
- 剥离.开始();// 初始化 NeoPixel 条形对象(必需)
- 剥离.show(); // 将所有像素初始化为'off'
- }
- 无效循环(){
- val = digitalRead(传感器);
- 序列号.print(val);
- 如果(val == HIGH){
- mp3.playFileByIndexNumber(1);
- // 剧场追逐彩虹(5);
- 延迟(9000);
- Serial.print("工作");
- }
- 彩虹();
- }
- 无效彩虹(){
- for(long firstPixelHue = 0; firstPixelHue < 3*65536; firstPixelHue += 256) {
- for(int i=0; i
复制代码 |