正規のオンライン小売業者:
紹介
近年のIoTへの注目の高まりとともに、関連産業の急速な発展を駆動して、スマートホームという用語を見かけることが多くなっています。現在スマートホームにおける諸技術の中で、ホームセキュリティはもっとも注目を集めています。傾斜スイッチはホームセキュリティ技術中で重要なアラーム用センサーと言われます。水銀傾斜スイッチとボール傾斜スイッチはその中のよくある2種です。本文はSW520Dボール傾斜スイッチを使用して、外部環境の振動を検知して、LEDを制御します。
必要なパーツ
ラズパイ3 ボード x1
ブレッドボード x1
T拡張ボード x1
40-Pin ケーブルx1
抵抗200Ω x1
赤LED x1
SW520D傾斜スイッチ x1
ジャンプワイヤー x若干
作働原理
SW520Dはよくあるボール傾斜スイッチである、2つの導電性電極と2つの金属ボードの構造、電極と金属ボードは金属ケースにパッケージしていた。下記の写真をご参照:
SW520DモジュールとmicroPCBボードを溶接して、傾斜スイッチが作ります。回路はLM393(電圧コンパレータモジュール)の周りに構築しています。この傾斜スイッチは、SW520Dセンサー、増幅器、スタンダード3ピン・ヘッダ、ステータス指示LEDを含みます。
傾斜スイッチが直立すると、電極と金属ボード接触して、回路が接続します。回路が接続したら、D0から低電位を輸出して、ステータス指示LEDが点灯します。傾斜スイッチが続いて傾くになると、一旦チルト角がある値になったら、電極と金属ボードの接触が切断したら、回路も切断して、D0から高電位(5V)を輸出して、ステータス指示LEDが消灯します。下記の画像をご参照:
SW520D原理図
配線図
実物接続図
プログラム
C言語とPython言語はラズパイでよく使用のプログラミング言語です。C言語は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語です。英語圏では単に
C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがあります。Pythonは、汎用のプログラミング言語です。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴があります。この文章では、C言語とPython言語のプログラムを提供いたしますので、ご自由に使用して下さい。
1. C言語を使用の場合、下記の操作をご参照:
1) 下記のコマンドを入力して、経路/home/piに、「sw520d.c」と言うファイルを新規作成
cd ~
sudo nano sw520d.c
sudo:スーパーユーザ権限で作動。nano:UNIXを中心としたシステムで使われる、cursesを使ったテキストエディタの一種です。nanoの使い方は、コマンド欄にman nanoを入力して下さい。またはnano公式サイトへどうぞ!
2) コード
まず、ヘッダを書き込む、WiringPi.hはRaspberry PiのGPIOを制御するためのC言語ライブラリですが、他の言語、例えばPythonやPHPなどからもこのライブラリにアクセスできるようになっています。stdio.hは、C言語の標準ライブラリに関するヘッダファイルの一つです。printf、scanfなど大量の関数がstdio.hライブラリのサポートが必要です。
#include <wiringPi.h> #include <stdio.h>
次は、LEDとSW520Dモジュールが使用するのGPIOポートを指定する
#define LedPin 21 #define Sw520dPin 22
LEDがGPIO.21に指定、SW520DがGPIO.22に指定します。「ちょっと待って!回路図と違い?」回路図にLEDとPIN6を接続、SW520DとPIN5の接続していたのに、なぜここで21と22?ラズパイのGPIOポートはBCMとwPi2つのコーディング方法がありますので、BCMはBroadcom会社がラズパイポートに対してのコーディング方法です。wPiはwiringPi.hライブラリがラズパイポートに対してのコーディング方法です。回路図にBCMコーディング方法を使用し、このプログラムはC言語のため、wiringPiライブラリが必要のため、wPiコーディング方法を使用します。コマンド欄にgpio readallを入力したら、BCMとwPiの対照が見えます。
// When initialize wiring failed, print messageto screen if(wiringPiSetup() == -1){ printf("setup wiringPi failed !"); return 1; } pinMode(LedPin, OUTPUT); pinMode(Sw520dPin,INPUT);
LedPinはOUTPUTモードに指定します。Sw520dPinは輸入モードに指定します。
printf("\n"); printf("\n"); printf("========================================\n"); printf("| LED alarm |\n"); printf("| ------------------------------ |\n"); printf("| If SW520D tilt |\n"); printf("| |\n"); printf("| LED will Blink |\n"); printf("| |\n"); printf("| OSOYOO|\n"); printf("========================================"); printf("\n"); printf("\n"); while(1){ if(!(digitalRead(Sw520dPin))){ // LED off digitalWrite(LedPin, HIGH); printf("\n"); printf("-------------------|\n"); printf("| Not tilt... |\n"); printf("-------------------|\n"); delay(1000); } else{ // LED blink digitalWrite(LedPin, LOW); delay(500); digitalWrite(LedPin,HIGH); delay(500); printf("\n"); printf("===================|\n"); printf("| tilting! |\n"); printf("===================|\n"); } }
上記のコードを注釈:
まず、スクリーンで情報を表示する、続いてwhileループを開始して、Sw520dPinの電位信号を読み取れ、もしSw520dPinから低電位信号が獲得したら(SW520Dが直立姿勢)、スクリーンに”Not tilt…”と表示する、LED灯も消灯の状態です。もしSw520dPinから高電位信号が獲得したら(SW520Dが傾い姿勢)、スクリーンに”tilting!”を表示、LEDも500ミリ秒1回に点滅します。コードを編集完了したら、キーボードのctrlとXボーダーを押して、Yを入力して、Enterボーダーを押して、sw520d.cファイルを保存します。サンプルコードはここ!
3) プログラムをコンパイルする
C言語は高級言語のため、作動前にコンパイルの必要です。下記のコマンドを作動して下さい:
gcc -Wall -o sw520d sw520d.c -lwiringPi
-Wall:コンパイルする時、より詳細なエラ情報を表示する
-o:コンパイルした後のプログラム名を指定する、任意です。ここには「sw520d」を指定しました。
sw520d.c:コンパイル必要なソースファイル
-lwiringPi:コンパイル必要なライブラリ ファイル
4) プログラムを作動
コンパイル完了したら、コマンド欄に下記のコマンドを入力、作動して下さい:sudo ./sw520d
5)結果確認
プログラムを作動したら、スクリーンに情報を表示します。続いてSw520dPinからの電位信号を読み取れ、SW520Dが直立姿勢になったら、低電位信号が獲得して、スクリーンに”Not tilt…”と表示する、LED灯も消灯の状態です。もしSW520Dが傾い姿勢になったら、Sw520dPinから高電位信号が獲得して、スクリーンに”tilting!”を表示、LEDも500ミリ秒1回に点滅します。
2. Python言語を使用の場合、次の内容をご参照:
ここでは、sshを通じで、Piと接続している時、Pythonコードの編集方法をご紹介します:
1)下記のコマンドを入力、作動して、/home/piフォルダに「sw520d.py」ファイルを新規作成作成して下さい。
cd ~
sudo nano sw520d.py
2) プログラム
import RPi.GPIO as GPIO import time
スクリプト必要なRPi.GPIOとtimeモジュールを導入。RPi.GPIOは、Raspbianに標準でインストールされている Python ライブラリです。RPi.GPIO を利用すると、Raspberry Pi のGPIOピン (GPIO : General Purpose Input/Output : 汎用入出力)を簡単に操作することができます。timeは、時間関連の情報や関数を集めたライブラリです。遅延関数の取得はこのライブラリが必要です。
# set #5 as LED pin LedPin = 5 # set #6 as SW520D Pin Sw520dPin = 6
LEDとSW520Dモジュールが使用するのGPIOポートを指定する、BCMコーディング方法使用のため、回路図のPIN番号と一緒です。コマンド欄にgpio readallを作動したら、GPIO対照が見えます。
#print message at the begining ---custom function def print_message(): print ('==================================') print ('| LED Alarm |') print ('| ---------------- |') print ('| If SW520D Tilt |') print ('| |') print ('| LED Will Blink |') print ('| ---------------- |') print ('| |') print ('| OSOYOO|') print ('==================================\n') print ('Program is running...') print ('Please press Ctrl+C to end the program...')
print_message()はカスタム関数です。終端に情報を表示するの機能がありますね。この関数の説明はこちら~ どうぞ!
#setup function for some setup---custom function def setup(): GPIO.setwarnings(False) #set the gpio modes to BCM numbering GPIO.setmode(GPIO.BCM) #set LedPin's mode to output,and initial level to HIGH(3.3V) GPIO.setup(LedPin,GPIO.OUT,initial=GPIO.HIGH) GPIO.setup(Sw520dPin,GPIO.IN)
GPIO.setmode(GPIO.BCM)関数はGPIOポートをBCM方式に指定しました。GPIO.setup(LedPin,GPIO.OUT,initial=GPIO.HIGH)関数はLedPinを輸出モード、初期値は高電位として、指定しました。GPIO.setup(Sw520dPin,GPIO.IN)関数はSw520dを輸入モードに設定しました。
#main function def main(): #print info print_message() while True: #read Sw520dPin's level if(GPIO.input(Sw520dPin)): GPIO.output(LedPin,GPIO.LOW) time.sleep(0.5) GPIO.output(LedPin,GPIO.HIGH) time.sleep(0.5) print ('********************') print ('* tilting! *') print ('********************') print ('\n') else: GPIO.output(LedPin,GPIO.HIGH) print ('====================') print ('= Not tilt... =') print ('====================') print ('\n') time.sleep(1)
メイン関数main()はまず、print_message()関数を獲得し、terminalに情報をプリントして、続いてwhileループを開始して、Sw520dPinの電位信号を読み取れ、もしSw520dPinから高電位信号が獲得したら(SW520Dが傾い姿勢)、スクリーンに”tilting!”を表示、LEDも500ミリ秒1回に点滅します。もしSw520dPinから低電位信号が獲得したら(SW520Dが直立姿勢)、LedPINのポートを高電位に制御して、スクリーンに”Not tilt…”と表示する、LED灯も消灯の状態です。
書き込み完了したら、キーボードのctrlと Xボーダーを押して、Yを入力したら、Enterボーダーを押して、sw520d.pyファイルを保存します。サンプルコードはこちら~
4) プログラムを作動する
python言語はスクリプト言語のため、直接に作動できます。コマンド欄に:sudo ./sw520d.pyを入力したら、作動できます。
5)結果の確認
プログラムが作動したら、terminalに情報をプリントして、続いてwhileループを開始して、Sw520dPinの電位信号を読み取れます。もしSw520dPinが直立の状態でしたら、Sw520dPinから低電位信号が獲得し、スクリーンに”Not tilt…”と表示する、LED灯も消灯の状態です。SW520Dが傾くになると、SW520Dから高電位信号が獲得し、スクリーンに”tilting!”を表示、LEDも500ミリ秒1回に点滅します。
DownLoad Url osoyoo.com