Archive for the 'Arduino' Category

秋月の8×2液晶

Posted by ゆのじ on 3月 21st, 2009

8文字2行キャラクタ液晶モジュール

先日秋月電子に行ったとき、8文字×2行キャラクタ表示液晶モジュールというこれまで取扱のなかったキャラクタ液晶が出ていたのでいくつか購入しておいた。そのままだと塩漬けになってしまってもったいないので、Arduinoのお勉強がてら火を入れてみることにした。

まず、Arduinoの勉強に使うということはほぼブレットボード的に使うことになるので、付属のピンソケットは上面に取り付けることにした。こうすると、液晶の左にピンソケットが来るように見たときのピンアサインは下記のようになる。

DB7 14 13 DB6
DB5 12 11 DB4
DB3 10 9 DB2
DB1 8 7 DB0
E 6 5 RW
RS 4 3 V0
Vdd 2 1 Vss

これで、4ピンIOモードで叩くならば、DB7~4、E、RW、RS、V0、Vdd、VssをArduinoに繋ぐだけで良い。使うライブラリはLiquidCrystal.hで、arduino-0013\hardware\libraries\LiquidCrystalにある。サンプルもそこにあるのでそれをさくっと読めば動かせる。

液晶モジュールwithArduino

この液晶の良いところは、まずは「美しい」ところに尽きると思う。これまでのなんだか間延びした感じのサイズと比べると大変にコンパクトな感じで、早速組み込んで使いたくなる。 色合いも電源OFF時はマリンブルー系の青、電源を入れると上の画像よりもっと鮮やかなセルリアンブルーのバックライトに白い文字が映える。
そして、よりうれしいのは「何も考えずにとりあえず3.3V単電源で動く」ということ。秋月のウェブでは5V単電源動作と書いてあるが、データシートには「Supply voltage for logic min2.7V max5.5V」と「Supply voltage for LCD drive min3.0V typ4.6V max6.5V」とある。typ4.6Vではあるが、3.3Vでも動作可能ということだ。早速試した(Vddを3.3Vにつなぎ替えて、V0をGND直結とした)ところ、問題なく表示されることを確認した。コントラストの調整幅が減るが、表示は可能で、試作レベルでちょいちょいと遊ぶにはこの一手間省けるところが大変ありがたい。

もちろん良いところがあれば悪いところもあるわけで、やはりバックライトがないと見えないというのは省電力アプリケーションには厳しい。データシートにあるTypで70mAというのは電池での長時間駆動をほぼ無視した値といえる。実際の所は秋月の紙に書いてあるとおり、裏面のR7に100Ω、R9直結にして3.3Vでも十分確認できるほど明るい。これでおよそ9.4mAほどであった。(それでもエネループ1本+DC/DCコンバータだとかいうアプリケーションには厳しそうだ)

参考まで。

Arduino事始め

Posted by ゆのじ on 3月 11th, 2009

IMG_0041

友人のひがさんとマイコントークをしていたら、Arduinoを持っているけれど使ってないから貸してあげようか、とのありがたいお言葉。是非是非お願いしますということで受け取ったのが先日のこと。お借りしたのはArduino Diecimila、つまりちょっと古い型のArduinoになる。

Arduinoとは、ATMEGAになってから搭載されたブートローダ+自己書き換え機能をフルに使って、シリアル経由でプログラムをダウンロードする仕組みを持ったマイコンボードで、シリアル部分にFTDIのUSB-Serialブリッジを使うことで給電を行いつつ扱いやすいケーブルでPCに繋ぐことを可能にしている。マイコンに直接ファームウェアを書くのが当たり前だったATMEGA以前のAVR時代からするとかなり常識が違うので最初とまどってしまったが、自己書き換えが出来るならそりゃー便利に使えるよなと納得。

Arduinoの偉いのは、余計なことを一切考えなくてもいい(つまり初心者にやさしい)統合開発環境を用意しているところ。表面はJavaの類で実装してあって、中身はgcc-avrでうまく自動化されている。ユーザがやることは、動かすコードを書いて「Upload to I/O Board」ボタンをクリックするだけ。コードをコンパイルするとかリンクするとか、繋がってる手段によってライタを用意するとか、そういうことを考える必要は一切無い。

そして、かなり潤沢なライブラリのおかげで、とにかく一から書くことに比べると圧倒的にコード行数が少なくて済むのが良いところ。もっともブートローダに加えて便利な(=冗長な)ライブラリで実装されているわけで、出来ることは自然少なくなるが、プロトタイプを可能な限りすぐ作りたいという目的であればかなり良いソリューションだろうと思う。

あえて駄目出しするならば、直接デバッグできない、ということがあるだろう。シリアルは書き込みに使う線をそのままデバグに使える(統合開発環境から1クリックでモニタできる)から、いわゆるprintfデバッグ的なことをシリアル経由で行えばいいが、特定箇所にブレークポイントを仕掛けてデバッグ、といったことは出来ない。ある程度以上大きい(まじめにアセンブラメインで書いてFlashがかなり埋まるとかいう)レベルのプロジェクトに適用することはオススメできない。

とはいえ、ちょっと朝飯前的なプロジェクトにはもの凄い便利であることがよくわかった。通常、1つ1つに書き込み器が付いている必要はあまりないので、USB-Serialブリッジ部分と本体部分を分離したものを作ってやると半プロダクトにも便利に使えそうに思う。色々つかってみたらまたレポートしたい。