Category :Projects for Raspberry Pi

Byamber

ラズパイとモーションセンサー、ブザーを使って、簡易セキュリティー・アラームを作る

説明

ラズパイとモーションセンサー、ブザーを使って、簡易セキュリティー・アラームを作ります。ラズパイは固定期間にモーションセンサーからの高、低電位信号を検査して、人が近づいてくるとブザーが鳴ります。

DSC_5470

必要なパーツ

PI
Pi3ボード x1
Digital-Motion-Sensor
モーションセンサー x1
18
5V ブザー x1
19
ジャンプワイヤー x若干

配線図

Untitled Sketch_buzzer

線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。Raspberry PiのGPIOピンの概要はこちら~ブザーのPIN番号が異なる可能性も御座いますので、実物を対照して、配線してくださいませ。ブザーが低電位信号で作動します。

モーションセンサー回路図

schematic

モーションセンサー インタフェースのレイアウト

2つのつまみが遅延時間と感度の調整ができます:

adjust

ソフトウエア

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!」と表示し、ブザーがなります。

2017-03-23-064257_1824x984_scrot

Byamber

ラズパイ3、電圧検出センサーとMCP3008 A/Dコンバータを使って、電圧計を制作する

概要

本文では、ラズパイ3、電圧検出センサーとMCP3008 A/Dコンバータを使って、電圧計を制作して、電圧値をターミナルにプリントします。

DSC_5505

必要なパーツ

PI
Pi3ボード x1
 3 電圧検出センサー x1
MCP3008
MCP3008 A/Dコンバータ x1
LACC2006AD-12
 ブレッドボード x1
LACC2006AD-31
 ジャンプワイヤー(オス~オス)x若干
19
 ジャンプワイヤー(オス~メス)x若干

ハードウェア

このモジュールは抵抗分圧の原理に基づいて、デザインしました。輸入したの電圧値を5倍に下げて、輸出しできます。ラズパイGPIOの工作電圧は普段3.3Vのため、電圧検知モジュールへの輸入電圧はできるだけ、16.5V(3.3Vx5倍)以下にして下さい。出力インタフェース:”+”は3.3vに接続し、”-“は GNDに接続し、”s”はMCP3008 A/DコンバータのAD入力PINに接続します。
DC入力インタフェース:正極とVCC、負極とGND、下記の画像をご参照:
3

ラズパイはデジタル信号しか処理しできませんので、今回は電圧検知センサーからの電圧信号(アナログ信号)を処理するため、A/Dコンバータも必要です。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。

voltage_bb

ソフトウエア

下記の操作は、ラズパイとスクリーンを接続しても、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コンバータで転換したの信号のため、少し誤差があるはずです。

2017-04-05-032458_1824x984_scrot

Byamber

ラズパイで火炎検知センサーを作動する

概要

本プロジェクトでは火炎検知センサーとラズパイ3ボードを使って、火炎検知装備を作ります。火炎検知センサーは火炎と波長760nm~1100nmの光が敏感します。アナログ信号とデジタル信号2重輸出できます、火炎が検出したら、デジタルOUTPUT(DO)から高電位信号を輸出して、アナログOUTPUT(AO)から電圧値を輸出します。火炎のサイズが大きくなると輸出したの電圧値も大きくなります。モジュールに可変抵抗がありますので、センサーの感度が調整しできます。

DSC_5501

必要なパーツ

PI
Pi3ボード x1
EASM101600
火炎検知センサーx1
MCP3008
MCP3008 A/Dコンバータx1
LACC2006AD-12
ブレッドボードx1
LACC2006AD-31
ジャンプワイヤー(オス~オス)x若干
19
ジャンプワイヤー(オス~メス)x若干

ハードウェア

火炎検知センサーは火火炎と波長760nm~1100nmの光が検出しできます。点火しているライターを使用の場合、80CMの範囲内は検出しできます。検出の角度は60度となります。火炎のサイズが大きくなると、検出できる距離も拡大できます。モジュールに可変抵抗がありますので、センサーの感度が調整しできます。工作電圧は3.3V~5Vですので、本文では3.3Vでセンサーに給電します。

配線図

flame_bb

線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。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!と表示します。もし、点火したのライターがモジュールに近づいてくるても何も変化しないの場合、モジュールでの可変抵抗を調整して、確認して下さい。

2017-04-01-082444_1824x984_scrot

Byamber

ラズパイとMQ-7一酸化炭素センサーを使用して、一酸化炭素検出器を作る

概要

