正規のオンライン小売業者:
![]() |
![]() |
![]() |
このレッスンでは、Raspberry Piを使用してリレーを制御し、LEDをオン/オフする方法を学びます。
1 * Raspberry Pi
1 * ブレッドボード
1 * リレー 1 * LED
1 * 抵抗器(200Ω)
数本のジャンパーワイヤー
getting started for raspberry piをご覧ください。
動作原理
リレーは、低電力のデジタル信号を使用して高電力回路をオン/オフする電子スイッチです。リレーには、少なくとも1つの入力ピンと1つの出力ピン(出力スイッチ)のペアがあります。入力がデジタル信号1(高電圧)を取得すると、リレーは出力スイッチをオンにします。入力ピンが0の場合、出力スイッチはオフになります。
リレーの構造と動作は、以下の図から理解できます。



以下の接続グラフに従って回路を組み立てます。リレーの出力をLEDに、リレーの信号線をRaspberry Pi GPIO 0(BCM_GPIO 17)に接続します。リレーに高電圧が印加されると、LEDが点灯します。リレーに低電圧(0V)が印加されると、LEDが消灯します。
C言語のユーザーとPython言語のユーザー向けに、2種類のコードを提供します。
まず、wiringPiライブラリがインストールされていることを確認してください。インストール方法がわからない場合は、Raspberry Pi Starter Kit Lesson 1——Get Started with Raspberry Piを参照してください。
Step 1)次のコマンドを入力して、osoyoo.comからサンプルコードrelay_with_led.cをダウンロードしてください。
cd ~
sudo wget http://osoyoo.com/driver/pi3_start_learning_kit_lesson_9/relay_with_led.c
サンプルコードファイルをカスタマイズしたい場合は、nanoエディタを使用して以下のコマンドを入力してソースコードを編集できます。
sudo nano relay_with_led.c
Step 2) コードをコンパイルする
C言語は高水準言語です。プロジェクトを実行する前に、ソースコードを実行可能ファイルとしてコンパイルする必要があります。次のコマンドを入力して、relay_with_led.cファイルをコンパイルしてください。
gcc -Wall -o relay_with_led relay_with_led.c -lwiringPi
gcc: はGNUコンパイラコレクションです。自分でCコードを書いてコンパイルして実行するには、gccをマスターする必要があります。gccについての詳細はこちらをご覧ください here
-Wall: コードをコンパイルするときにエラーが発生した場合、詳細なエラーを取得するためのものです。
-o: コンパイル後のファイル名を任意で指定できます。ここでは、flow_ledという名前を指定します。
flow_led.c: コンパイル元のファイルを意味します。
-lwiringPi: ライブラリwiringPiをロードするためのもので、lはlibrary(ライブラリ)の略です。
Step 3)プログラムを実行する
sudo ./relay_with_led
Step 4) テスト結果
プログラムを実行すると、リレーはチックタック音を鳴らします。さらに、LEDが点滅するのが見えるはずです。
C言語のコード分析
#include < wiringPi.h >
#includeM < stdio.h >
#include < stdlib.h >
#define RelayPin 0
int main(void){
if(wiringPiSetup() == -1){ //when initialize wiring failed, print messageto screen
printf("setup wiringPi failed !");
exit(1);
}
pinMode(RelayPin, OUTPUT); //set GPIO0 output
printf("\n");
printf("|**************************************|\n");
printf("| Relay |\n");
printf("| ------------------------------ |\n");
printf("| GPIO0 connect to relay's control pin |\n");
printf("| led connect to relay's NormalOpen pin|\n");
printf("| 5v connect to relay's COM pin |\n");
printf("| |\n");
printf("| Make relay to control a led |\n");
printf("| |\n");
printf("| OSOYOO|\n");
printf("|**************************************|\n");
printf("\n");
for(;;){
// disconnect
printf("|********************|\n");
printf("| ...Relay Close |\n");
printf("|********************|\n");
digitalWrite(RelayPin, LOW);
delay(1000);
// connect
printf("|********************|\n");
printf("| Relay Open... |\n");
printf("|********************|\n");
digitalWrite(RelayPin, HIGH);
delay(1000);
}
return 0;
}
Raspberry PiがHDMIケーブルを介してモニターに接続されている場合、Python 3(IDLE)GUI環境で直接プログラムを実行できます。詳細については、次をご覧ください。
Raspberry Piがモニターに接続されていない場合は、コマンドラインを使用してsshクライアントを介してリモートアクセスすることができます。詳細については、次をご覧ください。
Step 1) ターミナルで次のコマンドを入力して、relay_with_led.pyファイルをダウンロードします。
cd ~
sudo wget http://osoyoo.com/driver/pi3_start_learning_kit_lesson_9/relay_with_led.py
サンプルコードファイルをカスタマイズしたい場合は、nanoエディタを使用して以下のコマンドを入力してソースコードを編集できます。
sudo nano relay_with_led.py
Step 2) プログラムを実行する
sudo python ./relay_with_led.py
Step 3) テスト結果
プログラムを実行すると、リレーはチックタック音を鳴らします。さらに、LEDが点滅するのが見えるはずです。
Python言語のコード分析
import RPi.GPIO as GPIO
import time
# set BCM_GPIO 17 as relay pin
RelayPin = 17
#print message at the begining ---custom function
def print_message():
print ('|**********************************************|')
print ('| Relay |')
print ('| ----------------------------------- |')
print ('| GPIO0 connect to relay control pin |')
print ('| led connect to relay NormalOpen pin |')
print ('| 5V connect to relay COM pin |')
print ('| Make relay to control a led |')
print ('| ----------------------------------- |')
print ('| |')
print ('| OSOYOO|')
print ('|**********************************************|\n')
print ('Program is running...')
print ('Please press Ctrl+C to end the program...')
print ('\n')
#setup function for some setup---custom function
def setup():
GPIO.setwarnings(False)
#set the gpio modes to BCM numbering
GPIO.setmode(GPIO.BCM)
#set RelayPin's mode to output,and initial level to LOW(0V)
GPIO.setup(RelayPin,GPIO.OUT,initial=GPIO.LOW)
#main function
def main():
#print info
print_message()
while True:
print ('|******************|')
print ('| ...Relay close |')
print ('|******************|\n')
#disconnect
GPIO.output(RelayPin,GPIO.LOW)
time.sleep(1)
print ('|*****************|')
print ('| Relay open... |')
print ('|*****************|\n')
print ('')
#connect
GPIO.output(RelayPin,GPIO.HIGH)
time.sleep(1)
#define a destroy function for clean up everything after the script finished
def destroy():
#turn off relay
GPIO.output(RelayPin,GPIO.LOW)
#release resource
GPIO.cleanup()
#
# if run this script directly ,do:
if __name__ == '__main__':
setup()
try:
main()
#when 'Ctrl+C' is pressed,child program destroy() will be executed.
except KeyboardInterrupt:
destroy()
DownLoad Url osoyoo.com