Arduinoで遊ぼう - AVRライタを使わないBootloaderの書き込み(2)
Posted by arms22 on 2009年12月28日

以前、AVRライタを使わないBootloaderの書き込み方法としてArduinoそのものをAVRライタに変えてしまうBoot-Clonerというスケッチを紹介した。
Boot-Clonerはあれから一度も更新されていない。ATmega168以外のAVRマイコンにもBootloaderを書き込む必要が出てきたので、他の方法を試すことにした。
今回、Arduino Duemilanoveに搭載されているUSB-SerialブリッジICであるFT232RLを使ってBootloaderを書き込む方法を紹介する。
接続

Arduino X3ピンとICSPピン

秋月FT232RモジュールとATmega168の接続(via 外付けAVRライタ無しでBootloaderを書き込む)
D2XX Direct Driversのインストール
http://www.ftdichip.com/Drivers/D2XX/MacOSX/UniBin/Universal%20D2XX0.1.6.dmg
sudo mkdir /usr/local/lib
sudo mkdir /usr/local/include
sudo cp D2XX/bin/libftd2xx.0.1.6.dylib /usr/local/lib/libftd2xx.0.1.6.dylib
sudo ln -sf /usr/local/lib/libftd2xx.0.1.6.dylib /usr/local/lib/libftd2xx.dylib
sudo cp D2XX/Samples/ftd2xx.h /usr/local/include/ftd2xx.h
sudo cp D2XX/Samples/WinTypes.h /usr/local/include/WinTypes.h
※OSX用のD2XXの最新版は 0.1.7 だが、OSX10.6ではセグメントフォルトでavrdudeが強制終了してしまう。またOSX10.4.11ではavrdudeのconfigureに失敗する。その為、OSX10.4.11+D2XX 0.1.6で動作を確認した。
avrdudeとserjtag04eのインストール
avrdude5.8に対応したserjtagの最新版がリリースされていたので、最新版を利用。
mkdir avrdude-serjtag04e
cd avrdude-serjtag04e
curl -O http://nmj.sumomo.ne.jp/suz-avr/serjtag/avrdude-serjtag04e.zip
curl -O http://ftp.twaren.net/Unix/NonGNU/avrdude/avrdude-5.8.tar.gz
tar xvzf avrdude-5.8.tar.gz
unzip avrdude-serjtag04e.zip
cd avrdude-5.8
patch -p1 < ../avrdude-serjtag04e/src/avrdude-5.8-serjtag.patch
patch -p1 < ../avrdude-serjtag04e/src/avrdude-5.8-ft245r.patch
patch -p1 < ../avrdude-serjtag04e/src/avrdude-5.8-conf.patch
./configure CFLAGS="-g -O2 -DSUPPORT_FT245R" LIBS="-lftd2xx"
make
sudo make install
FTDIシリアルドライバのアンロード
sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext
ブートローダの書き込み
avrdude -c diecimila -P ft0 -p m168 -B 4800 -U efuse:w:0×00:m -U hfuse:w:0xdd:m -U lfuse:w:0xff:m
avrdude -c diecimila -P ft0 -p m168 -U flash:w:"ATmegaBOOT_168_diecimila.hex":i
avrdude -c diecimila -P ft0 -p m168 -U lock:w:0x0f:m
FTDIシリアルドライバのロード
sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext
BitBang Mode AVR-Writer on Mac
http://www15.atwiki.jp/arduino/pages/23.html
外付けAVRライタ無しでBootloaderを書き込む
http://www.geocities.jp/arduino_diecimila/bootloader/index.html#top
FTDI BitBang AVR-Writer
http://www.geocities.jp/arduino_diecimila/avr-writer/index.html
FT245R/FT232R で avrdude (2)
http://suz-avr.sblo.jp/category/780472-1.html
FT245R/FT232R で avrdude
http://suz-avr.sblo.jp/article/30760403.html
Arduinoで遊ぼう - AVRライタを使わないBootloaderの書き込み
http://arms22.blog91.fc2.com/blog-entry-219.html
ドイツからFritzmas(クリスマス)プレゼント
Posted by arms22 on 2009年12月28日

