2017年1月5日木曜日

「mbed オフラインの開発環境」の整備でのつまづき対応

mbedCLIの環境整備をした時のつまづき点のまとめです。

試した環境は、
Windows10Pro 64bit
RAM 8Gbyte
core i5


一個前の「EclipseとpyOCDでプロジェクトをデバックする」で、pythonはインストールしてある状態です。

参考web
こちらのwebで作業しました。 mbedCLIをWindowsで使ってみる(環境構築編)
そのうえで、このwebを読みました。mbed オフラインの開発環境


<Git>

2.11.0が最新だったのでそれを入れた。インストール時の設定は変えなかった。

<Mercurial>

4.0.1を入れた。これもインストール時の設定は変えなかった。

<GNU ARM Embedded Toolchain>

これは、「EclipseとpyOCD・・・」でインストール済

<各ツールのPTAHチェック>
Mercurialでエラー表示
インストール時にも警告が出ていたが、そのまま続けたら正常終了したのでほっといた。それが影響しているのか? とりあえずこのままで様子見。この警告の後コマンドプロンプトは正常に出力終了していた。


<mbedCLI>

インストールのコマンドで”python -m"をpipの前に入れないと受け付けてくれなかった。"python -m"を省略する設定があるのか?
インストールは正常終了した。


"mbed import https://・・・・"を実行するがエラーになる。(コマンドがないといわれる)

mbed.exeのPATH(C:\Python27\Scripts)がないからか・・・

pythonの解説
ということで、pathを環境設定に追加

PCを再起動して、再度実行。で通った

後は問題なくコンパイルから、mbedLPC1768で動作させるところまでできた。



2017年1月3日火曜日

「Eclipse と pyOCD でプロジェクトをデバッグする」の環境整備でのつまづき対応

「EclipseとpyOCDでプロジェクトをデバックする」の環境整備でいろいろつまづいたのでまとめておきます。

<eclipse>

eclipseが起動しませんでした。javaがないとのことで、oracleからダウンロード・インストールしました。これが、32bit版が選択されるらしくうまくいきません。(私の環境はwin10 64bit)


そこで自動選択ではなく、手動でインストールファイルを選択します。



javaのインストール後、jvm.dllをeclipseの eclipse.ini に設定します。
jvm.dllは下記のフォルダにありました。


iniファイルの設定は下記のとおりです。

<python>

pythonのインストール時にpath設定のチェックボックスが出なかったので、install後に手動で設定しました。

windowsの"設定"窓を開いて"path"で検索すると、設定画面が出てきます。







そこに"python.exe"があるフォルダを追加します。




pipでpyocdをインストールするには、DOS窓からコマンドを打ち込みます。


 "pip"を実行するには"pip"の前に、"python -m"をつける必要があります。



<eclipse>

errorが出ている。以下の方法でできた。

出ているエラーは2種
Program "echo" not found inPATH
Program "make" not found inPATH

FAQがあった(Eclipse Community Forums)
ここにも同じFAQ(Stack overflow: Program"make"not found in PATH)

しかし、最近のソフト・アプリは、説明書なしに気ままに作って、使う側が手探りで方法を探して、ネットで共有するものなのね。大本になるマニュアルや情報があるといいのに。

Cdriveを検索してもmake.exeがないので何かインストールを忘れているみたい。


echoのエラーが消えた


makeのエラーはCygwinをインストールする? FAQMake sure you have installed 'make' tool through Cygwin's installer.

cygwin64をインストールしてもmake.exeがなかった

こちらにmake.exeのインストールの記事

cygwin_setup-x86_64.exe から再度インストール。途中でインストールするファイルを選択するところがあった。


これでmake.exeが出てきた

make.exeのあるフォルダをPATH指定して

設定を有効にするために、再起動して、eclipseでコンパイルしたらmake PATHがないというエラーも消えた




コンパイルしてできたbinファイルをmbedLPC1768にコピーしたら動いた。

