2015年4月24日金曜日

KiCad for OS-X

以前のHA-2基板、RP-1基板はCadlusで設計してP板.comで基板作成しました。
先日のRP-2基板はEALGEで設計してelecrowで基板作成しました。
今回は前から気になっていたKiCadで設計してelecrowで基板作成にチャレンジしてみようかと思います。

Windows版と違ってMac OS XでKiCadの場合はソースコードからbuildする必要があります。
kicad.jpをみるとBZR4022が安定版のようですが2014-07-20と半年以上前のもので、その後に押しのけ配線等の機能が追加されています。

OS-X向けのbuildについては下記のblogを参考にさせていただきました。以下何箇所か引用させていただきます。
http://ochaochaocha3.hateblo.jp/entry/2015/01/05/installing-kicad-on-mac-os-x
http://www.usagi1975.com/20150116996/

上のblogも含め、幾つかMac用に最近のものをbuildしてくれているものもあったので試してみたのですが、MacのMagicMouseで使おうとするとズームが中ボタンのスクロールに割り当てられていて拡大率の変更も大きすぎて、ちょっとマウスの真ん中を触ると拡大縮小されてしまい使うに耐えない状態です。設定も色々いじってみたのですがどうにもならず、TrackPadでもスクロール、ズームが使えないのが不便でちょっと使いものにならないなというのが感想でした。
KiCadのlaunchpadのbranchを色々見てみるとやはり同じこと感じるようでosx-trackpad-gesturesというbranchがあり定期的にメインブランチとmerge作業をしてくれています。

いずれにしろ自分でbuildすることになるので、このbranchを利用させてもらうことにしました。
最新の開発branchなので色々問題出るかもしれませんが、その時はmain branchのdebug情報を見ながら修正かけていこうかと思います。

私の環境はMcBook Pro(15-inch, Early 2011) 2.2GHz Intel Core i7/8GB 1333MHz DDR3/OS-X 10.10.2 Yosemiteで、既にbrew 0.9.5とXcode 6.2、Command Line Toolsが入っている状態です。
まずbrewの状態をチェック。
# brew doctor
Your system is ready to brew.
と出ることを確認します。

KiCadのbuildに必要なものをinstallします。
今回はosx-trackpad-gesturesはBZR5282 KiCad本体のBZR5595がベースになっています。
# brew install cmake bzr glew cairo swig boost
bazaarに自分の名前とメールアドレスを設定します。
# bzr whoami '自分の名前 <name@example.net>'

作業directoryを作ってKiCadのソースコードをdownloadします。
# mkdir KiCad
# cd KiCad
# bzr branch lp:~gcorral/kicad/osx-trackpad-gestures

wxPythonをjaistのサーバーからdownloadしてscriptで使われるdirectory名に変更します。
# curl get http://jaist.dl.sourceforge.net/project/wxpython/wxPython/3.0.2.0/wxPython-src-3.0.2.0.tar.bz2 | tar xjvf -
# mv wxPython-src-3.0.2.0 wx-src

次にbuild scriptを修正します。
# cd osx-trackpad-gestures
# cp scripts/osx_build_wx.sh scripts/osx_build_wx_yosemite_trackpad.sh
# vi scripts/osx_build_wx_yosemite_trackpad.sh
下記のdiffの5行を追加
----------
# diff -urb scripts/osx_build_wx.sh scripts/osx_build_wx_yosemite_trackpad.sh
--- scripts/osx_build_wx.sh 2015-03-26 14:42:34.000000000 +0900
+++ scripts/osx_build_wx_yosemite_trackpad.sh 2015-03-26 14:46:32.000000000 +0900
@@ -140,6 +140,11 @@
 doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx.patch"
 doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx_bug_15908.patch"
 doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx_soname.patch"
+doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx_scrolledwindow.patch"
+doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx_magnify_event.patch"
+if [ "$4" = "10.10" ] ; then
+  doPatch "$1" "$3/patches/wxwidgets-3.0.2_macosx_yosemite.patch"
+fi

 # configure and build wxWidgets
 wxWidgets_configure "$1" "$2" "$4"

