工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ラズベリーパイ温度センサー

数週間前、私はラズベリーパイを購入しました。 EbenUptonのRaspberryPiユーザーガイド、特に彼がGPIOに注目している2つの章を読んだ後、私は最初のプロジェクトのアイデアを思いつきました。この投稿では、Raspberry Pi、MCP9808、古いMac Mini(2008年初頭)、InfluxDB、Grafana、Pythonのビット、およびrunitを使用してまとめた家庭用温度監視プロジェクトの最初の反復について説明します。

センサーハードウェア

このプロジェクトでは、AdafruitのMCP9808 Breakout Boardを使用することにしました。これは、コンポーネント、回路、アイデアの優れた情報源です。私はいくつかの理由でこのユニットを選びました:

  1. I²Cで制御– Raspberry PiのGPIOは、ピン3(シリアルデータライン、SDA)および5(シリアルクロックライン、SCL)で必要なI²Cバスをサポートします
  2. 2.7V〜5.5Vの電力とロジックの範囲で動作します– RaspberryPiは3.3Vと5Vの電力線を提供します
  3. かなり安かった(<$ 5 USD)–私のはんだ付けスキルは最高ではありません。

回路アセンブリ

MCP9808ブレイクアウトボードは、ほとんど組み立てられたAdafruitから出荷されます。この特定のキットでは、付属の8ピンヘッダーストリップをブレイクアウトボードにはんだ付けするだけで済みます。

GPIOブレイクアウトとブレッドボードを使用してRaspberryPiをMCP9808に接続しました。このアプローチは、センサーをRaspberry Piにはんだ付けするよりも、管理が少し簡単で、配線の間違いを修正し、永続性が低くなります。 MCP9808から温度を読み取るには、電源ピン、アース、およびI²CSDAピンとSCLピンのみが必要です。

残りのオプションのピンは、このプロジェクトでは使用されません。これらは、同じバスで複数のデバイスが使用されている場合のI²Cアドレス指定の問題の回避策と、センサーがしきい値を超えるまたは下回る温度を読み取った場合にアラートを出すためのピンを提供します。

データストア

永続的なデータストアを使用してプロジェクトをバックアップしたいと思っていました。これにより、データポイントをキャプチャし、後でそれらを分析して、一般的な傾向、気象イベントとの相互参照の暖房/冷房パターンなどを確認できます。

時間中心のクエリ言語とストレージモデルのために、InfluxDBを選択しました。机の下に座っていた古いMacMini(2009年初頭とOSX 10.10)にInfluxをインストールしました。 InfluxDBの基本的なインストールを開始して実行することは、十分に文書化されています。私はすでにHomebrewを使用してサードパーティの依存関係のほとんどを管理しており、InfluxDBの式が存在するため、 brew install influxdb を発行してインストールを完了しました。 。

InfluxDBデータベースを構成します

InfluxDBをインストールした状態で、温度測定値を保存するためのデータベースと、それを管理するためのデータベースユーザーをセットアップしました。これを行うために、InfluxDBインスタンスのWebコンソールを使用しました。デフォルトでは、ポート 8083 で実行されます InfluxDBホストの。

ラズベリーパイの構成

ハードウェアとデータストアがセットアップされたので、I²Cバスを介してMCP9808と通信するために、すぐに使用できるRaspberryPiに必要なOS構成が少しあります。

I²Cを有効にする

デフォルトでは、RaspberryPiはI²Cバスを使用するために必要なカーネルモジュールをロードしません。 GPIOを介したI²C通信を有効にするために、次の2行を / etc / modules に追加しました。

  i2c-bcm2708i2c-dev  

次に、RaspberryPiを再起動します

  sudo再起動 

システムが初期化した後、システムはMCP9808が接続されていることを認識できるはずです。 i2cdetect を使用しました そのためのCLIツール:

  sudo i2cdetect 1#チャネル1は、Raspberry Pi B +モデルのデフォルトです 
センサーソフトウェア

Adafruitは、MCP9808ラッパーとI²C抽象化を提供します。このプロジェクトのメインドライバースクリプトでは、これらの両方を利用しました。

ビルドの依存関係をインストールする
  sudo apt-getupdatesudo apt-get install build-essential python-dev python-smbus  

Adafruit_Python_MCP9808ラッパーをインストールします

  cd〜 / Downloadsgit clone https://github.com/adafruit/Adafruit_Python_MCP9808/blob/master/Adafruit_MCP9808cd Adafruit_MCP9808sudo python setup.py install  

これにより、MCP9808ラッパーがI²C抽象化に依存するため、I²C抽象化もインストールされます。

読み取り、レポート、繰り返し

次に、Pythonスクリプト poll.py を作成しました。 、MCP9808から一定の間隔で読み取り、その結果をmcp9808_testInfluxDBデータベースインスタンスに報告します。

#!/ usr / bin / python import time import Adafruit_MCP9808.MCP9808 as MCP9808 from influxdb import InfluxDBClient#温度データをInfluxDBに送信するために必要なペイロードを生成しますdeftemperature_data(degrees_c):return [{'points':[[c_to_f(degrees_c)]]、 'name': 'Temperature Readings'、 'columns':['degrees_f']}]#摂氏の温度表現を変換します# Farenheight def c_to_f(c):return c * 9.0 / 5.0 + 32.0#I2Cバスを介したMCP9808との通信を初期化します。 Sensor =MCP9808.MCP9808()sensor.begin()#キャプチャロジックが発生する間隔を定義します#capture_interval =60.0#60秒ごと#mcp9808_testへの接続を確立します#InfluxDBインスタンスinfluxClient =InfluxDBClient( ' '、8086、' mcp9808 '、' '、' mcp9808_test ')#読み取り、レポート、True中に繰り返す:temp =Sensor.readTempC()print "Temperature {0:0.3} F" .format( c_to_f(temp))influxClient.write_points(temperature_data(temp))time.sleep(capture_interval)

これで、次のコマンドを使用して実行できます。スクリプトは root として実行する必要があることに注意してください GPIOと対話するためのRaspberryPiのユーザー。

  sudo python  /poll.py  

For-ev-er

ホレイ!机の下にある電源チップのオン/オフスイッチを押すまで、すべてが稼働していました。この時点で、 poll.py を確認したいと思いました。 Raspberry Piにパワーがある限り、スクリプトは実行されました。これを実現するために、runitプロセススーパーバイザーを使用しました。

詳細:RaspberryPi温度センサー


製造プロセス

  1. RaspberryPi温度ロガー
  2. LabVIEWを使用したRaspberryPiの温度プロファイル
  3. 1線式DS18B20センサーとRaspberryPiを使用して温度を測定します
  4. RaspberryPi温度および湿度ネットワークモニター
  5. DS18B20で温度を読み取る|ラズベリーパイ2
  6. ラズベリーパイの温度監視
  7. RASPBERRYPIによる温度測定
  8. Raspberry piを使用したTMP006温度センサーPythonライブラリ、
  9. PythonとRaspberryPiの温度センサー
  10. ラズベリーパイウェザーステーション
  11. ラズベリーパイで温度を監視する