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個ですのでユニバーサル基板でかんたんに作成できます。
禺画像]