KiCadでArduinoシールドを作る ~テンプレート機能の紹介~

この記事はKiCad Advent Calendar 2015の23日目です。
22日めはnora28alfaさんのPCB treeの設計でした。


KiCad4系にはテンプレートからプロジェクトを生成する機能がサポートされています。 Arduinoシールドのテンプレートが同梱されており、これを使えば快適にArduinoシールドを作ることができます。

ファイル -> 新規プロジェクト -> テンプレートから新規プロジェクトを作成を選択します。

f:id:masahirosuzuka:20151222211403p:plain

以下の画面から例えばArduino UNOを選択すればArduino UNO用のシールドのテンプレートが生成されます。

f:id:masahirosuzuka:20151222211422p:plain

独自のテンプレートを追加することも可能です。この場合以下のパスにテンプレートを配置します。

C:\Users\USERNAME\Documents\kicad\template

生成されたプロジェクトの回路と基板を開いてみたのが以下の画像。

f:id:masahirosuzuka:20151222211552p:plain

回路図にはArduinoのピンがピンヘッダの形で配置されています。 基板にはArduinoのシールドの外形とピンが最初から配置されています。 ここまでやってくれているのは親切ですね。

さて、実際に使ってみたのがこちら。 これはオーブントースターを改造したリフロー炉のコントローラーです。

回路と基板

f:id:masahirosuzuka:20151222211906p:plain

KiCad Advent Calendar15日目のシングルボードコンピュータGC3もこれでリフローしています。

システム全体の画像

f:id:masahirosuzuka:20151222211722j:plain

f:id:masahirosuzuka:20151222211748j:plain

KiCadで作ってみたといいつつ今はプロトタイプシールドで作っています。 回路図を作るためだけに回路図CADを使うとかユニバーサル基板で作ること前提なんだけども部品の配置を検討するために基板CADを使うとかそういうカジュアルな使い方もありだと思うんだようん。

github.com


この記事はKiCad Advent Calendar 2015の23日目でした。
24日めはKazu-zamasuさんです。

KiCadでシングルボードコンピュータ作っている話

この記事はKiCad Advent Calendar 2015 15日目です。
14日目はtunguska112さんのKiCadのPython scripting機能を使ってみるでした。

開発途中もいいところなんですが書きます。完成してから書けって?間に合わなかったんだよ。

現在GC3というシングルボードPCを開発中です。シングルボードコンピュータとは携帯電話用プロセッサを搭載しLinuxBSDが(最近だとWindowsも?)動作するボードのことです。これを読んでいるひとならRaspberry Piみたいなものといえばピンとくるかと思います。

GC3はOLIMEX社のOLinuXinoからのフォークです。

性能諸元はこんな感じになる予定

  • Cortex-A8 1GHz
  • SDカードブート
  • LCD出力
  • USB-HOST
  • USB-OTG
  • UART x2
  • JTAG
  • GPIO

なぜKiCadを選んだのか?

ほぼ何も考えずに始めたプロジェクトでしたが一つだけ決めていたことがあります。それはオープンソースハードウェアにしよう、最終的に設計はコミュニティに引き渡そうということです。となれば当然CADもオープンソースであることが望ましいわけで(設計に参加したい?回路見て勉強したい?じゃあまずXXX万円のCAD買ってね♡)オープンソースの回路図CADを探しました。その中で最も機能的に優れていたのがKiCadでした。

回路設計&基板設計

回路図はこんな感じ。

f:id:masahirosuzuka:20151209001514j:plain

一枚目

f:id:masahirosuzuka:20151209001439j:plain

二枚目

人によってまちまちでしょうがこの回路では一枚目は電源等回路全体に影響するもの。二枚目以降に回路の詳細を書いていく方式をとっています。

個人的にKiCadの最大の難点と思っているのですがKiCadの回路図は階層式です。一枚目の回路の右下に妙な四角形がありますがこれが二枚目の回路というわけ。

もし友達に「これから電子工作はじめるんだけどいいツール知らない?」と聞かれたとしたら複数枚の回路図を描くときやや戸惑うことになると念を押したうえでKiCadを勧めると思います。

Digi-Keyで大半のパーツが買えるように設計しました。個人プロジェクトの場合部品の入手性が最大の問題になることがあります(自戒)。