----------
# sh scripts/osx_build_wx_yosemite_trackpad.sh ../wx-src ../wx-bin ./ 10.10 -j4
# cd ..
# mkdir build
# cd buld
# cmake ../osx-trackpad-gestures \
      -DCMAKE_C_COMPILER=clang \
      -DCMAKE_CXX_COMPILER=clang++ \
      -DCMAKE_OSX_DEPLOYMENT_TARGET=10.10 \
      -DPYTHON_EXECUTABLE=`which python` \
      -DKICAD_SCRIPTING=ON \
      -DKICAD_SCRIPTING_MODULES=ON \
      -DKICAD_SCRIPTING_WXPYTHON=ON \
      -DKICAD_SKIP_BOOST=ON \
      -DUSE_OSX_MAGNIFY_EVENT=ON \
      -DwxWidgets_CONFIG_EXECUTABLE=../wx-bin/bin/wx-config \
      -DPYTHON_SITE_PACKAGE_PATH=`pwd`/../wx-bin/lib/python2.7/site-packages \
      -DCMAKE_INSTALL_PREFIX=../bin \
      -DUSE_IMAGES_IN_MENUS=ON \
      -DCMAKE_BUILD_TYPE=Release
# make
# make install
# cd ..
ここまででbin/以下にアプリケーションが出来上がります。

次にライブラリ、日本語ドキュメントをまとめていきます。
# mkdir lib
# cd lib
# git clone https://github.com/KiCad/kicad-library.git kicad
# bzr branch lp:~kicad-developers/kicad/doc
# cp -pr doc/doc/help kicad
# mkdir kicad/share
# cp -pr doc/internat kicad/share
# cd ..

これで
Kicad/bin/kicad.app/に/Application/へコピーするKiCadのアプリケーション
KiCad/lib/kicad/に/Library/Application\ Support/へコピーするライブラリ・ドキュメント一式が揃いました。

/Applications, /Libraryへの書き込みはroot権限が必要なので
# sudo cp -pR bin/kicad.app /Applications
# sudo cp -pR lib/kicad /Library/Application\ Support
この時passwordを聞かれたら管理者のパスワードを入力してください。

/Applicationsにkicad.appが出来上がっているのでFinderからDockに登録してください。
これでKiCadが使えるようになります。

2015年4月17日金曜日

RP-2基板作成

