0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何制作动作感应树莓派Halloween音箱

454398 来源:网络整理 作者:网络整理 2019-11-29 17:12 次阅读

又是一年中的那个时候,社会上普遍认为吓坏年幼的孩子并给他们糖果。哦,高兴。我在这里通过向您展示如何制作一个简单的动作感应Raspberry Pi Halloween音箱来使您的工作更轻松。这是一个演示:

这就是您所需要的

可能您唯一还没有的部分是运动传感器,这是您应该能够找到的小巧而廉价的部分

Raspberry Pi(任何型号都可以)。

运动传感器(〜3美元)。

连接线。

有线扬声器(大多数蓝牙扬声器都可以选择使用输入)。

3.5毫米立体声电缆,公对公。

完成后,您可能还想添加一些同步的灯光效果,但是在本教程中,我们将仅涵盖一些令人恐惧的声音!

设置

我们正在使用Raspbian Jessie Lite和Python 2.7,但是在您的Pi上运行的任何Linux发行版都应该可以。我已将其保留在标准主机名“ raspberrypi.local”上,因此首先使用SSH远程登录(如果您使用的是Mac,请打开“终端”窗口。以下是在Windows中执行相同操作的方法)-或选择使用带有桌面GUI的完整Raspbian,请随时跳过更新。

ssh pi@raspberrypi.local

(enter raspberry as the password)

sudo apt-get update

sudo apt-get install python-pip

sudo pip install gpiozero

这会安装一个简单的库,用于处理Python中具有许多内置类型的GPIO引脚-在传感器和按钮中。用GPIO4上的信号引脚,VCC连接至5V以及GND连接至GND的方式连接传感器。这可能会因您的确切模型而异,因此请使用引脚图进行确认。

《图id =“ attachment_598229” aria- describeby =“ caption-attachment-598229” class =“ wp-caption aligncenter”》

图片来源:raspberrypi.org

我的Pimoroni的Pi 2外壳上有一个直接激光蚀刻的引脚图。

现在,让我们制作运动检测脚本。

nano motion.py

粘贴:

from gpiozero import MotionSensor

pir = MotionSensor(4)

while True:

if pir.motion_detected:

print(“Motion detected!”)

else:

print (“No motion”)

按CTRL-X,然后按Y保存并退出,然后运行:

python motion.py

您应该会在屏幕上看到重复的“ no motion”消息,直到您的手在传感器前面挥动,直到它停留在“ Motion Detected!”上。

如果该消息完全不变,则说明您的连接错误。

如果您有兴趣了解更多有关这个简单的GPIOZero库,看看这个奇妙的备忘单。

Pla Sound声音

连接便携式扬声器,并在需要时确保已接通电源。我们将使用 pygame 库播放声音,因此请继续安装它:

sudo apt-get install python-pygame

首先,我们需要一个声音文件来播放。如果您是在桌面环境中执行此操作,请继续从某个位置下载 WAV 或 OGG 文件(我在这里找到了很多免费的万圣节声音) ,并将其放在您的主目录中。我建议先进行降采样,然后再转换为OGG格式。

如果您是远程连接且仅使用命令行,则由于 wget 命令可能无法获取实际文件。相反,我们可以将其本地下载到我们的桌面,然后使用 scp (安全副本)命令在命令行上进行复制。您可以在此处了解有关scp的更多信息,但现在,打开一个新的Terminal选项卡,然后键入:

scp thunder.ogg pi@raspberrypi.local:

根据需要重命名thunder.ogg,但是不要忘记最后一个:(该命令将在没有它的情况下完成,但不会执行我们想要的操作)。默认情况下,这会将文件传输到Pi用户的主目录。

现在,让我们修改脚本以播放声音。首先导入一些新模块:

import pygame.mixer

from pygame.mixer import Sound

然后,在现有import语句之后,我们将一遍又一遍循环相同的声音以进行测试。剩下的动作感测代码保持原样-它不会运行,因为它将永远停留在此声音播放循环中。

pygame.init()

pygame.mixer.init()

#load a sound file, in the home directory of Pi user (no mp3s)

thunder = pygame.mixer.Sound(“/home/pi/thunder.ogg”)

while True:

thunder.play()

sleep(10)

thunder.stop()

请注意,当我最初尝试此过程时,声音拒绝播放,而是单击了。罪魁祸首是文件大小或比特率:它是24位,并且15秒剪辑超过5 MB。使用上面链接到的转换器将其缩减到16位,一切正常,并且大小减小到260KB!

