カテゴリー
IchigoJam

ESP-WROOM-02を使ったファイル共有のサンプルプログラム試作品

IchigoJam用のWi-Fiシールド「MixJuice」のファームウェアを書き換えて、Windows PCから簡単にIchigoJam用のプログラムを転送する試作品を作成してみました。
そのうち、MicJackや、MixJuiceでも対応されると思いますが、それまでに使ってみたい人や、似たようなものを作成している人向けの試作品です。
※まだまだ不具合が存在していると思います。
※MixJuice本来の機能は含まれていません(MicJackに期待しましょう)。
関連情報
robo8080さんのTwitter:
MicJack:
MixJuice:

できること

もととなるスケッチは、ESP-WROOM-02を使って作成した各種IoTセンサから得られた情報を、IchigoJamへ転送し、テレビ画面に表示するために作成しました。
WebブラウザからIchigoJamへBASICコマンドを送って、その応答を確認することもできます。
以下、どのようなことができるかをまとめました。
機能1.各種IoTセンサからの受信データの表示
基本機能であるIoTセンサからの情報表示のデモです。ブレッドモードの中央にあるマイコンにはIchigoJam BASICのファームウェアを、右側にあるモジュールには専用のスケッチを書き込みます。
各種IoTセンサから受信したデータをテレビに表示する機能の様子
機能2.ブラウザからIchigoJamをコントロール
動かしたときのウェブブラウザからの画面です。素っ気ないです。
IchigoJamへ「? VER()」を送信し、バージョン情報「12025」を受信した様子
ブラウザ画面の「IchigoJam STATUS」はIchigoJamからの応答を表示する部分です。また、「HTTP GET」はIchigoJamへBASICコマンドを送信するための手段です。5つの固定命令ボタンのほか、テキストボックスにBASICコマンドを入力して実行することもできます。
「HTTP POST」は短いプログラムの簡易転送用です。長いプログラムや特殊文字、記号が含まれたプログラムを転送することはできません。
「FTP Server」の部分が、今回、新たに追加した機能です。詳しくは後述します。
「NTP Client」は、時刻を取得する機能です。ブラウザの下部に現在時刻を表示します(今のところ、ファイル共有機能との連携はしていません)。
機能3.ファイル共有機能
今回、追加したFTP Server機能です。Windows PCなどからファイルをアップロードしたり、ダウンロードすることができます。
FTPサーバ部にはライブラリ(https://github.com/nailbuster/esp8266FTPServer)を使用しましたが、もともとはFileZilla専用でファイル一覧をFTPのMLSDコマンドで取得する仕様でした。Windowsで使用するLISTコマンドがうまく動作しておらず、問題個所を見つけて以降も、私には、なかなか対策することができませんでした。そんな中、IchigoJam FANグループの尾野さんから「robo8080さんが対策済」との情報を得て、Twitter内(https://twitter.com/robo8080/status/777444520396926976)でrobo8080さんの情報を見つけ、ようやくWindowsでも共有できるようになりました。
この機能を使って、Windowsパソコンで作成したIchigoJam BASIC用のプログラムをMixJuiceへ保存し、IchigoJamから容易にアクセスすることができるようになりました。
これで、制約だらけだったHTTP POSTによるプログラム機能は、拡張しないまま不要になってしまいました。

使用方法

製作方法の説明の前に、使用方法から説明します。初めて使用する場合は、ファイルシステムの初期化が必要です。IchigoJam BASICで以下のコマンドを実行して下さい。「MJ FORMAT」の部分は必ず大文字で入力します。

?"MJ FORMAT

フォーマットが完了したら、無線LANアクセスポイントへ接続します。下記のssidとpassは、お手持ちの無線LANアクセスポイントのものを使用してください。一度、設定すれば、ファイルシステム内にSSID(ssid)とパスワード(pass)を保存します。暗号化していないので、ESPモジュールを廃棄する際は少なくともFORMATを再実行してください。

?"MJ APC ssid pass

MJ APC命令を実行後、しばらくすると、ネットワークに接続し、MixJuiceに割り当てられたIPアドレスと、現在時刻が表示されます。
?"MJ APC ssid pass
MJ APC ssid pass
OK
'Connecting to ssid
'''''''''''''''''''''''''  …………………………………………………………..(進捗表示)
'192.168.XX.XX ……………………………………………………..(MixJuiceのIPアドレス)
'NTP OK
'HTTP Serv.
'UDP listen
'FTP Serv.
' 2016/11/27,12:23:47 …………………………………………(現在の時刻)
ファイルシステムへアクセスする
に、インターネットブラウザからMixJuiceのIPアドレスへアクセスして、動作確認してみてください。

http://192.168.XX.XX/

ファイルシステムへアクセスするには、エクスプローラへIPアドレスとともに以下のように入力します。ブラウザにも表示されるので、コピー&ペーストすればよいでしょう。FTP用のアカウントとパスワードはソースコード内で固定です。長期的に使用する場合は変更してください。ただし、SSIDやWindowsアカウントとは異なるものにしたほうが良いでしょう。

ftp://cqpub:bokunimowakaru@192.168.XX.XX/

アクセスに成功したら、BASICプログラムをファイルシステムへコピーしてください。プログラムの拡張子は「txt」もしくは「bas」にしてください。
IchigoJam側からファイルシステム内のファイルを確認するには、下記の「MJ FILES」コマンドを使用します。
?"MJ FILES
MJ FILES
OK
'?"MJ LOAD test.txt
'?"MJ LOAD test.bas
'?"MJ LOAD log.csv
以下のように「MJ LOAD」コマンドを入力する、または上記からダウンロードしたい、プログラムやファイルの先頭の「'」を消して「Enter」を押して、IchigoJamへファイルをダウンロードすることができます。

NEW
OK
?"MJ LOAD test.txt
MJ LOAD test.txt
OK
10 ?"Wataru Kunino"
20 end

IchigoJamからファイルを保存する機能については、そのうち実装するかもしれませんが、MicJackが登場したら、これが最終版になるかもしれないです。きっと、尾野さん次第です。

必要なハードウェア

  • IchigoJam U または IchigoJam T
  • Mix Juice
  • 無線LANアクセスポイント
  • USB シリアル変換アダプタ (AE-FT234X)
  • シリアルを接続するためのジャンパ線
  • パソコン(ファームウェアを書き込むために必要)

ファームウェアを書き込む方法

MixJuiceをIchigoJamに「接続しない状態」で、MixJuiceのIO 0(CN4の一番奥)をGNDに接続し、USBシリアル変換アダプタを接続します。MixJuiceの電源を入れると、ファームウェア書き換えモードで起動し、LED 1が薄く点灯します。

書き込むためのファームウェアは下記からダウンロードすることができます。
ファームウェア(ソースコード含む)
ダウンロードしたZIPファイル内の下記のファイルがファームウェア
example22a_jam.ino.bin
また、ファームウェア書き込みツールはESPモジュールの開発元のEspressifからダウンロードすることができます。バージョンは、2.3または2.4を使用してください。
Espressifダウンロードページ
FLASH_DOWNLOAD_TOOLSをダウンロードしたら、デスクトップなどにZIPを展開し、「ESP_DOWNLOAD_TOOL_V2.3.exe」(または ESP_DOWNLOAD_TOOL_V2.4.exe)を起動します。起動するとコンソール画面(CLI画面)と以下のようなGUI画面が開きます。一番上のボックスへファイル「example22a_jam.ino.bin」を入力し、書き込みます。
詳しい情報:
http://15jamrecipe.jimdo.com/mixjuice/ファームウェアの更新/
書き込みが完了したら、USBシリアル変換アダプタやIO 0のジャンパ線を取り外してから、IchigoJamに接続し、電源を入れてください。

ご注意

作成したサンプルプログラム(スケッチ)は試作品です。不具合などがあると思いますが、当方は一切の責任を負いません。
また、致命的な不具合に気づき、直された方は、当方までお知らせくださればありがたいです。
by ボクにもわかるIchigoJam用マイコンボード

 - 
Chinese (Simplified)
 - 
zh-CN
Chinese (Traditional)
 - 
zh-TW
English
 - 
en
French
 - 
fr
German
 - 
de
Italian
 - 
it
Japanese
 - 
ja
Korean
 - 
ko
Russian
 - 
ru
Spanish
 - 
es