エントリー

タグ「JamToast」の検索結果は以下のとおりです。

JamToast USBシリアル化&FlashAir向け電源強化

以前から触れていました、JamToastのUSBシリアル化と、FlashAirを使えるようにする電源強化を今回は紹介します。

 

USBシリアル化の利点としては、TVやキーボードが無くてもPCに繋ぐことで、TeratermやIJKB、IJUtilities等のツールを使用して入力と表示が可能となります。

また、FlashAirをメモリーカードとして使うことで、WiFi経由でIchigoJamとデータのやりとりが可能になります…が、IchigoJamからの電源供給では足りず外付けで電源回路を設ける必要があります。

 

使用するUSBシリアル変換のモジュールですが、秋月電子で販売されている「FT231X USBシリアル変換モジュール (AE-FT231X)」を選びました。モジュールの選定条件としては、今回は電源強化も併せて行うため、350mAの電流をUSBから取れるということにしています。

これ以外に使えるモジュールは、

  • 「FT-232RQ USBシリアル変換キット (AE-TTL-232R)」
  • 「FT232RL USBシリアル変換モジュール (AE-UM232R)」

の2つです。「超小型USBシリアル変換モジュール (AE-FT234X)」については、ポリスイッチが100mA(200mAでトリップ)のため使用できません。

 

ちなみに、IchigoJam(Uタイプまで)のUSBコネクタ部分には100mAのポリスイッチが付いています。そのためIchigoJam基板上のCN5から5V(VBUS)を引っ張ってきて電源強化するということはできません。

さて、回路図は次のようになります。5ピンのピンヘッダ以外は秋月電子で売っているパーツで構成しています。

 20160910171533.sch.png

この回路をJamToastのユニバーサル部分に作るわけですが、簡単な回路なので配線図は省略します。基板の写真を載せておきますので参考にしてください。

・基板表

20160910171712.JPG

・基板裏

20160910171747.JPG

 

JamToastからIchigoJamへの電源供給ですが。IchigoJam側のCN5にピンソケットを、JamToast側に長さ20mmのピンヘッダを取り付けています。このピンヘッダについてはaitendoで販売されている40ピンのものを切り取って使っています。。

20160910171828.JPG

 

使い方ですが、JamToastをIchigoJamに挿し、JP2とJP3のジャンパーを基板写真のように右側にします。次にUSBシリアルモジュールとPCをUSBケーブルで接続します。なお、IchigoJam側のUSBコネクタには何も接続しないでください。加えてIchigoJam側の電源スイッチは常時ONの側にしておきます。これで、JamToast側の電源スイッチをONにすれば、IchigoJamにも同時に電源が供給されるようになります。

 

( 余談 )

FlashAirをAPモードに設定しているときの電流波形を観察してみました。100ms間隔でビーコンを飛ばしているときに約250mAのパルスが発生していて、それ以外の定常時では約150mAという具合でした。おそらくビーコン以外で電波を出しているときにも、この程度の電流が流れると考えられるため、電源としては最低でも300mAは供給できるようにしたほうが良さそうです。

20160910174918.png

また、定常時でも150mA流れているということは、レギュレータは常に(5-3.3)*0.15=0.255Wの電力を消費しているのでそれなりに熱をもちます。外気より20~30℃ほど高くなるので触って少し気になる感じですが、放熱板は不要です。

 

JamToastファームウェア更新

JamToast(旧IJFW)のファームウェアを更新しました。

IJFW_firmware / oks486 (mbed)
https://developer.mbed.org/users/oks486/code/IJFW_firmware/

コンパイル後のbinファイルも置いておきます。

IJFW_firmware_Rev2_daf6c4719496.bin

MD5ハッシュ値: 5A3569F36AE39D2349467F75C45EFF2B

(JamToastのマイコンに緑のシールが貼っていれば、このバージョンのファームウェアになります。)

 

