コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

PCBGOGOで基板を作ってみた

 http://www.pcbgogo.jp/:Title=PCBGOGOというプリント基板製造サイトで基板を作ってみました。ブログを書くと割引券がもらえるというメールを前にもらったので、もう遅いかもしれませんがブログを書いてみます。
 割引券を期待するということは、また、頼んでみようかなと思っているところですので、決して基板の品質が悪いということは無くて、全然、良かったです。

基板が届く

 基板は何故かPCBWayの箱に入って、メモ帳とペンと一緒に届きました。得した気分です。基板は真空パックされているわけではなく、袋に入っていただけでした。
[:W480]

発注した基板は

 発注した基板は10枚。
 約40x50mmの二層基板で、板厚み1.6mmの有鉛はんだ、青レジストで注文して、だいたい注文後 1週間で届きました。FusionPCBに比べて早いです。これで値段が1181円。送料が同じくらいだったかな、ちょっと忘れました。
 以下が届いた基板です。
[:W480]
 ちょっと、写真がピンボケていますが、シルクもきれいに仕上がっています。FusionPCBよりもきれいだと思います。

 とりあえず、割引券をもらう前に頼んでしまうと思いますが、今回頼んだ基板が来るのが楽しみです。

何に使うの

 この基板は、http://wakayamarb.org/:Title=Wakayama.rbコミュニティで作っているRubyボード基板http://gadget.renesas.com/ja/product/citrus.html:Title=GR-CITRUS用のモーター制御基板です。現在、Wakayama.rbではこの基板を用いて下に紹介するような動くものを作っています。はんだ付けが苦手な方でも動くものが作れるように、はんだ付けをすることなく、Rubyのプログラムを書くだけで動かせるようなものつくりを目指しています。

Ruby和歌山勉強会

 月に一回、和歌山市内でRuby和歌山勉強会を開催しています。https://wakayamarb.doorkeeper.jp/events/59413:Title=次の開催は2/29です。ご興味のある方は、是非参加してください。
https://wakayamarb.doorkeeper.jp/events/59413

 以上です。

Android Studioを日本語化する

Android Studioを日本語化するのに、なかなか時間がかかったので、備忘録として書いておきます。
Android Studioのバージョンは1.5.1、OSはWindows7 64bitです。

Android Studioの表示フォントを変更する

Android StudioのFile - Settings を選んで、Settings画面を出します。
Appearance & BehaviorのAppearanceを選んで、Override default fonts by (not recommended):にチェックを入れます。

これで、フォントにメイリオが設定されるので、日本語が化けずに表示されると思います。

日本語ライブラリをダウンロードする

GitHubにあるyuunaさんのIDEA_resources_jpからZIPファイルをダウンロードします。ダウンロードはDownload ZIPボタンです。ダウンロードしてZIPを解凍すると、resources_jp.jarが入っているので、これをAndroid Studioのlibフォルダにコピーします。

Android Studioのlibフォルダ

Android Studioのlibフォルダがどこにあるのか探しました。一番簡単に見つける方法は、WindowsのスタートメニューにあるAndroid Studioのアイコンのプロパティを見ると、そこに「リンク先」ファイルのパスが書かれているので、そのファイルがあるbinフォルダと同じところに、libフォルダもあります。

上の場合は、

C:\Program Files\Android\Android Studio\bin\studio64.exe

となっているので、libフォルダは、ここですね。

C:\Program Files\Android\Android Studio\lib

libフォルダにresources_jp.jarをコピーする

libフォルダにresources_jp.jarをコピーして、Android Studioを再起動します。

完全ではないですが、これで少しはAndroid Studioが日本語化されたと思います。

mruby1.2.0をrx63nようにmakeしてみる

今年はブログもがんばって書いていこうかなと思っています。
新年早々、最新のmrubyをビルドしてみました。

とりあえず、makeできました。

build_config.rb

build_config.rb にrx用のクロスビルド環境を追記して、

# Cross build for Renesas RX63N
MRuby::CrossBuild.new('rx63n') do |conf|
   toolchain :rx63n