ドイツはFRITZING FABからクリスマスプレゼントが届きました。以前、FRITZING FABのPCB無料製造キャンペーンに応募していたニキシー管制御基板です。応募数が少なかったようで見事採用されました。
出来上がった基板はまずまずの出来栄え。ドリル穴のずれやシルクのカスレなどなし。外形カットも綺麗。パターンを良く見るとなにやらドットが見えるけど。。これは一体。。
PCBツールとしてはまだまだ機能が足りない(グリッド上に部品を配置できない、片面基板しか作れない、DRCがないなど)けど、ブレッドボードで試作→回路図作成→PCBアートワーク→FRITZING FABに発注という一連の流れを作ろうとしているこのプロジェクトを、今後も応援したい。
メリーFritzmas(クリスマス)!!
http://arms22.blog91.fc2.com/blog-entry-280.html
FRITZING FAB
http://fritzing.org/shop/fab/
Arduinoで遊ぼう - エレクトレット・コンデンサ・マイクでオーディオレベルメータを作る
Posted by arms22 on 2009年12月27日

Arduinoとエレクトレット・コンデンサ・マイクを使ってオーディオレベルメータを作ってみた。マイクで拾った音の大きさに応じて、LED8個を段階的に点灯させている。
エレクトレット・コンデンサ・マイク(以下ECM)は音の強弱により容量が変わる一種のコンデンサだ。ECMから音声信号を取り出すためには+極に電圧をかけ、その電圧をコンデンサを介して取り出す。音の強弱によりECMの容量が変化し、充放電することで電圧の変化となり、それが音声信号となる。
ECMの音声信号はとても小さく、そのままArduinoに入力してもノイズと区別がつかない。そんな時はOPアンプを使う。小さな信号を大きな信号に変えるOPアンプの使い方を紹介しよう。今回、OPアンプとして低電圧オーディオアンプ「LM386」を使った回路を紹介する。
回路図

OPアンプの出力をArduinoのアナログ端子0番に接続。OPアンプから出力される音声信号はArduinoの電源電圧の半分=約2.5Vを中心に±約2Vの範囲で値が変化する。analogRead()で読み取った値は100~900の間で変化する。
実体配線

ECMには極性があるので注意すること(+端子に印がついている事が多い)。
スケッチ
abs()を使ってanalogRead()で読み取った値の絶対値を求める。map()を使って50~380の絶対値を0~8段階のオーディオレベルにマッピングしている。
int levelLeds[] = {
2,3,4,5,6,7,8,9 };
void setup()
{
for(int i=0;i<8;i++){
pinMode(levelLeds[i],OUTPUT);
digitalWrite(levelLeds[i],LOW);
}
Serial.begin(9600);
}
int ecmPin = 0;
void loop()
{
static int lasEcmLevel = 0;
int input = analogRead(ecmPin);
Serial.print(input);
Serial.print(", ");
input = abs(input - 512);
Serial.println(input);
int ecmLevel = map(input, 50, 380, 0, 8);
// if(ecmLevel > lasEcmLevel)
// lasEcmLevel++;
// else if(ecmLevel < lasEcmLevel)
// lasEcmLevel--;
lasEcmLevel = ecmLevel;
int pos;
for(pos=0;pos<lasEcmLevel;pos++){
digitalWrite(levelLeds[pos],HIGH);
}
for(;pos<8;pos++){
digitalWrite(levelLeds[pos],LOW);
}
delay(5);
}
DIY Tengu on a breadboard
http://tinkerlog.com/2007/10/22/diy-tengu-on-a-breadboard/
実用・電子工作 - マイクアンプ基本形
http://www002.upp.so-net.ne.jp/jsrc/densi/micamp.html
スイッチサイエンス - エレクトレット・コンデンサ・マイク・モジュール
http://www.switch-science.com/products/detail.php?product_id=141
TRUCK FURNITURE
Posted by arms22 on 2009年12月20日

