Raspberry Piの1線式温度センサーDS1820(GPIO直接)
Raspberry Piを使用して屋内または屋外の温度を測定するには、いくつかの可能性があります。この記事では、最小限の外部コンポーネントを備えたバージョンについて説明します。これは、DS18S20温度センサーと1-Wireプロトコルのソフトウェアエミュレーションに基づいています。
DS18S20および関連するDS18B20とDS1822は、温度センサー、アナログ-デジタルコンバーター、および1-Wireインターフェースを含むTO-92ハウジング内の集積回路です。上記のタイプはピンとソフトウェアの互換性があり、測定精度と価格が大幅に異なります。 3つのコネクタ(左の図を参照)は、グランド(GND、ピン1)、データ(DQピン2)、および動作電圧(V DD )です。 、ピン3)。 V DD を接続できます およびGNDを使用し、3〜5ボルトの寄生電源でセンサーを操作します。回路とコンピューターの接続は、単純な2線ツイストペアケーブルで可能になります。
このケーブル(1-Wireバス)では、複数のDS1820を並列に接続できます。各センサーには、それ自体を識別するためにメーカーによって割り当てられた一意のコードがあります。
Raspberry Piと1線式温度センサーDS1820を使用した温度測定には、RaspberryPiから1線式バスを駆動するさまざまな方法のリストが含まれています。このホワイトペーパーでは、外部回路の量を最小限に抑えたソリューション(1)について説明します。このソリューションはソフトウェアで1-Wireプロトコルを完全にシミュレートするため、センサーとは別に、必要な抵抗は1つだけです。
DS1820のデータポートDQは、RaspberryPiのGPIOインターフェイスのポートGPIO4に直接接続されています。 GNDおよびV DD アース端子GNDにあります。寄生電源は、3.3ボルト接続3V3とGPIO4の間で4k7のプルアップ抵抗を実現しました。
抵抗器、GPIOポートに接続するためのメスコネクタ、および1線式接続は、GPIOポートに直接配置されている小さなブレッドボードにはんだ付けされています。 1線式接続は、省スペースの角度付きメスコネクタで実現できます。これはすべて、RaspberryPiのTEK-BERRYハウジングに適合します。
1線式ソフトウェアドライバー
1-Wire温度センサーのアクティブ化に必要なカーネルモジュールは、LinuxディストリビューションのRaspbian「wheezy」の一部です。ただし、明示的にロードする必要があります:
sudo modprobe w1-gpio pullup =1sudo modprobe w1-therm
重要なのは、パラメータ pullup =1 です。 、これは、プルアップ抵抗を介した寄生電源が存在することをモジュールに通知します。モジュールは、/ sys / bus / w1 / devicesのすぐ下にあるセンサーごとにサブディレクトリを作成します。ディレクトリ名は、センサーのファミリーコードとその一意の識別番号で構成されます。タイプDS1820およびDS18S20のセンサーにはファミリーコード10、DS18B20にはコード28、DS1822は22があります。各サブディレクトリには、センサーのステータスと測定された温度値を含むファイルw1_slaveがあります。
cd / sys / bus / w1 / devicescd 10-000801b5 * cat w1_slave 0f 00 4b 46 ff ff 06 10 0c:crc =0c YES0f 00 4b 46 ff ff 06 10 0c t =7375
このファイルは2行で構成されており、各行にはセンサーICの16進レジスタダンプが含まれています。最初の行の終わりには、チェックサム(CRC)と、それが有効な読み取り値であるかどうか(YES)に関する情報があります。 2行目は、摂氏1000分の1度の温度測定値で終わります。したがって、この例では、温度は7.375°Cです。もちろん、小数点以下3桁までの精度は明らかです。 DS18S20のデータシートには、たとえば、測定精度はわずか±0.5°Cであると記載されています。実際の温度は6.8〜7.9°Cです。
これまでにすべてが機能する場合は、必要な2つのモジュールをファイル/ etc / modulesに入力して、起動時に自動的にロードされるようにする必要があります。
#/ etc / modulesw1-gpio pullup =1w1-therm
温度測定値を長期間記録し、グラフィックを快適に生成するには、RRDtoolの使用をお勧めします。 USBWDE1を使用した気象データの取得とRaspberryPi(USBシリアル)を使用した温度測定の記事で、このツールについて詳しく説明しています。
まず、RaspberryPiのパッケージマネージャーを使用してRRDtoolをインストールする必要があります。
sudo apt-get install rrdtool python-rrdtool
2番目にインストールされたパッケージ python-rrdtool は、後で使用されるRRDtoolへのPythonインターフェイスです。 RRDtoolでの作業の開始時に、データベースの定義があります。次の例では、2つの温度センサー temp0 のデータベースを作成します und temp1 。目的は、15分(900秒)ごとに1つの値を格納することです。 10日後(=960値)、1日あたり1つの平均値、最小値、および最大値に削減されます。これらの毎日の値の保持期間は10年(=3600値)です:
rrdtool create Temperature.rrd --step 900 \ DS:temp0:GAUGE:1200:-40:80 \ DS:temp1:GAUGE:1200:-40:80 \ RRA:AVERAGE:0.5: 1:960 \ RRA:MIN:0.5:96:3600 \ RRA:MAX:0.5:96:3600 \ RRA:AVERAGE:0.5:96:3600
Pythonによるデータ取得
Pythonスクリプトは、特別なファイルw1_slaveを読み取り、温度値をラウンドロビンデータベースに挿入します。
詳細:Raspberry Piの1-Wire温度センサーDS1820(GPIO直接)
製造プロセス