維基少年:樹莓派/樹莓派樂高®防盜報警器
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")