RasPi  Desk

Pythonで日時温湿度をGUI画面に表示する

 (ネット上に公開されているプログラムを参考にして試行する)


Python(パイソン)でGUI画面をプログラムする

*プログラムを記述するにはテキストエディタが必要になる。
 RasPiのOSにGUIに馴染むいくつかのテキストエディタがあるが教則本にある Geany が
 プログラム開発では使い勝手が良いと思う。

*アプリの画面例
(デスクトップの左上にある黒い画面、西暦-月-日 時:分、温度、湿度を表示)


*回路図(LCDの回路は不要、DHT11の3ピンに配線するだけで可能)


*GPIOピンにてDHT11のDATA-INと接続する番号を回路図と異なるピンに変更する場合は
 プログラムにてBCM番号を変更する必要がある
 ------------------------------------------------------------------------
 Pythonで組んだプログラムを簡易に動かす場合、RasPiOSに入っているPythonのインタープリタで
 動かすことになる。インタープリタとはPythonで書かれた命令文を1つずつ解釈しながら実行して
 いく形である。ゆえにインタープリタでは実行速度がC言語で組まれたものより遅くなる。

 *実行例(ソースファイルがpyDHTdesktop.pyの場合)
  sudo python3 pyDHTdesktop.py

 サンプルプログラムの概要は、2秒ごとに温湿度センサーDHT11からデータを読み込んで
 GUI画面に日時と温度/湿度を表示する
 GUI画面設定:tkinterライブラリ
 DHT11操作 :dht11ライブラリ

<サンプルプログラムの動作手順>
  (続にいうフローチャートを文書化したもの)
 ------------------------------------------------------------------------
1.メイン動作(TkinterでGUI画面設定)
 ・Tkinterで画面のオブジェクト作成
  a)画面の初期設定
  b)日時を表示するラベル設定
  c)温度を表示するラベル設定
  d)湿度を表示するラベル設定
  e)PRi.GPIOライブラリ初期化(BCM番号でプログラムする)
  f)dht11ライブラリ初期化、インスタンス作成(GPIOのBCM番号設定)

 ・update_screen(画面更新処理)関数コール
 ・画面のイベント処理ループ開始(無限ループ)
  画面の右上[X]をクリックしてプログラム終了可能
 ------------------------------------------------------------------------
2.画面更新処理
  <関数 update_screen() >
 a)プログラムが正常ループしていることを表すために時刻表示の右に*マークを
  表示する文字列作成(ループ毎に*表示、*無しを繰り返す)

 b)日時ラベルにシステム時刻から取得した年-月-日 時:分 *マークを表示する
 c)DHT11から温度、湿度を読み込む
 d)温湿度を正常に読み込めたら温度ラベルに温度を表示、湿度ラベルに湿度を表示
  異常だったら直前の温度、湿度の値の右に「−」を表示する

 e)2秒後に再帰的に画面更新処理を実行する(ループする)

 ------------------------------------------------------------------------