SSブログ

ストップウォッチをArduino Duemilanove 328から、自作互換機へ換装 [arduino]

 以前作ったストップウォッチを、Arduino Duemilanove 328から自作Arduino互換機に換えて一枚の基板に収めました。
090902_012301.jpg
 まぁ、なんというか、6月にはじめてArduino Duemilanove 328を購入したので、完成度はこんなもんでしょう。
 だって電子工作とかもこれまで一度も作ったことがないので、これ以上はちょっと無理です(^^;;
 ハンダ付けの経験は、中学校の授業でやったくらいです。

 で、こんな形で、ボルト一本で無理矢理ケースに固定しました。
090902_012448.jpg
 Arduino互換機は、ここで紹介した3.3V仕様を、Diecimilaのブートローダーを書き込んで、セラロックを追加しただけの5V仕様です。しかも、書き換えのためのインターフェイスさえつけないというシンプルなものを使いました。
 スケッチの書き込みはArduino Duemilanove 328の328を外し、そこに168Pを差してボードをArduino Duemilanove/ATmega168を選択して行いました。

 さて以前は、このケースの隙間の空いている方(写真の右側になります)には、Duemilanoveが収まっていたんですが、今はもうガラガラです。

 で、ケースに収めるとこんな感じです。
090902_012640.jpg
 ボタン5つと、20文字×4行の液晶ディスプレイを装備しています。時間はRTCで計っています。
 今はずいぶん大きなケースを選んだなぁ、なんて思いますけど、作り始めた当初は、ブレッドボードやら、ジャンパーワイヤやらで相当中身はぐちゃぐちゃでした。しかも、Duemilanoveも内蔵していたので、なんかこう釈然としないものがありましたけど、ここまで自分で組み立てると感慨深いものがあります。

 それにしても、Arduinoはヤバイですね。
 一つ作ると、また次を作りたくなって、しかも、ついには自分でチップを買ってきて作り始めるようになってしまいます。なんていうか、家庭菜園もハマリ出すとどんどん深みにはまっていくらしいのですが、まるでそんな感じです。
 とはいえ、よくぞまぁ、チップ一つから簡単にこんなものが作ることが出来るようになったものです。
 組み込みのマイコンなんて自分で作ることなんか夢にも思いませんでした。
 そもそもハードには絶対手を出さないと思っていましたもの。

 あぁ、それにしてもこのおもしろさ、子供たちでもすごくはまると思うんですけどね。
 楽しいと思うんだけどなぁ。
 

Arduinoのケースを作ってみる [arduino]

カッコイイケースを作りたいないなぁ……ってことで、東急ハンズに行ってまいりました。

 実は昨日も秋葉原でいろいろとケースを探してみたんですけど、見るからに「ごつい」、「地味」なものしかなくて。
 (目指す方向が違うので仕方ないんですけどね(^^;;;)

 で、今日は新宿の東急ハンズで探して、とりあえず良さそうなものを買ってきました。
 コンセプトは手軽で簡単、値段以上にカッコイイ、です。
 ということ、選んだ材料はこれです。
090830_184605.jpg
 正方形のアクリル2枚と、EVAスポンジ(スポンジとはいえ、かなり堅い)を1個買ってきました。
 で、このスポンジをブレッドボードが入る大きさにくりぬいて、両面テープを使って両方をアクリルで塞いでケースにしました。(切り抜いた部分でフタも作れます)
090830_200300.jpg

 完成するとこんな感じです。
 今はとりあえず、パープルをつけています。カーマインだ中途半端にブレッドボートが見えてしまうので裏面に回してしまいました。

090830_200509.jpg
(カメラの感度があがってしまったので、あまり見えないブレッドボードも見えたり、後ろにあるチェロとかいろいろ写り込んでしまってます、すいません)
 これなら、もう少し大きめのケースにしてもよさそうですね。
 パネルも、両面テープで貼り付けているだけなので、前面のパネルはいろいろな色を試して遊べそうです。

 ですが……思った以上に、硬質な感じの印象になってしまいました。
 7セグLEDなどとは似合いそうですが、液晶ディスプレイをつけるのは微妙かも。
 もう少し研究の余地がありそうです。

最小構成版Arduino [arduino]

今日もArduino互換機を自作しました。
090829_230019.jpg
今回は、手元にあった基板の端っことAtmega168を使って、ブートローダーを書き込んでみました。
 要領は前に説明したのと同じです。
(1)ヒューズビットをhFuse=DD、lFuse=FF、lFuse=00に書き込み、
(2)ATmegaBOOT_168_diecimila.hexを書き込み、
(3)ロックビットを0Fに書き込めばOKです。
 あと、ハードの方はセラロックとか、水晶発振子追加すれば動きます。

 ただ……5VのUSB-シリアル変換ボードとかを持っていないので、今のところはこれをそのまま製作に使うというのではなくて、Arduinoで作った回路を置き換えていくという使い方になりそうです。(書き込むときの作業は、(1)ブートローダー書き込み済みのAtmega168をArduinoに差し込んで、プログラムの書き込みをする(2)ArduinoからAtmega168を外してこの基盤に取り付ける、ということを行います)

 近いうちに、なんとかしようとは思いますけど。(後日、インターフェースを追加しました)
 そういや、Arduinoって各種シールドは充実してますけど、これを格好良くいれるケースがないってのが寂しいなぁ。みんな基板むき出しで使っているんでしょうか?
 基板むき出しだと、なんかこう夏休みの工作みたいであまり格好良くないんですけど……(^^;;;;
 出来たらおしゃれなデスクの上に何気なく置いておけるようなおしゃれなケースが欲しい。


Arduino IDE 0017 コメントの日本語が文字化けする [arduino]

ふと気がついたんですけど、過去に作っておいたプログラムをArduino 0017で開くとコメントに入れた日本語が文字化けします。

単に化けるだけなら良いんですけど、コンパイルするときにエラーを引き起こしたりします。
どうも、文字コードの取り扱いが変わったみたいです。なので、日本語は文字化けするみたい。
これって嫌ですよね。

 で、とりあえず、対応策として、文字化けする拡張子PDEのスケッチファイルを、そのまま別のエディタなどで強引に開いて、それを(CTL+Aとかで)全選択してコピー、エディタを閉じて、文字化けするスケッチを開いて、全選択した上で(CTL+Vとかで)貼り付けしてください。
 あら、不思議、さっきまで文字化けしていたスケッチがちゃんとした文字コードに上書きされます。

 とりあえず、これで動かなくなったスケッチも元通りに動きます。

------------------------------------------
なんて思っていたら、http://www.eleki-jack.com/FC/2009/08/-arduino00171.htmlに、ツールの
「Fix Encoding & Reload」を選択だけで正しく表示されるようになれると報告されていました。
あー、そういや、あったなぁ。(^^;;;

Arduino互換機を自作する [arduino]

今回は、Arduinoを自作します!
2011年11月現在、とても簡単な作り方が出来るようになりました

ある程度Arduinoに慣れてくると、ふと「あー、この作った回路を残しておきたい…」って感じることありませんか?

 回路図を書き残して、プログラムを保存して…
 何日か経ってみたらもう一度その回路を作ることがめんどくさかったり、疲れていたりすると配線を間違えてしまって動かなかったり…じゃあ、もうひとつArduinoを買っておこうか?って思って気がつくと、手元にArduino Duemilanoveが三つ、MEGAがひとつ、NANOが3つ、とかあるようになってしまいます。でもね、結局何の解決になってないし。
 残したい回路が一つ出るたびに数千円は考えます。親せきの男の子に楽しいよって渡すにも数千円だとねぇ、子供の小遣いとしては高いし。
 安くArduinoが作れたらいいのに!でもめんどくさそうだなぁとか、難しそうだなぁって思っていました。

 で、そんなときに見つけたのがこのプロトタイパーズの記事です。
http://pc.watch.impress.co.jp/docs/column/musashino_proto/20090806_307235.html

 おおーっすげー!Arduinoを自作してる!
 しかもすっごいシンプルな回路図だーっ! おお、乾電池で動いてる!
 これならハードウェア初心者の俺にも作れるぞ!

 と思ったわけです。

 で、やってみたい人もいるでしょうから、初心者にわかるように説明です。

 用意するものは、プロトタイパーズを読んでもらえればわかりますので、私が悩んだポイントを中心にいきます。

(材料・ハードウェア系)
 Arduino Duemilanove(1個)※ブートローダー書き込みのため
 ATMEGA168(ATMEGA168PでもOK)(1個)
 SparkfunのFTDI BASIC・3.3V版(1個)※出来上がってから、プログラムを書き込むのに必要
 積層セラミックコンデンサ、0.1μF(3個)
 積層セラミックコンデンサ、10μF(1個)
 10KΩの抵抗(1個)
 1KΩの抵抗(3個:このうち1個はD13のLED点灯用)
 ジャンパワイヤ適宜必要な分だけ
 ・コンデンサーや抵抗は不意の手違いで壊してしまうことも考えて予備もあると安心です。
 ・ATMEGA168を基板に取り付けることも考えて、ICソケットもあったほうが安心。

(材料・ソフトウェア系)
 ブートローダーを書き組むためのソフトとして…参考になったのがこちらです。
http://www.geocities.jp/arduino_diecimila/bootloader/index.html 
まず、このとおりにArduino Duemilanoveを改造(?)し、パソコンに必要なものをインストールしましょう。

インストールするもの。
(1)FTDI BitBang AVR-Writer "avrdude-serjtag"
(2)avrdude-serjtag用設定ファイル"avrdude.conf"をダウンロードして、上書きコピー
(3)avrdudeのGUIラッパー"avrdude-GUI (yuki-lab.jp Version)"
(4).NET Framework 2.0がインストールされていないときは「.NET Framework 2.0」もインストールしてください。
※(1)~(3)は、XPなら「C:\Program Files」フォルダにコピーすれば簡単ですが、VISTAなどの場合は、他のディレクトリにインストールしないと正しく動作しないかもしれません。

 で、新品のチップということで話をすると、
----------------------------------------------------
低速クロック動作にします。
Command line Option 欄に -B 4800 を記述します。
【注意】工場出荷状態のデバイスは高速クロックでは動作しません。
----------------------------------------------------
 ということで、私の新品チップの場合はさらに 「-F」を追加しないとうまくいきませんでした。
 (さらに、高速クロック動作で動かしてみることが書かれていますが、実際には必要ないのでこのままいきます)
 DiecimilaやDuemilanoveなら、記事のままでいいのですが、ここで作ろうとしているのは外付け発振子のいらない8MHzのArduinoなので、ちょっと変わってきます。
 まず、選ぶファイルはプロトタイパーズで説明されているように

----------------------------------------------------
次はProgramタブへ移って、ブートローダを書き込みます。ブートローダはArduino IDEに付属しています。IDEがインストールされているフォルダがarduino-0016だとしたら、arduino-0016→hardware→bootloaders→atmegaとたどっていくと、「ATmegaBOOT_168_pro_8MHz.hex」というファイルが見つかります。これが今回書き込むべきブートローダです。
----------------------------------------------------
ということで、ブートローダのHEXファイルは、「ATmegaBOOT_168_pro_8MHz.hex」を指定します。
(今はarduino-0016ではなく、arduino-0017になっているので読み替えてください)


 さて、ここから重要な作業が続きます。ここを間違うと、最悪チップは動作不能に陥るので注意してください。
(1)まず「Chip Erase」で中身を消去
(2)フューズ・ビットの書き込み
  本来、定義ファイルが「arduino-0017→hardware→bootloaders」の中にある「boards.txt」にすべて記載されているのですが、「ATmegaBOOT_168_pro_8MHz.hex」を内蔵クロックで動かすため値が変わります。
 hFuse=DF
 lFuse=E2
 eFuse=00
 となります。(168/168P共通)
 なお、これはavrdude-serjtag、avrdude、avrdude-GUIを使って書き込む時の設定値です。

 「AVR Studio」を使って書き込む場合は、
 hFuse=DF
 lFuse=E2
 eFuse=F8
 となります。これは、「avrdude」は未使用ビットを0、「AVR Studio」は未使用ビットを1として取り扱うために違う数値になります。(eFuseの未使用ビットは7~3ビットです※この情報は未確認なのでご注意を)

(3)HEXファイル(ブートローダ)の書き込み
「ATmegaBOOT_168_pro_8MHz.hex」を指定

(4)ロックビットの書き込み
「0F」を指定して書き込み

 これで、内部クロック8MHzで動作するArduino互換機ができました。
 ※ロックビットに関しては、ネットの断片的な情報から「おそらくこの値だろう」ということで書き込んでみたら動いたというのが正直なところです。本当は別の値があるのかもしれません、AVRSTUDIOなどで「CF」で書き込んでいる方もいるようです。(詳しい方、どうぞ教えてくださいm(_ _)m)

 ちなみに乱暴なテスト方法では、ブートローダー書き込みに使ったケーブル4本をはずして、Arduinoに電源を入れてD13と連動しているLEDが点滅すればブートローダーがちゃんと働いています。
 ただし、外部クロックのフューズビットに設定してあるときも点滅しますので、あくまで目安です。
 (ちなみにこの方法はとても乱暴な方法ですので壊れても責任は持ちません)

 最後に、これをプロトタイパーズで紹介されているように作成して組み込めばOKです。
 間違いなければ、D13と連動しているLEDがチカチカと点滅をします。

 私の場合、なぜかブレッドボードとチップが接触不良でうまく動かず、基板に作り直してやって動きました。

 あとは、SparkfunのFTDI BASIC・3.3V版を接続してサンプルのBLINKを転送してみてください。
 FTDI BASIC・3.3V版は、スイッチサイエンスが手軽で早く、入手しやすいです。
 秋葉原の店頭で入手したい方は、千石電商の2階フロアのArduinoコーナーや、「マルツパーツ館 秋葉原2号店」などで買えます。


 これが私が作ったArduino(ムサシーノ)互換機です。
RIMG0168a.jpg
 チップの周りにはブレッドボード代わりに使えるソケットを配置してあって、リセットスイッチ(GNDと1番ピンを接触させる)が追加されています。
 乾電池でピコピコ動いているのはなんかかわいいです(^^)
 
 ちなみにここまで来るのに2週間かかりました。
 昨日フューズビットがわからず徹夜して、今日のスケジュールを全部キャンセルし、もう一度プロトタイパーズの記事を読み返してやっと数値を見つけ、さらにそこから直して夕方にやっと動き出しました。ああもう疲れました。
 でも、これでいろいろほっとして安心して眠れます。
(ちなみに、単三電池2本でBLINKのスケッチをどのくらい動かせるかと計ったところ、5日間以上動き続けて、こちらがめんどくさくなってやめました(^^;;;)


5V動作のArduinoについてはこちらです。

Arduino ISPを使った場合はこちらです。

Arduinoにハマってました(^^;;) [arduino]

 ここしばらく、Arduinoにハマってしまっていました。
 なにがすごいって、この基板だけ(まぁ、いわゆる「ワンボード・マイコン」ですけど)でいろんな事が出来ます。
 で、最初にやったのが、自分の仕事で使うストップウォッチを作りました。
 普通のストップウォッチには出来ない、任意の時間でのカウントダウン機能と、予定よりも時間をオーバーしたか短くなったかも判るLAP、さらに出来事が起きた時の時刻を知ることの出来る、結構複雑な機能を持たせたヤツです。
 Arduinoには内蔵時計がないので、RTCというパーツで時間の管理をして、いろいろと計算した結果を20桁×4行の液晶ディスプレイに表示するようにしました。制作にかかった日数、わずか3日……
 ハードの制作と動作確認に2日、プログラムの制作に1日(といっても平日の夜だけ、実質は1日くらい)です。

 それまで、ハンダ付けは出来ても、まったく電子工作などをした事がない人物が、たった3日で完成してしまったんです。しかも、ちょっとテストして、不具合を直し、実際に仕事に使って問題もありませんでした。
 これってすごい!
 しかも、基板を作って配線して、それをケースに入れてきちんとしたスイッチをつけたりするともうほんとカッコイイ!
 なんか自分がいきなり出来るヤツになった気分です。
(残念ながら、制作したモノを見せると仕事関係とかいろいろとまずいのでお見せできませんが)

 代わりに昨日勢いで作ってみた温度計を紹介します。
 こんなものも手軽に出来てしまいます。
arduino002b.jpg
 ボードの右上にあるのは、赤外線センサーと、RTCで、この後組み込んでみようと思っているパーツです。実際に配線はされていません。
(すいません、LCDの裏に3本ほど配線が隠れてしまってます)
 配線してあるのは、ぽつんと黒い温度センサーと、左上のI2C通信で表示できる液晶ディスプレイくらいです。
 ちなみに、この液晶ディスプレイ、電源の他に2本だけ配線すれば使えるのですごく手軽です。普通のLCDだと7本の配線が必要になりますけど、それが必要ありません。接続については、ビーコン菅原さんのブログが詳しいので、こちらをどうぞ。

 全体像はこんな感じです。
arduino002a.jpg

 電源を入れてから、それまでの最低気温と最高気温を表示するようにしてありますけど、回路を作るのに4時間以上かかりました。温度センサーの配置がうまくいかず、実は極性を反対にして配線してしまい1個センサーをダメにしました。(データシートに書いてある説明が、まさか上から見た状態ではなく、足の生えた下側から見た場合だったなんて……これに気が付くのに3時間かかりました。みんな当たり前に知っていることなんでしょうけど……知らないと反対に書かれた印刷ミスだと思ってしまいます、きっと)。
 一方のプログラムはあっという間に出来て、この温度計、今は部屋の片隅でちまちまと動いています。

 あと、RTCで時計や温度変化の記録も取れるようにしたり、いろいろと出来そうです。
 こいつのおかげでロシア語の勉強がちょっと進みませんでした。
 今日はまじめに勉強しました……ちなみに私、文学部卒です(^^;;;;;

アマゾンでも買えます。
(2011年UNOというモデルに変わりました)

Arduino Uno

Arduino Uno

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス




この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。