KiCadでArduinoシールドを作る ~テンプレート機能の紹介~
この記事はKiCad Advent Calendar 2015の23日目です。
22日めはnora28alfaさんのPCB treeの設計でした。
KiCad4系にはテンプレートからプロジェクトを生成する機能がサポートされています。 Arduinoシールドのテンプレートが同梱されており、これを使えば快適にArduinoシールドを作ることができます。
ファイル -> 新規プロジェクト -> テンプレートから新規プロジェクトを作成を選択します。
以下の画面から例えばArduino UNOを選択すればArduino UNO用のシールドのテンプレートが生成されます。
独自のテンプレートを追加することも可能です。この場合以下のパスにテンプレートを配置します。
C:\Users\USERNAME\Documents\kicad\template
生成されたプロジェクトの回路と基板を開いてみたのが以下の画像。
回路図にはArduinoのピンがピンヘッダの形で配置されています。 基板にはArduinoのシールドの外形とピンが最初から配置されています。 ここまでやってくれているのは親切ですね。
さて、実際に使ってみたのがこちら。 これはオーブントースターを改造したリフロー炉のコントローラーです。
回路と基板
KiCad Advent Calendar15日目のシングルボードコンピュータGC3もこれでリフローしています。
システム全体の画像
KiCadで作ってみたといいつつ今はプロトタイプシールドで作っています。 回路図を作るためだけに回路図CADを使うとかユニバーサル基板で作ること前提なんだけども部品の配置を検討するために基板CADを使うとかそういうカジュアルな使い方もありだと思うんだようん。
この記事はKiCad Advent Calendar 2015の23日目でした。
24日めはKazu-zamasuさんです。
KiCadでシングルボードコンピュータ作っている話
この記事はKiCad Advent Calendar 2015 15日目です。
14日目はtunguska112さんのKiCadのPython scripting機能を使ってみるでした。
開発途中もいいところなんですが書きます。完成してから書けって?間に合わなかったんだよ。
現在GC3というシングルボードPCを開発中です。シングルボードコンピュータとは携帯電話用プロセッサを搭載しLinuxやBSDが(最近だとWindowsも?)動作するボードのことです。これを読んでいるひとならRaspberry Piみたいなものといえばピンとくるかと思います。
GC3はOLIMEX社のOLinuXinoからのフォークです。
性能諸元はこんな感じになる予定
なぜKiCadを選んだのか?
ほぼ何も考えずに始めたプロジェクトでしたが一つだけ決めていたことがあります。それはオープンソースハードウェアにしよう、最終的に設計はコミュニティに引き渡そうということです。となれば当然CADもオープンソースであることが望ましいわけで(設計に参加したい?回路見て勉強したい?じゃあまずXXX万円のCAD買ってね♡)オープンソースの回路図CADを探しました。その中で最も機能的に優れていたのがKiCadでした。
回路設計&基板設計
回路図はこんな感じ。
一枚目
二枚目
人によってまちまちでしょうがこの回路では一枚目は電源等回路全体に影響するもの。二枚目以降に回路の詳細を書いていく方式をとっています。
個人的にKiCadの最大の難点と思っているのですがKiCadの回路図は階層式です。一枚目の回路の右下に妙な四角形がありますがこれが二枚目の回路というわけ。
もし友達に「これから電子工作はじめるんだけどいいツール知らない?」と聞かれたとしたら複数枚の回路図を描くときやや戸惑うことになると念を押したうえでKiCadを勧めると思います。
Digi-Keyで大半のパーツが買えるように設計しました。個人プロジェクトの場合部品の入手性が最大の問題になることがあります(自戒)。
フットプリントの割り当て
KiCadの大きな特徴としてコンポーネントとフットプリントが別管理であることが挙げられます。それのなにが嬉しいのか?この基板を設計中「同じICなんだけども別のパッケージを使いたい」みたいなことがありました。こういった場合にフットプリントを入れ替えるだけで済むのは気が楽でした。
レイアウト
表面
裏面
GC3は4層ですが内部層はGNDとPWRなので割愛。
なんて名前だったか部品を重ならないように自動的にバラバラに配置してくれる機能が活躍しました。
等長配線をしていますがこれは手で行いました。等長配線機能の実装が楽しみ(切実)。
シルクの大きさと幅は以下の通りにしています。ご参考までに。
- 幅0.8mm
- 高さ0.9mm
- 太さ0.125mm
また、KiCadにはシルクの大きさを一括で変更してくれる機能が搭載されています。
とりあえず部品実装してみたのがこれ
今のところハードウェアのデバッグ?テスト?中。はやくカーネルにたどり着きたい(妖怪人間風に)。
まとめ
- KiCadは商用CADに匹敵する機能を備えている。
- オープンソースハードウェアを本気でやるならKiCadを選ぶべき。
ごちゃごちゃ書きましたが言いたいことはこれだけです。個人的にはかつてGCCがオープンソースソフトウェアに対して果たした役割をKiCadがオープンソースハードウェアに対して果たすのかもしれないと考えています。
16日めはkinichiroさんのエフェクター自作のKiCadの手癖です。
OrCADをインストールしているとHOME環境変数が使われてしまうのでMSYS/Cygwinで困る
表面実装デバイスのハンダづけのために実体顕微鏡を買ってみた
ハンダ付けのため実体顕微鏡を買ってみました
モノタロウのST-30R
- 出版社/メーカー: モノタロウ
- メディア:
- 購入: 1人 クリック: 4回
- この商品を含むブログを見る
外観からしてVixenのOEMだろうと思っていたのですがどうも中国製っぽいです。
はっきりしたことはわかっていないのですがAven toolsとか?うーん?
さて、実際に触ってみた感想ですが特に安っぽさはありません。しっかりきっちりした普通の顕微鏡です。 誰かに「日本のメーカーのモデルですよ」と言われて見せられたら全く疑わないと思います。
少し視野が狭いです。これは結構気になる感じ。 5〜6万の実体顕微鏡を使ってことがある人は違和感を感じると思います。 近くに持ってる人がいたら一度覗かせてもらったほうがいいかも知れません。
実際に覗いてみた感じ
見えているランドは0603です。 見えてるコテ先は途中で一段細くなっているgoot R-48SBです。標準のこて先ではありません。大事なことなのでもう一度いいます。見えているこて先は標準のこて先ではありません
対物レンズと対象物の距離が10cm無いくらいなので半田こてを立てて持つ人とかは厳しいかも知れません。 僕は寝かせ持ちなのでそんなに気にはならないのですが…
実際に当ててみたところ
今回買ったのは照明無しモデルだったので適当なLEDライトと組み合わせて使っています。電池はエネループ。 照明ありモデルもあるみたいです。
まとめ
- 2万円でこの出来は破格。買って後悔はないと思う
- 視野が狭い。対物レンズと対象物が近い。半田付けに向いているとは言えない。しかし慣れれば気にならなくなりそうな気はする。
KiCadプロジェクトのgitignoreのテンプレート
自作タブレットPC計画をさらにアップデート GC3-Update2
つい最近アップデートしたばかりのGC3をさらにアップデート。 一つ前のアップデートは結局発注せず…まあこういうこともあるさ。
アップデートの詳細はこんな感じ。
水晶振動子を変更。大きすぎて邪魔だった水晶をようやくちゃんとした小さなものに変更。
GPIOのヘッダをつけました。基板下部の巨大なヘッダです。特になにも考えずに配線しましたが将来的にはラズパイとの互換性も考慮したいところ。
ボタンを表面実装に変更。
USB-OTGのコンポーネント郡を実装。
USB-HOSTのコンポーネント郡を実装。
ノイズ対策のため、全体的に線幅を太くしました。その関係でパスコン周りの配線は半分くらい別物になりました。
今回のアップデートで当初の計画のうちの確定していた機能はほぼすべて実装しました。一応プロトタイプのプロトタイプ状態は脱したかな?
思ったより頻繁にアップデートすることになりそうなので混乱しないよう命名ルールを定めました。GC3-UpdateXみたいな感じで進めようと思います。
Webブラウザから操作するFPVロボットを作ってみる(1)
Webブラウザから操作可能なロボットを作ります。 ただ操作するだけではなくwebカメラを搭載し、その画像をリアルタイムに伝送してくれるロボットを作ってみることにします。
FPVとはFirst Person Viewつまり男の浪漫コックピット視点のこと
構成は以下の通り。ざっくりですが
今回作るロボットのポイントは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がモータを操作するという構成になっています。
今日一日でできたものはこんな感じ
Mac上で動いているのがChromeApp、これをロボットのラズパイで動かす予定です。 Android上のChromeで動いているのはコントローラとなるwebアプリ?webサイト?
わかりにくいかもしれませんがChromeAppにはAndroidのカメラからの動画が、AndroidのChromeで動いているものにはMacのFacetimeからキャプチャした動画がリアルタイムで流れています。
今日は一旦ここまで、次回はロボットの本体とArduino編の予定