恐らく日本でもっとも有名な家具メーカー「TRUCK FURNITURE」のアトリエ兼工房兼自宅兼カフェに行ってきました。
沢山の家具を眺めながら作業机にはSUTTO TABLEだなとか、AG SHELFは部品入れに良いなとか、そんな妄想を繰り広げてきました。
TRUCKの家具を揃えたMaker's Cafeなんてあったらすごく居心地が良いだろうなと思いました。
タチコマ meets ヤンセン
Posted by arms22 on 2009年12月20日

めがねジョシュが作ったヤンセンメカ。リンク機構がうまく動かないようす。カクカクします。
ラチェット
Posted by arms22 on 2009年12月19日

amazonからOLFAのラチェット機構付きのコンパスカッターが届いた。左がラチェットコンパスカッター、右がラチェットなしコンパスカッター。想像以上に大きいです。カットできる最小径がラチェットなしに比べて6mm大きくなっていますが、スタバカップアンプの製作には影響ありません。
ハンドル部分にラチェット機構が付いているため、無理に手首をひねる必要がありません。またハンドルも大きくなっているため、カットする時に加える力も少なくてすみます。これで100枚、200枚カットしても指の皮が捲れたりしません。
スタバカップアンプを大量に作る時は必ず1つは持っておきたい道具です。
メリーFritzmas(クリスマス)!!
Posted by arms22 on 2009年12月09日

オープンソースのプリント基板デザインツール「Fritzing」を開発してるfritzing.orgは来年、PCBの製造サービス「FRITZING FAB」を開始する。fritzing.orgはその予行運転として、24のユーザの設計した基板を無料で製造するキャンペーンを行っている。申し込み方法は、Fritzingで作った基板のファイルをinfo[at]fritzing.orgに送るだけ。締め切りは12月9日。Make:ブログで紹介されたのが12月8日。もっと早く紹介してよMake:ブログ!
間に合わないと思いつつも、大急ぎでFritzingで基板を作ることにした。丁度、ニキシー管時計のドライバ部分をブレッドボードで仮組してあったので、それを作ることにした。
Fritzingの特徴はなんと言ってもこのブレッドボードビューだ。普段、みんながブレッドボードで行ってる作業と同じ感覚で、部品をブレッドボードに挿して回路を組み立てることができる。
ブレッドボードビューで回路を組み立てたら、基板ビューで部品を並べて、パターンを描く。ブレッドボードビューで使った部品は自動で基板ビューに追加されるので、基本的には部品を並べてパターンを描くだけで基板は完成する。ランドとパターンまたパターンとパターンが接触してないか簡単にチェックした後、作った基板のFritzingのファイルをFRITZING FABに送った。採用されるといいんだけど。
FRITZING FAB
http://fritzing.org/shop/fab/
Fritzing: オープンソースのプリント基板デザインソフトウェア
http://jp.makezine.com/blog/2008/12/fritzingfritzing_open_source_pcb_design.html
Arduinoとニキシー管で24クロックを作る
Posted by arms22 on 2009年12月08日

久しぶりのニキシー管ネタです。死蔵していたニキシー管「IN-12B」とArduinoを使って24っぽいチクタク音がする時計を作ります。電子工作をはじめて、最初の作品がニキシー管時計でした。無謀だったよなぁとしみじみ思います。OLIMEXに基板まで発注しました(当時はOLIMEXもユーロではなくドルだったので基板数枚程度なら安かった)。そんな初号機はいまだにケースを作ってもらえずジャンク箱で眠ったままです。どうしたもんだろ。
IN-12Bを6個、スチレンボードに仮組みした状態。
スイッチサイエンスさんにもらった赤いDuemilanoveで制御します。うっかりニキシー管点灯用の170Vで壊してしまわないかビクビクしています。ニキシー管のアノード側はフォトカプラのTLP624、カソード側にはニキシー管ドライバ74141互換のK1551ID1(キリル文字でК1551ИД1)を使います。
16セグメントLEDディスプレイ
Posted by arms22 on 2009年12月07日

