電子ペーパー天気予報モニターの作り方


電子ペーパー天気予報実験セットで、天気予報モニターを作る方法のご紹介です。

電子ペーパーの実験セットは↓こちら↓で購入いただけます

以下のような手順でご説明します

  1. 組み立て(電子ペーパーと本体の接続)
  2. Arduino開発環境のセットアップ
  3. プログラムの書き込み
  4. 天気アイコンの変更方法

1.組み立て

電子ペーパーと本体基板との接続

コネクタの黒部分を引き出す

epdset02
コネクタの黒い部分を引き出します。黒い部分の両サイドに飛び出したところを爪で引っ掛ける感じで引き出すことができます。

フイルムコネクタを差し込む

epdset03
電子ペーパーのフィルムコネクタを、基板のコネクタに刺し込みます。この時、コネクタの黒い部分が閉まってしまうと、奥まで刺さらないので、黒い部分が引き出された状態で、フィルムコネクタを刺し込んでください。

コネクタの黒い部分を閉める

epdset04
基板のコネクタの黒い部分を、写真のようにしっかりと閉めます。これでフィルムコネクタが抜けなくなり、接続が完了します。

フィルムコネクタはとても弱く切れやすいので、動かすときには、よじれたり、ねじれたりしないよう注意してください。epdset05

USBをつなぐ

基板の右下にUSBケーブルを接続します。USBのもう片方のコネクタは、Arduinoがセットアップ終わるまではパソコンには繋がないでください。

Arduinoのセットアップ

こちらの記事を参考に、セットアップしてください。

OpenWeatherMapの利用準備

天気予報は、OpenWeatherMapというインターネットのサービスを利用して取得しています。利用するためには、API Keyという利用許可証が必要です。そして、郵便番号または都市名を指定して天気予報を調べることができます。

API Keyの取得

こちらの記事を参考にしてAPIKeyを取得してください。

郵便番号で天気予報が取得できるか調べる

天気予報を調べる時には、通常郵便番号で調べることができます。

http://api.openweathermap.org/data/2.5/weather?zip=100-0000,jp&units=metric&lang=ja&APPID=[API Key]

zip=の後に郵便番号を入れます。[API Key]はご自身で取得したAPI Keyを入れます。これをブラウザのURLのところに貼り付けて、リターンを押してみてください。

このように表示されれば郵便番号で天気予報が取得できる地域です。以下のように、404となった場合は、郵便番号ではなく都市名で調べる必要があります。

都市名の調べ方

Interactive weather maps - OpenWeatherMap

のページを開いて、天気予報を知りたいところをズームしていきます。

数字が付いている都市名が、検索できる都市名となっています。都市名で検索する場合には、以下のうようになります。

http://api.openweathermap.org/data/2.5/forecast?&q=Naha-shi,JP&units=metric&cnt=3&appid=[API Key]
q=の後に、都市名を入力します。これをブラウザのURLにコピーしてエンターを押すと、以下のように天気予報が表示されます。
郵便番号で検索できない場合には、この都市名を使うのでメモしておいてください。

天気予報プログラムの準備

天気予報プログラムのダウンロードと展開

天気予報実験セットのプログラムを以下よりダウンロードして展開します。

kc_epdforecast3.zip

2019.6.6 更新:
esp8266ライブラリ ver2.5.2に対応
2019.3.21 更新:
機能追加:フルカラーまたはグレースケールのBMPはディザリングで表示するよう改善
バグ修正:更新日時表示の月が間違っていたのを修正

展開してできたkc_epdforecast3フォルダをArduinoのフォルダの中に入れてください。

Macの場合は、[書類]->[Arduino]

Windowsの場合は、[Documentd]->[Arduino]

の中です。

データファイルのコピー

天気予報プログラムは、SDカードから天気マークの画像データやフォントデータを読み取って電子ペーパーに表示しています。付属のマイクロSDカードに、それらのファイルをコピーします。

コピーするファイルは、先ほど展開したフォルダの中にあります。

