本プログラムは pyftdi (https://github.com/eblot/pyftdi) ライブラリサンプルスクリプト pyterm.py に TWELITE 用のファームウェア書き込みスクリプトを組み込んだものです。以下の機能があります。
TWELITE 用ファームウェアの書き込み (TWELITE R/MONOSTICK)
シリアルポートでの動作振る舞いの確認
本スクリプトの OS X での実行には Python3 インタプリタが必要です。コマンドライン環境ならびに Python インタプリタの取り扱いに慣れた方を対象とします。
本スクリプトを Linux で動作させるには同等のパッケージ (libusb-dev, pyserial, pyftdi) を用意します。コマンドライン環境ならびに Python インタプリタの取り扱いに慣れた方を対象とします。
参考環境:Ubuntu 18.04 (x86-64 64bit), Python 3.6.5
Mac OS X または Linux
python3.5 以降
libusb
pyserial
pyftdi
以下の環境で開発、動作確認を実施しました。ただし、これら環境で動作を保証するものではありません。
以下の手順はパッケージ管理システムのバージョンアップや仕様変更で、そのまま適用できない場合があります。一般の情報などを参考にしてください。
お使いのディストリビューションのパッケージ導入法を調べてください。以下のパッケージが必要です。
python3.5 以降 (多くの場合導入されています)
libusb-dev
pyserial
pyftdi
パッケージ導入コマンド例。
TWELITE SDK をインストールしたディレクトリを ${TWELITESDK}
と記載します。
スクリプトは以下になります。
スクリプトに実行許可を与えます。
必要に応じて環境変数 PATH に追加しておきます。
libusb と OS のドライバが競合するため、ドライバをアンロード(無効に)しておきます。
FTDI 関連のドライバをアンロードします。
ドライバのアンロードは不要です。
エラーが出る場合は、ドライバをアンロードを試してみてください。
Ctrl+C
キーを入力することで制御プロンプトを表示し、いくつかの特別な操作が可能です。それ以外の場合は、直接 TWELITE 無線モジュールに入力文字列が送付されます。
書式解釈中は TWELITE からの電文は解釈できた電文のみ表示し、キーボードの入力はエコーバックされますが、アスキー形式の電文が完成した時に TWELITE に送付されます。
実行例中では、適宜改行を挟んでいます。
エラーが発生する場合は、シリアルポートの権限の問題かもしれません。root権限(sudo等)で実行します。
以下の例では App_UART (UART 通信アプリ) を書き込み、起動メッセージを確認しています。
通常通り + + + と3回入力しても同じ結果になります。
インタラクティブモードで m
B
Enter
S
と順に入力します。
以下の例ではApp_UARTがバイナリ形式で入出力を行ないます。Ctrl+C B
を入力します。
この状態では入出力は書式形式となります。キーボードの入力はアスキー形式、 TWELITE からの電文はバイナリ形式として解釈します。
TWELITE からの電文を受け取る例を示します。一番簡単な方法は TWELITE をリセットします。Ctrl+C r
を入力します。
出力された [dbf...]
がTWELITEからの電文で実際は0xdb 0xf1 0x67...
と続くバイナリ列になります。
反対に TWELITE に電文を送る場合はアスキー書式で入力します。:7800112233AABBCCDDX
と入力します。 ここでは ペイロードが 0x7800112233AABBCCDD のデータをバイナリ形式で TWELITE に送付しています。直後に応答として [dba18001]
が戻ってきています。
Ctrl+C Ctrl+C
を入力します。
環境
Mac OS X 10.11.6, Python3.5.1 (2018/05)
Ubuntu 18.04, Python3.6.7 (2018/05)
Mac OS X 10.14.2, Python3.7.2 (2019/01)
パラメータ
解説
-p ftdi:///?
または -p
デバイス一覧を表示します。
-p [デバイス名]
デバイスを指定します。
ftdi:///1
他にデバイスがない時。
ftdi://::MW19ZZUB/1
シリアル番号による指定。`
-b [ボーレート]
ボーレートを指定します。
-b 115200
115200bps を指定。
-F [ファームウェア]
ファームウェアを書き込みます。
-F App_Twelite.bin
ファイル名が App_Twelite.binを書き込みます。
--no-color
文字のカラー出力を抑制します。
--no-term
ファームウェアの書き込みのみを実施しターミナルを開きません。
入力キー
解説
Ctrl+C Ctrl+C
ターミナルを終了します。
Ctrl+C Ctrl+R
または Ctrl+C r
TWELITE 無線マイコンをリセットします。
Ctrl+C Ctrl+I
または Ctrl+C i
インタラクティブモードへ遷移する + + + コマンドを入力します。インタラクティブモード対応ファームウェアのみ有効です。
Ctrl+C A
書式の解釈を開始します。TWELITE無線マイコンからの出力とキー入力に対して、アスキー形式の解釈を行います。
Ctrl+C B
書式の解釈を開始します。TWELITE無線マイコンからの出力に対してバイナリ形式の解釈を行います。キー入力はアスキー形式で解釈します。
Ctrl+C N
書式の解釈を停止します。
ここではアクト(BINファイル)の書き込みと実行について解説します。
この節はWindows10環境のユーティリティTWE-Programmerを用いた解説です。
Linux/macOSではtweterm.pyを用います。本ページでの書き込み・実行の流れを参照いただいた上、tweterm.pyを利用ください。
TWE-Programmer, tweterm.pyはBINファイルの書き込み機能とターミナル機能がありますが、ターミナル機能については各システム用のターミナルソフトを利用することもできます。
Windows10: TeraTerm
Linux/macOS: screen など
出来上がったBINファイルをTWELITEに書き込むにはTWE-Programmerを使用します。詳しい使い方はこちらを参照ください。
BINファイルが出来上がれば、実機で動作させることになります。繊細な電子部品ですので、取り扱いには十分注意してください。以下に代表的な注意事項を記載します。
特にTWELITE Rを用いている場合は、多くの場合電子基板がケースなどを介さず直接外部に触れる状態で使用するため、意図しないショートやノイズなどUSBデバイスが正常に動作しない状態になる場合があります。
この場合は、アプリケーションを終了させUSBデバイスを抜き差しすることで通常は回復します。最悪、USBデバイスの破損やPCの破損も考えられます。
電子基板の取り扱いには十分注意してください。
回路の間違い
電源を入れる前にはもう一度回路を確認してください。
電池の逆差しや過大電圧には注意してください。
静電気
人感がない電圧であっても半導体の故障になりえます。大掛かりな対応をしなくとも、金属部に触れてから作業する・リストバンド・専用マットなど簡易にできる対応でも相応の効果はあります。
金属物などが触れることでのショート
電子基板の近くには金属物がないようにしてください。クリップなどが散らかっているとこれが原因でショートすることもありますし、電池が大放電して加熱する危険な状況も考えられます。
デバイスが認識されれば、新たにCOMポートが追加されます。複数あってわかりにくい場合は、抜いた状態でのCOMポートと刺した状態でのCOMポートの様子を観察してみてください。
デバイスマネージャでデバイスの存在が確認できない場合は、FTDI社のドライバ導入を行ってみてください。FT232R用のドライバを選択します。
{MWSDKインストールディレクトリ}/Tools/TWE-Programmerディレクトリを開き、TWE-Programmer.exe をダブルクリックします。
TWE-Programmer.exe を起動すると以下のような画面になります。画面例では、起動前に MONOSTICK を差し込んでいて COM6 に割り当てられています。
MONOSTICK や TWELITE R が表示されない場合は以下を試してください。
TWE-Programmer を終了する。
MONOSTICK や TWELITE RをPCから抜く(取り外す)。
もう一度MONOSTICK や TWELITE Rを差し込む。
TWE-Programmer を起動する。
これでもうまくいかない場合は以下も試してください。
PCから可能な限り他のUSBデバイスを取り外す。
PCを再起動してからMONOSTICK や TWELITE Rを差し込んでみる。
FTDI社のドライバを再導入してみる。
ファイルダイアログから BIN ファイルを指定します。
BINファイルの書き込みは、BINファイルを指定すると自動で行われます。
書き込みが成功するとTWELITEは自動でリセットして、ターミナルが表示されます(ターミナル接続するにチェックが入っている場合)。
MWSDK添付のアクトファイルは始動時にメッセージを表示します。何か表示されれば書き込みは無事終了し、TWELITE 無線モジュール上のアクトが無事に動作していることが確認できます。
ターミナルを開いたままで、アクトを編集して再度書き込みたいときはCtrl+Alt+W
キーを押します。
書き込みに失敗したときは、ターミナルは開かず、TWE-Programmerのウインドウ背景がピンク色になります。
書き込みが失敗したときは (再)書き込みボタンを押して、もう一度書き込みを実行してください。
TWE-Programmer が反応しないなど、うまくいかない場合は、以下を実行した上、USBへの接続からやり直してください。
TWE-Programmer を終了する
MONOSTICK や TWELITE Rを取り外す
場合によってはPCの再起動を行ってください。
TWELITE PAL での書き込み中に、ハードウェア・ウォッチドッグタイマーが作動し書き込みが中断する場合があります。再度、書き込みを行ってください。