本プロジェクトではMQ-7一酸化炭素センサーとラズパイ3ボードを使って、周囲環境の一酸化炭素濃度検測装備を作ります。SnO2系センサーですので、一酸化炭素濃度の変化に応じてSnO2の抵抗値が変化します。周囲環境での一酸化炭素濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を輸出しできます。MQ-7は、一酸化炭素に敏感と言われます。様々な場合に採用できる、コストパフォーマンス高いのセンサーと言われます。

DSC_5498

必要なパーツ

PI
Pi3ボード x1
6
 MQ-7モジュール x1
MCP3008
MCP3008 A/Dコンバータ x1
LACC2006AD-12
ブレッドボード x1
LACC2006AD-31
ジャンプワイヤー(オス~オス)x若干
19
ジャンプワイヤー(オス~メス)x若干

ハードウェア

ラズパイはデジタル信号しか処理しできませんので、今回は一酸化炭素センサーからの電圧信号(アナログ信号)を処理するため、A/Dコンバータも必要です。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。周囲環境での一酸化炭素濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を電圧値に変更して、輸出しできます。電圧値より、周囲環境の一酸化炭素濃度を判断できます。

MQ-7モジュールの工作電圧は5Vになります、MQ-7モジュールはアナログ信号とデジタル信号2重輸出できますので、本プロジェクトに、アナログOUTPUT(AO)とデジタルOUTPUT(DO)両方と使用します。一酸化炭素検出したら、指示ランプが点灯、DOpinから低電位信号を輸出する、モジュールに可変抵抗がありますので、センサーの感度が調整しできます。

配線図

mq-7

線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。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”を表示し、電圧値も表示し、指示ランプも点灯します。もし、点火したのライターがモジュールのそばに置いても何も変化しないの場合、モジュールでの可変抵抗を調整して、確認して下さい。

2017-03-31-064234_1824x984_scrot

Byamber

ラズパイとMQ-2可燃ガス/煙センサーを使用して、簡易煙検出器を作る

概要

MQ-2可燃ガス/煙センサーを使って、ラズパイに煙、ガスを検出装備をデザインします。SnO2系煙センサーですので、ガス濃度の変化に応じてSnO2の抵抗値が変化します。周囲環境でのガス濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を輸出しできます。MQ-2は、液化石油ガス、プロパン、水素などに敏感です。

DSC_5496

必要なパーツ

本项目将用到如下器件

PI
Pi3ボード x1
5
 MQ-2モジュール x1
MCP3008
MCP3008 A/Dコンバータ x1
LACC2006AD-12
 ブレッドボード x1
LACC2006AD-31
ジャンプワイヤー(オス~オス) x若干
19
ジャンプワイヤー(オス~メス) x若干

ハードウェア

ラズパイはデジタル信号しか処理しできませんので、今回はガス検知センサーからの電圧信号(アナログ信号)を処理するため、A/Dコンバータも必要です。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。電圧値より、ガスがあるか無いか判断します。

MQ-2モジュールの工作電圧は2.5~5Vになります、本プロジェクトでは3.3Vを給電します。MQ-2モジュールはアナログ信号とデジタル信号2重輸出できますので、本プロジェクトに、アナログOUTPUT(AO)とデジタルOUTPUT(DO)両方と使用します。ガス検出したら、指示ランプが点灯、DOpinから低電位信号を輸出する、モジュールに可変抵抗がありますので、センサーの感度が調整しできます。

配線図

mq-2

線路違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。模块的上的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”を表示し、電圧値も表示し、指示ランプも点灯します。もし、モジュールにガスを释放しても、何も変化しないの場合、モジュールでの可変抵抗を調整して、確認して下さい。

2017-03-30-094819_1824x984_scrot

Byamber

Design a LEL gas detector through a raspberry pi board and MQ-5 sensor

概要

本プロジェクトではMQ-5ガスセンサーとラズパイ3ボードを使って、可燃性ガス検出器を作ります。キッチンに置いて、ガス漏れ状況を続いて観測できます。MQ-5可燃ガス/煙センサーを使って、ラズパイに煙、ガスを検出装備をデザインします。SnO2系煙センサーですので、ガス濃度の変化に応じてSnO2の抵抗値が変化します。周囲環境でのガス濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を輸出しできます。MQ-5は、
ブタン、プロパン、メタンなどに敏感と言われます。代表として天然ガスの多種の可燃ガスが検出できるので、様々な環境に採用できる、コストパフォーマンス高いのセンサーと言われます。

DSC_5496

必要なパーツ