Macの場合は、[書類]->[Arduino]->[kc_epdforecast3]->[sd]

Windowsの場合は、[Documentd]->[Arduino]->[kc_epdforecast3]->[sd]

のフォルダの中を全部SDカードにコピーします。

sdフォルダの中身を全てコピーします。sdというフォルダをコピーするわけではないので注意してください。

 

プログラムをカスタマイズ

お客様のご利用環境に合わせて、プログラムをカスタマイズします。Arduino IDEでプログラムを開いてください。

[ファイル]->[開く]で、[Arduino]->[kc_epdforecast3]->[kc_epdforecast3.ino]

を開きます。

30行目から33行目までの4行が変更する場所になります。

  1. ssid:ご自宅の無線LANのアクセスポイントの名前を入れてください。本機は2.4GHzの電波にしか対応していません。5GHzのアクセスポイントにはつながらないので注意してください。
  2. pass:アクセスポイントのパスワードを入れてください。
  3. zip:天気予報を知りたい場所の郵便番号を入れます。全て半角で、ハイフンも入れます。123-4567のような書式で設定します。
  4. apiKey:先ほど取得したOpenWeatherMapのAPI Keyを入力してください。

郵便番号で天気予報が取得できない場合は、以下のように修正します。

  1. zipに郵便番号ではなく都市名を入れる(“Naha-shi”など)
  2. 105行目の”&zip=”を”&q=”に変更

これでカスタマイズ完了です。

JSONライブラリの追加

天気予報プログラムは、JSONライブラを使って、サーバーから得た情報を解析しています。そのためのライブラリを追加します。

[ツール]->[ライブラリを管理]をクリックします。

右上のテキストボックスに「arduinojson」を入力します。するとArduinoJsonライブラリが検索で出てきます。その欄をクリックすると、右下に[インストール]ボタンが出てくるので、クリックしてインストールします。

バージョン6.X.X INSTALLEDとなればインストール完了です。右下の[閉じる]をクリックして、ウィンドウを閉じます。

プログラムの書き込み

ここまでで準備は完璧です。カスタマイズしたプログラムを書き込んで、動作の確認をします。

USBをつなぐ

電子ペーパー実験セットのボードとパソコンをUSBで接続してください。

[ツール]->[シリアルポート]で、追加されたポートを設定します。

シリアルモニタを起動

マイコンから現在の処理状況がシリアルポートを経由して、ログ情報として送信されています。その情報を受信するためにシリアルモニタを起動します。

[ツール]->[シリアルモニタ]で、モニタが表示されます。

シリアルモニタの通信速度を変更します。

右下のプルダウンメニューから「115200 bps」を選択します。

プログラムの書き込み

左上から2番目の矢印のアイコンをクリックします。

すると、プログラムがコンパイルされて自動的に書き込みます。 

赤い点々がどんどん伸びて100%になると書き込み完了。自動的にマイコンが再起動してプログラムが動作を開始します。

動作の確認

正常に動作すると、電子ペーパーに天気予報が表示されます。

今後9時間までの天気予報が表示されます。気温も同様に9時間までの間の、最高最低気温になります。1日の中での最高最低気温ではありません。降水量、降雪量は雨または雪の時のみ表示されます。1時間あたりの降水量となっています。

以降、30分毎に天気予報を取得して表示してくれます。

また、シリアルモニタに出力された処理状況から、動作が確認できます。

正常に終了すると、上記のようなログになります。

天気予報が表示されない場合

無線LANに接続できませんでした

アクセスポイントの名前(SSID)かパスワードが間違っています。プログラムの30,31行目が正しいか確認してください。また、5GHzの無線LANにはつがらないので、2.4GHzのアクセスポイントを利用してください。

サーバーから情報を取得できませんでした

  • API Keyが取得したものと同じか確認してください
  • 郵便番号が正しいか、検索できる郵便番号か確認してください。以下をブラウザのURLにコピーして表示できますか?(XXX-XXXXは郵便番号)
    http://api.openweathermap.org/data/2.5/weather?zip=XXX-XXXX,jp&units=metric&lang=ja&APPID=[API Key]
  • 都市名の場合は、105行目の”&zip=”が、”&q=”に変更してあるか確認してください