#   conf.cc.flags << "-m32"
#   conf.linker.flags << "-m32"
#
#   conf.build_mrbtest_lib_only
#
   #conf.gem "#{root}/mrbgems/mruby-array-ext"
   ##conf.gem "#{root}/mrbgems/mruby-bin-debugger
   ##conf.gem "#{root}/mrbgems/mruby-bin-mirb"
   ##conf.gem "#{root}/mrbgems/mruby-bin-mrbc"
   ##conf.gem "#{root}/mrbgems/mruby-bin-mruby"
   ##conf.gem "#{root}/mrbgems/mruby-bin-mruby-config"
   #conf.gem "#{root}/mrbgems/mruby-bin-strip"
   #conf.gem "#{root}/mrbgems/mruby-compiler"
   #conf.gem "#{root}/mrbgems/mruby-enumerator"
   #conf.gem "#{root}/mrbgems/mruby-enum-ext"
   #conf.gem "#{root}/mrbgems/mruby-enum-lazy"
   #conf.gem "#{root}/mrbgems/mruby-error"
   #conf.gem "#{root}/mrbgems/mruby-eval"
   #conf.gem "#{root}/mrbgems/mruby-exit"
   #conf.gem "#{root}/mrbgems/mruby-fiber"
   #conf.gem "#{root}/mrbgems/mruby-hash-ext"
   #conf.gem "#{root}/mrbgems/mruby-kernel-ext"
   #conf.gem "#{root}/mrbgems/mruby-math"
   conf.gem "#{root}/mrbgems/mruby-numeric-ext"  #10.chr
   #conf.gem "#{root}/mrbgems/mruby-object-ext"		
   #conf.gem "#{root}/mrbgems/mruby-objectspace"
   #conf.gem "#{root}/mrbgems/mruby-print"
   #conf.gem "#{root}/mrbgems/mruby-proc-ext"
   conf.gem "#{root}/mrbgems/mruby-random"
   #conf.gem "#{root}/mrbgems/mruby-range-ext"
   #conf.gem "#{root}/mrbgems/mruby-sprintf"
   #conf.gem "#{root}/mrbgems/mruby-string-ext"	#str.split(",")
   #conf.gem "#{root}/mrbgems/mruby-struct"
   #conf.gem "#{root}/mrbgems/mruby-symbol-ext"
   #conf.gem "#{root}/mrbgems/mruby-test"
   #conf.gem "#{root}/mrbgems/mruby-time"
   #conf.gem "#{root}/mrbgems/mruby-toplevel-ext"
#
end

rx63n.rake

rx63n.rake を作って、

MRuby::Toolchain.new(:rx63n) do |conf|
  toolchain :gcc

  TOOL_PATH = "/usr/local/tkdn-20110720/rx-elf/bin"

  conf.cc do |cc|
    cc.command="#{TOOL_PATH}/rx-elf-gcc"
    cc.flags << "-Wall -g -O2"
		cc.defines << "__CYGWIN32__"
    cc.compile_options = "%{flags} -o %{outfile} -c %{infile}"

    conf.linker do |linker|
      linker.command="#{TOOL_PATH}/rx-elf-ld"
    end
    conf.archiver do |archiver|
      archiver.command = "#{TOOL_PATH}/rx-elf-ar"
      archiver.archive_options = 'rcs %{outfile} %{objs}'
    end
  end

  conf.bins = []
end

mrbconf.h

mrbconf.h を書き換えて

/*
** mrbconf.h - mruby core configuration
**
** See Copyright Notice in mruby.h
*/

#ifndef MRUBYCONF_H
#define MRUBYCONF_H

/* configuration options: */
/* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */
#define MRB_USE_FLOAT

/* add -DMRB_INT16 to use 16bit integer for mrb_int; conflict with MRB_INT64 */
//#define MRB_INT16

/* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT16 */
//#define MRB_INT64

/* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT */
//#define MRB_NAN_BOXING

/* define on big endian machines; used by MRB_NAN_BOXING */
//#define MRB_ENDIAN_BIG

/* represent mrb_value as a word (natural unit of data for the processor) */
//#define MRB_WORD_BOXING

/* string class to handle UTF-8 encoding */
//#define MRB_UTF8_STRING

/* argv max size in mrb_funcall */
#define MRB_FUNCALL_ARGC_MAX 6

/* number of object per heap page */
#define MRB_HEAP_PAGE_SIZE 24