PI
Pi3ボード x1
5
MQ-5モジュール x1
MCP3008
MCP3008 A/Dコンバータ x1
LACC2006AD-12
 ブレッドボード x1
LACC2006AD-31
ジャンプワイヤー(オス~オス) x若干
19
ジャンプワイヤー(オス~メス) x若干

ハードウェア

ラズパイはデジタル信号しか処理しできませんので、今回はガス検知センサーからの電圧信号(アナログ信号)を処理するため、A/Dコンバータも必要です。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。周囲環境でのガス濃度が増えると、SnO2の抵抗値が下げます。センサーがその変化値を電圧値に変更して、輸出しできます。電圧値より、ガスがあるか無いか判断しできます。

MQ-5モジュールの工作電圧は5Vになります、MQ-5モジュールはアナログ信号とデジタル信号2重輸出できますので、本プロジェクトに、アナログOUTPUT(AO)とデジタルOUTPUT(DO)両方と使用します。ガス検出したら、指示ランプが点灯、DOpinから低電位信号を輸出する、モジュールに可変抵抗がありますので、センサーの感度が調整しできます。

配線図

MQ-55

線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。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”を表示し、電圧値も表示し、指示ランプも点灯します。もし、モジュールにガスを释放しても、何も変化しないの場合、モジュールでの可変抵抗を調整して、確認して下さい。

2017-03-30-094819_1824x984_scrot

Byamber

ラズパイと水位センサーを使って、水位計を制作する

概要

水位計は河川・ダム・湖沼・貯水池などの水面の高さを測定できる計測機器です。今回は水位センサーを使って、水面の高さ数値を獲得して、ラズパイ
にデータをプリントします。
DSC_5493

必要なパーツ

PI
Pi3ボード x1
2016000500
水位センサー x1
MCP3008
MCP3008 A/Dコンバータx1
LACC2006AD-12
ブレッドボードx1
LACC2006AD-31
ジャンプワイヤー(オス~オス)x若干
19
ジャンプワイヤー(オス~メス)x若干

ハードウェア

ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータであり、デジタル信号の輸入、輸出が簡単に実現できます。ラズパイはアナログ信号(電圧信号)を直接に認識されないため、アナログ信号(温度センサー、可変抵抗器など)を使用の場合、A/Dコンバータが必要し、アナログ信号をデジタル信号に変更したら、ラズパイに輸入します。本プロジェクトではMCP3008と言う、よく利用されるA/Dコンバータを使用します。

水位センサーは簡単、使いやすく、高いコストパフォーマンスなセンサーモジュールであり、数列露出していた導線を並べていて、水が導線の表面にぬれましたら、水面の高さが測定できます。工作電圧は3V~5Vですので、本文では3.3Vでセンサーに給電します。

配線図

waterlevel

線路が違うとボード、センサーに損害の恐れが御座いますので、正極と負極を十分ご注意して下さい。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になります。

2017-03-28-084637_1824x984_scrot

Byamber

ラズパイでDHT11温湿度センサーを作動する

説明

本文では、ラズパイとDHT11温湿度センサーを使って、周囲環境の温湿度データを獲得します。DHT11は湿度測定、温度測定、通信機能を搭載した温度湿度センサです。 また、出力値は校正済みで無調整で使用することが可能です。センサの構成は温度測定にはNTCサーミスタ、湿度測定に高分子膜湿度センサが使用さ れております。このセンサは相対湿度の変化に応じて高分子膜に含まれる水分の量が変化 し、これにより誘電率が変化することから相対湿度を測定します。DHT11はこれらのセン サを専用ASICにてデジタル変換を行い1線式シリアル信号を出力します。ユーザーはマイ コンなどで、出力データを読み取るだけで簡単に湿度と温度の測定が可能です。従来の高分子膜湿度センサと違い、駆動に必要な外部回路の設計及び回路実装、校正か ら開放されます。測定に必要な回路が全て内蔵され、小スペース実装する事が可能です。 データ出力はオープンドレイン出力のため、20メートルまで伸ばす事が可能です。

DSC_5467

DHT11タイミング ダイヤグラム

1)DATAフレーム

DTH11はスタート信号を出力し続いて40ビット(5バイト)構成の同期クロックが含まれたシリアルデータを出力します。データ出力時間は、おお よそ4m/Sです。サンプリング周期は1秒以上で、それより短い間隔でデータ要求しても、 データが出ない場合があります
。第1、2バイトは温度値として、第3、4バイトは湿度値として、表示します。最後の1バイトはチェックサムとして、使用しますので、データが問題ない場合、第1、2バイトと第3、4バイトの合計は第5バイトになります。