基板が上がってきたので部品を付けて動作試験をしていきます。
この基板はいろいろな用途の回路を盛り込んで作っています。盛り込んでいる機能は次のとおりです。
1.RaspberryPi2との接続(ATMega328pとは排他)
2.ATMega328p(RaspberryPi2接続とは排他)
3.2.1mmDCコネクタでの5V ACアダプタ対応
4.赤外線受光部
5.赤外線発光部
6.圧電ブザー
7.XBee接続
8.12keypad(0-9#*)接続回路(ATMega328p only)
9.人感センサー接続回路(ATMega328p only)
10.火災警報器等の接点出力の検知機能(ATMega328p only)
11.2.54mm pitchのユニバーサル基板

まずは、メインの用途である1,3,4,5,6,7の機能を盛り込んだ基板を作ります。
これまでRaspberryPiで組んでいたホームコントロールシステムの親機をRaspberryPi2で置き換えます。
 部品をマウントした基板(左)とRaspberryPi2(右)
これを組立てます。
下の白いアクリル板は箱に入れるための支持板 

これにアクリルをレーザーカッターで切り出して曲げ加工した物をケースにします。
 ケースの下側(左)とケースの上側(右)

ケース下側と基板を組んだところ

ケース上も組んだところ

物理的にはうまく出来そうです。

ところがそう簡単には行きませんでした。
赤外線リモコンの送受信回路はRaspberryPiのPCM IFを使って組んでいるのですが、RaspberryPiからB+になった時にP6の8pinコネクタ(NoMount)に出ていたGPIO28-31のALT2にあったPCM IFが無くなり40pinコネクタのGPIO18-21のALT0に移動しました。
これは判っていたので回路はそちらに接続するように組んでいたのですが、Raspi2上のプログラムを変更してもうまく動きません。PCM_FSに接続してある圧電ブザーが鳴っていないのとPCMの書き込み時にFIFO Fullで止まってしまってるのでPCM_CLKが入っていないと思われます。

GPIO28のALT2も選ばれていてGPIO18のALT0と入力がぶつかっているのではないかと疑ったのですがどうも違うようです。
丸一日悩んだのですが、どうもGPIOを直叩きしても出てないようでメモリダンプをしたりしてみるとレジスタっぽい値が出てきません。BCM2835からBCM2836に変更になった影響で何か変わっているのではないかとう疑いを抱き始めてメモリマップを眺めていて気が付きました。
DRAMのサイズが1GBになっているはずなのでPeriphralのアドレス空間であるはずの0x20000000はDRAM空間と重なっているではないですか。
あとはネットで検索していたら答えがありました。BCM2836ではPeripehral空間が0x3f000000に移動しているようです。
PCM IFを直叩きしているため罠にハマってました。
これを直したらちゃんと動き始めました。
apache2も高速になって快適です。

2015年4月10日金曜日

RP-2基板到着

基板が届きました。実は頼んだのは春節中の2/22でした。elecrowは2/25まで春節でお休みでしたので受け付けられたのは2/26。
2/22(日) 注文
2/26(木) 受付
2/27(金) 製造開始
3/10(火) 16:21 出来上がったと写真付きのメール、発送したとDHLのtracking numberの連絡
3/11(水)
1  Shipment picked up                              HONG KONG     22:04
3/12(木)
2  Departed Facility in HONG KONG                  HONG KONG     03:13
3  Arrived at Sort Facility HONG KONG              HONG KONG     05:15
4  Processed at HONG KONG                          HONG KONG     06:00
3/13(金)
5  Processed at HONG KONG                          HONG KONG     02:06
6  Departed Facility in HONG KONG                  HONG KONG     02:07
7  Transferred through TOKYO - JAPAN               TOKYO - JAPAN 08:58
8  Customs status updated                          TOKYO - JAPAN 09:02
9  Arrived at Sort Facility TOKYO - JAPAN          TOKYO - JAPAN 10:02
10 Clearance processing complete at TOKYO - JAPAN  TOKYO - JAPAN 10:29
11 Processed at TOKYO - JAPAN                      TOKYO - JAPAN 11:23
12 Departed Facility in TOKYO - JAPAN              TOKYO - JAPAN 11:31
13 Arrived at Delivery Facility in TOKYO - JAPAN   TOKYO - JAPAN 12:55
14 With delivery courier                           TOKYO - JAPAN 12:57
15 Delivered                                       TOKYO         14:44
と11日(土日を除くと7日)で製造、3日で届きました。

出来上がった基板です。

 A面     B面

B面のチップコンデンサのところをみるとセンターに打った点のシルクが若干ずれているのと、ユニバーサル基板部分のスルーホールのところの穴が銅箔に対して若干ずれていますが問題ないレベルです。
シルクの文字自体は綺麗に出ています。今回はviaはレジストをかぶせているので配線で使っている15mil(0.38mm)のviaにかぶっているシルクはちゃんと出ています。
GNDのベタパターンに打った23.6mil(0.6mm)のviaは穴が大きめなのでレジストで埋まらずシルクは一部欠けています。PadにはE-Testの痕跡が残っていて基板の脇にはマジックでチェックされています。
この仕上がりで10枚で送料込みで$34.71(この時のレートで¥4280)、1枚あたり428円なら満足です。

2015年4月3日金曜日

EAGLEでの出図

アートワークが完成したので、CAM出力します。
ElecrowのページからCAMファイルをダウンロードしてきます。
EAGLEのCAMディレクトリにコピーしてガーバーデータを作成します。
今回使用しているのはEAGLE7.2.0なのですが、そのまま作成するとEXCELLON形式のdrillデータの精度が1桁上がっているようでgarberViewerで見た時にdrillだけ10倍大きくなってしまいます。
それほどの精度は不要なので、Drills&HolesのOutputのDevice設定をEXCELLONからEXCELLON_24に変更します。
これでProcessJobを実行するとガーバーデータと同じスケールでドリルデータが出力されます。
OSXだとガーバーデータを確認出来るソフトはX-Window上のgarbvかKiCadのgarbviewくらいしか有りません。どちらかで目視確認して大体ちゃんと出来ていることを確認します。
確認できたらファイルをzipでまとめてelecrowのページでuploadします。
今回は10cm x 10cm 5pcsでも$11.50にしかならないので 10cm x 10cm 10pcs 2layer PCB $15.90を選択します。厚みは1.0mm,色はBlack,FinishはHaslにしました。
届くのが楽しみです。