mbedLPC1768をつないでdebugしてみようとしたがつながらない・・・
疲れたのでここで中断。


<mbed(LPC1768)>

mbedのファームウエアをCMSIS-DAP対応に書き換える必要がある。
mbed LPC1768をMDK-ARMでデバック を参照

こちらからfirmware(rev141212)をダウンロードして、mbedにコピー。USBを抜き差しすればOK
USB-Serial driverも最新にしないとCMSIS-DAPが見えないそうです。ドライバ

設定-デバイス-接続中のデバイス で確認できる。


あっ動いた


2016年12月21日水曜日

(経過報告)MDX-15/20のコントローラをmbedLPC1768でつくる

これはmbed Advent Calendar 12/22の記事です。

<mbed LPC1768でやったこと>

年明けにMDX-20を購入しました。


それまではiModelaを使っていたので、



これと同じような作業環境を求めていろいろ調査していました。

MDX-20を使う
fusion360のCAMデータをMDX-15/20で使用する
MDX-15/20のCOM端子解析


MDX-20付属のアプリでは、板材からの部品の切り出し(CADで設計してCNCで出力)するようなことは想定していないため、fusion360で設計し、原点設定と、Gコード、RMLコードを出力するアプリを探して環境を整えてきました。

ただし、下記3点の不満は解消できません。

1.細かな原点調整ができない(特にZ軸)
2.制御用パソコンが占有される
3.パソコンとMDX-15/20の接続がCOM経由で、データフロー制御を行う
 最近のPCにはCOMポートがない。またUSB-Serial変換でフロー制御を行えるものは少ない

”1”については、探し出したパソコンアプリで対応できるのですが、ロータリーエンコーダでの操作感にはかないません。専用のコントローラも用意されていないので、MDX-20を直接制御して解決できないかと考えました。

幸い、MDX-20への指示はCOMポートで入力し、コマンド体系もRML言語として公開されていたので、解析は容易でした。

3か月くらいかかりましたが、以下の仕様のコントローラが完成しました。

1.ロータリーエンコーダによる原点調整
2.切削開始原点(ユーザ原点)の設定
3.制御用パソコン不要(USBメモリから切削データを受け取る)
4.ドリルの現在位置をmm表示する



今のところブレットボードで組んだ状態ですが、自分用で1台あればよいのでユニバーサル基板で本組します。







設計データを残すために回路図CADでのPCBデザインまで作業します。
(ハード、ソフトのデータは全部の作業が終わってから公開します)

おおむねの予定は、
1月:ユニバーサル基板での組み立て
2月:PCBデザイン検討
3~8月:プリント基板の製造、動作確認(現状予定なし)

プリント基板の製造は考えていませんが、おおむね10枚以上の希望があれば検討します。
その場合の予価ですが、

1.プリント基板のみ:4000円
2.プリント基板+部品:3万円
3.完成品:4万円

買いたいという人がいれば、このブログにコメントを入れておいてください。

2016年11月20日日曜日

デバック用print文記述いろいろ

C言語でのプログラムで、デバック用のprint文の扱いをこれまで、ifdefでやっていてprint文と合わせて3行になって見栄えが悪いと感じていました。

-例--------
#ifdef DEBUG
printf("debug \n");
#endif // DEBUG
-----------

mbedのlibraryを見ていたらスマートな方法で対応していました。

UART access over BLE
---------------------------------
#define NEED_CONSOLE_OUTPUT 1 /* Set this if you need debug messages on the console;
* it will have an impact on code-size and power consumption. */

#if NEED_CONSOLE_OUTPUT
#define DEBUG(STR) { if (uart) uart->write(STR, strlen(STR)); }
#else
#define DEBUG(...) /* nothing */
#endif /* #if NEED_CONSOLE_OUTPUT */
-----------------------------


などが出てきました。