フットプリントの割り当て

KiCadの大きな特徴としてコンポーネントとフットプリントが別管理であることが挙げられます。それのなにが嬉しいのか?この基板を設計中「同じICなんだけども別のパッケージを使いたい」みたいなことがありました。こういった場合にフットプリントを入れ替えるだけで済むのは気が楽でした。

レイアウト

f:id:masahirosuzuka:20151209001145j:plain

表面

f:id:masahirosuzuka:20151209001218j:plain

裏面

GC3は4層ですが内部層はGNDとPWRなので割愛。

なんて名前だったか部品を重ならないように自動的にバラバラに配置してくれる機能が活躍しました。

等長配線をしていますがこれは手で行いました。等長配線機能の実装が楽しみ(切実)。

シルクの大きさと幅は以下の通りにしています。ご参考までに。

  • 幅0.8mm
  • 高さ0.9mm
  • 太さ0.125mm

また、KiCadにはシルクの大きさを一括で変更してくれる機能が搭載されています。

とりあえず部品実装してみたのがこれ

f:id:masahirosuzuka:20151209002656j:plain

今のところハードウェアのデバッグ?テスト?中。はやくカーネルにたどり着きたい(妖怪人間風に)。

まとめ

  • KiCadは商用CADに匹敵する機能を備えている。
  • オープンソースハードウェアを本気でやるならKiCadを選ぶべき。

ごちゃごちゃ書きましたが言いたいことはこれだけです。個人的にはかつてGCCオープンソースソフトウェアに対して果たした役割をKiCadがオープンソースハードウェアに対して果たすのかもしれないと考えています。

16日めはkinichiroさんのエフェクター自作のKiCadの手癖です。

OrCADをインストールしているとHOME環境変数が使われてしまうのでMSYS/Cygwinで困る

たぶん本ブログ最高にマニアックなネタです。

OrCADはインストール時にC:\SPB_Dataというフォルダを環境変数HOMEに設定します。

そのためHOME変数でホームディレクトリを識別しているMSYSとかCygwinでは非常に困ります。

MSYS/CygwinをインストールしたままOrCADをインストールしたら何かエラーが発生したようなしなかったような…

僕はどう解決したかというと

  • いったんHOME変数はOrCADに使わせる
  • msys.batかcygwin.batの一行目に以下を追加。要はmsys/cygwin起動時にHOME変数を上書き。
set HOME=C:\Users\USERNAME

表面実装デバイスのハンダづけのために実体顕微鏡を買ってみた

ハンダ付けのため実体顕微鏡を買ってみました

モノタロウのST-30R

実体顕微鏡 ST-30R-P

実体顕微鏡 ST-30R-P

外観からしてVixenのOEMだろうと思っていたのですがどうも中国製っぽいです。

はっきりしたことはわかっていないのですがAven toolsとか?うーん?

さて、実際に触ってみた感想ですが特に安っぽさはありません。しっかりきっちりした普通の顕微鏡です。 誰かに「日本のメーカーのモデルですよ」と言われて見せられたら全く疑わないと思います。

少し視野が狭いです。これは結構気になる感じ。 5〜6万の実体顕微鏡を使ってことがある人は違和感を感じると思います。 近くに持ってる人がいたら一度覗かせてもらったほうがいいかも知れません。

実際に覗いてみた感じ

f:id:masahirosuzuka:20151020232505j:plain

見えているランドは0603です。 見えてるコテ先は途中で一段細くなっているgoot R-48SBです。標準のこて先ではありません。大事なことなのでもう一度いいます。見えているこて先は標準のこて先ではありません

対物レンズと対象物の距離が10cm無いくらいなので半田こてを立てて持つ人とかは厳しいかも知れません。 僕は寝かせ持ちなのでそんなに気にはならないのですが…

実際に当ててみたところ

f:id:masahirosuzuka:20151020234024j:plain

今回買ったのは照明無しモデルだったので適当なLEDライトと組み合わせて使っています。電池はエネループ。 照明ありモデルもあるみたいです。

まとめ

  • 2万円でこの出来は破格。買って後悔はないと思う
  • 視野が狭い。対物レンズと対象物が近い。半田付けに向いているとは言えない。しかし慣れれば気にならなくなりそうな気はする。

