UMEHOSHI ITA TOP PAGE    COMPUTER SHIEN LAB

Windows、android用のumehoshiアプリ

umehoshiアプリとは、

「umehoshiアプリ」は、これをインストールしたPCやスマフォを「UMEHOSHI ITA」とUSBケーブルで接続し、 「umehoshiEdit」で作成した 遠隔操作用の指示ファイル(.umhファイルを 転送して「UMEHOSHI ITA」をコントロールする時に使います。
(.umhファイルにはプログラムを含む 「UME専用Hexコマンド」が記述されます。)
また、「umehoshiアプリ」ツール同士でTCPによる通信が可能です。
それにより次のイメージで「UMEHOSHI ITA」を遠隔操作するなどの利用が可能です。

右側のAndoridはTCPサーバとして動かすため、テザリングをONにしてアクセスポイントにする必要があります。
(インターネットに繋げない状態でアクセスポイント化します。SIMフリーの機器の多くが対応可能ですが、使えない機器もあります。)
また、Wifiの同じプライベートネットワークで使うこともできます。umehoshiアプリをインストールしたPC同士で遠隔操作もできるでしょう。

上記イメージ[UMEHOSHI ITA]とUSBで接続してプログラムなどを転送するツールが「umehoshiアプリ」です。

「umehoshi」ツールの取得(ダウンロード)とインストール、接続の確認

「umehoshiアプリ」のプログラムは、以下のリンクからダウンロードできます。
これはUnityで作成したツールです。⇒ Windows用  Android用  変遷

Windows用の方は、ダウンロードした〇〇〇_APP_W.zipを解凍するだけで、後は「umehoshi.exe」を実行するだけです。
(〇〇〇の箇所は、例えば20211226のような年月日の情報になっています。)
Android用の場合、ダウンロードした〇〇〇_ume.apkをインストールするだけですが、 「Google Playストア以外からアプリをインストール」を行うために [設定]画面で「提供元不明のアプリ」にチェックを入れる必要があります。
(この手法は、悪意のあるアプリをインストールしてしまう危険性もあるのでインストール後は元の安全な状態に戻した方が良いでしょう。)
umehoshiアプリのアイコンは、で、これを開いた初期画面が次の左のイメージです。
まずは「UMEHOSHI ITA」の基板とUSBで接続します。
この左下のイメージの初期画面状態で、矢印で示す右上端のメニューボタンよりメニューを出して、 「Setting USB」項目を選び、「CONNECT」ボタンをタッチして「UMEHOSHI ITA」とUSB接続できる状態になります。
USBの接続の通信を確認する場合、右上の[エコーON/OFFボタン]で応答を確認できます。(確認後はONに戻してください)

なお、「UMEHOSHI ITA」のUSB サブライセンス は、Vender ID: 0x04D8、Prodact ID: 0xEC27で、右上の設定はその入力値です。
これは、Microchip社のサブライセンスを受けたものです。
ですが、このリンクより ソースからご自身でビルドして「UMEHOSHI ITA」に書き込む場合は、Vender ID: 0x04D8とProdact ID: 0x000A を指定してください。 それ以外のビルドではプログラムに合わせて、別の設定も指定することが可能になっており、 「CONNECT」ボタンを操作するとその設定値は記憶されて、次回の起動の初期値として現れます。

「CONNECT」ボタン操作で正しく「UMEHOSHI ITA」とUSB接続できた画面の例が、下記の左画面です。(OPENDが表示されます。)
([UMEHOSHI ITA]をリセットした後は、再び「CONNECT」ボタン操作が必要です。)
ここで、「Server Start」ボタンで右下の画面に変わります。

以上で、「umehoshi」ツールと「UMEHOSHI ITA」とUSB接続の確認ができたことになります。

「umehoshiEdit」ツールと「umehoshi」ツールのTCP通信

前述の状態で、下記イメージのように「umehoshiEdit」ツールよりumehoshiアプリへTCP通信を行います。
(双方を同じプライベートのネットワークにしてください。Wifiの場合、同じアクセスポイントで繋げてます。)

まず次のように、「umehoshiEdit」ツールから、接続処理を行います。
umehoshiアプリで表示している赤マル箇所のIP AddressとPort Numberが一致するように、「UmeHoshi TCP Client」の設定をして [connect]ボタンをクリックします。

「umehoshiEdit」ツールからの接続要求を受け入れられて、umehoshiアプリの色が下のように変化すればOKです。
この状態で、umehoshiアプリは「umehoshiEdit」からのTCP受信待ち状態になっています

「umehoshiEdit」ツールで、「.umh」の指示ファイルを右クリックして右側のumehoshiアプリへ送信するイメージを下記に示します。

上記の操作は、mdg3.c.hex.umhファイルをumehoshiアプリに送り、umehoshiアプリで[UMEHOSHI ITA]にHEXコマンドを送り、 そのコマンドが実行されているイメージです
そしてその応答文字列が、umehoshiアプリに送られてInputFiledへ表示して 同時に「umehoshiEdit」ツールへ送信されています。
「umehoshiEdit」では受信した文字列を[Commnication]タブ内に表示しています。
(「umehoshiEdit」ツールでの右クリックでこの操作ができるのは「.umh」の拡張子だけです。)
mdg3.c.hex.umhファイルは500までカウントするプログラムで、それがメモリにロードされました。

次にこのプログラムを実行させる「execute.umh」を送って、[UMEHOSHI ITA]で実行させている例も示します。

[UMEHOSHI ITA]で500までのUSBへの出力を行っており、それがサーバを介してクライアントの「umehoshiEdit」ツールで受信して表示しています。

mdg3.c.hex.umhのファイル内容を下記に示します。
これは、このページの実験3のコードから作ったものです。
1から500のカウントで、その値を文字列に変換して、USBへ出力の繰り返しのプログラム(msg3.c)です。
これをビルドして出来たHEXファイルの(msg3.c.hex)先頭行に"Load"の1行を追加したものです。

Load
S108000500000E0FFBD271C00BFAF1800BEAF21F0A00308
S10800050100088BF023C2061428C008042300100422CB7
S108000502000FF00443088BF033C20616294C47B827C63
S108000503000206162A41000C0AF2614000800000000E6
S10800050400000A0023CB04142340000428C1000C48FB7
S1080005050000400052409F840000000000000A0023CF7
S1080005060009C4142340000428C0D00042409F84000C1
S1080005070000000000000A0023C9C4142340000428CE0
S1080005080000A00042409F84000000000001000C28FDD
S088000509000010042241000C2AF05
S1080005098001000C28FF5014228E7FF4014000000009D
S10800050A80021E8C0031C00BF8F1800BE8F2000BD2737
S08800050B8000800E003000000001E
S10800050C000000000002222222222222222222222221C

2行目以降は、msg3.c.hexの内容をコピーして作っています。
これは「UME専用Hexコマンド」の文字列を列挙した表現です。
上記は0x80005000のアドレスに記憶される情報で、このアドレスの関数を実行させるファイルがexceute.umhです。
それは、次の内容です。

EXECUTE
R00800050000061

"R00800050000061"は、0x80005000番地を呼び出す「UME専用Hexコマンド」の文字列で、 先頭行の"EXECUTE"が表示ボタン用文字列です。
これらの文字列をumehoshiアプリを介して送って実行した例が、上記のイメージです。

上記の実行の後で、umehoshiアプリの[STOP]を押してサーバ処理を終えます。すると下のように初期色に戻ります。

umehoshiアプリ単体での[UMEHOSHI ITA]操作
上記のの実行で、[msg3.c.hex.umh]と[execute.uml.umh]を受信していますが、この情報はファイル化されて記憶されます。
それらファイルは、先頭行の文字列を表示するボタンとして、内容を実行できるようになっています。
ファイルをリストアップさせる場合、左下イメージ操作のように、ドロップダウンリストを[List coomands]に変更します。

上記中央にあるように、チェックを付けてボタンを見えるようにします。
右上のイメージは、ボタンの表示文字列を"EXECUTE"から"実行"に変更しています。


左下はドロップダウンリストを、[Place a command button]に変更して、 「Move」か「Size」のラジオボタンで操作を選択し、ドラックで位置やサイズを変更したイメージです。
  (ここで設定した、ボタンの表示内容や、位置、サイズは保持されて、次回の起動時に反映されます。
   また、同じファイル名.umhのファイルを転送しても初期化されません。)
下中央は、ドロップダウンリストを、[Execution Mode]に変更した状態で、Loadボタンを押した直後の状態です。
この状態は、USBで[UMEHOSHI ITA]と接続しており、 ボタンに対応している「UME専用Hexコマンド」の文字列を送って実行している状態です。
このように、「.umh」のファイルを受信し後はumehoshiアプリ単体で、対応するボタンで[UMEHOSHI ITA]を操作できるようになります。
右下は、USBケーブルを抜いた時の表示です。そこで右上端をタッチしてメニューを出したイメージです。

以上のように、ボタンが配置されたumehoshiアプリは、次で示すように、umehoshiアプリ同士で通信する場合の クライアント側(送信側)として使えます。

umehoshiアプリ同士で通信


[UMEHOSHI ITA]と接続した機器は Android端末でなくてもよく、umehoshiアプリをインストールしたPCでも可能です。
また、umehoshiアプリ相当のプロフラムを入れたRaspberry PI でも可能です。
上記イメージで、左側がクライアント、右側がサーバです。
クライアント側は左下のようにメニュー操作でクライアントに変更します。サーバ側は右下のように「Server Start」をタッチしてサーバとして待機させます。

右側サーバのumehoshiアプリで表示しているIP AddressとPort Numberと一致するように、 Client側の設定をして [connect]ボタンをクリックします。

TCPの接続が完了すると、クライアント側もサーバ側のアプリの背景色が、下のように変化します。
そして、[Load]ボタンを押して、[実行]ボタンを押したイメージです。
[Load]ボタンで[msg3.c.hex.umh]、[実行]ボタンで[execute.uml.umh]の内容がサーバに送信され、サーバーからUSBで[UMEHOSHI ITA]に送信され、 それが実行されて、[UMEHOSHI ITA]で行われた1から500の文字列出力が、サーバーに返され、それがクライアントに送り返されているイメージです。
なお上記の操作は、サーバ側で必ずしも[UMEHOSHI ITA]とUSB接続していなくても可能です。 その場合は[msg3.c.hex.umh]や[execute.uml.umh]ファイルの転送だけが行われます。

おまけの機能(カメライメージの送受信と 音声通話機能)

おまけの機能で品質は悪いのですが、 上記のようなサーバとクライアントの接続状態において、カメライメージの送受信と 音声通話ができます。
起動時の画面(サーバー画面)のメニュー操作で「On Camera」をタッチするカメラが選択できます。ここで相手に送るイメージとなるカメラを選択しておきます。
また「Camera Rotation」操作で90度ごとにカメラが画像が回転します。これも、相手に見せるための画面操作です。
この状態で、サーバ、クライアントを接続して通信可能状態にします。
サーバ側ではこれ以降のカメラ操作は行いません。後はクライアント側で操作することになります。
クライアント側メニューで、「Recive take picture」を選ぶと、サーバ側のカメラの画像が送信され、 それを受信したクライアント側で表示します。
また、クライアント側で「On Camera」を設定していれば、「Send Picture」の操作でサーバに画像が送られて、 サーバ側でその画像が出現します。

同じように、起動時の画面(サーバー画面)のメニュー操作で「Mic ON」をタッチすると、 マイクが選択されます。この状態でサーバ、クライアントの接続状態を作ると、マイクで拾った音を送信し続けます。

カメラもマイクもONにしてあれば接続状態で送信可能になります。ONしなければ送信されないだけなので、 その場合は一方通行の送信になります。
この機能はクライアント側からサーバ側を遠隔操作するための機能で、USB接続した遠くにあるUMEHOSIの近辺情報を知るためのものですが、 特に音に関しては、かなり品質が悪いです。

umehoshiアプリに記憶されたボタン用ファイル(〜.umhの指示ファイル)の削除方法

umehoshiアプリに転送されたファイルは、ドロップダウンリストを[List coomands]に変更した時、画面の下端に位置が表示されています。
このファイルを削除する方法は次のようになります。
ドロップダウンリストを[List coomands]に変更し、ボタンの表示文字列内容を編集操作で無しに変更します。
そして、ドロップダウンリストを[List coomands]以外に選択した時、ボタンの表示文字列内容が無いファイルだけ削除されます。

umehoshiアプリに、webページからボタン用ファイル(〜.umhの指示ファイル)を取り込む方法

上記で、umehoshiアプリに、ボタン用ファイルを送信(転送)する方法を示しました。
umehoshiアプリでは、それ以外にボタン情報を取り込む方法として「webページ」から取り込む方法が用意されています。 その場合は、「webページ」の方に次の細工が必要です。 取り込む情報は、任意のHTMLタグでid=の直後に"UMH〇〇"のような指定をする必要があります。
〇〇は半角の数字で、数字で区別して複数のプログラムを埋め込むことが可能です。
このWebページ自体に3つプログラムが埋め込んであります。
それを取り込む操作例を以下に示します。

まず、umehoshiアプリを左上で示したように、クライアントモードにします。
そして、プログラムが埋め込まれているURL(上記中央例では 「http://www.manabu.quu.cc/up/ume/ume_android01.html」 )をクライアント接続先用のTextFiledに入力します。
(ここには、http〜から始まるURL表現で入力してください。)
そして、右上端タッチのメニュー操作で、「Get form Web」を選択するだけです。(上中央のイメージ)
これで、画面下端に取得したbuttonの数が表示されれば、取得成功です。
右上は、[To Server]でサーバモードに戻った後、ドロップダウンリストを[List coomands]に変更し、 必要なボタンだけチェックを付けて、使えるようにしているイメージです。 このHTML内のソースには、id="〜"の表現が入っていなければなりません。 下記のHTML内のこの指定に着目してください。

このページ上部にあるLoad用と、EXECUTE用ボタンのコード例を以下に示します。


なお、idがUMH03のソースプログラムを下記に示します。
これはLED1点滅とブザー音で S O S のモール信号を出すプログラムです。

#include <xc.h>//sos.c
#include "common.h"

#define AdrStart	0x80005000 //下記main関数の起動アドレス

__attribute__((address( AdrStart  ))) void main(void);

void main()
{
	_clear_beep_code(); // 登録を先頭に初期化
	_set_beep_code((uint8_t)0b00000011);//S音パターンの登録
	_set_beep_code((uint8_t)0b11100011);//O音パターンの登録
	_set_beep_code((uint8_t)0b00000011);//S音パターンの登録
	_set_beep_code((uint8_t)0b11110000);//無音パターンの登録
	_set_beep_code((uint8_t)0b11110000);//無音パターンの登録
}

上記入力例のように、
http://manabu.quu.cc/up/ume/ume_android01.html
を指定して 「Get form Web」のメニュー選択操作を指定した場合、
Webページ内のid="〜"の表現がある命令群がWebページから取り込まれます。
Windowsの場合の取り込まれたファイルの記憶場所は次の位置になります。
C:\Users\ログインユーザ名\AppData\LocalLow\SHIEN_LAB\umehoshi\CMDFILES1
この中に、ume_android01.01.umh、ume_android01.02.umh、ume_android01.03.umhの名前のコマンドファイルができています。
この各ファイルのそれぞれは、id="UMH01"、id="UMH02"、id="UMH03"のpre内容より生成されます。

umehoshiアプリのTCP送受信メッセージの仕様

umehoshiアプリのTCPによる「.umh」の指示ファイルの送受信のイメージで動作しています。
このアプリは、メッセージの先頭の文字で識別され、後に続く情報その文字で左右されます。
この先頭文字により次の意味を持つ。下記では[ ]でデータの意味を囲んで説明しています。

先頭文字 概要
M 直後の1行の文字列([CR][LF]まで)をメッセージとして画面に表示
F Fまたはf 直後が[ファイル名][半角スペース][ファイルサイズ] [CR][LF]
[ファイルサイズで指定されたファイルデータ]でファイル送信
[ファイル名]の拡張子によって、動作が変わる。
ファイル拡張子が『.jpg』であれば表示する。
ファイル拡張子が『.umh』であれば、USB接続の「umehosi ita」へ送信
B 直後が[データ名][半角スペース][ファイルサイズ] [CR][LF]
[データ名]が"audio"であれば再生
G 直後が[ファイル名]でファイルの要求
受信側の応答はFであるが、応答は必須という訳ではない。
T "T\r\n"で、クライアント側のみが送信できる写真を撮る要求
サーバが受信すると、写真を撮ってそのファイルを送り返す。