如果您在运行Python应用程序时发现扬声器发出嘶嘶声,但不要其他方式,键入:

sudo nano /boot/config.txt

,然后在最后添加此行:

disable_audio_dither=1

重新启动更改生效。还是不要打扰,因为无论如何我听起来还是下雨了。

最后,让我们修改主运动检查循环,以在检测到运动时播放声音。我们将使用15秒的延迟,以便可以播放整个循环,并在出现大量不停运动时充当垃圾邮件缓冲区。

while True:

if pir.motion_detected:

print(“Motion detected!”)

thunder.play()

# ensure playback has been fully completed before resuming motion detection, prevents “spamming” of sound

sleep(15)

thunder.stop()

else:

print (“No motion”)

自动启动

我们可能希望将其设置为带电池且没有互联网连接的地方,因此脚本需要在重新启动时运行,而不必打开命令行。为此,我们将使用最简单的方法:crontab。输入:

sudo crontab -e

如果这是第一次运行此命令,首先会询问您要使用的编辑器。我为nano选择了选项2。它将启动到您选择的编辑器中,因此添加以下行:

@reboot python /home/pi/motion.py &

这意味着您的motion.py脚本将在每次启动时运行,并以静默方式运行(因此

如果尽管有任何动作都没有播放任何内容,或者听到一点点点击,则可能未使用完整的文件路径,或者您的文件可能需要转换为较低的比特率和较小的文件大小。

添加更多声音

一遍又一遍地播放相同的效果有点无聊,所以让我们添加一些随机性。下载更多万圣节声音,记得将其缩小到合理的大小和比特率,然后像以前一样使用 scp 将它们发送到您的Pi。我添加了三种不同类型的尖叫声。

修改代码,以使我们实际上没有创建一个 array 《数组,而没有定义一个 pygame.mixer.Sound 变量。/em》的声音。对于Python来说这很简单,只需用方括号将它们的逗号分隔列表括起来,如下所示:

sounds = [

pygame.mixer.Sound(“/home/pi/thunder.ogg”),

pygame.mixer.Sound(“/home/pi/scary_scream.ogg”),

pygame.mixer.Sound(“/home/pi/girl_scream.ogg”),

pygame.mixer.Sound(“/home/pi/psycho_scream.ogg”)

接下来,使用以下命令将随机库导入文件中:/p》 import random

现在修改主运动感应环,如下所示:

while True:

if pir.motion_detected:

print(“Motion detected!”)

playSound = random.choice(sounds)

playSound.play()

# ensure playback has been fully completed before resuming motion detection, prevents “spamming” of sound

sleep(15)

playSound.stop()

else:

print (“No motion”)

请注意小改动:而不是播放单个Sound变量,我们使用 random.choice 函数从声音数组中选择随机声音,然后播放。

以下是完整代码,以防您遇到问题:

import pygame

from pygame.mixer import Sound

from gpiozero import MotionSensor

from time import sleep

import random

pygame.init()

pygame.mixer.init()

#load a sound file, same directory as script (no mp3s)

sounds = [

pygame.mixer.Sound(“/home/pi/thunder.ogg”),

pygame.mixer.Sound(“/home/pi/scary_scream.ogg”),

pygame.mixer.Sound(“/home/pi/girl_scream.ogg”),

pygame.mixer.Sound(“/home/pi/psycho_scream.ogg”)

pir = MotionSensor(4)

while True:

if pir.motion_detected:

print(“Motion detected!”)

playSound = random.choice(sounds)

playSound.play()

# ensure playback has been fully completed before resuming motion detection, prevents “spamming” of sound

sleep(15)

playSound.stop()

else:

print (“No motion”)

只有四个样本,每次重复的可能性很高,但是如果您很烦,您可以添加更多样本。

而已!用一些吓人的LED怪物眼睛将它藏在灌木丛中,您应该能够为自己节省一些糖果,因为所有孩子甚至在上门之前都尖叫着逃走。还是躲在壁橱里,因为在你让约翰尼哭泣之后生气的妈妈已经流血了。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 音箱
    +关注

    关注

    36

    文章

    638

    浏览量

    67642
  • 树莓派
    +关注

    关注

    116

    文章

    1684

    浏览量

    105433
收藏 人收藏

    评论

    相关推荐

    树莓gpio有什么用,树莓gpio接口及编程方法

    一、树莓GPIO的用途 树莓(Raspberry Pi)是一款小巧、功能强大的单板计算机,广泛应用于编程教育、物联网项目、家庭媒体中心等领域。GPIO(General Purpos
    的头像 发表于 10-22 18:09 227次阅读

    什么是树莓树莓是什么架构的

    什么是树莓 树莓(Raspberry Pi,简写为RPi,别名为RasPi/RPI)是由英国“Raspberry Pi 慈善基金会”开发的一款为学习计算机编程教育而设计的微型电脑。
    的头像 发表于 10-22 17:33 237次阅读

    树莓网关:物联网应用的新标杆

    什么是树莓树莓(Raspberry Pi)是一种基于Linux的小型单板计算机,由英国的树莓
    的头像 发表于 10-09 16:44 185次阅读
    类<b class='flag-5'>树莓</b><b class='flag-5'>派</b>网关:物联网应用的新标杆

    树莓和单片机的优缺点是什么

    树莓(Raspberry Pi)和单片机(Microcontroller)是两种广泛应用于电子项目和嵌入式系统的硬件平台。它们各自具有独特的优缺点,适用于不同的应用场景。 树莓
    的头像 发表于 08-30 18:21 1321次阅读

    树莓的功能用途是什么

    树莓(Raspberry Pi)是一款由英国树莓基金会研发的信用卡大小的单板计算机,自2012年推出以来,已经发展出多个型号和版本。树莓
    的头像 发表于 08-30 18:01 1937次阅读

    树莓4B的性能特点及应用

    树莓4B简介 树莓4B是一款基于ARM架构的单板计算机,其搭载了四核Cortex-A72 CPU,主频高达1.5GHz,同时配备了4GB LPDDR4内存。此外,它还具备了丰富的接
    的头像 发表于 08-30 16:54 1130次阅读

    树莓gui开发用什么ide

    树莓(Raspberry Pi)是一款功能强大的微型计算机,可以运行多种操作系统,如Raspbian、Ubuntu等。在树莓派上进行GUI(图形用户界面)开发,可以使用多种集成开发环境(IDE
    的头像 发表于 08-30 16:49 559次阅读

    树莓是x86还是arm

    树莓(Raspberry Pi)是一款由英国树莓基金会(Raspberry Pi Foundation)开发的微型计算机。它基于ARM架构,而非x86架构。 一、
    的头像 发表于 08-30 15:42 588次阅读

    树莓装ubuntu和raspbian哪个更好

    树莓(Raspberry Pi)是一款由英国树莓基金会开发的单板计算机,广泛应用于教育、科研、物联网等领域。树莓
    的头像 发表于 08-30 15:41 840次阅读

    树莓和arm开发板的区别

    树莓(Raspberry Pi)和ARM开发板都是基于ARM架构的微型计算机,但它们之间存在一些关键区别。 一、历史背景 树莓(Raspberry Pi)
    的头像 发表于 08-30 15:36 614次阅读

    树莓基金会更新树莓OS,支持最新浏览器,优化电源管理

    首先,树莓 OS 对于电源系统进行了优化提升,新增了对树莓 5 SBC 的兼容支持。其次,还在屏幕配置功能中新增了无头模式分辨率选项,并取消了 Wayland 模式下的此项设置。
    的头像 发表于 03-14 14:55 623次阅读

    树莓5的新功能和引脚介绍

    树莓5(Raspberry Pi 5)于2023 年10 月底已经推出。
    的头像 发表于 01-26 09:21 8156次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>5的新功能和引脚介绍

    树莓主板如何连接电脑

    连接树莓派到电脑是一个非常有用的功能,它可以让我们在电脑上进行树莓的操作和管理。本文将详细介绍如何连接树莓主板到电脑。我会从准备工作开始
    的头像 发表于 01-07 15:40 1689次阅读

    基于树莓的环境监测系统

    树莓(Raspberry Pi)是一种小型而功能强大的计算机,其性能和功能足以支持许多应用领域。在环境监测系统中,树莓也被广泛应用。本文将详细介绍基于
    的头像 发表于 01-04 15:15 1280次阅读

    树莓都有哪些功能,是用什么编程的?

    怎么学习树莓树莓和传统单片机的区别是哪些,如果有了树莓该学哪些知识
    发表于 11-09 07:51