"デバック256"を参考に、
-------------------------
#define DEBUG
#ifdef DEBUG
#define DEBUG_PRINT(...) printf(__VA_ARGS__)
#else
#define DEBUG_PRINT(...)
#endif // DEBUG

                strcpy(fileName, p->d_name);
                DEBUG_PRINT("detect = %s\n",fileName);
                ans = true;
------------------------
こんな感じで使ってみました。


2016年10月10日月曜日

mbed LPC1768で作るMDX-15/20 controler



161008より作成中



<PC-MDX間のシリアルケーブル接続表>
MDX-15/20 COM端子接続図

PC Dsub9Pin

MDX Dsub25Pin
PinNo
信号名
説明
信号方向
PinNo
信号名
1
CD
Lo:送信許可
Hi:送信禁止
20
DTR
2
RxD
受信(未使用)
2
TxD
3
TxD
送信
3
RxD
4
DTR
不要
5,8
CTS,DCD
5
GND
7
GND
6
DSR
未使用
4
RTS
7
RTS
Hi固定 *1
6
DSR
8
CTS
不要 *2
20
DTR
9
*1PC 7Pin6Pinと接続すれば、パソコン側の制御は不要

*2MDX-15/20側の20Pinと接続されている。パソコン側での認識不要


<参考・リンク>
RS-232Cコネクタ・信号方向資料

RS-232Cフロー制御の解説

2016年10月1日土曜日

fusion360のCAMデータをMDX-15/20で使用する

<概要>


3D CAD/CAMソフトのfusion360が出力するCAMデータ(Gコード、RMLコード)をrolandのMDX-15/20で利用する方法をまとめました。

ポイントは3つ。
1.MDX-15/20自体はGコードを利用できない
  GコードをRMLコードに変換するアプリが必要

2.MDX-15/20に直接Gコード、RMLコードを流し込む必要がある
  rolandが提供するアプリには、Gコード、RMLコードを直接扱うツールがない

3.MDX-15/20での原点設定を行うアプリがない
  Z軸の設定は本体ボタンで行う必要があり、微調整ができない。
  X,Y軸の調整はMDX-15/20付属のアプリで可能だが、Gコード、RMLコードのファイルを扱うことができない。

この3点に対応するアプリを見つけることが必要になります。

<fusion360側の対応>

CAMデータを作成するためのスクリプトを追加します。
autodiskのwebにあります。

3167_rolandrml.cps : RML用スクリプト。MDX-15/20の選択ができる
3166_rolandiso.cps : Gコード用スクリプト。MDX-40などGコードを解釈するrolandの機器用
              (このスクリプトを元に改造を行う必要がある。これは次項で説明)

fusion360へのスクリプトの設定の仕方は、 3168_settings Roland RML.prg で確認できます。


<Gコードデータの利用>

Gコード転送、原点設定アプリとして、NC-MODELA(使い方もこのwebにある)を使用します。使い方は、



このツールで扱えるGコードに合わせるためfusion360のスクリプト(3166_rolandiso.cps)を改造する必要があります。改造したスクリプトはこちらにあります。(このフォルダにはfusion360のCADデータから、GコードのCAMデータまでそろっています)

・補足
 NC-MODELAで扱えるGコードの種類に制約があるのと、Gデータは1行に1つの制限があります。この制限に合わせるためのスクリプト改造が必要になります。

・使い方
 fusion360でCADデータを作成し、上記のスクリプトでCAMファイルを出力します。
 NC-MODELAでMDX-15/20の原点設定を行った後、同じソフトでGコードデータをMDX-15/20に出力します。



<RMLデータの利用>

RMLの転送には、DropOutを使います。ソフトはこちら(Roland UK web)にあります。



原点出しには、MPG for MDX-20を使います。ソフトと説明はこちら。(bet*ak9*9のブログ VPANEL for MDX-20もどき)


いずれのアプリもMDX-15/20との接続にはMDX-15/20のPrinter Driverから接続するのが良いです。こうすると両方のアプリを同時起動して使うことができます。