正規のオンライン小売業者:
このレッスンでは、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