2011年2月20日日曜日

eJackino-MiniとeJackino-Pico

eJackino-Mini(左)とeJackino-Pico(右)
基板付き書籍「アーデュイーノ互換マイコン・ボードを作る」にもCQ出版社サイトにも明確に記されていないが、eJackino-Mini(写真左)とeJackino-Pico(右)とは回路的には全く同じ物。部品配置とpin headersへのpin取り出し方が違っている位である。あと、基板スペースの関係か、Miniでは在るpin名称のsilk印刷が、Picoでは省略されている。

回路図・配線図は見付けがたいが、CQ出版社のここからEagle CAD dataがdownload出来ます。少しcomment修正したがのがこれ。
eJackino-Miniの回路図
eJackino-Picoの回路図
eJackinoはCQ出版社や小坂 貴美男氏によるものです(Creative Commons Lisence, BY-SA 2.5)。

2011年2月15日火曜日

電子部品・マイコン系通販の送料比較

都内に住んではいても、わざわざ半日~1日がかりで秋葉原に買物に行くことは交通費と時間の無駄になり、身体的にも疲れる。
実際店頭ではWebで見るよりじっくり品物を選べなかったり、折角行ったのに店頭に物が無いという馬鹿な思いをすることがある。

時間の無駄といえば休日の秋月電子秋葉原店などはその好例で、1~2品が目的ならともかく、部品リストを持って買い出しに行こうものなら、素人には何処に何が陳列してあるか分からず、人だかりを避けて部品を探し集めるのに随分時間がかかることもある。ここがいつも混んでいるのは、そんな「部品探し難民」が中に何人もいるからではないか?レジの店員さんはとても手際良いのに。

というわけで、最近では電子部品やマイコン・ボードの入手には専ら通販を利用することが多いが、送料が気になるので比較してみることにした。

 基本送料  送料無料  運送業者  メール便  定形外  支払い方法
 電子部品系
 秋月電子  500  -  佐川、ヤマト  -  -  ク、銀
 千石電商  420  10,000  ヤマト、佐川、JPEX  -  -  ク、銀
 マルツパーツ館  472  5,250  ヤマト  -  -  ク、銀
 共立エレショップ  380  7,500  ヤマト、佐川  -  120(50g以下、3,000円未満)  ク、銀、郵
 若松通商・電子部品通販  504  -  ゆうパック  -  240(250g以下)  銀
 若松通商・eマート  504  -  ヤマト、ゆうパック  -  -  ク、銀
 サトー電気  200~500  8,001  普通郵便、ゆうパック  -  左記  郵
 RS Components  460  8,000  佐川  -  -  ク、銀
 マイコン系
 Switch Science  180  3,000  ヤマト  自動選択  -  銀、PayPal
 Strawberry Linux  400  -  佐川など  -  -  銀、郵
 メカロボショップ  530~  10,000  ヤマト  80  -  ク、銀
 マイクロファン  315~525  -  ヤマト  自動選択  -  銀
 マイコンキット・ドットコム  650  10,000  佐川  -  -  ク、銀
 aitendo  690  -  ヤマト  -  -  ク、銀
 Soliton Wave  800~  -  佐川  -  -  ク、銀、郵
 galileo 7  180  3,000  ヤマト  自動選択  -  銀
(注意)私の場合、代引きは使わない(←手数料を節約したい)ので「支払い方法」には含まれていない。本日現在Webから集めた情報だが、正確さの保証はないので、買物の際にはご自身でご確認ください。

部品なら何でも安い秋月を一番利用するが、送料は割高で、注文の変更・キャンセルが難しく、一品買い忘れたりした時のショックが大きい。
一方、輸入系のマイコン・ボード(Arduino等)はほぼ横並び価格なので、送料の安い所を選んだ方が良い。

2011年2月7日月曜日

JYE Techオシロのfirmware更新

秋月電子などで入手できる、中国JYE Techの激安Oscilloのfirmwareを更新する方法。本家の文書を参考にしてます。

更新には二通りのやり方があります。
  • ICSPで直接書き込む方法
    • この方法でfirmwareを書き込むと、bootloaderが消えてしまう。
    • 普通はbootloaderを書き込む時用ですね。
  • bootloaderによる自己書き込み機能を使ってserial通信で書き込む方法
    • 当然ですが、bootloaderは消えません。
後者でやってみました。
まず、ここにserial通信のためのpin headersを増設します。私は2 x 10 pins全て増設しましたが、使うのは4 pinsだけです。(なおこれは私の所有する緑液晶versionの場合ですが、青白液晶versionの場合は基板が少し違い、pin headersの位置も異なりますので本家の文書等でよく確認してください。)
PCとserial通信で接続します。Serial変換器としては、秋月電子のArduino Duemilanove互換ボード AE-ATmegaのを使いました。配線が出来れば、別に他の何でもかまいません。TxDとRxDは反転させてcrossで結線すること。

JYE Tech Oscilloには電源スイッチもresetボタンもありませんので、+5Vはまだ結線しないでOFFの状態にしておきます。

あとは、本家の文書通りにavrubd.exeというソフトを立ち上げてfirmwareを転送します。転送コマンドに当たる "Operate - Download" をclickし、すぐに+5Vを結線(つまりOscilloのボードをON)したらうまく行きました。
再起動させると、本日現在の最新版 ver.113-06201-200(2010.09.26版)に無事更新されました。
新機能のFFTです。Sampleの500Hz pulseが見えています。

2011年2月6日日曜日

Mobile運用のSet up