/* use segmented list for IV table */
#define MRB_USE_IV_SEGLIST

/* initial size for IV khash; ignored when MRB_USE_IV_SEGLIST is set */
#define MRB_IVHASH_INIT_SIZE 3

/* if _etext and _edata available, mruby can reduce memory used by symbols */
//#define MRB_USE_ETEXT_EDATA

/* do not use __init_array_start to determine readonly data section;
   effective only when MRB_USE_ETEXT_EDATA is defined */
//#define MRB_NO_INIT_ARRAY_START

/* turn off generational GC by default */
//#define MRB_GC_TURN_OFF_GENERATIONAL

/* default size of khash table bucket */
#define KHASH_DEFAULT_SIZE 2

/* allocated memory address alignment */
//#define POOL_ALIGNMENT 4

/* page size of memory pool */
#define POOL_PAGE_SIZE 256

/* initial minimum size for string buffer */
//#define MRB_STR_BUF_MIN_SIZE 128

/* arena size */
//#define MRB_GC_ARENA_SIZE 100

/* fixed size GC arena */
//#define MRB_GC_FIXED_ARENA

/* state atexit stack size */
//#define MRB_FIXED_STATE_ATEXIT_STACK_SIZE 5

/* fixed size state atexit stack */
//#define MRB_FIXED_STATE_ATEXIT_STACK

/* -DMRB_DISABLE_XXXX to drop following features */
//#define MRB_DISABLE_STDIO	/* use of stdio */

/* -DMRB_ENABLE_XXXX to enable following features */
//#define MRB_ENABLE_DEBUG_HOOK	/* hooks for debugger */

/* end of configuration */

/* define MRB_DISABLE_XXXX from DISABLE_XXX (for compatibility) */
#ifdef DISABLE_STDIO
#define MRB_DISABLE_STDIO
#endif

/* define MRB_ENABLE_XXXX from ENABLE_XXX (for compatibility) */
#ifdef ENABLE_DEBUG
#define MRB_ENABLE_DEBUG_HOOK
#endif

#ifndef MRB_DISABLE_STDIO
# include <stdio.h>
#endif

#ifndef FALSE
# define FALSE 0
#endif

#ifndef TRUE
# define TRUE 1
#endif

#endif  /* MRUBYCONF_H */

make

makeしました。できたようです。あとで、githubに上げたいと思います。

================================================
      Config Name: test
 Output Directory: build/test
         Binaries: mrbtest
    Included Gems:
             mruby-sprintf - standard Kernel#sprintf method
             mruby-print - standard print/puts/p
             mruby-math - standard Math module
             mruby-time - standard Time class
             mruby-struct - standard Struct class
             mruby-enum-ext - Enumerable module extension
             mruby-string-ext - String class extension
             mruby-numeric-ext - Numeric class extension
             mruby-array-ext - Array class extension
             mruby-hash-ext - Hash class extension
             mruby-range-ext - Range class extension
             mruby-proc-ext - Proc class extension
             mruby-symbol-ext - Symbol class extension
             mruby-random - Random class
             mruby-object-ext - Object class extension
             mruby-objectspace - ObjectSpace class
             mruby-fiber - Fiber class
             mruby-enumerator - Enumerator class
             mruby-enum-lazy - Enumerable::Lazy class
             mruby-toplevel-ext - toplevel object (main) methods extension
             mruby-compiler - mruby compiler library
             mruby-bin-mirb - mirb command
               - Binaries: mirb
             mruby-bin-mruby - mruby command
               - Binaries: mruby
             mruby-bin-strip - irep dump debug section remover command
               - Binaries: mruby-strip
             mruby-kernel-ext - Kernel module extension
             mruby-test - mruby test
================================================

================================================
      Config Name: rx63n
 Output Directory: build/rx63n
    Included Gems:
             mruby-numeric-ext - Numeric class extension
             mruby-random - Random class
================================================

Wakayama.rbボードにmotファイルを書き込む方法

Wakayama.rbで開発しているmrubyを実装したRubyボード(Wakayama.rbボード)のRubyシステムを書き換える方法を説明します。
motファイルは、githubに公開されているWakayama-mruby-boardリポジトリのWRBB*フォルダ以下にwrbb.motという名前で保存されています。
自分が欲しいmotファイルが見つからない場合は、各自でソースをmakeしてmotファイルを作成してください。make方法はSlideShareRuby関西勉強会発表資料 に書いています。

