维基少年:树莓派/树莓派乐高®防盗报警器
Andrew Oakley 的教程
公有领域 2016-04-24 更新 2018-03-01
www.cotswoldjam.org
LEGO® 是乐高集团公司的商标,该公司不赞助、授权或认可本教程或 Cotswold Raspberry Jam。
本教程将向您展示如何制作一个防盗报警器,当乐高®门打开时会发出警报声。
Words you will see on the screen, or that you need to type in, are highlighted like this
在每行结尾,您通常需要按 ↵ Enter 键。您的导师应该已经为您准备了树莓派,并给您一个元件包。如果没有,请参阅结尾处的“准备”部分。
压电蜂鸣器在电流通过时会发出哔哔声。
它有两个“腿”连接器;一个长一个短。
- 长腿必须连接到正极
- 短腿必须连接到地线(负极)。
对簧片开关要非常轻柔小心。玻璃很容易破裂。 |
簧片开关是一个玻璃管,里面有两块金属,中间隔着一个小缝隙。当附近有磁铁时,两块金属会接触,让电流通过。簧片开关可以在任一侧连接正极或负极。
跳线(也称为杜邦线)用于将电子元件连接到树莓派或面包板。
您还应该有四根母对母跳线。
一块小磁铁和一个乐高®门。您的导师应该已经用胶带将簧片开关粘贴到门框的顶部内侧,并将磁铁粘贴到门的顶部内侧。
如果您家里有防盗报警器,可以拿一个脚凳看看门顶。我敢打赌您会看到一些白色的塑料块——门框上一个,门顶一个。这些里面包含一个簧片开关和一个磁铁,就像本教程一样。
不用担心电线的颜色——本教程的作者是色盲。 |
树莓派使用两组数字来指代通用输入输出引脚(GPIO 引脚)。
“板编号”只是从左下角开始,从 1 开始,一直向上和向右,直到 40。
“BCM 编号”(Broadcom 编号)是树莓派处理器看到引脚连接的方式。
我们将使用 GPIO Zero 进行编程,它使用 BCM 编号。
- 将簧片开关连接到 GPIO 引脚 9(GND)和引脚 7(GPIO 4)。
- 将压电蜂鸣器的短腿连接到 GPIO 引脚 14(GND),并将长腿连接到 GPIO 引脚 16(GPIO 23)。
启动树莓派并进入桌面。
从菜单中选择编程 - Python 3。然后使用文件,新建窗口创建新程序。
在程序中输入以下内容,或者您可以使用文件,打开打开 python/burglar 文件夹中的 burglar1.py
程序。
from gpiozero import Button
button=Button(4)
button.wait_for_release()
print ("Door opened")
使用文件,保存将此程序保存为 burglar1.py,然后通过选择运行菜单,运行模块来运行它。
关闭门然后打开门。您应该在屏幕上看到“门已打开”字样。
没有起作用?检查您是否
- 电线连接到正确的 GPIO 引脚。
- 簧片开关与磁铁对齐。轻轻旋转它,使触点被磁铁拉到一起。
- 簧片开关没有断裂(如果断裂,请向您的导师索要另一个)。
- 没有拼写错误,没有缺失的括号,并且您使用了圆括号而不是尖括号、大括号或方括号。
from gpiozero import button
第一行告诉计算机学习一个新事物。计算机可以从其他程序员编写的程序中学习,我们称这些其他程序为“库”。我们的指令告诉计算机学习关于按钮,按钮可以按下或释放。
button=Button(4)
簧片开关是一种特殊的按钮。它是“常开”的(释放),没有电流通过。当附近有磁铁时,它会闭合(就像按下按钮一样),电流从 GPIO4 引脚流向接地引脚。
button.wait_for_release()
这会导致程序等待直到簧片开关重新打开——它必须从闭合状态变为打开状态。如果门在程序开始时已经打开,则不计入。
print ("Door opened")
这将在屏幕上打印一条消息。
让我们添加一个循环,这样我们就可以不断地打开和关闭门。
from gpiozero import Button
button=Button(4)
while (True):
button.wait_for_release()
print ("Door opened")
button.wait_for_press()
print ("Door closed")
或者,如果您不想输入,可以加载 burglar2.py
程序。
while
命令会重复程序的一部分;True
词语会让它永远重复。
缩进在 Python 中很重要。例如,您必须在 while
后面的行中输入两个空格。这样的缩进定义了一块代码。
Python 对标点符号和大小写也很挑剔。True
的第一个字母必须是大写,并且 while (True):
行必须以冒号结尾。
使用文件,保存将此程序保存为 burglar.py,然后通过选择运行菜单,运行模块来运行它。尝试打开和关闭门。
通过选择 Shell 菜单,重新启动 Shell 来停止程序。
修改程序以添加蜂鸣器。或者,加载burglar3.py
文件。
from gpiozero import Button, Buzzer
button=Button(4)
buzzer=Buzzer(23)
while (True):
button.wait_for_release()
print ("Door opened")
buzzer.beep(1,0,1)
button.wait_for_press()
print ("Door closed")
请注意,我们已经从库中导入了蜂鸣器对象,以及按钮。
接下来,我们将蜂鸣器设置为在 GPIO23 上工作。
当门被打开时,我们使用
buzzer.beep(1,0,1)
此命令具有三个数字,称为参数
- 蜂鸣器发声的秒数(1)
- 蜂鸣器保持静音的秒数(0,零)
- 循环遍历声音和静音期的次数(1,仅一次)
1,0,1
将给我们一个单一的 1 秒蜂鸣声。你可以更改它,使其发出非常烦人的声音!
使用文件,保存将此程序保存为 burglar3.py,然后通过选择运行菜单,运行模块来运行它。
现在,当你打开门时,蜂鸣器应该会响一秒钟。
通过选择 shell 菜单,重启 shell 来停止程序。
从以下位置下载示例程序文件:http://www.cotswoldjam.org/downloads/2016-04
从 Bricklink.com 或 LEGO® 零件专家处 | 从 cpc.farnell.com 或电子元件零售商处 |
---|---|
60623 1×4×6 钉门 SW01130 | 小型钕块磁铁 |
60596 1×4×6 钉门框 SW00757 | 低压玻璃簧片开关 |
3032 4×6 钉板 LS03804 | 低压压电蜂鸣器 |
SC12901 ×4 母-母 杜邦跳线 |
玻璃簧片开关容易断裂。弯曲时握住支腿,不要依赖玻璃支撑它们。使用透明胶带® 以确保任何碎片在开关断裂时不会逃逸。
本教程的原始 PDF 可以在维基共享资源上找到:Cjam-burglar-tutorial-2018.pdf
from gpiozero import Button
button=Button(4)
button.wait_for_release()
print ("Door opened")
from gpiozero import Button
button=Button(4)
while (True):
button.wait_for_release()
print ("Door opened")
button.wait_for_press()
print ("Door closed")
from gpiozero import Button, Buzzer
button=Button(4)
buzzer=Buzzer(23)
while (True):
button.wait_for_release()
print ("Door opened")
buzzer.beep(1,0,1)
button.wait_for_press()
print ("Door closed")