# Raspberry Pi - Relay ## Relay | 繼電器 > 透過高低電壓來控制外部裝置是否接通電源 例如: 1. 透過繼電器控制插座是否通電  2. 透過繼電器控制抽水馬達(智慧農業之類)  - Sensor 連接方式 - 通常遇到 +、VCC 都是接在 5V (正極) - 通常遇到 -、GND 都是接在接 GND (負極) - 通常遇到 S、IN、OUT 都是接在 GPIO 橘色的 (訊號輸入輸出)   :::info 上面 `5VDC` 代表 S (訊號) 使用 5V DC(直流) 進行控制 / Raspberry Pi 的輸出全部都是 DC `10A250VAC` 可以控制最高電流為 10A 且最高電壓為 250V 使用交流電(AC)的設備 或也是可以控制 `15A125VAC` 設備最高電流 15A 最高電壓 125V 的交流電設備 當然直流(DC)電的也都可以控制 ::: ### NO / NC / COM  簡單來說 NO 或 NC 都會接到 COM,差別在於一個是平常就通(高電壓時中斷)與高電壓才通(平常中斷) - NO Normal Open (常開) - 平常與 COM 中斷 - 通電時與 COM 接通 - NC Normal Close (常關) - 平常保持與 COM 接通 - 通電時與 COM 中斷 - COM 共同接點 - 同一時間只會跟 NO 或 NC 其中之一接通 可能有些人會覺得 `常開` 就應該是常常開著電之類的,可以想成像是 `臼` 的樣子迴路是打開的(所以斷電),然後 `長閉` 就像是 `口` 的樣子迴路是關起來的(所以通電) ## Pi 的 GPIO - 灰色為 `GPIO.BOARD` 板子上的接腳編號 - 橘色 GPIO {數字} 為 `GPIO.BCM` 接腳的邏輯編號  ### 使用 Python 控制 由於 Raspbian 內建 Python2 / Python3 故以這個為例,可以用任何語言在 Raspbian 上寫,Java/C#/C++/C/Python/Golang 都沒問題。 1. 先把繼電器的 + 接到5V、- 接到 GND、S 接到 GPIO 4(灰色7) 2. 撰寫程式 (每 5 秒接通 `NO` 一次(持續3秒),會發出一個蠻大的聲音) ```python= import RPi.GPIO as GPIO import time # 設定使用 GPIO.BOARD (板子上灰色編號) GPIO.setmode(GPIO.BOARD) # 設定接腳 7 為輸出模式 GPIO.setup(7, GPIO.OUT) for i in range(5): GPIO.output(7, GPIO.HIGH) time.sleep(3) GPIO.output(7, GPIO.LOW) time.sleep(5) ``` :::info 繼電器可能會分為兩種模式 1. 高電壓觸發(高電壓才會控制磁鐵接通 `NO`) 2. 低電壓觸發(低電壓才會控制磁鐵接通 `NO`) ::: ### Bonus / 透過 Linux kernel sysfs 控制 #### 輸出控制 - 查看目前 gpio 控制檔案位置 (應該會有 export / unexport) ```shell= ls /sys/class/gpio ``` - 設定使用橘色的 GPIO4 ```shell= echo 4 > /sys/class/gpio/export ``` - 設定 GPIO4 為輸出模式 ```shell= echo out > /sys/class/gpio/gpio4/direction ``` - 設定 GPIO4 輸出高電壓 ```shell= echo 1 > /sys/class/gpio/gpio4/value ``` - 設定 GPIO4 輸出低電壓 ```shell= echo 0 > /sys/class/gpio/gpio4/value ``` #### 輸入控制 把上面輸出模式改為 in - 設定 GPIO4 為輸入模式 ```shell= echo in > /sys/class/gpio/gpio4/direction ``` - 讀取 GPIO4 數值 ```shell= cat /sys/class/gpio/gpio4/value ``` :::warning 記得最後不用要恢復成原本的樣子 ::: ## Reference - [繼電器 Wiki](https://zh.wikipedia.org/wiki/%E7%BB%A7%E7%94%B5%E5%99%A8) -
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up