共立電子デジットで買ってきた16セグメントLEDディスプレイ。まぁなんしかデカいです。12個まとめて大人買い、大人買い。嘘、10個はLEDが大好物の船田戦闘機さん用。もしかして共立エレショップでも未登録商品用のダミー部品をカートに追加すれば買える、かも?
共立エレショップ -[未登録商品の注文]
http://eleshop.jp/shop/info/irregular.aspx
追記:2009/12/7
共立エレショップでも取り扱いが開始されたようです。
http://eleshop.jp/shop/g/g9BS315/
ブレッドボード2枚使って点灯させてみた。正面から撮るとうまく撮れなかったので斜めから。
LEDの型番はKA2311-42Bと書かれている。データシートは見つからなくて、こちらでデータシートのコピーが掲載されているを見つけた。長いセグメントにはLEDが4つ(2個x2列)、短いセグメントにはLEDが2つ(2個x1列)、ドットポイントにはLEDが1つ入っている。LEDの数にあわせて抵抗値を変える必要がある。
兎に角LEDがでかいので裏にマイコンと、必要な部品すべて張り付けられそうだ。
MAKER'S NOTEBOOK 抵抗カラーコードハック
Posted by arms22 on 2009年12月06日

MAKER'S NOTEBOOK巻末の抵抗カラーコード表に色を塗ってみた。いい加減カラーコード覚えないとなー。
追記2009/12/16
本家Make:で紹介されました。
http://blog.makezine.com/archive/2009/12/makers_notebook_resistor_code_chart.html
Arduinoで遊ぼう - 圧電スピーカでチクタク
Posted by arms22 on 2009年12月05日

Arduinoと圧電スピーカを使って某有名海外ドラマ「24」のチクタク音とCTUの内線着信音を再現してみました。再生周波数はネット上で公開されているwavファイルをダウンロードし、Audacityで波形を解析、再生周波数を特定しました。かなり地味な作業です。。
圧電スピーカは電極に再生させたい周波数の信号(高速にHとLを繰り返す)を与えると内部の金属板が振動し音を発生させます。また外部から衝撃を加えると電圧が発生するので衝撃センサとしても使えます。電極に直接LEDを接続し、圧電スピーカに衝撃を与えると瞬間的にLEDを光らせることができます。
建築発明工作ゼミ2008 - Arduino 圧電スピーカ
http://kousaku-kousaku.blogspot.com/2008/05/arduino_9230.html
Arduinoと接続する

圧電スピーカのプラスをArduinoの13番端子に接続し、マイナスをGNDに接続します。
ライブラリのインストール
今回、圧電スピーカの制御はarduino-toneと呼ばれるArduino用のトーンライブラリを使用しました。arduino-toneはハードウェアタイマを使い指定したポートから可聴範囲の矩形波を出します。
次のURLからTone-V0005.zipをダウンロードします。ダウンロードしたライブラリはSKETCHBOOK/librariesにコピーしてください。
arduino-tone - Arduino Tone Library
http://code.google.com/p/arduino-tone/
サンプルスケッチ - チクタク音
#include <Tone.h>
Tone notePlayer;
void setup(void)
{
notePlayer.begin(13);
}
void loop(void)
{
notePlayer.play(2252,50);
delay(1000);
notePlayer.play(2000,50);
delay(1000);
}
begin関数で使用する端子を選択する。play関数で再生周波数と再生時間をミリ秒で指定します。ミリ秒は省略可能で、その場合、再生はstop関数をコールするまで続けられる。またplay関数はノンブロッキング関数で、呼び出し後すぐに呼び出し元に処理を返す。連続して再生する場合、前の音の再生が終るまでdelay関数などで待つ必要がある。
サンプルスケッチ - CTU内線着信音
#include <Tone.h>
Tone notePlayer;
void setup(void)
{
notePlayer.begin(13);
}
void loop(void)
{
notePlayer.play(690,25);
delay(50);
notePlayer.play(690,30);
delay(168);
notePlayer.play(690,23);
delay(48);
notePlayer.play(690,30);
delay(360);
notePlayer.play(970,25);
delay(50);
notePlayer.play(970,30);
delay(50);
notePlayer.play(970,30);
delay(50);
notePlayer.play(970,30);
delay(50);
notePlayer.play(487,30);
delay(55);
notePlayer.play(487,30);
delay(55);
notePlayer.play(487,30);
delay(55);
notePlayer.play(487,30);
delay(55);
notePlayer.play(487,30);
delay(55);
notePlayer.play(487,30);
delay(55);
notePlayer.play(487,30);
delay(55);
notePlayer.play(487,30);
delay(55);
delay(1500);
}
オライリージャパン
売り上げランキング: 8685
赤いDuemilanove
Posted by arms22 on 2009年12月03日

