ZigBeeモジュール通信テスト

秋月電子で買ってきたZigBeeモジュール(XBee)ですが、ようやく通信テストにこぎつけました。

まず、子機(写真では下側のXBee)に電源を供給するため、ニッケル水素電池から3.3Vを供給する子基板(写真では縦になっていてわかりにくいですが、スイッチと3.3Vのロードロップレギュレータとコンデンサ、ポリスイッチが載っているだけです)を作りました。そして以下のように接続しています。

  • XBeeの1ピンに3.3Vを供給
  • XBeeの2ピンと3ピンを接続(ループバック状態)
  • XBeeの10ピンをGNDに接続
  • XBeeの15ピンをLEDに接続
  • XBeeの20ピンはハーネスを挿してあるだけ(必要に応じてGNDにチョンチョン、とつなぐ)

親機(写真では上側のXBee)は単体でのテストから少し変えて、XBeeの13ピンをLEDに接続していたのを15ピンに変更することで、XBeeの動作状態が多少でもわかるようにしています。

20ピンは、こちらのページに記載のあった
  • プッシュスイッチ1回でネットワークへの参加。他のXBeeモジュールのLEDが1秒間高速点滅。
  • プッシュスイッチ4回で他のネットワークへ参加してしまった場合にネットワーク設定を消去してソフトリセットする。
のに使っています。
設定は、X-CTUを使って以下の設定を行いました。
  • 親機側のFunction Setを「ZIGBEE CORDINATOR AT」に変更して「WRITE」
    (これはネットワーク内に1台必要なのだそうです)
  • 両方のDH/DLパラメータを相手のシリアルナンバー(SH/DL)に変更して「WRITE」
これで、以降は電源ONでつながるようになりました。この状態なら、1対1接続であれば以降はXBeeの存在を意識することなく使えることになります。
さらに、X-CTUのRangeTestを使って、到達距離を確認してみました。当方は鉄筋コンクリートのマンション住まい(いわゆる3LDKのごく普通の間取りです)で、PCのある部屋は共用通路側です。XBeeはベランダにおいて、太陽電池動作で温度や湿度、気圧などを遠隔で測ってみたい、と思って購入しましたので、まずベランダに子機側を置いて試してみました。間にあるものと言えば、専有部の壁、水回り(洗面所、風呂場)、和室の押入れ和室の窓などで、距離にして15メートルくらいでしょうか。結果としては、まったく通信できませんでした。
距離を短くして、リビングルームの近い側に置いたのですが、通る確率は10%くらいでやはりダメ。廊下を挟んで反対側の寝室のベッドの上では概ね通信できるのですが、それでもエラーが発生するような状態でした。この時の状態は、距離にして5メートルくらい。専有部内の壁〔おそらく薄いスチール+石膏ボードだったと思う〕が2枚ある感じです。親機側はPCがそばにあったり、LCDモニタが2枚すぐまん前にあったりして状態がよくないのですが、それにしても鉄筋コンクリート環境ではかなり通信距離は短いようです。
今度秋月電子に出かけたときには、送信出力の大きいXBeeProを入手したいと思います。
≪参考にしたページ≫
  • ボクにもわかる地上デジタル – 地デジ方式編 – ZigBee無線リモコン –

秋月ZigBeeモジュールとの接続テスト

なんとかブレッドボードに載るようになったXBeeですが、X-CTUを使ってモジュールとの接続テストを実施しました。

右側のXBeeはまだ何もつないでいません

