説明
ラズパイとモーションセンサー、ブザーを使って、簡易セキュリティー・アラームを作ります。ラズパイは固定期間にモーションセンサーからの高、低電位信号を検査して、人が近づいてくるとブザーが鳴ります。
必要なパーツ
Pi3ボード x1
|
|
モーションセンサー x1
|
|
5V ブザー x1
|
|
ジャンプワイヤー x若干
|
配線図
線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。Raspberry PiのGPIOピンの概要はこちら~ブザーのPIN番号が異なる可能性も御座いますので、実物を対照して、配線してくださいませ。ブザーが低電位信号で作動します。
モーションセンサー回路図
モーションセンサー インタフェースのレイアウト
2つのつまみが遅延時間と感度の調整ができます:
ソフトウエア
1)nanoエディターを使って、下記のコマンドを作動して、/home/piにmotionsensor-test.pyファイルを新規作成します。
sudo nano motionsensor-test.py
2)motionsensor-test.pyに下記の内容をコーピーして下さい:
import RPi.GPIO as GPIO import time M_pin = 18 #select the pin for motionsensor B_pin = 26 #select the pin for buzzer def init(): GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(M_pin,GPIO.IN) GPIO.setup(B_pin,GPIO.OUT) pass def buzzer(): while GPIO.input(M_pin): GPIO.output(B_pin,GPIO.LOW) time.sleep(0.5) GPIO.output(B_pin,GPIO.HIGH) time.sleep(0.5) def detct(): for i in range(101): if GPIO.input(M_pin): print "Someone is closing!" buzzer() else: GPIO.output(B_pin,GPIO.HIGH) print "Nobody!" time.sleep(2) time.sleep(5) init() detct() GPIO.cleanup()
或いは、下記のコマンドを作動して、弊社編集済みのmq-5.pyを直接にダウンロードできます。
sudo sudo wget --no-check-certificate http://osoyoo.com/driver/motionsensor-test.py
3)プログラムを作動する
sudo python ./motionsensor-test.py
人が近づいてくると、ターミナルに「Someone is closing!」と表示し、ブザーがなります。
概要
本文では、ラズパイ3、電圧検出センサーとMCP3008 A/Dコンバータを使って、電圧計を制作して、電圧値をターミナルにプリントします。
必要なパーツ
Pi3ボード x1
|
|
![]() |
電圧検出センサー x1 |
MCP3008 A/Dコンバータ x1 | |
ブレッドボード x1 | |
ジャンプワイヤー(オス~オス)x若干 | |
ジャンプワイヤー(オス~メス)x若干 |
ハードウェア
このモジュールは抵抗分圧の原理に基づいて、デザインしました。輸入したの電圧値を5倍に下げて、輸出しできます。ラズパイGPIOの工作電圧は普段3.3Vのため、電圧検知モジュールへの輸入電圧はできるだけ、16.5V(3.3Vx5倍)以下にして下さい。出力インタフェース:”+”は3.3vに接続し、”-“は GNDに接続し、”s”はMCP3008 A/DコンバータのAD入力PINに接続します。
DC入力インタフェース:正極とVCC、負極とGND、下記の画像をご参照:
ラズパイはデジタル信号しか処理しできませんので、今回は電圧検知センサーからの電圧信号(アナログ信号)を処理するため、A/Dコンバータも必要です。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。
ソフトウエア
下記の操作は、ラズパイとスクリーンを接続しても、SSHを通じでラズパイと接続しても、操作できます。
1)プログラム
nanoエディタを使用して、下記のコマンドを作動して、/home/piに一个voltage.pyと言うファイルを新規作成します。
sudo nano voltage.py
ファイルにコードをコーピーして、キーボードの CtrlとXボーダーを押して、Yを入力して、ファイルを保存します。
或いは、下記のコマンドを作動して、弊社編集済みのvoltage.pyを直接にダウンロードできます。
sudo wget --no-check-certificate http://osoyoo.com/driver/voltage.py
2)下記のコマンドを作動して、pythonプログラムを作動する
sudo python ./voltage.py
3)結果
電圧検出センサーのDC入力端子と16.5V以下の電源アダプターを接続したら、検測したの電圧値がターミナルに表示します。例えば、電圧検出センサーのDC入力端子と3.3V電源アダプターを接続の場合、ターミナルに3.29Vぐらいの数値を表示します。A/Dコンバータで転換したの信号のため、少し誤差があるはずです。
概要
本プロジェクトでは火炎検知センサーとラズパイ3ボードを使って、火炎検知装備を作ります。火炎検知センサーは火炎と波長760nm~1100nmの光が敏感します。アナログ信号とデジタル信号2重輸出できます、火炎が検出したら、デジタルOUTPUT(DO)から高電位信号を輸出して、アナログOUTPUT(AO)から電圧値を輸出します。火炎のサイズが大きくなると輸出したの電圧値も大きくなります。モジュールに可変抵抗がありますので、センサーの感度が調整しできます。
必要なパーツ
Pi3ボード x1
|
|
火炎検知センサーx1 | |
MCP3008 A/Dコンバータx1 | |
ブレッドボードx1 | |
ジャンプワイヤー(オス~オス)x若干 | |
ジャンプワイヤー(オス~メス)x若干 |
ハードウェア
火炎検知センサーは火火炎と波長760nm~1100nmの光が検出しできます。点火しているライターを使用の場合、80CMの範囲内は検出しできます。検出の角度は60度となります。火炎のサイズが大きくなると、検出できる距離も拡大できます。モジュールに可変抵抗がありますので、センサーの感度が調整しできます。工作電圧は3.3V~5Vですので、本文では3.3Vでセンサーに給電します。
配線図
線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。Raspberry PiのGPIOピンの概要はこちら~
ソフトウエア
下記の操作は、ラズパイとスクリーンを接続しても、SSHを通じでラズパイと接続しても、操作できます。
1)プログラム
nanoエディタを使用して、下記のコマンドを作動して、/home/piにflame.pyと言うファイルを新規作成します。
sudo nano flame.py
ファイルにをコードをコーピーして、キーボードのCtrlとXボーダーを押して、Yを入力して、ファイルを保存します。
或いは、下記のコマンドを作動して、弊社編集済みのflame.pyを直接にダウンロードできます。
sudo wget --no-check-certificate http://osoyoo.com/driver/flame.py
2)下記のコマンドを作動して、pythonプログラムを作動する
sudo python ./flame.py
3)結果
点火したのライターがモジュールに近づいてくると、火炎が検出したら、モジュールでの指示ランプが点灯し、ターミナルにFire!と表示します。火炎が検出しない時、指示ランプ消灯して、ターミナルにSafe!と表示します。もし、点火したのライターがモジュールに近づいてくるても何も変化しないの場合、モジュールでの可変抵抗を調整して、確認して下さい。
概要
本プロジェクトではMQ-7一酸化炭素センサーとラズパイ3ボードを使って、周囲環境の一酸化炭素濃度検測装備を作ります。SnO2系センサーですので、一酸化炭素濃度の変化に応じてSnO2の抵抗値が変化します。周囲環境での一酸化炭素濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を輸出しできます。MQ-7は、一酸化炭素に敏感と言われます。様々な場合に採用できる、コストパフォーマンス高いのセンサーと言われます。
必要なパーツ
Pi3ボード x1
|
|
MQ-7モジュール x1 | |
MCP3008 A/Dコンバータ x1 | |
ブレッドボード x1 | |
ジャンプワイヤー(オス~オス)x若干 | |
ジャンプワイヤー(オス~メス)x若干 |
ハードウェア
ラズパイはデジタル信号しか処理しできませんので、今回は一酸化炭素センサーからの電圧信号(アナログ信号)を処理するため、A/Dコンバータも必要です。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。周囲環境での一酸化炭素濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を電圧値に変更して、輸出しできます。電圧値より、周囲環境の一酸化炭素濃度を判断できます。
MQ-7モジュールの工作電圧は5Vになります、MQ-7モジュールはアナログ信号とデジタル信号2重輸出できますので、本プロジェクトに、アナログOUTPUT(AO)とデジタルOUTPUT(DO)両方と使用します。一酸化炭素検出したら、指示ランプが点灯、DOpinから低電位信号を輸出する、モジュールに可変抵抗がありますので、センサーの感度が調整しできます。
配線図
線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。Raspberry PiのGPIOピンの概要はこちら~
ソフトウエア
下記の操作は、ラズパイとスクリーンを接続しても、SSHを通じでラズパイと接続しても、操作できます。
1)プログラム
nanoエディタを使用して、下記のコマンドを作動して、/home/piにmq-7.pyと言うファイルを新規作成します。
sudo nano mq-7.py
ファイルにをコードをコーピーして、キーボードのCtrlとXボーダーを押して、Yを入力して、ファイルを保存します。
或いは、下記のコマンドを作動して、弊社編集済みのmq-7.pyを直接にダウンロードできます。
sudo wget --no-check-certificate http://osoyoo.com/driver/mq-7.py
2)下記のコマンドを作動して、pythonプログラムを作動する
sudo python ./mq-7.py
3)結果
まず、mq-7モジュールは20秒の予熱が必要、ガスライターを点火したら、モジュールに近づいてくると、ターミナルに”CO is detected”を表示し、電圧値も表示し、指示ランプも点灯します。もし、点火したのライターがモジュールのそばに置いても何も変化しないの場合、モジュールでの可変抵抗を調整して、確認して下さい。
概要
MQ-2可燃ガス/煙センサーを使って、ラズパイに煙、ガスを検出装備をデザインします。SnO2系煙センサーですので、ガス濃度の変化に応じてSnO2の抵抗値が変化します。周囲環境でのガス濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を輸出しできます。MQ-2は、液化石油ガス、プロパン、水素などに敏感です。
必要なパーツ
本项目将用到如下器件
Pi3ボード x1
|
|
MQ-2モジュール x1 | |
MCP3008 A/Dコンバータ x1 | |
ブレッドボード x1 | |
ジャンプワイヤー(オス~オス) x若干 | |
ジャンプワイヤー(オス~メス) x若干 |
ハードウェア
ラズパイはデジタル信号しか処理しできませんので、今回はガス検知センサーからの電圧信号(アナログ信号)を処理するため、A/Dコンバータも必要です。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。電圧値より、ガスがあるか無いか判断します。
MQ-2モジュールの工作電圧は2.5~5Vになります、本プロジェクトでは3.3Vを給電します。MQ-2モジュールはアナログ信号とデジタル信号2重輸出できますので、本プロジェクトに、アナログOUTPUT(AO)とデジタルOUTPUT(DO)両方と使用します。ガス検出したら、指示ランプが点灯、DOpinから低電位信号を輸出する、モジュールに可変抵抗がありますので、センサーの感度が調整しできます。
配線図
線路違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。模块的上的GND接Pi上的0V; Raspberry PiのGPIOピンの概要はこちら~
ソフトウエア
下記の操作は、ラズパイとスクリーンを接続しても、SSHを通じでラズパイと接続しても、操作できます。
1)プログラム
nanoエディタを使用して、下記のコマンドを作動して、/home/piにmq-2.pyと言うファイルを新規作成します。
sudo nano mq-2.py
ファイルにをコードをコーピーして、キーボードのCtrlとXボーダーを押して、Yを入力して、ファイルを保存します。
或いは、下記のコマンドを作動して、弊社編集済みのmq-2.pyを直接にダウンロードできます。
sudo wget --no-check-certificate http://osoyoo.com/driver/mq-2.py
2)下記のコマンドを作動して、pythonプログラムを作動する
sudo python ./mq-2.py
3)結果
まず、mq-2モジュールは20秒の予熱が必要、预热20s左右,ガスライターを使って、モジュールに少しガスを释放したら、ターミナルに”Gas lealage”を表示し、電圧値も表示し、指示ランプも点灯します。もし、モジュールにガスを释放しても、何も変化しないの場合、モジュールでの可変抵抗を調整して、確認して下さい。
概要
本プロジェクトではMQ-5ガスセンサーとラズパイ3ボードを使って、可燃性ガス検出器を作ります。キッチンに置いて、ガス漏れ状況を続いて観測できます。MQ-5可燃ガス/煙センサーを使って、ラズパイに煙、ガスを検出装備をデザインします。SnO2系煙センサーですので、ガス濃度の変化に応じてSnO2の抵抗値が変化します。周囲環境でのガス濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を輸出しできます。MQ-5は、
ブタン、プロパン、メタンなどに敏感と言われます。代表として天然ガスの多種の可燃ガスが検出できるので、様々な環境に採用できる、コストパフォーマンス高いのセンサーと言われます。
必要なパーツ
Pi3ボード x1
|
|
MQ-5モジュール x1 | |
MCP3008 A/Dコンバータ x1 | |
ブレッドボード x1 | |
ジャンプワイヤー(オス~オス) x若干 | |
ジャンプワイヤー(オス~メス) x若干 |
ハードウェア
ラズパイはデジタル信号しか処理しできませんので、今回はガス検知センサーからの電圧信号(アナログ信号)を処理するため、A/Dコンバータも必要です。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。周囲環境でのガス濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を電圧値に変更して、輸出しできます。電圧値より、ガスがあるか無いか判断しできます。
MQ-5モジュールの工作電圧は5Vになります、MQ-5モジュールはアナログ信号とデジタル信号2重輸出できますので、本プロジェクトに、アナログOUTPUT(AO)とデジタルOUTPUT(DO)両方と使用します。ガス検出したら、指示ランプが点灯、DOpinから低電位信号を輸出する、モジュールに可変抵抗がありますので、センサーの感度が調整しできます。
配線図
線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。Raspberry PiのGPIOピンの概要はこちら~
ソフトウエア
下記の操作は、ラズパイとスクリーンを接続しても、SSHを通じでラズパイと接続しても、操作できます。
1)プログラム
nanoエディタを使用して、下記のコマンドを作動して、/home/piにmq-5.pyと言うファイルを新規作成します。
sudo nano mq-5.py
ファイルにをコードをコーピーして、キーボードのCtrlとXボーダーを押して、Yを入力して、ファイルを保存します。
或いは、下記のコマンドを作動して、弊社編集済みのmq-5.pyを直接にダウンロードできます。
sudo wget --no-check-certificate http://osoyoo.com/driver/mq-5.py
2)下記のコマンドを作動して、pythonプログラムを作動する
sudo python ./mq-5.py
3)結果
まず、mq-5モジュールは60秒の予熱が必要、预热20s左右,ガスライターを使って、モジュールに少しガスを释放したら、ターミナルに”Gas lealage”を表示し、電圧値も表示し、指示ランプも点灯します。もし、モジュールにガスを释放しても、何も変化しないの場合、モジュールでの可変抵抗を調整して、確認して下さい。
概要
ハードウェア
ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータであり、デジタル信号の輸入、輸出が簡単に実現できます。ラズパイはアナログ信号(電圧信号)を直接に認識されないため、アナログ信号(温度センサー、可変抵抗器など)を使用の場合、A/Dコンバータが必要し、アナログ信号をデジタル信号に変更したら、ラズパイに輸入します。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。
水位センサーは簡単、使いやすく、高いコストパフォーマンスなセンサーモジュールであり、数列露出していた導線を並べていて、水が導線の表面にぬれましたら、水面の高さが測定できます。工作電圧は3V~5Vですので、本文では3.3Vでセンサーに給電します。
配線図
線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。Raspberry PiのGPIOピンの概要はこちら~
ソフトウエア
下記の操作は、ラズパイとスクリーンを接続しても、SSHを通じでラズパイと接続しても、操作できます。
1)プログラム
nanoエディタを使用して、下記のコマンドを作動して、/home/piにwaterlevel.pyと言うファイルを新規作成します。
sudo nano waterlevel.py
ファイルにをコードをコーピーして、キーボードのCtrlとXボーダーを押して、Yを入力して、ファイルを保存します。
或いは、下記のコマンドを作動して、弊社編集済みのwaterlevel.pyを直接にダウンロードできます。
sudo wget --no-check-certificate http://osoyoo.com/driver/waterlevel.py
2)下記のコマンドを作動して、pythonプログラムを作動する
sudo python ./waterlevel.py
3)テスト
水位センサーの導線部が水面から水中にゆっくり差し込んで、水中により深いと、ターミナルに表面される数値も大きくなります。水位センサーが乾燥の場所に置いてしたら、数値が0になります。
説明
本文では、ラズパイとDHT11温湿度センサーを使って、周囲環境の温湿度データを獲得します。DHT11は湿度測定、温度測定、通信機能を搭載した温度湿度センサです。 また、出力値は校正済みで無調整で使用することが可能です。センサの構成は温度測定にはNTCサーミスタ、湿度測定に高分子膜湿度センサが使用さ れております。このセンサは相対湿度の変化に応じて高分子膜に含まれる水分の量が変化 し、これにより誘電率が変化することから相対湿度を測定します。DHT11はこれらのセン サを専用ASICにてデジタル変換を行い1線式シリアル信号を出力します。ユーザーはマイ コンなどで、出力データを読み取るだけで簡単に湿度と温度の測定が可能です。従来の高分子膜湿度センサと違い、駆動に必要な外部回路の設計及び回路実装、校正か ら開放されます。測定に必要な回路が全て内蔵され、小スペース実装する事が可能です。 データ出力はオープンドレイン出力のため、20メートルまで伸ばす事が可能です。
DHT11タイミング ダイヤグラム
1)DATAフレーム
DTH11はスタート信号を出力し続いて40ビット(5バイト)構成の同期クロックが含まれたシリアルデータを出力します。データ出力時間は、おお よそ4m/Sです。サンプリング周期は1秒以上で、それより短い間隔でデータ要求しても、 データが出ない場合があります
。第1、2バイトは温度値として、第3、4バイトは湿度値として、表示します。最後の1バイトはチェックサムとして、使用しますので、データが問題ない場合、第1、2バイトと第3、4バイトの合計は第5バイトになります。
2)ハンドシェイク
センサは、データ転送の準備ができると、データ線を 80μ秒の間「L」にし、続いて80μ秒の間「H」にします。 この後、センサは40ビットのデータを送ってきます。
3)データビットの転送
センサは、データ転送開始の合図のあと、40ビット (8ビット×5バイト)のデータを送ってきます。データは、上位ビットを先に送信します。各データ ビットは、データビットの開始を示す50μ秒の「L」の あと、「0」のデータなら26~28μ秒の「H」、「1」の データなら70μ秒の「H」が送信されます。
40ビットのデータを送り終わると、センサはデータ 転送完了の合図として、50μ秒の「L」を送ってきます。
データ ‘0’:
データ ‘1’:
必要なパーツ
Pi3ボード x1
|
|
DS18B20 x1
|
|
ジャンプワイヤー x3
|
ハードウェア
DHT11のVCCとラズパイの3.3V、DHT11のGNDとラズパイのGND、DHT11のDATAとラズパイのGPIO14(BCM)を接続して下さい。 Raspberry PiのGPIOピンの基礎知識はこちら~
ソフトウエア
Python言語とC言語2種の言語のプログラム編集方法を紹介します。
1)Python言語
nanoエディターを使って、dht11-test.pyと言うファイルを新規作成します。
sudo nano dht11-test.py
dht11-test.pyファイルに下記の内容をコーピーして下さい:
# _____ _____ _____ __ __ _____ _____ #| | __| | | | | | #| | |__ | | |_ _| | | | | #|_____|_____|_____| |_| |_____|_____| # # Use Raspberry Pi to get temperature/humidity from DHT11 sensor # import time import dht11 import RPi.GPIO as GPIO #define GPIO 14 as DHT11 data pin Temp_sensor=14 def main(): # Main program block GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbers # Initialise display # lcd_init() instance = dht11.DHT11(pin = Temp_sensor) while True: #get DHT11 sensor value result = instance.read() print"Temperature = ",result.temperature,"C"," Humidity = ",result.humidity,"%" time.sleep(1) if __name__ == '__main__': try: main() except KeyboardInterrupt: pass # finally: # lcd_byte(0x01, LCD_CMD)
Pythonコードを作動のため、dht11.pyと言うファイルも必要です。下記のコマンドを動作して、dht11.pyファイルをダウンロードして下さい。必ずdht11-test.pyとdht11.pyを同じパスに置いて下さい。
sudo sudo wget --no-check-certificate http://osoyoo.com/driver/dht11.py
下記のコマンドを動作して、Pythonプログラムを作動する
sudo python ./dht11-test.p
上記のコマンドを実行したら、温湿度データがターミナルに表示します。時々0と出ったん、何故?ラズパイはDHT11の信号を読み取れる時、マイクロ秒のリアルタイム・タイミングが必要ですが、ラズパイでのOS、Raspbianはリアルタイムシステムではないので、正しくチェックできない時は、データが紛失しました。
2)C言語
A.ラズパイでC言語を使用の場合、GPIOライブラリのインストールが必要です,下記のコマンドを動作して、インストールできます:
sudo git clone git://git.drogon.net/wiringPi
sudo cd wiringPi
sudo ./build
B.下記のコマンドを動作して、nanoエディターを使用して、dht11-test.cファイルを新規作成します。
sudo nano dht11-test.c
dht11-test.cファイルに下記の内容をコーピーして下さい。
/* * dht11.c: * Simple test program to test the wiringPi functions * DHT11 test */ #include <wiringPi.h> #include <stdio.h> #include <stdlib.h> #include <stdint.h> #define MAXTIMINGS 85 #define DHTPIN 15 int dht11_dat[5] = { 0, 0, 0, 0, 0 }; void read_dht11_dat() { uint8_t laststate = HIGH; uint8_t counter = 0; uint8_t j = 0, i; float f; /* fahrenheit */ dht11_dat[0] = dht11_dat[1] = dht11_dat[2] = dht11_dat[3] = dht11_dat[4] = 0; /* pull pin down for 18 milliseconds */ pinMode( DHTPIN, OUTPUT ); digitalWrite( DHTPIN, LOW ); delay( 18 ); /* then pull it up for 40 microseconds */ digitalWrite( DHTPIN, HIGH ); delayMicroseconds( 40 ); /* prepare to read the pin */ pinMode( DHTPIN, INPUT ); /* detect change and read data */ for ( i = 0; i < MAXTIMINGS; i++ ) { counter = 0; while ( digitalRead( DHTPIN ) == laststate ) { counter++; delayMicroseconds( 1 ); if ( counter == 255 ) { break; } } laststate = digitalRead( DHTPIN ); if ( counter == 255 ) break; /* ignore first 3 transitions */ if ( (i >= 4) && (i % 2 == 0) ) { /* shove each bit into the storage bytes */ dht11_dat[j / 8] <<= 1; if ( counter > 16 ) dht11_dat[j / 8] |= 1; j++; } } /* * check we read 40 bits (8bit x 5 ) + verify checksum in the last byte * print it out if data is good */ if ( (j >= 40) && (dht11_dat[4] == ( (dht11_dat[0] + dht11_dat[1] + dht11_dat[2] + dht11_dat[3]) & 0xFF) ) ) { f = dht11_dat[2] * 9. / 5. + 32; printf( "Humidity = %d.%d %% Temperature = %d.%d *C (%.1f *F)\n", dht11_dat[0], dht11_dat[1], dht11_dat[2], dht11_dat[3], f ); }else { printf( "Data not good, skip\n" ); } } int main( void ) { printf( "Raspberry Pi wiringPi DHT11 Temperature test program\n" ); if ( wiringPiSetup() == -1 ) exit( 1 ); while ( 1 ) { read_dht11_dat(); delay( 1000 ); /* wait 1sec to refresh */ } return(0); }
C.下記のコマンドを作動して、プログラムをコンパイルして、プログラムを動作して下さい。
sudo gcc -o dht11-test dht11-test.c -lwiringPi
sudo ./dht11-test
下記のコマンドを作動したら、上記のすべてのコードをダウンロードできます:
sudo wget --no-check-certificate http://osoyoo.com/wp-content/uploads/2017/03/dht11_code.rar
C言語は高級プログラム言語のため、直接にラズパイのGPIOを制御しますので、データ紛失のことは少ないと発見できます。
説明
DS18B20デジタルサーモメータのDS18B20は、9ビット~12ビットの摂氏温度測定値を提供し、不揮発性のユーザー設定可能な上限/下限トリガポイントを備えたアラーム機能を内蔵しています。DS18B20は1-Wire®バス上で通信を行います。名称通りに、このバスは中央のマイクロプロセッサとの通信に1つのデータライン(およびグランド)のみを必要とします。このデバイスは-55℃~+125℃の温度範囲で動作し、精度は-10℃~+85℃の範囲で±0.5℃です。さらに、DS18B20はデータラインから直接給電することが可能なため(「寄生電源」)、外部電源は不要です。
各DS18B20は固有の64ビットシリアルコードを備えているため、複数のDS18B20が同一の1-Wireバス上で機能することができます。そのため、1つのマイクロプロセッサを使用して広範囲に分散した多数のDS18B20を制御することが容易です。この機能が役立つアプリケーションとして、HVAC環境制御、ビル/機器/機械内の温度監視システム、およびプロセス監視/制御システムなどがあります。
必要なパーツ
Pi3ボード x1
|
|
DS18B20 x1
|
|
ジャンプワイヤー x3
|
ハードウェア
DS18B20モジュールの”S”PINとラズパイのGPIO4(BCM)と接続して、”-“とラズパイの”GND”、真ん中の”+”とラズパイの5Vを接続してくださいませ。配線図をご確認くださいませ:
Raspberry Pi3の GPIO端子の 1-Wire®機能を有効化
コマンド欄に下記のコマンドを入力、動作して、configファイルを編集します。
sudo nano /boot/config.txt
カーソルをconfigファイルの一番下に移動して、下記の内容をファイルにコーピーして下さい。
dtoverlay=w1-gpio
キーボードのCtrlとXキーを押して、Yを入力したら、ファイルを保存します。
コマンド欄に下記のコマンドを動作したら、ラズパイを再起動して、配置を有効にする
sudo reboot
再起動したら、下記のコマンドを動作して、 1-Wire®が起動していたと確認できます。詳しく画像をご確認:
lsmod
上記の画像のように、w1_gpio wire などの内容が有ったら、1-Wire®が正常起動していたと判明できます。もし、無ければ、下記のコマンドを動作して、1-Wire®を有効します。
sudo modprobe w1-gpio sudo modprobe w1-therm
下記の各コマンドを作動したら、今現在の温度をリターンします。
sudo modprobe w1-gpio Enterキー sudo modprobe w1-therm Enterキー cd /sys/bus/w1/devices Enterキー cd /28-xxxxxx Enterキー cat w1_slave Enterキー
ソフトウエア
下記のコマンドを動作したら、temp.pyファイルを新規作成します。
sudo nano temp.py
下記の内容をtemp.pyファイルにコーピーして下さい。
import os import glob import time os.system('modprobe w1-gpio') os.system('modprobe w1-therm') base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28*')[0] device_file = device_folder + '/w1_slave' def read_temp_raw(): f = open(device_file, 'r') lines = f.readlines() f.close() return lines def read_temp(): lines = read_temp_raw() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 temp_f = temp_c * 9.0 / 5.0 + 32.0 return temp_c, temp_f while True: print('C =%3.3f F = %3.3f'% read_temp()) time.sleep(1)
キーボードのCtrlとXキーを押して、Yを入力したら、ファイルを保存します。
ファイルが保存したら、下記のコマンドを動作して、結果を確認します。
sudo python ./temp.py
説明:
1)os.system(‘modprobe w1-gpio’)とos.system(‘modprobe w1-therm’)はプログラムの最初にmodprobeコマンドを作動します。
2)base_dir = ‘/sys/bus/w1/devices/’とdevice_folder = glob.glob(base_dir + ’28*’)[0]は/sys/bus/w1/devices/の28からのファイルを獲得します。
3)device_file = device_folder + ‘/w1_slave’はファイルを開けて、データを獲得します。
4)while lines[0].strip()[–3:] != ‘YES’: 読み取れたファイル第1行最後の文字はYESかどうか判明します。
5)equals_pos = lines[1].find(‘t=’) :読み取れたファイル第2行(t=)を検索します。もし、見つからない場合、1をリターンします。
You can download the data sheet from link:
The programmable switch doesn’t required a lot of electronic components and is quite easy to build. The Parts Lists for the programmable switch is shown below .
1)tactile pushbutton switch
2)Raspberry Pi
3)solderless breadboard
4)several jumper wires
In order to read the tactile pushbutton switch status, the RPi.GPIO library needs to be installed on the Raspberry Pi. The RPi.GPIO is a software module that conveniently allows the Raspberry Pi GPIO pins to be manipulated for electronic controls applications. To install the RPi.GPIO library onto the Raspberry Pi, open the LXTerminal and type the following linux installation command after the prompt:
pi@raspberrypi ~ $ sudo apt-get install python-dev python~rpi.gpio
After the linux installation command is entered, you will see a series of RPi.GPIO bulld-installation file sequences being displayed on the monitor as shown below.
Attaching a tactile pushbutton switch to the RPi is quite easy to do. An important item to remember is the RPi’s GPIO pins are +3.3VDC compliant. Applying voltages greater than +3.3VDC will damage the RPi. The electrical wiring diagram for attaching the tactile pushbutton switch is shown next.
Although, the circuit wiring to the RPi is quite simple, recheck the wiring before programming the RPi. This important verification step will assure you project execution success when the python code is installed and running on the RPi.
The next phase of the project build is to provide a python script for reading a tactile pushbutton switch wired to a RPi GPIO pin. The python script for reading a tactile pushbutton switch is shown next.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN,pull_up_down=GPIO.PUD_UP)
while True:
inputValue = GPIO.input(18)
if (inputValue == False):
print("Button press ")
time.sleep(0.3)
You can entered this script using either the LXTerminal’s nano editor or with the Python’s IDLE (Integrated Development Enviroment). Save the script as pbbutton.py in the home/pi directory of the RPi. Next, type the following linux command to run the script on the RPi into the LXTerminal as shown next.
Next, press the tactile pushbutton switch. If the script was typed correctly, you will see the message “button press” displayed on the monitor’s screen. Congratulations on building a programmable pushbutton switch!
pi@raspberrypi ~ $ sudo python pbbutton.py
The tactile pushbutton switch can easily be programmed to provide a variety of output messages and switching responses. Try changing the “Button Press” message to display your name or a whimiscal word when activating the switch. Record your results in a laboratory notebook.
To help beginners to easily study the Raspberry Pi hardware controlling, we designed some straight forward sample projects which can save user a lot of money and time to do research.