ラズベリーパイの温度監視
概要
Raspberry Piは、英国でRaspberry Pi Foundationによって開発された小型のシングルボードコンピューター(SBC)です。 ARM上でさまざまなバージョンのLinuxを実行し、センサーやボタンなどの外部コンポーネントを接続するために使用できるI / Oピンのセットを備えています。残念ながら、Raspberry Piにはアナログからデジタルへのコンバーターが組み込まれていません。 Arduinoでうまく機能するTMP36のようなアナログ温度センサーを使用することはできません。代わりにデジタル温度センサーを使用することもできます。
パーツ
Raspberry Pi
DS18B20温度センサー
4.8kオーム抵抗器
プロトタイピングプレート
Pi Cobbler
ハーフサイズのブレッドボード
ジャンパーワイヤーパック
基本設計
ハードウェア
基本設計で必要なのは、Raspberry Pi、DS18B20温度センサー、4.8kオーム抵抗、Pi Cobbler、ハーフサイズのブレッドボード、ジャンパー線だけです。テストと設計を容易にするために、すべてがブレッドボードに挿入されます。
配線図
センサーは、並列に配線できるという点でかなりユニークであり、必要な数のセンサーをシステムに追加できます。センサーは単線シリアルインターフェースを使用して通信し、Raspberry PiでRasbianを使用している場合は、センサーが接続されたシリアルデバイスとして識別されます。ただし、センサーはGPIOのピン4に配線する必要があります。これは、(現在)1線式シリアルプロトコルを使用した通信を可能にする唯一のピンであるためです。
DS18B20温度センサーのセットアップに関するAdafruitのガイドのこの図を使用して、すべてを相互に接続する際の理解を容易にすることができます。
DS18B20
DS18B20は、通常のトランジスタのようなタイプのコンポーネント、長いケーブルが接続された防水バージョン、および高温バージョンの3つの形式で購入できます。
3つのDS18B20にはすべて、特別な1-Wireシリアルインターフェースと、制御ロジックおよび温度センサー自体が含まれています。デジタル測定値をRaspberryPiに出力し、ディストリビューションによっては、最新バージョンのRaspbianには、追加の作業なしでこれらのメッセージを読み取る方法が含まれています。すべてが配線されている場合は、以下のコマンドを使用してコマンドラインでテストできます。
123456sudo modprobe w1–gpiosudo modprobe w1–thermcd / sys / bus / w1 / deviceslscd 28–xxxx(これを自分のものに合わせて変更してください)catw1_slave上記のコマンドをターミナルウィンドウに入力します。 '/ sys / bus / s1 / devices'ディレクトリに移動します。'cd 'コマンドの上のコマンドで、'28-'で始まるディレクトリに設定されます。システムでは、DS18B20のシリアルに基づく名前とは異なる名前である可能性があります。番号なので、そこにあるディレクトリの名前にcdします。
応答には、最初の行の終わりにYESまたはNOがあります。はいの場合、温度は2行目の終わり、1/000℃になります。
ソフトウェア
回路を組み立てたら、センサーから温度データを読み取るプログラムを作成する必要があります。基本的な設計では、プログラムは毎秒データを読み取り、その読み取り値を端末のstdoutに表示します。
DS18B20温度センサーからデータを読み取るために使用するソフトウェア言語はPythonです。これをファイルに追加し、「temp_logger_basic.py」として保存します
1234567891011121314151617181920212223242526272829303132import osimport globimport timeos.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 linesdef 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 temp(read)(read temp_c、temp_fwhile True:)_プログラムの上部には、スクリプトで使用するモジュールが含まれています。次に、インターフェースを起動するために必要な「modprobe」コマンドを発行します。次の3行で、データを読み取ることができるファイルを見つけます。
温度の読み取りを処理する2つの関数があり、「read_temp_raw」はインターフェースから2行のメッセージをフェッチします。 「read_temp」関数は、摂氏での温度と華氏での温度の2つの値を毎秒返します。
スクリプトの出力は次のとおりです。
123456789sculley @ berry:/ usr / local / temperature / $ sudo python ./temp_logger_basic.py(18.875、65.975)(18.875、65.975)(18.875、65.975)(18.875、65.975)(18.875、65.975)(18.875、65.975)( 18.875、65.975)(18.875、65.975)スクリプトはrootとして実行する必要があります。また、スクリプトの先頭にPythonシバンを追加していないため、Pythonを使用してスクリプトを呼び出す必要があります。
これで、基本設計を正常に配線し、DS18B20温度センサーから温度データを読み取るための基本スクリプトを作成できたはずです。これで、より高度な設計に進むことができます。
高度な設計
高度な設計では、Raspberry Piに接続するPCBシールドにコンポーネントをはんだ付けし、すべてを隠すために小さなブラックボックス内に格納されている、温度ロガーの設計を示します。コードは1時間ごとに実行され、データをMySQLデータベースに追加します。これを使用して、データをGoogleチャートに表示し、視覚化を容易にします。
ハードウェア
高度な設計には、Pi Cobbler(Raspberry Pi、DS18B20温度センサー、4.8kオーム抵抗、ハーフサイズのブレッドボードとジャンパー線)を除いて基本部品と同じ部品が必要ですが、PCBも必要です。RaspberryPiを購入しました。半永久的なデザインを作成するのに最適なAdafruitのプロトタイピングシールド。
詳細:RaspberryPiでの温度監視
製造プロセス