このファームウェアをJamToastに書き込むことで、次のことができるようになります。

  • IchigoJamファームウェアの書き換えを、実行する/しないの選択
  • IchigoJamファームウェアの書き換え後、jam.binを消す/消さないの選択
  • BASICプログラムの保存フォルダの指定

 

メモリーカード直下に「_config.txt」というファイルを作成し、下記のような項目を記述します。このファイルが無い場合は、後で述べるデフォルトの値が適用されます。

 _config.txt の中身

# JamToast configuration file
FirmUpdate = 0
FirmFileDelete = 0
BasDirectory = test

 

設定項目については必要なもののみ記述すればOKです。記述のない項目についてはデフォルト設定が適用されます。

行の初めに"#"を書くと、その行はコメントになります。

左側の項目名は大文字・小文字の区別がありますので正確に記述してください。右側の設定値についてはその区別はありません。また"="の両側にスペースやタブがあっても無くても構いません。

項目の書く順番は任意です。同じ項目を複数回書いた場合、最後に書いた設定値が適用されます。

 

各設定の説明
  • FirmUpdate
    電源ON時にIchigoJamファームウェアを書き換えるかどうかの設定です。0で書き換えない、1で書き換えます。デフォルトの設定値は1です。
  • FirmFileDelete
    IchigoJamファームウェアの書き換え後、ファームウェアのファイル(jam.bin)を削除するかどうかの設定です。0で削除しない、1で削除します。デフォルトの設定値は1です。
  • BasDirectory
    BASICプログラムの保存ディレクトリ(フォルダ)を指定します。ディレクトリ名はアルファベット、数字、記号(\ / : * ? " < > | 以外)の8文字までです。小文字が混ざっていても大文字の名前に統一されます。メモリーカード上にディレクトリが無い場合は自動的に作成されます。指定しない場合のデフォルトの設定値はルートディレクトリ(メモリーカード直下)です。

各設定値の反映は電源ON時に _config.txt を読み込むことで行われます。そのため、電源ON時にメモリーカードを挿していない場合、設定値は反映されずデフォルトの値となるので注意してください。BasDirectoryは特に注意です。

 

最後に、おそらく引っかかることはないと思いますが、コメント行を含め、1行の長さは64文字以下にしてください。バッファを64バイト分しか確保していないので、それを超えると以降の設定値が反映されなくなります。

 

<16.8.21 追記>
FILESコマンドでプログラムの内容が正常に表示されない不具合をRev2にて修正しました。

 

JamToast側のファームウェア書き換えについて

NT金沢2016に参加された皆様お疲れ様でした。そしてJamToastをご購入頂いた方々、誠にありがとうございます。

さてJamToastですが、近々機能追加を予定しています。予定している機能としては下記の2つです。

  • IchigoJamファームウェアの書き換え後、jam.binを消す/消さないの選択ができる機能
  • BASICプログラムの保存フォルダを指定できる機能

 

機能追加には、JamToast側にあるマイコンのファームウェアを書き換える必要があります。基板上にISP端子とリセット端子のランドを設けてありますので、USBシリアルアダプタを用いてPCで書き換えてもらう、というのが一般的な方法になります。

 ・・・ちょっと、面倒臭いですよね。

 

実は、JamToastとIchigoJamを使うことで、JamToast側のファームウェアも書き換えられます。勘の良い人はお気づきかもしれませんが、次のような手順で行います。

  1. JamToastの新しいファームウェアをJam.binという名前でメモリーカードに保存
  2. IchigoJamとJamToastを接続し、メモリーカードを挿して電源ON
    (ここでIchigoJamのマイコンがJamToastの新しいファームに書き換わる)
  3. IchigoJamのマイコンとJamToastのマイコンをソケットから外して入れ替える
  4. IchigoJamのファームウェアをメモリーカードに保存し、JamToastを使って書き換える

この手順ではマイコンが入れ替わってしまいますが、どうしてもそれが気になる場合は同じことを2回繰り返すことで元のマイコンの配置に戻ります。


少しネタばらしをすると、JamToastのマイコンをIchigoJamと同じ LPC1114FN28 にした理由が、このことだったりします。ただし最近発表された「IchigoJam T」ではマイコンが表面実装されているようで、残念ながらこの方法は使えません。

 

JamToast公開!

大変お待たせしました。これが「IJFW」改め「JamToast」だ!!

バリバリ!ズドドーン!! (効果音)

 20160623143800.jpg

 

というわけで、ようやく基板をお見せすることができました。基板製造の際、半田レベラーを指定したのに金メッキをしてくるというミスをされてしまいましたが・・・

そして、名前変更に伴い委託販売、というところまで実はやりたかったのですが、いろいろと大人の事情で難しいと判断して見送ることにしました。その代わり、まだ公開していなかったハードウェア部分のデータをgithubにて公開します。公開データは全て、クリエイティブ・コモンズ・ライセンス(CC BY)に従います。

 

今後は、JamToastでFlashAirやUSBシリアルアダプタを使うための製作記事を載せていく予定です。

JamToastの情報は特設ページにまとめています。それでは皆様楽しいIchigoJamライフをお楽しみください。

---

余談ですが、開発時に入手したパーツが結構余っているので、面倒臭がりな人向け(?)にこれらをまとめたキットを準備中です。

現在のところ下記のイベントにて、京都電創庵のブースで販売を予定しています。

  • NT金沢 2016
  • Maker Faire Tokyo 2016
  • Ogaki Mini Maker Faire 2016

気になる方は是非お越しください~。

 

IJFW 機能詳細

前回はIJFWが実装している機能について簡単に触れましたが、今回はその詳細について説明します。(少し内容が被る部分もありますが・・・)

 

IchigoJamファームウェアの書き換え

IJFWの電源(IchigoJamの電源スイッチと連動)をONにしたとき、IJFWはメモリーカード上にIchigoJamファームウェアのファイル(jam.bin)が存在するかどうかをチェックします。存在すれば自動的にIchigoJam側のマイコンをISPモードにしてファームウェアの書き換え処理に移ります。

書き換え中はCARD-LEDが点灯します。書き換えが終わったらCARD-LEDが消灯し、IJFWはIchigoJam側のマイコンを再起動させます。書き換え時にエラーが発生した場合、POW-LEDとCARD-LEDが共に点滅を繰り返して知らせます。

書き換えに成功した後、jam.binは自動的に削除されます。

 

BASICプログラムのセーブとロード

IchigoJam側からはI2C-EEPROMが繋がっているように見えるので、使い方はそれと同じです。SAVE/LOADコマンドで、プログラム番号は100~227を使用します。

SAVEコマンドを入力すると、例えばプログラム番号が100の場合、メモリカード直下に「IJ100.BAS」というファイル名でプログラムが保存されます。ファイルが無い場合は新規に作成され、ファイルが存在する場合は上書きされます。

これらのファイルはパソコン等でコピーしたり移動したりすることができます。ファイルはテキストファイルではなくバイナリファイルです。テキストエディタ等でプログラムを編集することはできません。これはIchigoJamにPCで表示できない特殊な文字があり、IJFW側で対応できないためです。

 

任意のデータの保存と読み出し

IchigoJam上からI2Cコマンド(I2CW/I2CR)を用いて、アドレス#11に対してライトおよびリードを行うと、メモリカードにデータを保存したり読み出したりすることができます。


データを保存するときのコマンド

R=I2CW(#11,#700,1,#700,2)

コマンドバイト部はダミーです。書き込みデータに反映されません。アドレスは何を指定してもかまいませんが、長さは1バイト固定です。データバイト部には書き込むデータのアドレスと長さを指定します。最大長は512バイトです。512バイトを超えたデータは無視され書き込まれません。

コマンドを実行すると、メモリカード直下に「IJDATA.DAT」に書き込んだデータが保存されます。ファイルが無い場合は新規に作成され、ファイルが存在する場合は上書きされます。


データを読み出すときのコマンド

R=I2CR(#11,#700,1,#701,2)

コマンドバイト部はダミーです。書き込みデータに反映されません。アドレスは何を指定してもかまいませんが、長さは1バイト固定です。データバイト部には読み出し先のアドレスとデータの長さを指定します。最大長は512バイトです。

コマンドを実行すると、メモリカード直下の「IJDATA.DAT」から指定バイト数のデータがIchigoJamへ送信されます。

ファイルが存在しなかったり、指定バイト数のデータが無い場合でも、I2CRコマンドは正常終了となります。エラーの処理についてはBASICプログラム側で対応してください。

 

連続追記(ロガー)モード

IchigoJam上からI2CWコマンドを用いてアドレス#12にライトを行うと、メモリカードにデータを追記し続けることができます。ロガーモードのコマンドを実行する前に、後述するコントローラのリセットを必ず行ってください。

コマンド

R=I2CW(#12,#700,1,#700,4)

コマンドバイト部はダミーです。書き込みデータに反映されません。アドレスは何を指定してもかまいませんが、長さは1バイト固定です。データバイト部には書き込むデータのアドレスと長さを指定します。最大長は512バイトです。512バイトを超えたデータは無視され書き込まれません。


ロガーモードでは下記の仕様に従ってデータが保存されます。

  • 一回のコマンドで書き込めるデータのサイズは512バイトまで。
  • データが保存されるファイル名は「0000.dat」から始まり、ファイルサイズが1MBを超えた時点で、ファイル名の数字が+1された新たなファイルに書き出される。
  • 1023.datまでファイルが作成されると次は0000.datに戻る。元の0000.datは上書きされる。
  • ファイルは全てdataディレクトリ(フォルダ)に保存される


なお、一度に書き込むデータのサイズが512バイト未満の場合、コントローラー内部にバッファリングされ、すぐにはメモリーカードに書き出されません。さらにデータを書き込んで、合計で512バイト以上になった時点でメモリーカードに書き出されます。

この動作はメモリーカードの劣化を防ぐためですが、途中で電源を切断した場合など、一部のデータがメモリーカードに書き込まれずに消えてしまう可能性があるので注意してください。

バッファリングされたデータが残っている場合、コントローラのリセットを行うことで、メモリカードに書き出すことができます。ただしBASICプログラム側でリセットの仕組みを入れる必要があります。

 

コントローラのリセット

IchigoJam上からI2CRコマンドを用いてアドレス#12にリードを行うと、コントローラー(IJFWのマイコン)の内部状態がリセットされます。ロガーモード使用後でバッファーに残っているデータがあれば、メモリーカードに書き出されます。

コマンド

R=I2CR(#12,#700,1,#700,1)

コマンドバイト部、データバイト部ともにダミーですが、リード先のアドレスはプログラムで使用していない場所を指定してください。

 

各機能の位置づけとしては、基本機能(初心者向け)として、ファームウェア書き換えと、BASICプログラムのセーブ&ロード。マニア(上級者)向けとしてそれ以外の機能がある、というところでしょうか。

 

<追記 16/4/20>

「任意のデータの保存と読み出し」、「ロガーモード」、「コントローラのリセット」のスレーブアドレスを変更。秋月電子で売っているセンサー類となるべく被らないアドレスにしました。

ページ移動

  • ページ
  • 1
  • 2

ユーティリティ

Author


oaks (twitter: @oks486)

記事の内容に関しては無保証です。何事も At your own risk ってことでよろしく。
リンクはご自由にどうぞ。

SPAM対策が面倒なため現在コメント投稿機能を停止しています。あしからず...

検索

エントリー検索フォーム
キーワード

Feed

リンク