上次发了一个制作整蛊坐垫的文章,貌似有些朋友还不过瘾,那咱们这次就来个升级版 —— “突然出现的蜘蛛”。
我们将制作一个吓人的蜘蛛盒子,让里面的蜘蛛突然出现在人们面前,并发出恐怖的声音。
在启动项目之前,你得先知道:
1、如何用激光切割机制作符合规格的箱子(放蜘蛛和其他道具用)
2、如何控制gpio输入和输出设备
4、如何为了特定目的用函数将命令组合在一起
5、如何使用pygame播放声音
6、如何利用脉宽调制(PWM)信号来控制伺服电机
所需电子硬件:
1、圆按钮
2、伺服电机
3、扬声器
4、LED灯
5、330欧姆电阻器
6、电池组或充电宝
7、树莓派
制作盒子:
要制作这个盒子,我们建议用3毫米厚的胶合板进行激光切割。最简单的方法是找一个本地的创客/黑客空间,问他们是否可以帮助。
许多学校现在也有小型激光切割机,所以你可以问问相关的设计和技术部门是否可以提供帮助。
如果找不到激光切割机,也可以用硬纸板做这个盒子。
盒子的设计图:
https://github.com/IoToutpost/grandpa-scarer/tree/master/en/resources
盒子图形的切割设置:
红色:描边即可
黑色:直接切割
所需切割面积为450 x 400毫米。如果你的激光切割机床比较小,那么用Inkscape或Adobe Illustrator编辑一下,把它分成两张。
由于激光切割机型号较多,且操作起来有一定危险性。不建议新手去摸,最好把该工作交给熟练工。
激光切割出盒子:
把盒子粘合:
用热胶枪把盒子的边粘在一起。如果胶水到处都是,不要担心。没有人看到盒子里面。
附上铰链:
用两个铰链把盖子的一侧固定住,在盒盖附近形成活动连接,螺丝一定要拧紧。
用好伺服电机:
接下来我们要用到伺服电机,其内置控制电路,最大可调到180度。
系统会通过非常快的速度打开和关闭一个GPIO管脚来控制伺服电机。脉冲的长度(也称为脉冲宽度)控制着电机指向哪个方向。
这些信号被称为脉宽调制(PWM),允许你做各种各样的事情,从LED调明暗到驱动电机。
树莓派不支持以标准方式生成这些PWM信号,因为它没有专用的时钟系统。
不过在这个项目中,我们依然使用软件生成PWM信号。这种方法的缺点是信号并不完美,因此伺服电机可能会来回抖动。
伺服电机接线:
该电机有三个引线。通常,棕色/黑色的是地线,红色的是5v(微型电机供电),黄色/橙色是信号。我们将使用公对母跳线连接电机的母引脚和树莓派的GPIO引脚。
首先将电机的棕色/黑色线连接到树莓派的引脚9。然后将伺服电机的红线连接到树莓派的引脚2。最后,将电机的控制线(黄色/橙色)连接到Pi上的引脚11。
这是接线示意图:
接线按钮:
为了控制蜘蛛出现的时机,你需要一个物理按钮。
首先,你要将两根导线的一端分别接到按钮的两个管脚上。这两根导线尽量长一点,如果你不想站在盒子边上操作的话。
两根导线的另一端,要分别接到树莓派的GPIO引脚上。一根线从按钮连接到Pi的第6引脚,另外一根线从按钮连接到Pi的第18引脚。
记得用胶带之类的固定好,然后试一下是否能通。
然后开始敲代码:
import RPi.GPIO as GPIO import time import pygame import random GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.OUT) GPIO.setup(16, GPIO.OUT) GPIO.setup(18, GPIO.IN, GPIO.PUD_UP) p = GPIO.PWM(11, 50) p.start(0) def waitButton(): GPIO.wait_for_edge(18, GPIO.RISING) def sound(): sounds = [ "Female_Scream_Horror-NeoPhyTe-138499973.mp3", "Monster_Gigante-Doberman-1334685792.mp3", "Scary Scream-SoundBible.com-1115384336.mp3", "Sick_Villain-Peter_De_Lang-1465872262.mp3", ] choice = random.choice(sounds) pygame.mixer.init() pygame.mixer.music.load(choice) pygame.mixer.music.play() # Wait for the sound to finish while pygame.mixer.music.get_busy(): continue time.sleep(0.3) # Main program section while True: # Forever loop (until you hit ctrl+c) try: waitButton() # Wait until the button is pushed p.ChangeDutyCycle(3) time.sleep(0.1) # Allow the servo to move sound() # Play a sound file time.sleep(2) waitButton() # Wait until the button is pushed p.ChangeDutyCycle(12) time.sleep(1) except(KeyboardInterrupt): p.stop() # Stop the PWM GPIO.cleanup() # Resets the GPIO pins
播放声音:
当你按下按钮时,你的蜘蛛就会跳出来,然后发出很大的声音。
可是树莓派没有任何内置扬声器,所以你要使用一个小型便携式扬声器,把插头塞到到Pi的3.5毫米音频插孔即可。
完整装箱:
现在你需要把所有的电子设备都装进盒子里。因为树莓派是整个项目的大脑,所以你要先把它装上去。
如果你是按上面设计图纸制作的盒子,你应该可以看到一个激光雕刻的侧边区域,那里有四个螺丝固定孔。用3D打印垫片和M2.5螺丝将树莓派固定在这个区域。
蜘蛛要选好,与盒子的大小要匹配。
将蜘蛛绑好线后,反着放进盒子,把伺服电机固定在盒子的开盖处,等会要用它扣住盖子。
合上盖子,把按钮到树莓派的两根线绑到一起。
最后,把盒子安全的固定到房檐或门框上。别挂在不受力的地方。千万别按钮一按,蜘蛛没出来,盒子掉下来砸到人。
祝大家玩的开心~
PS:如果要加入预警提示可以在电路中加LED灯,再串接一个330欧的电阻,以便在蜘蛛出现前先闪一下。
相关代码和设计:
https://github.com/IoToutpost/grandpa-scarer/
素材:Raspberrypi.org
编译:IoT前哨站