愛車 Alfa 156 V6 にAntennaとRig(IC-706mkII)をset upしました。
Antennaは昔から使っているDiamond MD-200シリーズです。
左ハンドルなので、706の操作パネルをこのように右の助手席側に取り付けました。Dashmount(UK)の取り付け金具を使っています。Paddle(Kent)もぴったり灰皿下の小物スペースに収まりました。

これからはmobile半固定でコンテストに出る予定です。

2011年2月4日金曜日

UnoのAuto reset機能を無効にする

パスコンを用いた解決法

前回、Reset端子と+5Vとの間に110~120Ωの抵抗を入れてauto resetを無効にする方法を紹介したが、Duemilanoveとそのclones(FT232Rを使用しているもの)では目的通りに動作したが、何故かUnoではうまくいかなかった。(Auto resetは無効に出来たが、DTR線を操作するソフトとは通信できなかった。)

ArduinoのForumに、抵抗ではなくコンデンサを使う方法をポストしている人が居たので、試してみたところ、Unoでもうまくauto resetを無効化でき、通信も問題なく行えるようになった。
こんな感じに、RESET pinとGNDの間にコンデンサを挿入する。上述の記事では「転がっていた220uFのコンデンサを使った」と書いてあったが、もっと小さい容量で良くて、上の写真では1uFを使っているが、0.1uFの普通のパスコンでも動作した。

また、RESETとGNDの間ではなく、RESETと+5Vの間に挿入しても、同じ効果だった。

つまりパスコンによって、DTR線側のコンデンサで生成されたreset pulseが吸収され、RESET pinに伝わらなくなってくれるようだ。

抵抗を使う方法より、こちらの方がsmartな解決法の様に思える。抵抗では安定しなかったUnoでも有効ということは、より安定した方法と言えるし。

ただ、clonesのうちJapanino(serial変換にSilicon Labs CP2104を使用)では、コンデンサ法も抵抗法も無効だったり動作が不安定だった。回路が違うのかな?Macでauto resetが効かない問題があるようだし。

2011年2月2日水曜日

DuemilanoveのAuto reset機能を無効にする

Auto resetの問題

Arduinoでシリアル通信のテストをしていたが、PC側の特定のソフトからだとArduinoと通信できない現象に悩まされた。

ArduinoのSerialライブラリは、hand shakeやparity等の指定もDTR/RTS等の操作も無いシンプルなものだ。デフォルトのライブラリが単純すぎるのかと思い、代替のSoftwareSerialNewSoftSerialを使ってみたが全く結果は変わらなかった。またシリアル変換chipの相性などを疑ってみたが、これもよく分からなかった。そもそも有名なFTDIのchipに大きな問題が在る訳なかろうに。

Portmonで調べた結果、動作するソフトと動作しないソフトとでは通信パラメータ(IOCTL)が一部異なっていたが、結果から言うとDTRの制御に問題があることが分かった。

Diecimila以降のArduinoでは、DTR線を特殊な用途(=auto reset)に使っているのだ。

つまり、DuemilanoveではFT232RからのDTR線が、0.1uFのコンデンサを介してATmegaのRESET端子(pin1)に繋がっており、DTRをgroundに落とすことで、コンデンサの放充電によりpin1へのreset pulseを作り出し、auto resetがかかる仕組みになっているのだという。なお、回路図ではRTS線もR2を介してRESETに繋がっている様に見えるが、NMは"not mounted"の略で、ここは繋がっていない。DiecimilaではRTS/DTRともにNMの表記があるが、R2には何も実装されず(NM)、R3には0.1uFのコンデンサが実装されている、と本家に記載がある。
Note that R2 is not mounted and that R3 has been replaced by a 100 nano-farad capacitor.
Arduinoとうまく通信できないソフトでは、DTR線を独自に制御してしているために、どうやら通信中にArduinoにリセットをかけてしまうらしかった。

基板に変更を加えずにAuto resetを無効にする

この問題は有名らしく、対策はすぐに見つかった。Hardwareに変更を加えても良いが、簡便なのは以下の方法。本家のAutomatic resetの解説に小さく書かれている。
You may also be able to disable the auto-reset by connecting a 110 ohm resistor from 5V to the reset line.(RESET端子と5Vの間に、110Ωの抵抗を追加する。)
Playgroundにも解説があって、こちらでは120Ωが推奨されている。実際120Ωの抵抗は見つけにくいから、合成抵抗で110~124Ωにせよと。ピンソケットに刺せるので楽チンだ。
なおRESETと+5Vの間にはまた別に10kの抵抗があるので、これと並列合成で109~122Ω位の値になる。ATmegaのpinあたりの最大電流は40mAだが、109Ωだと5/109*1000=46mA位流れる計算になる。少し流れすぎな気もするが、DTRがgroundに落ちた時にresetがかからなくするためにはこれくらいの電流が必要なんだろう。

この方法を試したところ、無事問題のソフトからも通信できるようになった。

なお、この対策法はSerial変換がFT232Rだけの場合に有効らしく、同様のDTR結線があるUNOでは残念ながら動作しないようだ。(本家には出来ると書いてあり、auto resetは確かに無効に出来るのだが、通信ができない。)

また、auto resetを無効にすると、Playgroundに書いてあるように、programの自動uploadが出来なくなる。手動resetが必要。手順は、
  1. reset buttonを押したままにする。
  2. 基板上のTX/RX LEDから目をそらさずに、
  3. Arduino IDEのUploadボタンをclick。
  4. RX(?) LEDが光ったらすぐにreset buttonから手を離す。
とのことだが、4.で先に光るのはTX LEDの方だ。
また1.を省略し、TX LEDが光ってからすぐにreset buttonを押す方法でもuploadできた。慣れればそれほど面倒ではない。