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モジュールを使用します。

WiFiモジュール(4)2016年10月24日

WiFi Felica リーダー

Felicaカードと言えばSuicaですが、最近は交通系のカードはあまり使用しません。その代わり買い物でnanacoやWAONカードをよく使用しますが、残高不足でレジ前でオタオタすることがままあるので残高チェッカーを作ってみました。キングジムの電子マネービュアー 「RELET(リレット)」CITIZENのpeb TWTC501(歩数計と兼用)と同じようなものです。交通系ICカード専用ですがパスケースが残高を表示してくれるnocolyなどもあります。

Felicaカードリーダーは以前Arduinoクローンで作りましたがあの時はブレッドボードによるプロトタイプで終わってしまいました。今回はWiFiモジュールを使用しますので電源電圧は3.3V(単4電池3本~4本の予定)、表示はグラッフィックス表示の128x64ドットOLEDを使用しています。WiFi接続機能は自宅以外では使えませんが、あると便利かなと思い付けようと思っています。ソフト次第ですから利用方法が思いつたら実装します。
残高照会できるカードは交通系ICカード(Suica、PASMOなど)、nanaco、WAON、楽天Edyカードです。お財布携帯については手持ちがないのでテストしていません。たぶんだめでしょう。

  • ここのサイト記事を参考にさせてもらいました。
  • 128x64ドットOLEDモジュール用ライブラリーはWiFiウエザーステーションと同じライブラリーです。
    使用ライブラリーはesp8266-oled-ssd1306です。
    このライブラリーは0.96インチと1.3インチどちらのOLEDディスプレーにも対応していますので使用するモジュールに合わせて変更します。プログラム内で記述しているイメージデータはXBM形式のイメージです。XBM形式への変換はこのサイトで作成したビットマップ画像をXBM形式イメージデータに変換できます。
  • FelicaカードリーダーのライブラリーはSONYが公開している「Arduino向けRC-S620/S制御ライブラリ」を使用しています。
    Arduino IDEのバージョンが1.0以上の場合は(ほとんどこれに当たります)RCS620S.cpp内の
    #include "WProgram.h"を#include "Arduino.h"に
    修正してからでないとコンパイルエラーが出ます。



使用モジュールはESP8266シリーズをプロセッサーに128x64ドットOLEDディスプレー、SONY製のFelicaカードリーダー(RC-S620S)です。
Felicaカードリーダー(RC-S620S)とのデータ通信はシリアルですのでProgram書き込みモード時には結線をUSBシリアルモジュールに変更しなければなりません。そこでUSBシリアルを接続する8Pコネクターで必要なジャンパーも行えるように工夫しました。また実行させるときはRunモード用を8Pコネクターに接続します。