FDT(Flash Development Toolkit)のダウンロード

FDT(フラッシュ開発ツールキット)の無償評価版をルネサスのサイトからダウンロードします。2015/11/24現在では「フラッシュ開発ツールキット V.4.09 Release 02」が最新でした。
FDT無償版をダウンロードするには、My Renesasにユーザ登録しておく必要があります。
ユーザ登録したら、FDT無償評価版のダウンロード画面から「無償評価版フラッシュ開発ツールキット V.4.09 Release 02」を選択します。

「同意」を求められるので同意します。

ダウンロードボタンを押します。

My Renesasにログインすると、自動的にダウンロードが開始します。

FDTのインストール

fdtv409r02.exeを実行してFDTをインストールします。
実行すると聞いてくるので、OKします。

Nextを押します。

Asia (Japanese)を選んでNestを押します。

acceptを選んでNextを押します。

USB Driversだけでいいと思うのですが、とりあえずこのままNextを押します。

Nextを押します。

Nextを押します。

Installを押します。

Installが始まります。

インストールが終了すると、この画面になります。
Finishを押すと、インストールは終了です。

motファイルの書き込み準備

まずは、ブレッドボードなどの接続に使用するジャンパ線を用意します。

これをWakayama.rbボード(WRBボード)の下記の部分に差し込みます。MDと書いています。JP1とも書いています。

拡大した写真がこれです。

ジャンパ線を差し込んだらリセットボタンを押します。

FDT Basicの起動

FDT Basicを起動する前に、ジャンパ線を差し込んだらWRBボードのリセットボタンを押しておいてください。
FDT Basicを起動して「新規設定」を選びます。初めての場合は、自動的に新規設定画面になるかもしれません。

バイスカーネルの選択は、一番下の「Generic BOOT Device」を選びます。「次へ」を押します。

通信ポートの選択は「USB Direct」を選びます。「次へ」を押します。

WRBボードと接続している場合は下のメッセージが出るかもしれませんが、出たときは「OK」を押します。

VID等が表示されるので「OK」を押します。

バイスを聞いてくるので、RX600シリーズのLittieEndianで「OK」を押します。

そうすると、汎用デバイスの確認がすべて通ります。

OKするとクロックの設定画面が出ます。12MHzで「次へ」を押します。

書き込みオプションはこのままで「完了」を押します。

設定が終わって、USB接続が完了します。

USB接続で書き込む

「File Selection」「User / Data Area」にチェックして右向き黒三角ボタンを押し、「参照」を選び、書き込むmotファイルを指定します。今回書き込むのは「wrbb.mot」です。

スタートを押すと書き込みが始まり、あっという間に終了します。

あとは、「デバイスとの切断」を押すと下の画面が出て「OK」を押すとUSB接続が切れます。


これで、Wakayama.rbボードへのmotファイルの書き込みは終了です。

DesignSpark Mechanicalでミラー反転したいとき

いつも、3D-CADはDesignSpark Mechanicalを用いて描いているのですが、書き上げたパーツを左右ミラー反転したい場合、どうも、DesignSpark Mechanicalにはその機能が無いようなので、何とかミラー反転させる方法を考えてみました。備忘録として書いておきます。
答えは簡単でOpenSTLを使うだけです。OpenSTLはインストールする必要も無いとってもお手軽なソフトです。

---内容の修正をしました。OpenSTLで縮小処理をしなくても良くなりました。---

反転させる元の絵

例えば以下のような部品の絵をミラー反転させたいと思います。

STLデータ保存

部品をSTL形式で保存します。このときに「単位の上書き」をミリメーターとして保存します。メーター単位で書いている場合はメーターにします。

OpenSTLのダウンロード

以下のサイトからOpenSTLをダウンロードします。緑色のDownloadボタンを押します。
http://sourceforge.net/projects/openstl/

OpenSTLの実行

OpenSTLをダウンロードすると、OpenSTL.exe がダウンロードされます。これが OpenSTL 本体です。インストールも何も必要ありません。
OpenSTL.exe を実行します。

STLファイルの読み込み

先に保存したSTLファイルをOpenSTLに読み込みます。