KiCadプロジェクトのgitignoreのテンプレート

KiCadはほぼすべてのファイルをテキストファイルで表現するため、基本的にはgitと相性がいい。

しかし結構な量のバックアップファイルを生成するうえに同一ディレクトリに配置するという妙な設計になっているため、 バックアップやログをコミットに含めたくない人はうんざりすることがあると思う。特にwebアプリを普段から作っているひとは割りとストレスためてるんじゃないかな?

このgistはGC3を管理する上で使っている実物のgitignore。Macだとここに.DS_Storeとかその辺が入るかも。

gitignore template for KiCad project

自作タブレットPC計画をさらにアップデート GC3-Update2

f:id:masahirosuzuka:20150828224755j:plain

つい最近アップデートしたばかりのGC3をさらにアップデート。 一つ前のアップデートは結局発注せず…まあこういうこともあるさ。

アップデートの詳細はこんな感じ。

  • 水晶振動子を変更。大きすぎて邪魔だった水晶をようやくちゃんとした小さなものに変更。

  • GPIOのヘッダをつけました。基板下部の巨大なヘッダです。特になにも考えずに配線しましたが将来的にはラズパイとの互換性も考慮したいところ。

  • ボタンを表面実装に変更。

  • USB-OTGのコンポーネント郡を実装。

  • USB-HOSTのコンポーネント郡を実装。

  • ノイズ対策のため、全体的に線幅を太くしました。その関係でパスコン周りの配線は半分くらい別物になりました。

今回のアップデートで当初の計画のうちの確定していた機能はほぼすべて実装しました。一応プロトタイプのプロトタイプ状態は脱したかな?

思ったより頻繁にアップデートすることになりそうなので混乱しないよう命名ルールを定めました。GC3-UpdateXみたいな感じで進めようと思います。

Webブラウザから操作するFPVロボットを作ってみる(1)

Webブラウザから操作可能なロボットを作ります。 ただ操作するだけではなくwebカメラを搭載し、その画像をリアルタイムに伝送してくれるロボットを作ってみることにします。

FPVとはFirst Person Viewつまり男の浪漫コックピット視点のこと

構成は以下の通り。ざっくりですが

f:id:masahirosuzuka:20150726224746p:plain

今回作るロボットのポイントは2つ

WebRTC

WebRTCというのはWeb Real Time Communicationの略です。いろいろてんこ盛りな技術で説明しづらいのですがブラウザ間でp2p通信を行い、大きなデータ、たとえば動画や音声のリアルタイム伝送のために作られた技術です。 すでにWeb標準化が進んでいるのですが規格は策定の途中の様子。

たとえばこれを使えばSkypeがブラウザ上で動くようになる。あるいはFacebook MessangerはこのWebRTCで実装されている。といえばピンとくる人もいらっしゃるかもしれません。

WebRTCには二つ種類があります。カメラ画像や音声の伝送のために用いられるmedia streamとファイルや文字データの伝送に用いられるdata connectionです。

今回はmedia streamを画像データの送受信に、ブラウザからの操作(たとえば前進後退などなど)の伝送にdataconnectionを使います。

ChromeApp

WebRTCがすごいのはわかった。 でもそれってブラウザ間の技術だよね?ブラウザってハードウェアにアクセスできないよね?

ええそうなんです。ブラウザは基本的にハードウェアアクセスできません。 ではどうするのかというとChromeAppというものを使います。これは乱暴な言い方をしてしまうと独立したアプリのように振る舞うChrome拡張です。ほとんど、というか全く知られていませんがChromeAppはハードウェアにアクセスできます。 それもUSBとシリアルを操作するためのAPIを提供しています。このシリアルからArduinoにコマンドを送り、 Arduinoがモータを操作するという構成になっています。

今日一日でできたものはこんな感じ

f:id:masahirosuzuka:20150726225322j:plain

Mac上で動いているのがChromeApp、これをロボットのラズパイで動かす予定です。 Android上のChromeで動いているのはコントローラとなるwebアプリ?webサイト?

わかりにくいかもしれませんがChromeAppにはAndroidのカメラからの動画が、AndroidChromeで動いているものにはMacのFacetimeからキャプチャした動画がリアルタイムで流れています。

今日は一旦ここまで、次回はロボットの本体とArduino編の予定