白または黒

SDカードにフォントやアイコンファイルがありません。プログラムを展開した時にできたsdフォルダの中身を、そのままマイクロSDカードにコピーしてください。SDカードを開くと中身はこのようなファイル構成になっています。

お天気アイコンのカスタマイズ

お天気アイコンはBMPファイルとなっています。このファイルを書き換えることで、自由に天気アイコンを変更することができます。天気アイコンの画像データはSDカードに入っています。

天気アイコンのファイル名

天気とファイル名は以下のようになっています。

  • 晴れ(日中):sunny.bmp
  • 晴れ(夜間):moon.bmp
  • 曇り:cloudy.bmp
  • 雨:rainy.bmp
  • 雪:sonwy.bmp

このファイルを書き換えることで、アイコンを変更できます。

天気アイコンファイルの画像フォーマット

  • 解像度:500 ピクセル x 500 ピクセル
  • 色数:2色(1bit) または フルカラー(24bit)
  • フォーマット:BMP

500×500ピクセルのBMPファイルとなっています。フルカラー(24ビット)のBMPの場合、白黒に変換して表示されます。

アイコンのサンプル

フリーのアイコンをいろいろ揃えてみました。

こちらダウンロードできます。

icons.zip

展開してできたフォルダの中のBMPファイルを、SDカードにコピーしてお使いください。

アイコンはこちらのサイトの一部を利用しました。

403 Forbidden

おつかれさまでした

多くの作業があって大変だったと思います。これで、いつでも天気予報がわかるようになりました。

フォトフレームに納めるととても素敵ですよ。

電子ペーパーの実験セットは↓こちら↓で購入いただけます

 

 

 

 

 

 

 

 

 

コメント

  1. 初心者です。昨年購入して遊んでいました。Yahooが終了して、しばらく使えなかったので、ガッカリしてました。プログラムのアップデートありがとうございました。無事に動いております。ただ一点、アップデートの日付で、月の表示が1カ月ずれています(本日は、3/21ですが、表示は2/21になっています)。ご確認ください。
    また、「電子ペーパーで遊ぼう実験セット」の「外出中」等の画面をモード切替ボタンで画面表示切替や、時計(年月日含む)が表示できる追加・拡張ソフトを紹介いただけると、この実験セットを長く(また、場所も自宅利用から職場でも使える様にしてみたいです)使えるので嬉しいです。ぜひ、ご検討ください。

    • 川村様
      電子ペーパー実験セットをご利用いただきありがとうございます。とても嬉しいです。
      バグ情報ありがとうございます。300行目の「CurrentTime->tm_mon」を「CurrentTime->tm_mon+1」とすることで修正できます。
      正:sprintf( updateTime , “%2d/%2d %02d:%02d UpDate”, CurrentTime->tm_mon+1,…
      誤:sprintf( updateTime , “%2d/%2d %02d:%02d UpDate”, CurrentTime->tm_mon,…
      ソースコードは修正済みです。
      改善案もありがとうございます。以前の「電子ペーパーで遊ぼう実験セット」はマイコンのメモリが少ないため時計を実装する余裕がなく、現在販売している「電子ペーパー無線LAN実験セット」は、マイコンのIOピン数が少ないためにスイッチが追加できず、所在表を作ることができないというジレンマがあります。何かいい方法があるといいんですけど…ちょっと考えてみます。ありがとうございました。また何かアイデアがありましたら、ぜひ教えてください。

pocket line hatebu image gallery audio video category tag chat quote googleplus facebook instagram twitter rss search envelope heart star user close search-plus home clock update edit share-square chevron-left chevron-right leaf exclamation-triangle calendar comment thumb-tack link navicon aside angle-double-up angle-double-down angle-up angle-down star-half status