趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

ESP8266 搭載の WeMos D1 コピーボードを調べてみました

Arduino UNOを購入した時に合わせてWeMos D1のクローンも購入していて、
暫く忘れていたのですが、今回、手持ちのものを見直していた時に見つかったので
調べてみました。これはメインチップがESP8266でWiFiの機能が付いていて、
IOTでの利用に適したものでした。また、メモリのサイズも大きくUNOの時の様に
メモリの残りを気にしながらコードを書く事からは解放されました。ただし、
I/Oの数がUNOより少なく、UNOを完全に代替するものでは有りませんでした。
(その点はとても残念です。) こちらで調べた状況は次の様になります。

<WeMos D1 コピーボードの概要>
  購入した開発用の「WeMos D1 コピーボード」はArduinoのUNOとの互換性を
  考慮したもので、次の様なものでした。
  イメージ 1

  イメージ 2 


  1.WeMos D1ボードのコピー版(最初の写真はWebのカタログ)
  2.メインチップとしてESP8266チップを搭載
  3.Wifiの機能モジュールを搭載
  4.Digital I/O - 11, Analog IN - 1
  5.ポート出力は3.3V
  6.ROM 1Mバイト、RAM 80Kバイト

<関連資料>
   1.WeMos D1 カタログ
        https://wiki.wemos.cc/products:d1:d1
       
   2.ESP8266データシード
        http://www.kyohritsu.jp/eclib/OTHER/DATASHEET/WIRELESS/esp8266exdata.pdf

   3.ESP8266開発環境の構築
        http://trac.switch-science.com/wiki/esp_dev_arduino_ide

   4.グラフィックライブラリ(KMR-1.8 SPI LCD の表示利用)
         Adafruit_GFX  : URL  https://github.com/adafruit/Adafruit-GFX-Library
         Ucglib  Arduino IDE のライブラリを管理よりインストール

   5.ビットマップファイル作成ツール
         画像データの補正と変換 : Windows OS の ペイント
         画像データのサイズ変更    Caesium Image Compressor
                         URL   https://saerasoft.com/caesium/  

<開発環境の追加>
  ESP8266のチップをArduinoIDEで取り扱うには、コアにESP8266のボード
  情報を追加する必要が有ります。ボードマネージャに提供元のURLを登録した
  上で、ライブラリーマネージャーからインストールする事ができます。
  詳しくは、上記関連資料の「ESP8266開発環境の構築」をご覧下さい。

<コード作成上の注意項目>
  ESP8266はチップ内にハード的なウォッチドックタイマーが有り、長時間の
  ループ処理が有ると、チップのリセットが発生します。ネット上の情報によると、
  次の2つの方法が有効の様で、今回はそれらを適宜利用してリセットの発生を
  回避しました。

   1.ウォッチドックタイマーのリセット 
                     yield() もしくは delay() 実行
   2.ウォッチドックタイマーの長時間セット   
                           ESP.wdtEnable(xxxx) xxxx : 設定時間(mS)

   注意:上記2の処理をセットアップで行うと、書き込み時の最初のリセット時に
              これが働いて、以後のフラッシュメモリへの書き込みが出来なくなる
              様です。(その時は下記の対応が必要です。)


<途中からコードの書き込みができない時>
  最初はコードの書き込みが出来ていても、書き込む内容によって、次から書き込み
  ができない事が有りました。その場合は、Webからの情報による次の処理で対応
  できました。

   1.UNO互換でD8(ESP8266のGPIO0)ピンをGNDに接続
   2.その状態でボード(CPU)のリセットを行う
   3.書き込みの障害が出ていないコードを書き込む
   4.以後は以前の通りの方法が可能となる

<ボード選択とサンプルスケッチ>
   イメージ 3

<テスト内容と結果>
  テストとしは次の様な動作を目標としました。
 
    1.KMR-1.8 SPI LCD をUNOで動作確認した内容をこのモジュールでも
          動作させる
    2.ESP8266のサンプルスケッチの「SDWebServer」をKMR-1.8 SPI LCD
          組み合わせて動作させる。
    
   動作させた結果としては、次の様なものでした。

    1.UNOの代わりの動作
         そのままでは、途中でウォッチドックタイマーが働いてチップにリセットが
         掛かって、動作が途中で止まりました。その為、止まった部分を確認しながら
         適宜 delay(0) を挿入して、最後まで動作する様にしました。なお、スライド
         ショーのソフトではSDの挿入確認を行っている部分で処理時間が時々長く
         なるとリセットが掛かっていましたが、これに関しては、ウォッチドック
         タイマーの時間を長く設定する事で回避しました。

    2.SDWebServerの動作
         KMR-1.8関連の初期設定をWifi 初期設定の前に行うと描画ができる様に
         なりました。ただし、KMR-1.8関連の初期設定の後にdelay()を入れて
         Wifi.begin()の処理が遅れると、Wifiのコネクトができなくなる様です。
         今回はサンプルなので、上手く行く状態でOKとしましたが、本格的に利用
         する場合には、初期設定のシーケンスの詳しい調査が必要だと思いました。

    3.メモリの使用量
         Blink(Lチカ)      
            flash memory 222,201/1,044,464 (21%); ram 31,576/81,920 (38%)
         Ucglib slide show
            flash memory 244,809/1,044,464 (23%); ram 37,268/81,920 (35%)
         SDWebServer
            flash memory 273,811/1,044,464 (26%); ram 41,912/81,920 (51%)

    4.その他、チップからの出力が3.3Vなので、KMR-1.8 とはレベル変換の
          抵抗無しで接続可能となりKMR-1.8 との相性はとても良いかと思いました。

 [機器の接続]
    イメージ 4

    イメージ 5

 [SDWebServer Client サンプル]
    イメージ 6


 [コードとサンプル]
    コードとビットマップファイルおよびSDWebServer動作確認時のSD用データ
    関連の資料一式は次のURLからダウンロード可能です。なお、SDWebServerを
    利用する場合は、スケッチ内のSSIDとそのパスワードをご利用中のWifiのものに
    合わせて下さい。

      関連資料一式

 [動作状況]
  動作状況は次のURLから確認できます。