部品の縮小 OpenSTLでの縮小処理を行うは必要ありません。

OpenSTLはメートル単位のようで、DesignSpark MechanicalのSTLデータを読み込むと1000倍されてしまうようです。そこで1/1000にサイズを縮小します。

部品の選択

読み込んだ部品を選択します。

部品のスケール変換 OpenSTLで部品のスケール変換を行うは必要ありません。

Editメニューの Scale Selected Parts... を選びます。

Scale Factor を「0.001」にします。

Applyを押すと何も見えなくなります。

ここであわてずに、Closeしたあと、ViewメニューのDefault ViewsのIsometricを選びます。

そうすると、1/1000になって見えなくなっていた部品が出てきます。

 OpenSTLで部品のスケール変換を行うは必要ありません。

部品のミラー反転

Editメニューの Mirror Selected Parts... を選びます。

どの面に対してミラー反転させるかを選びます。Y-Z面でよければ、このままOKを押します。

反転しました。

STLファイル保存

Fileメニューの Save Partを選んで保存します。Save Part Asを選ぶと「名前を付けて保存」となります。
Save Part を選んだので上書き確認が出ています。

DesignSpark Mechanicalでの読み込み

DesignSpark Mechanicalに保存した反転部品STLデータを読み込みます。
読み込み時にもSTLの単位は保存時の単位にあわせます。ここではミリメーターにしています。

STLを読み込みました。

ソリッドに変換

STLファイルを読み込むだけではDesign Mesh になっているので、ソリッドに変換します。ソリッドに変換するときに、「面をマージ」をかければ、ほぼ反転前の部品ソリッドの面と同様に変換されると思います。面が多い場合は面マージ処理に時間がかかるので、処理が遅いときには「面をマージしない」を選べばいいと思います。

ソリッドに変換されました。

コピーして元図面に持っていく。

変換したソリッドを選択して、クリップボードにコピーします。

元の部品図面に貼り付けたら、すごく遠いところに貼り付いてしまいました。

何とか移動させて、元部品の隣まで持ってきました。

これで、部品のミラー反転は終了です。

3Dプリンタ ダヴィンチのリフィルフィラメントを交換した

 3Dプリンタダヴィンチの専用ABSリフィラメントを交換してみたので、備忘録として書いておきます。
 最近のダヴィンチのフィラメントは、交換用のロールと制御用のICのセットを売り始めたようです。

リフィラメントが届いた

リフィラメントの箱がとどきました。

中にはフィラメントのロールと説明書とICチップが入っていました。

カートリッジを開けます

ICチップが入っている部分に指をかけて、バキバキっと開きました。ICチップが飛んでいきました。

上部のシリアル番号のシールを切るのを忘れていました。

後は、爪を1つずつはずして行って、バラバラになりました。乾燥剤も出てきました。

フィラメントをセットします

新しいフィラメントのロールと乾燥剤をセットします。

最後にICチップをセットします。

そして、残りのケースを被せてパッチンパッチンとふたをして終了です。

無事に交換することができました。

IchogoJamKeyBoardをバージョンアップしました

IchigoJamKeyBoardをバージョンアップしました。IchigoJamKeyBoardと書くと長いので、IJKBと省略することにします。
IJKBがVer 1.0.1になりました。ダウンロードはgithubhttps://github.com/tarosay/IchigoJamKeyBoardからお願いします。

プログラムのダウンロード

IJKBにプログラムをダウンロードする機能をつけました。フォームの下のところに「プログラム保存」というボタンを追加しました。

ここをマウスでクリックすると、「ファイルに保存」フォームが開きます。

保存したいSAVE番号を入力した後、「ファイル保存」ボタンを押すと保存ファイル名を入力するダイアログが開きます。保存ファイル名を指定すると自動的にプログラムの保存がスタートします。

プログレスバーが消えるとプログラムの保存が終了しています。

この機能の特徴はプログラムに特殊なバイナリコードが含まれていてもそのまま保存する点です。IchigoJamは特殊なキャラクタコードを特殊なバイナリコードに割り当てているので、PRINTデータに特殊なキャラクタコードが含まれていると、うまく取得できないことがあるのですが、IJKBのプログラム保存機能はバイナリコードのまま保存するので、プログラムが化けることはありません。