WiFiモジュール(3)2016年10月08日

WiFiウエザーステーション

Tiny OLED full graphics controllerでも使用した0.96インチOLEDディスプレーと環境センサーBME280、Weather Underground StationのAPIを使ってWiFiウエザーステーションを作ってみました。

表示しているデータはインターネット日時->BME280データ->現在の天気->3日間予報->Raspberry Pi2がThingspeak.comにアップデートしている温度データを順に表示しています。
プロセッサーには今年から使い始めたWiFiモジュールESP8266シリーズを使用しました。OLED、BME280センサーとはI2Cインターフェースを使用しますのでGPIOは2個しか消費しないのでESP-01で作成しました。program/runモードの切替はI2CのSDA信号線を共用していますのでモード切替時はESP-01の電源ON/OFFが必要です。

BME280環境センサーは温度、湿度、気圧が計測でき、精度の高いデジタル出力が得られます。プロセッサーとのインターフェースはI2CまたはSPIです。Arduino/ESP8266用のライブラリーも豊富でI2Cの場合2本の信号線と電源ですぐに使用することができますので基板上には配置せず配線を引き出してケース内での配置の自由度を持たせました。e-Bayで安価に調達できます。インターフェース、サイズ、電源などの違いで様々なモジュールが出ています。

  • ここのサイト記事を参考にさせてもらいました。
    使用ライブラリーはesp8266-weather-stationです。
    ESP-01のソフトウエアはサンプルスケッチにあるWeatherStationDemoスケッチにBME280のデータ読み込み処理とデータ表示フレームを追加する形で作成しました。
  • 0.96インチOLEDモジュールの注文をミスってしまいSPI端子仕様を注文してしまいましたが、SSD1306ドライバーはSPIとI2C両インターフェースをサポートしていますので3箇所のジャンパーを変更し、リセット回路を追加してあげればI2C端子仕様と同じになります。SCL、SDAはそれぞれD0、D1端子になります。
    使用ライブラリーはesp8266-oled-ssd1306です。
    このライブラリーにはUi Libraryが付属しています。Ui Libraryを使用すると画面のフレーム制御とスクロールを簡単に行うことができます。今回は5フレーム構成で 時刻->BME280データ->現在の天気->3日間予報->クラウドデータ をスクロール表示させています。
  • BME280モジュールは秋月スイッチサイエンスでも販売していますが3.3V仕様です。そこで安さと5Vまで仕様、小型基板のモジュールをe-Bayから調達しました。
    使用ライブラリーはBME280_MOD_1022です。
  • その他にjson-streaming-parserが必要ですのでライブラリーに追加してください。
まずはブレッドボードでテスト運転です。回路図でもわかるようにモジュール間の結線以外に抵抗4本とコンデンサー1個ですのでユニバーサル基板でかんたんに作成できます。



OLEDディスプレーは128x64ドットのグラフィックス表示装置ですので0.96インチと表示エリアは小さいですが16桁2行キャラクターLCDなどよりも価格が安く表示能力があります。3.3V-5V両用でArduino/ESP8266には手頃な表示装置です。
0.96インチOLEDはSSD1306ドライバー、1.3インチOLEDはSH1106ドライバーになりますのでプログラムソースを若干変更することで1.3インチOLEDを使用することもできます。

OLEDとBME280モジュール共に5Vまでの使用が可能(秋月、スイッチサイエンスのモジュールは3.3V仕様です)ですが、今回は3.3Vで動作させています。それ以外の電圧で動作させる場合は1個20円のAMS1117 3.3 DCDCモジュールを使用します。

コメント

トラックバック

このエントリのトラックバックURL: http://azss.asablo.jp/blog/2016/10/08/8217771/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。