e1

2)ハンドシェイク

測定を開始するには、マイコン側から、データ線を 18m秒以上「L」にし、その後「H」にします。

e2

センサは、データ転送の準備ができると、データ線を 80μ秒の間「L」にし、続いて80μ秒の間「H」にします。 この後、センサは40ビットのデータを送ってきます。

3)データビットの転送

センサは、データ転送開始の合図のあと、40ビット (8ビット×5バイト)のデータを送ってきます。データは、上位ビットを先に送信します。各データ ビットは、データビットの開始を示す50μ秒の「L」の あと、「0」のデータなら26~28μ秒の「H」、「1」の データなら70μ秒の「H」が送信されます。
40ビットのデータを送り終わると、センサはデータ 転送完了の合図として、50μ秒の「L」を送ってきます。

データ ‘0’:

e3

データ ‘1’:

e4

必要なパーツ

PI
Pi3ボード x1
EASM100600
DS18B20 x1
EACW100500
ジャンプワイヤー x3

ハードウェア

DHT11のVCCとラズパイの3.3V、DHT11のGNDとラズパイのGND、DHT11のDATAとラズパイのGPIO14(BCM)を接続して下さい。 Raspberry PiのGPIOピンの基礎知識はこちら~

Untitled Sketch_dht11

ソフトウエア

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

2017-03-22-063517_1824x984_scrot

上記のコマンドを実行したら、温湿度データがターミナルに表示します。時々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

2017-03-22-063018_1824x984_scrot

下記のコマンドを作動したら、上記のすべてのコードをダウンロードできます:

sudo wget --no-check-certificate   http://osoyoo.com/wp-content/uploads/2017/03/dht11_code.rar

C言語は高級プログラム言語のため、直接にラズパイのGPIOを制御しますので、データ紛失のことは少ないと発見できます。

Byamber

ラズパイでDS18B20温度センサーを作動する

説明

DS18B20デジタルサーモメータのDS18B20は、9ビット~12ビットの摂氏温度測定値を提供し、不揮発性のユーザー設定可能な上限/下限トリガポイントを備えたアラーム機能を内蔵しています。DS18B20は1-Wire®バス上で通信を行います。名称通りに、このバスは中央のマイクロプロセッサとの通信に1つのデータライン(およびグランド)のみを必要とします。このデバイスは-55℃~+125℃の温度範囲で動作し、精度は-10℃~+85℃の範囲で±0.5℃です。さらに、DS18B20はデータラインから直接給電することが可能なため(「寄生電源」)、外部電源は不要です。
各DS18B20は固有の64ビットシリアルコードを備えているため、複数のDS18B20が同一の1-Wireバス上で機能することができます。そのため、1つのマイクロプロセッサを使用して広範囲に分散した多数のDS18B20を制御することが容易です。この機能が役立つアプリケーションとして、HVAC環境制御、ビル/機器/機械内の温度監視システム、およびプロセス監視/制御システムなどがあります。

DSC_5465

必要なパーツ

PI
Pi3ボード x1
EASM100100
DS18B20 x1
EACW100500
ジャンプワイヤー x3

ハードウェア

DS18B20モジュールの”S”PINとラズパイのGPIO4(BCM)と接続して、”-“とラズパイの”GND”、真ん中の”+”とラズパイの5Vを接続してくださいませ。配線図をご確認くださいませ:

ds18b20_python

Raspberry Pi3の GPIO端子の 1-Wire®機能を有効化

コマンド欄に下記のコマンドを入力、動作して、configファイルを編集します。

sudo nano /boot/config.txt

カーソルをconfigファイルの一番下に移動して、下記の内容をファイルにコーピーして下さい。

dtoverlay=w1-gpio

キーボードのCtrlとXキーを押して、Yを入力したら、ファイルを保存します。

コマンド欄に下記のコマンドを動作したら、ラズパイを再起動して、配置を有効にする

sudo reboot

再起動したら、下記のコマンドを動作して、 1-Wire®が起動していたと確認できます。詳しく画像をご確認:

lsmod

2017-03-20-075235_1824x984_scrot

上記の画像のように、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

2017-03-20-084757_1824x984_scrot

説明:

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をリターンします。

Byamber

Connecting a Push Switch to Raspberry Pi

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

Installing the RPi.GPIO Library

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.

Wiring the Tactile Pushbutton Switch to the RPi

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.

raspberry-pi-pushbutton-fritzing

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 Programmable Switch Python Script

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.

tactile_button_Press