XBeeの電源は3.3Vの50mA以下ですので、秋月電子のFT232RLモジュールから供給させることにしました。接続は以下の通りです。

  • XBeeの1ピン(VCC)とAE-UM232RLの19ピン(3V3)
  • XBeeの2ピン(DOUT)とAE-UM232RLの5ピン(RXD)
  • XBeeの3ピン(DIN)とAE-UM232RLの1ピン(TXD)
  • XBeeの10ピン(GND)とAE-UM232RLの24ピン(GND)
  • XBeeの12ピン(CTS#/out)とAE-UM232RLの10ピン(CTS#/in)
  • XBeeの13ピン(ON)を抵抗・LEDを通してGNDへ
  • XBeeの16ピン(RTS#/in)とAE-UM232RLの3ピン(RTS#/out)
  • XBeeの1ピン(VCC)とAE-UM232RLの24ピン(GND)

WindowsXPマシンにFT232RLのドライバは元々入っていましたので、PCに接続し、COMポートを確認して、Modem ConfigurationのタブでReadを押すと、以下のように設定情報を読み取ることができました。

このままモジュール間の接続テストを行いたいところですが、FT232RLの供給可能な電流は50mA、XBeeの消費電流は最大45mAです。電流容量が不足しており、1つのFT232RLから供給することはできませんので、ここまでとしました。

秋月でZigBeeモジュールを買ってきた!

土曜日に秋月電子に行ってきたので、先日から気になっていたXBeeモジュールを買ってきました。

通信相手がいなければ意味がないので2個買ってきました。
写真では見えないですが、2ミリピッチのコネクタも付いています。

XBeeとXBeeProの両方があったのでちょっと焦りましたが、送信出力の差のようですので、今回はProではないZigBeeの方を選択しました。
すでに調べていた通り、このモジュールは2ミリピッチのコネクタで外部と接続しますので、通常のユニバーサル基板やブレッドボードに搭載するには何らかの工夫が必要になります。定番は、スイッチサイエンスのピッチ変換基板なのでしょうが、実験は横着して直接半田付けしてしまうつもりでいました。
・・・が、秋月店内を見回していたら、2ミリピッチのユニバーサルボードがありました。そこでこれを使って、こんなものを作ってみました。

ガラスエポキシ基板どうしなので、2液混合のエポキシ系接着剤でガッチリ
固定できます。元の基板と変わらないくらいの強度が出ます。

見たまんまですが、2.54ミリピッチのユニバーサル基板を細く切り出し、半分に切った2ミリピッチのユニバーサルボードとエポキシ系の2液混合タイプの接着剤で接着しました。
そして2.54ミリピッチの部分にはピンヘッダを、2ミリピッチの部分にはZigBeeに同梱されているソケットを半田付けし、その間を1対1で接続してあります。

今日のところは疲れたのでここまでです。

JPEGのEXIFデータ編集をUbuntuでやってみる

今作っているものの写真をアップロードしようかと思っているのだが、JPEGにはEXIFデータという撮影日時やGPSに基づく撮影場所などが併せて記録されていて、注意しないと自宅の場所を全世界に大公開、ということになってしまう。

そこで、Linux(Ubuntu)でEXIFデータの編集方法を調べてみると、jhead というのが比較的一般的なようである。例によって Synapticパッケージマネージャで検索すると、パッケージとして存在しているので、インストール指定をすると、依存するlibjpeg-progsというのも併せてインストールするか聞いてきたので、チェックマークをつけて、インストールを行う。インストールはあっという間に終わる。

コンソールを開いて、

$ jhead -h

とすると、簡単な使い方が出てくる。
自分が狙う使い方は、

$ jhead [options] files

で自分が使いそうなオプションとしては、

  • -mkexif
    新しい最小限のEXIFセクションを作成する(既存のEXIFは上書きされる)
  • -purejpg
    全ての不要なデータをJPEGから削除する
    (ここで言っているJPEGがEXIFを含まないJPEG規格そのものを指しているのだろうか??)

だけだろう。

早速、試してみることにする。まず、適用前の写真のうちの1枚のEXIFは以下のようになっている。(ファイルブラウザを右クリックしてプロパティを表示した)

ごらんの通り、デジカメはDSC-HX5Vで2010年9月21日に撮影したということがわかる。画像のサイズは、撮影時は最大解像度で撮影しているのだが、写真を探したりPCで見たりする場合には大きすぎて遅いので、irfanviewで一括解像度変換をかけて縦横の長辺が1200画素になるようにしてある。ツールによってはこの時にEXIFデータが落ちるものもあるようだが、irfanviewはEXIFデータはGPSデータを含めて保存されるので、GoogleEarthなどで撮影場所などの表示ができて自分で楽しむ分には非常に楽しい。一方で、余計な情報を含んでいるので、このままWebに使うには危険なのである。

そこで、写真が保存されているディレクトリにて、

$ jhead -mkexif *

とすると、フォルダ内の画像ファイルの余計なEXIFをすべて初期化してくれる。消去後の同じファイルの情報を確認すると以下のようにすっきりしたものになっていることが確認できる。

ただ、すべて消えるのかと思っていたが、それでも撮影日時だけは残っている。
そこで、

$ jhead -purejpg *

とすると、

となって、日付情報もなくなった。これで安心してアップロードができる。
アップロードするファイルが集めてある素材候補のフォルダがあれば、上位ディレクトリなどで、

$ jhead -purejpg */*
などとすると、一つ下の階層のディレクトリのJPEGファイルが一気に処理できるので楽ちん。

 

EagleCAD設計メモ ~そんなに甘くなかった~

EagleCADでの設計&OLIMEXへの発注を目指しているのだが、ライブラリについてはそんなに甘くなかったようである。ライブラリを選別して、そこから基板を設計すればいいかと思っていたのだが、いろいろと落とし穴があるようである。

まず、ULPの statistic-brd.ulp にパターンをかけると設計したボードの統計情報がとれるようなのだが、いろいろと問題がありそうである。うーむ、と思って調べてみたところ、皆さんいろいろ苦労しているようなのである。

「DRILL/HOLE」のシートを見ると、使用しているドリルが、0.6mm、0.8mm、1.0mm、1.1mmの4種類になってしまった。OLIMEXの標準は0.7mm、0.9mm、1.0mm、1.1mm、1.3mm、1.5mm、2.1mm、3.3mmだけなので、0.6mmと0.8mmは非標準である。

「BOARD」のシートを見ると、

・0.2540 - Wire width < 0.3000
・0.2540 - Pad Restring < 0.3000
・0.2032 - Via Restring < 0.3000
・0.2540 - Clearance < 0.3000
・0.0000 - Isolate Polygon < 0.3000
のところに黄色い「!」マークがついている。DRCでは10milsでOKになっているにも関わらず、3番目のVia Restringの部分が 8mils となっているので、実働15日コースになってしまう。

また、使用しているレイヤーは、

1 Top
16 Bottom
17 Pads
18 Vias
20 Dimension
21 tPlace
23 tOrigins
24 bOrigins
25 tNames
26 bNames
27 tValues
28 bValues
29 tStop
30 bStop
32 bCream
36 bGlue
40 bKeepout
44 Drills
51 tDocu

52 bDocu
となっている。赤字はこちらのページで紹介されているOLIMEX標準レイヤである。(OLIMEXのページで見つけられなかった・・・と思ったら、このページの真ん中辺りに、「IMPORTANT! When you send Eagle .BRD files for processing please note that we process only with EAGLE’s DEFAULT post-processor setings: TOP: Layers 1, 17, 18; BOTTOM: Layers 16, 17, 18; SILK: Layers 20, 21, 25; TOPMASK: Layer 29; BOTTOM MASK: Layer 30 If you put information on other layers please post-process the BRD file by yourself and switch ON the layers you are using, then send us the Gerbers and NC drills for manufacturing.」という記載がありました。)

ライブラリは実際に使うものを一点一点確認しながら集めるしかないのかも。

≪参考にしたページ≫
OLIMEXで基板を作る
EAGLE and OLIMEX

Ubuntuに回路シミュレータをインストール

久しぶりにアナログ回路シミュレーションをやってみようと思う。
といっても、本格的にやるわけでもないし、趣味の範疇なので以前購入した BLUE BACKS の「電子回路シミュレータ入門」(加藤ただし著、講談社、ISBN4-06-257344-X)に付属していた CircuitMakerのStudent版にすることにする。
このソフトはそもそもWindows版なのだが、最近の作業はほとんどUbuntuでやっていることと、最近のWINE(Windowsのエミュレータ)の出来はかなり良くなっていると聞いたので、WINE上で動かしてみることにした。
実際に動かすまでの手順は以下の通り。

  1. WINEのインストール
    これは簡単で、Synapticパッケージマネージャで、「WINE」を検索するとWINEがでてくるので、それを選択して待つだけ。バージョンは1.2のようである。
  2. CircuitMakerのインストールファイルを適当なところにコピーする
    添付CDーROMに入っていたCircuitMaker Student版のインストーラでは、実行属性がついていないので蹴られてしまう。
    なので、ホームディレクトリ以下の適当な場所にコピーし、 chmod u+x で実行属性をつける。
  3. 上記2で実行属性をつけたインストーラをファイルブラウザで右クリックし、「Wine Windows Program Loaderで開く」を選択すると、CircuitMaker Student版のインストーラが起動する。
    後はインストールはインストーラ任せ。Windowsと何も変わるところは無い。
  4. 起動は「アプリケーション」→「Wine」→「Programs」→・・・・以下に CircuitMaker があるので、それを起動する。

と、簡単そのものであっさり動く。無事にサンプル回路のシミュレーションも動作した。

秋月にZigBeeモジュールが登場

なにげなく、秋月電子のホームページをみていたら、新製品にZigBeeモジュールであるXBeeが登場しているのに気がついた。調べてみると、かなり面白そう。
すでにいろいろとやっている先人がいらっしゃるようで、

あたりの記事が参考になりそう。現物を手に入れたら参考にさせてもらおう。
しかし、ピンが2ミリピッチなのは要注意ですね。

それと、なにかしようと思ったらまずドキュメントが必要だが、

  • 製品マニュアルは製品ページのDocumentationからダウンロードできる
    (まだざっとしか読んでないので、開発に足りるかはわからない)
  • 設定&テスト用のユーティリティであるX-CTUというツールのマニュアルも同じ場所にある
  • X-CTU 自身は、Suppertで製品名「XBee/XBee-PRO 802.15.4 OEM Module」を指定すると、「Diagnostics, Utilities and MIBs」というリンクがあるので、そこをたどるとインストーラがダウンロードできる

ということで、ブレッドボードに乗っけてやれば最低限の実験ができそうな感じ。

店舗でみかけるようになったら買ってみることにしよう。

EagleCAD設計メモ ~よく使うライブラリを選別~

EagleCADにはライブラリが(数だけは)たくさんついてくるが、実際に使うのは手持ちにある部品、すぐに調達できる部品のものだけである。なので、たくさんついていてもかえって使いにくかったりする。
なので、標準でついているもののなかから、使いそうなものを選別していく。

  • 「ic-package.lbr」・・・ICパッケージとソケット。
  • 「rcl.lbr」・・・この中に、DIP/SMDのコンデンサ・抵抗・インダクタが入っている。電子工作で使うレベルではこれだけで良さそうな感じがする。
  • 「jumper.lbr」・・・秋月で売っているようなピンヘッダや、片面基板でどうしても交差を乗り越えなければならない場合に使うジャンパブリッジのシンボルが登録されている
  • 「pinhead.lbr」・・・名前の通り、ピンヘッダ
  • 「supply1.lbr」「supply2.lbr」・・・電源/グランドパターンのシンボル
  • 「switch」「switch-misc」「switch-dil」・・・スイッチ類

がどんな基板でも使いそうなもので、

  • 「atmel.lbr」・・・ATMEGA・ATTINYシリーズ。秋月で安いATTINY2313はなかったりする。
  • 「battery.lbr」・・・そんなにたくさん使うものではないでしょう。
  • 「con-ml」・・・2.54mmピッチのBOXコネクタ(いわゆるMILコネクタ)
  • 「diode.lbr」・・・ダイオード類
  • 「microchip.lbr」・・・PICなどのMicrochip社製品
  • 「ref-packages.lbr」・・・デバイスの外形が大量に納められている。新規デバイスを登録する際には、ほとんどの場合はここからパッケージ形状を引っ張ってくればよさそう。ロングパットタイプで、「ref-packages-longpad.lbr」というのもある。

はそこそこ役に立ちそうなものというところか。
これらのライブラリはプロジェクトディレクトリに作ったライブラリフォルダにコピーして「Use all」とし、元のライブラリフォルダを「Use none」することにした。


≪後日談≫
作ったデータの統計データをとってみると、こんなに簡単にはいかないようである(;_;)。

EagleCAD設計メモ ~デザインルールの修正~

結局、OLIMEXを使ってみたい、と思うようになってしまった。(手で配線するの、面倒くさいものね)
で、色々調べてみると、OLIMEXに出すためにはDRCを修正しなければならないようである。

せっかくなので、OLIMEXの技術条件(OUR TECHNOLOGY LIMITATION)を順に確認していくことにしたい。(解釈が合ってるかはしらないよ)

  • 「Our minimum track width/space is 0.203 mm (8 mils).」は、最小の線幅・線間がそれぞれ8mils=0.203mmということで、Design RulesのClearanceで設定する項目だろう。ただ、「FILE FORMATS we accept:」を見ると、「IMPORTANT! Please before sending Eagle files for manufacturing use these DRU files to check your design: for 8 mils (15 working days turnaround) and 10 mils (3-5 working days turnaround).」という記載があり、8milsの場合は製造に実働15日、10milsの場合には実働3-5日でできるようである。微細でなければ10milsの方が良いだろう。
  • 『The (pad/via – drill hole) clearence must be minimum 0.406 mm (16 mils) i.e. the resulting annual copper ring around the drilled hole to be 0.203 mm (8 mils), example: if 0.9 mm drill hole size is used it MUST have pad/via diameter = min. 1.306 mm』という記載がある。
    ドリルの穴の直径と、その周りのリング状(図面上は円だが、仕上がりでは真ん中に穴があくので、リング状になる)のPadの外周直径の差が最低16mils必要、ということだと思う。すなわち、もっとも小さなスルーホールを作るには、ドリル径24mils(0.6mm)、パッド径24+16=40mils(1.02mm)が必要ということになる。周りとの干渉を考えると、周囲のクリアランス(銅箔無し部分)が更に半径8milsが必要で、置き場所としては直径40mils+半径8mils×2=直径56mils程度の場所が必要ということだろう。
    これは時間のかかる8milsルールでの話で、短期間でできる10milsルールで更に追加費用の必要ない標準ドリルの最小0.7mm(0.028”)を使う場合では、もっとも小さなスルーホールを作るには、ドリル径28mils、パッド径28+20=48mils(1.22mm)が必要ということになる。
    これらは「Resting」という項目の「Pads」の部分のTopとBottomのMinの値の部分だろう。
  • 次に「Our minimum drill size is 0.6 mm (24 mils)」と記載されていて、最小ドリルサイズは24mils(0.6mm)のようだ。一方で、「Our standard drill tool rack is: 0.7 mm (0.028″), 0.9 mm (0.035″), 1.0 mm (0.039″), 1.1 mm (0.043″), 1.3 mm (0.051″), 1.5 mm (0.059″), 2.1 mm (0.083″), 3.3 mm (0.13″).」と記載されていて、24milsは標準ドリルではないようである。その場合、価格表によると1ユーロ余分にお金がかかるようである。さらに、「Our maximum drill size is 5.0 mm (197 mils) we can’t drill large than 5.0 mm drill hole on your board, if your board have > 5.0 mm drill it will be replaced with 5.0 mm drill」という記載があり、最大ドリル径は5ミリで、5ミリを越えるものは5ミリに丸められる、ということである。
  • 「Our drill hole limit is 500 holes for SSS,DSS and 2000 holes for SSQ,DSQ panels. If you exceed the maximum hole limit you will be charged additionally see our PRICE web page.」という記載があり、穴は160ミリ×100ミリの基板サイズで500個まで。それを越える場合には別料金。
  • 「Each layer MUST have text inside or outside PCB area to prevent board production with mirrored layers. i.e. the text on bottom should be mirrored if you look on the board from top.」という記載があり、それぞれのレイヤーは基板の領域の中でも外でもいいから文字をいれておく必要がある。この場合、半田面の文字を部品面透視図でみると、反転しているように見える。
  • 「Lines under 0,1 mm (5 mils) on component print layer may not be visible.」という記述があり、部品面の5mils以下のライン(シルク印刷)は見えない場合がある。参考文献によると、以前は10mils以下のラインが印刷できなかったようであるが、それが今は5mils以下になっているということだろう。

ということで、10mils.dru はDSSサイズで追加料金1ユーロが取られる程度のようで、それさえ気にならなければそのままで良いのではないかと思う。

(参考文献)
プリント基板CAD EAGLE活用入門、今野邦彦著、CQ出版社、ISBN978-4-7898-3630-2
(EAGLEのメジャーバージョンも変わっているためか、よく見ると書籍内の画面キャプチャとボタン配置が違うことがあるので要注意だが、作業手順としては参考になります)

EagleCAD設計メモ ~パターン設計~

回路図が完成したところで、回路図エディタの「Board」を選択すると、ボードエディタが起動し、領域外に部品が置かれた状態+ラッツネット(端子間の関係がわかるように細い直線でつながれている)の状態で表示される。
部品をレイアウトして、オートルータを起動、という流れは変わらないので、注意事項だけ記載する。

  • 外形図をはじめに修正する。最初から左下原点で適当なサイズが設定されているので、グリッドやサイズ表示などを使って、希望のサイズに外形図を修正する。
  • 部品形状などは「Replace」コマンドを使って、ライブラリにある他の部品にこの時点で変更ができる。変更結果は回路図エディタが起動していれば回路図にも反映される。つまり、回路図エディタは起動しっぱなしでなければならない。
  • 電源パターンなどは、パターンエディタで「Class」コマンドでクラスを作成して、それを回路図エディタ側でネットのプロパティを開いて修正することで、太さを設定する。
  • 部品の配置は初期値は全て部品面である。半田面に変更するには、「Mirror」コマンドで設定すると、半田面側に移動する。(部品のプロパティでも設定可能)
  • べたパターンはPolygonコマンドを使って設定する。外周だけを描いた後、プロパティで、太さを0.024(0.016ではDRCでエラーが出る。おそらく、塗りつぶしに時間がかかるからだろう)milに、レイヤーを部品面か半田面かを適切に、信号名をGNDなりの接続先のネット名に、NetClassもそれにあったものに修正する。
  • OLIMEXに製作を委託する場合には、DRCの際にOLIMEXからダウンロードしてきた「10mils.dru」をLoadしてDRCを行う。

そんなこんなで出来上がったパターン図は、こんな感じ。なんかスッカスカ。頑張れば片面に入るかも。
基板屋さんに出すわけじゃなくて、ユニバーサル基板のためのレイアウト検討が目的だから、べたGNDにする必要はなかった(というか、しちゃいけなかった)んだけど、なんとなく。ここまでやったらシルク抜き(シルクの調整が面倒なので)でOLIMEXに出してもいいかな、なんて一瞬思ったが、スイッチなどは間に合わせに似たものシンボルを拾ってきただけなので、これではまだ無理ですね。もっとちゃんとライブラリの作成と確認をしなきゃならんですね。回路にしても、PICのパスコンなんかは「どうせ端子が隣り合わせだから後でチップコンを入れよう」とか横着してたのを思い出したし。

でも、一度OLIMEXに出してみてもいいかも。基板屋さんで作るなら、ハンダゴテでつけられる範囲の表面実装部品(SMD)なら自由に使えるようになるし、何より細かいハンダ付けをしなくてもよくなるのが嬉しい。さらに、SMDで作ればそれだけで小さくなるうえに、両面なら同じ場所の表裏にそれぞれ部品が載せられるので、更に小型化ができる。基板についても基板屋さんで作れば基板の厚さも変えられるから、大幅な軽量化も可能。うーん、やりたくなってきた。

(参考文献)
プリント基板CAD EAGLE活用入門、今野邦彦著、CQ出版社、ISBN978-4-7898-3630-2
(EAGLEのメジャーバージョンも変わっているためか、よく見ると書籍内の画面キャプチャとボタン配置が違うことがあるので要注意だが、作業手順としては参考になります)