請你想像以下的情境,明天早上你就要去度長假了,當家裡無人留守的時候,你希望留下一些東西來嚇唬小偷,於是你想到檯燈計時器是個不錯的選擇,但是三更半夜的五金行早就關了,你又要搭上明天一早的班機,根本來不及買,要怎麼辦才好呢?幸好,你身為一位Raspberry Pi的玩家,手邊剛好有以下這些零件:
有了這些零件之後,就可以用shell程式和cron這兩款功能強大的Linux工具來做出你自己的檯燈計時器了。
Shell程式檔裡頭有許多不同的指令可以使用(像你用來控制、讀取針腳的功能就是其中一種指令),請看看下面的shell程式,以及隨後的註釋。
on.sh
並透過chmod指令使它變成可執行的程式:
root@raspberrypi:/home/pi#
chmod +x on.sh
注意
如果出現「Permission denied」這個錯誤訊息,你就需要以root身分執行這些指令,請輸入:
sudo su
只要在指令後面輸入指令行參數,就可以將程式資訊傳遞到程式或程式檔中。當你在shell程式檔中輸入$1便代表第一個指令行參數,$2則表示第二個指令行參數,依此類推。而在
on.sh
範例中,你要輸入你想輸出並想啟動的針腳編號,通常我們不會把針腳編號寫到程式中,而是直接在指令行中指定該針腳編號。假設要使25號針腳輸出並將啟動的話,請輸入:
root@raspberrypi:/home/pi/# ./on.sh 25 (1)
Exporting pin 25.
Setting direction to out.
Setting pin high.
(1)檔案名稱之前的「./」符號表示你將在這個資料夾位置中執行此程式。
如果你在前幾個章節中所使用的LED還連接在25號針腳上,那麼這時候它應該會亮起來。現在,我們就來編寫另外一個shell程式檔,名稱是:
off.sh
它的功能可用於將LED關閉,程式內容如下:
#!/bin/bash
echo Setting pin low.
echo 0 > /sys/class/gpio/gpio$1/value
echo Unexporting pin $1
echo $1 > /sys/class/gpio/unexport
現在,讓我們加上最後一步,使它變成可執行的程式檔:
root@raspberrypi:/home/pi/temp#
chmod +x off.sh
root@raspberrypi:/home/pi/temp#
./off.sh 25
Setting pin low.
Unexporting pin 25
如果程式正確的話,LED應該就會關閉。
連接檯燈
當然,Raspberry pi上面的小小LED光線根本不足以嚇唬小偷,使他們以為你還在家,所以,我們要將檯燈連接到Raspberry Pi上。
./on.sh 25
時,檯燈應該會打開,反之,再執行
./off.sh 25
時,檯燈就會關閉。
補充說明
在PowerSwitch Tail裡有一些電子零件,能幫助你藉由像Raspberry Pi這樣的裝置來提供低電壓訊號控制像檯燈或果汁機這種需要高電壓的家電。在PowerSwitch Tail運作時,你所聽到的「喀啦」聲是繼電器將開關打開與關閉的聲音,這個繼電器就是線路中最核心的零件。繼電器就像開關一樣,可以根據Raspberry Pi上傳來的低電壓控制訊號打開或關閉這些家電的電源。
Cron
來設定時間,將檯燈在不同的時間打開或關上。
Cron
是Linux系統中的作業排序功能。有了這個功能之後,你就可以設定在特定日期與時間時執行某個指令,或者每隔一段時間重複執行同一個指令(比方說,每小時一次)。在這個專題當中,你需要安排兩個時程:每天晚上八點時開燈,凌晨兩點則關燈。
注意
和其他關係到時間的程式相同,在開始執行之前,必須要確認Raspberry Pi上面的時間日期設定無誤。
要加入這些工作的時候,需要編輯cron表單(也就是一個指令列表,告訴Linux要在什麼時候執行哪些指令):
root@raspberrypi:/home/pi/#
crontab -e
這樣一來,系統會啟動文字編輯器,來修改root中的cron表單,以下這一步是要以root使用者輸入指令:
sudo su
打開檔案之後,你會看到一些關於cron表單修改的說明,請使用滑鼠的游標移動到檔案最下方,並在檔案下方加入兩行新的文字。
0 20 * * * /home/pi/on.sh 25
0 2 * * * /home/pi/off.sh 25
提示
Cron
會忽略任何「#」號開頭的指令行,所以如果你需要讓某一行指令暫時失去作用,又不想直接刪除這行指令,可以在該行最前面加上「#」。
輸入
Control-X
就會離開文字編輯器,再輸入
y
就可以存檔。然後,按下Enter鍵套用預設的檔名就行了。檔案存好之後,你會回到指令輸入介面,應該會出現:
installing new crontab
表示你剛才所做的修改會由
Cron
來執行。
這裡有關於Raspberry Pi的GPIO針腳詳盡的參考資源。
Adafruit:Raspberry Pi的MCP230xx GPIO擴充針腳
如果你覺得針腳數量不足,Adafruit提供了這個指南,讓你可以使用MCP23008這個晶片來擴充8支GPIO針腳,或者選用MCP23017晶片,來擴充16支GPIO針腳。
你可與史戴特討論關於下列議題:*食物*永續設計/綠設計*科學*小創客*運動體育
[原文]