MacでPistachioしてみた


きっかけは、Arduinoなどのマイコンを販売していらっしゃる、スイッチサイエンスさんの金本社長が

例の小さいAT90USBボードの試作品、差し上げます。リプライで申し出てください。使用感をブログ等で公表し、ツイッターで告知してくれる方限定。先着数名、締め切りは本日朝まで(てきとう)。当選の方のみDMでお知らせします(ので、もちろん、フォローしてる方限定)。
@ssci
金本茂@SWITCHSCIENCE

と呟いたことでした。まさに今AT90USB162が熱いとき、このビッグウェーブ?に乗らないワケにはいきません。
ということで、金本社長におねだりしました。


これ。Postachioです。2年ほど熟成させたとのことですが、リセットボタンが付いていませんでした。あと、USBに刺すとぐらぐらします。だが、使いやすいようにすることから電子工作ははじまります。


ということで、リセットボタンを探してきました。秋月電子さんで売っている、「超薄型押しボタンスイッチ(タクトスイッチ)」がピッタリです。

USBグラグラ問題は、

こんな感じでコネクタ幅に合わせて切った 0.5mm厚のプラ板を裏面に両面テープを貼り付ければOKでした。目測だったのですが、まさにピッタリでUSBコネクタにピッタリ納まってくれるようになります。

あとは、コードを書いてMacでのコンパイルですが、avr-gccというコンパイラを使ってAT90USB162のバイナリが作れそうだということまでは分かったのですが、MacPortsでインストールしたavr-gccはAT90USB162のバイナリを吐いてくれませんでした。そこでリサーチしたところ、CrossPack for AVR®というものが対応しているということが分かりました。

インストールして、


/*
* Pistachio LED Blink
* @ytsuboi http://www.ytsuboi.org/wp/archives/1858
*/

#include
#include
#include
#include

void wait()
{
volatile long t;
for(t=0;t<10000;t++){ ; } } void main(void) { unsigned char i; DDRB = 0x20; while(1){ for(i=0;i<2;i++){ if ( i== 0 ){ PORTB = PORTB | _BV(PB5); wait(); } else { PORTB = PORTB & ~_BV(PB5); wait(); } } } } [/c] といったコードを書いてみて、コンパイルをしてやることで、LEDチカチカができました。 MakefileはPublic Domainのものを利用していますので、ここに置いておきます。
こともなげに書きましたが、AVRのコードなんてArduinoでしか書いたことがないので、ポートの入出力の切替など、色々なところで躓きました。

最後に、main.hexをFLIPというWindowsのソフトウェアで転送をします。この段階がWindowsになっちゃうのが悔しいかったのですが、後になって、dfu-programmerというソフトウェアを使えば、Macからも転送できそうだということが判明しています。

して結果は、

こんな感じに、eneloopのUSBコネクタに刺すとLEDチカチカしてくれます。
ちなみに、この動画はiPhone 4で動画を撮ることを先日憶えて、iPhoneのiMovieで編集とYouTubeへのアップロードまでやってみたものです。左手でiPhone 4を保持しているので、右手だけでPistachioをうまく刺せずに苦労しました^^;

あ、そうそう、私はまだLEDチカチカまでしかやってませんが、AT90USB162は割とカンタンにUSBデバイスを作ることができます。HIDでマウスとかキーボードなどなど、遊び方は色々あります。LUFAというライブラリを使えば、かなり省力化して開発をすることもできそうです。

ただ、USBデバイスとして使えるようにプログラムを書き込むと、USBからの書き込みができなくなってしまいます。そういうときには、Pistachioをリセットしてやる必要があります。手順は次の通りです。

  1. PistachioをPC/Macに接続する。
  2. リセットボタンを押しっぱなしにする。
  3. Pistachioの”7″と書いてあるピンをGNDとショートさせる
  4. リセットボタンを離す。
  5. Pistachioの”7″ピンとGNDを離す。

Pistachioの裏面には”/HWB”と書かれたパターンがあるので、そこをショートさせるという手もあるのですが、ちょっと操作しづらいので、私はピンを立てちゃいました。

まだこれだけしか遊べていませんが、Arduinoのヌルい環境でAVRを使っていたので、色々なことを学ぶことができました。
ちなみに、Pistachioは試作品段階のようですが、販売も検討していらっしゃるそうなので、出るといいなぁと楽しみにしています。スイッチサイエンスさんから出たら、皆さんも遊んでみてください。