スイッチサイエンスさんの赤いDuemilanoveプレゼント、抽選で当たっちゃいました!
普通のDuemilanoveは16MHzで動作するけど、こいつはその3倍の48MHzで動作、、しません。ちゃんと16MHzで動きます。サンタ(スイッチサイエンス)さん、クリスマスプレゼントありがとう!
スイッチサイエンス
http://www.switch-science.com/
Gainer互換Pepperでフィジカル・コンピューティング
Posted by arms22 on 2009年12月02日

―パソコンとAVRマイコンで電子工作 (チャレンジシリーズ)
CQ出版
売り上げランキング: 9569
「Gainer互換Pepperでフィジカル・コンピューティング」という本が発売されました。エレキジャックBlogで記事を連載されていたMorecat Labさんが執筆されています。Blogの記事にネットワーク制御などの章を追加した内容になります。
今回、フィジカル・コンピューティングの応用事例としてArduinoで作る電光掲示板が本の中で紹介されました。もあさん、ありがとうございます。
本書の内容は次のような感じ。
・Pepper、Gainerの紹介
・Pepperの組み立て方
・Processingのインストール
・Pepperでアナログ入出力
・Pepperでリレー、温度センサ制御
・PepperでMIDI
・ネットワークを超えてPepperを制御
PepperはGainer互換機としては世界最小(たぶん)で、部品点数も少なく簡単に作れます。マルツで部品セットも買えるようです。現在のところ部品セットに含まれているAVRにファームウェアは書き込まれていないので、ファームウェアは書き込む必要があるようです。
Arduino良くわからんとか、Arduino取っつきにくいとか、Arduino高いとか、Gainerってなに~?それって美味しいの?って人はこの本を買って読んでみて下さい。フィジカル・コンピューティングがはじめての人にお勧めできる本です。
エレキジャック - ginger/pepper/sugarを作って使おう
http://www.eleki-jack.com/FC/gingerpeppersugar/
マルツパーツ館WebShop - Pepper組み立てキット
http://www.marutsu.co.jp/user/shohin.php?p=66031
morecat lab - pepper, a tiny gainer friend 0.9.1
http://web.me.com/kuwatay/morecat_lab./Pepper.html
↓↓スイッチサイエンスさんから赤いPepperのキットが発売されました。
↓↓こっちもお勧め
オーム社
売り上げランキング: 60624
スタバカップアンプnano
Posted by arms22 on 2009年12月01日

スタバの試飲カップを使ったスタバカップアンプです。Make: Tokyo Meeting 04でも展示していたのですが、小さすぎてみんな気づいていなかった。。20個ぐらい並べたら良かったかな。
カップの中はアンプとスピーカ、単5電池ケースが詰め込まれています。アンプはaitendoで購入したTAI-1社製D級アンプ「TMPA2055DM」とPower Analog Microelectrnics社製D級アンプ「PAM8303D」がそれぞれ入っています。スピーカは共立電子シリコンハウスで購入した3W8Ω。銀色のコーンが綺麗。
さすがにこのサイズになると単5形以外の乾電池は入らない。電圧を稼ぐ為に電池2本を直列にして接続しているが、電池の持ちはあまり良くない。
aitendo - D級アンプIC(2.7W)[TMPA2055DM]
http://www.aitendo.co.jp/product/1600
aitendo - D級アンプIC(3W)[PAM8303D]
http://www.aitendo.co.jp/product/1597
共立エレショップ - 8Ω3Wスピーカ
http://eleshop.jp/shop/g/g9AT131/