Arduino用LANインタフェース(ハード編)

Arduinoで使えるLANインタフェースを作ってみました。イーサネットコントローラは秋月で売っているENC28J60です。トランス内蔵RJ-45モジュラジャックも秋月で売っているJ0011D21BNLです。

回路はオプティマイズさんのSPIイーサネットモジュールそのまんまです。これも基本的にはデータシートに載っている回路とほぼ同じなのですが、オプティマイズさんの回路図はENC28J60のシンボルがピン番号順に記載されているので、実体配線するのにすごく都合がよかったです。(オプティマイズさんのを買ってもよかったのですが、部品が全部手元にあったのと、ITプラザに行くのが面倒くさかった・・・。)

ただ、違うのは抵抗が49.9Ωの代わりに51Ω、2.3kΩの代わりに2.4kΩ、フェライトビーズの代わりに22uHのインダクタを使っていること、5V→3.3Vの降圧回路を同居させていること、ホストインタフェースの端子配置をICの3~10ピンの並びをそのまま使っていることくらいでしょうか。あと、誤配線による破損防止に電源のところにポリスイッチ(リセッタブルヒューズ)を入れてあります。

部品面はこんな感じになりました。

抵抗・コンデンサは大部分はチップ部品を使ったので、部品面はすっきりしています。半田面はこんな感じになりました。

終端抵抗の周りの部分で勘違いをしてしまったのでちょっと汚くなってしまいましたが、オプティマイズさんの回路図を見ているとチップ部品を使えば意外に簡単にユニバーサル基板で組めることがわかります。

全景はこんな感じです。

シールド形式(イーサネットシールド)にしてもよかったのですが、後でATmega644などでも使えたらいいな、と思い、今回は敢えて単独の基板にしました。

気圧計・温湿度計を改造

以前作った気圧計・温湿度計はLinuxのPCに接続して記録をとるのが元々の目論見でしたので、表示デバイスなどは設けずUSB-UARTでデータ採取し、Webブラウザ越しに見れるだけとしていました。しかしDebianノートPCが壊れてしまい、それもできなくなったので直接表示するLCDを付けてみました。

といっても、スマートではなく、この写真のように無理やり接続しています。このArduino互換ボードは3.3V動作ですので、接続しているのは秋月の3.3V動作LCDキャラクタディスプレイモジュール[16×2行][バックライト付白抜き]です。

本当は消費電力が増える=温度が多少なりとも上がるということでバックライトなしにしたかったのですが、3.3V動作のバックライトなしで見えるタイプのものがなかったので、バックライト付きを付けました。

100円ショップの半透明(ポリプロピレン?)のプラケース越しなのでやや曇りがちですが、今の温度、湿度、気圧がわかるようになりました。

gNewSenseを試してみる

たまたまFSF(Free Software Fundation)のことを調べていたら、gNewSenseというUbuntuベースのFSF公式支援のディストリビューションがあることを知りました。もちろんLiveCDがあるようなので、ちょっと試してみることにします。

Wikipediaによると、最新版は2.3(実際にダウンロードできるものも2.3)で2009年リリース、ubuntu8.04がベースのようです。ちょっと古いのですが、試してみようと思ったきっかけは、パーソナライズ版の作成ができるBuilderというツールに関する記述があったからです。

で、CD-Rにイメージを焼いて起動してみると・・・・ちょっとデザインが違うだけで、まんまUbuntuでした・・・。(当たり前か・・・)

結局、Ubuntuもインストールできず・・・

Phoronix Test Suite をインストールしてPC不調の原因を切り分けるためにUbuntuをインストールしようとしたのですが、結局Ubuntuもインストールできませんでした。インストールはそれなりに終わるように見えるのですが、やや時間がかかる上に、インストール後のアップデートの際に固まってしまいます。

意を決して、D945GCLF2(Atom330・・・AtomのDualCoreのマザーボード)を古いGC-230D(Atom230・・・過去に270と書いたかもしれませんが230の間違いでした・・・。電源が逝ってしまったやつです。)に入れ換えてみたところ、何もかもがすんなりいくようになりました。

結局のところ、マザーボード自体が逝ってしまっていたようです。あ~、この何週間かの時間を返してくれ~~~って感じです。ようやく、とにかくなんとかまともに動くようになったので、こいつに一旦WindowsXPをインストールしてWindowsでなければできない雑用をこなす環境まで持っていかなければなりません。(しかし、Atom230では荷が重いですね・・・。330なら結構使い物になるのですが・・・。)

それが終わればようやくCore2Quadマシンの復旧が始められます。その前にCore2QuadマシンのWindowsXP環境が立ち上がらなくなったりしないように祈るばかりです。

Linux用のハードウェアテストスイート

PC環境が崩壊していくので何とか整理&再構築しようとがんばっています。

今のところ、最初に崩壊したDebianが動いていた古いノートPCは廃棄することにしました。次に崩壊した初代Atom(N270だったかな?)が動いていた静かな薄型デスクトップ(Ubuntuで使用)はHDDを取り出して廃棄することにしました。その次に崩壊したのはDualCoreのAtom(N330だったかな?)が動いていた爆音マイクロタワーで、今日はこいつがネタです。

HDDにマルチブートでインストールしてあるUbuntuは問題なく動くけど、WindowsXPが動かなくなってしまいました。こういうケースの場合、通常ならばHDDの中のファイルを疑う所ですので、これを機会に2台内蔵していたHDDを1台に減らし、爆音はたまらないのでノースブリッジのファンを低速回転のタイプに変更(変更前が8000rpmくらい、変更後が4800rpmくらい)することで静音化しました。memtestを実施したりBIOSのまま放置(PCによってはこれが結構熱を持つような気がするんです)したりした状態でヒートシンクを触ってもほんのりする程度なのであまり問題はないと思います。熱電対とかつけてもいいんですけど、面倒なのでパス。

で、WindowsXPから再度インストールしなおそうとしていたのですが、なぜか必ずインストールの途中でフリーズしてしまいます。雰囲気としては再インストール前のフリーズと似たような感じで、完全にフリーズするのではなく何かのイベントをひたすら待ちつづけている感じです。何度か試していると、ついにはインストーラ自身がフリーズするようになってしまいました。

が、こんな状態にも関わらず、LinuxのライブCDを試してみると、まったく問題なく動作します。

で、ハードウェアのテストをしてみたいのですが、大抵のツールはWindows用だったりします。・・・が、そのWindowsがインストールできないのですからどうしようもありません。

で、Linux用のものがないか調べてみると、「Phoronix Test Suite」というのが GPL v3 で存在するようです。Downloadページを見ると、Debian/Ubuntu用のPackageも用意されているようですので、とりあえずUbuntuをインストールして試してみることにします。

カラーバーLEDを点灯させる

秋月に新規に登場したカラーLEDバーアレイですが、早速入手してみました。

手軽に動かすため、Arduinoと接続して点灯させてみました。

タイマ割り込みを使用してRGB各色16階調のPWM制御をおこなっています。写真ではわかりにくいですが、結構きれいに見えます。

静止画だけではわかりにくいので、点灯のようすを無理やり動画に収めてみました。

P7120470.mpg(2.0MB)

 

続々々・Ubuntuのカスタマイズ

さらに調べてみると、UbuntuやLinuxMint(Ubuntu Japanese Teamによる追加パッケージで日本語化できるらしい)では「Remastersys」という「現在稼動している環境をもとにLiveCDを作る」というツールがあるようです。「Remastersys」でググってみると、LiveCDのみならず、さらにLiveUSBメモリを作ったりしている方もいらっしゃるようです。

一方で、サイズの問題に関しては、Ubuntu系では「lxubuntu」というカスタマイズを前提にしたディストリビューションがあるようで、バージョン11.04でも549MBなのでカスタマイズの余地があります。こちらをベースにカスタマイズすると、カスタマイズしたもの(自作APLを追加したもの)もCD1枚に収めることができそうです。

続々・Ubuntuのカスタマイズ

で、肝心のカスタマイズしたISOファイルですが、無事に起動するものの、外したはずのOpenOfficeまで動作してしまいます。これでは700MBのCDROMに収まらなくて当然です。

で、もう少し調べていたら、いくつか参考になりそうな情報が見つかったので書き留めておきます。

sourceforge.netのUCKのページをみると、2011-04-04にUCK 2.4.4をリリースしていて、詳細は公式アナウンスページを参照すべし、となっています。

そちらの「Things I do」をみると、「Ubuntu Mini Remix」というリンクがあり、システムとして動作する最小限のソフトを含むUbuntuのLiveCDであると書かれています。そして、そのサイズは165MBであるとされています。さらに、Ubuntu Mini Remixと「Ubuntu Customization Kit」「Reconstructor」「U-Customizer」などを使うと、自分の欲しいUbuntuベースのLiveCDが作れる、とされています。(Reconstructorは月額$5で発行されるアカウントが必要な様です)

まさに自分が欲しかったものになりますが、ただ一つ、日本語環境をうまく導入できるかどうかが心配です。

続・Ubuntuのカスタマイズ

試しにUSBディスクを Core2Quad Q6600マシンに持っていって、USB起動させてみたところ、QEMUの中でUbuntuのLiveCDとして起動できました。すごく久しぶりにQEMUを動かしてみたのだけど、昔とは大違いのスピードで動作するので驚きました。・・・って、調べてみたら、CPUの仮想化支援機能(VT)を使っているようです。

だったら、起動頻度の低いCore2Duo E7400のサブマシン(セキュリティが気になる用途用のマシンなので、フリーソフト類は一切入っていないし、必要最小限のものしか入ってない)でHDDが見えなくなるようにSATAを禁止した状態で作業を進めようかと考えました。

・・・が、QEMUが異常に遅い。よくよく調べてみると、E7400は初期はVT無効で出荷されていた時期があったとのこと。九十九か今は亡きT-ZONEかどっちか忘れたけど、VT有りって表示されてるのを確認して買ったのに、無しバージョンを売りつけられたみたいです。(いずれごちゃごちゃしたことに使うマシンに役割を落とすつもりだったので、VMwareがまともに動くようにVTだけはチェックしていたのですが・・・)

しかたがないので、Q6600マシンでUSB起動でしばらく使いつづけようと思ったのですが、こちらのインテル製マザーボードはSATAを禁止できません。そのせいか、grubのアップデートでひっかかってしまいます。

UCKのインストールとUbuntuカスタマイズ

SOURCEFORGE.JP Magazineの「UbuntuライブCDをカスタマイズするツール、UCK」という記事を参考にしてやってみます。

まず、記事にあるとおり、.debパッケージを入手します。今の時点では、uck_2.4.4.tar.gz が最新のようです。

ダウンロードしたものをして、GDebiパッケージマネージャで開いてインストールします。今回の場合は追加パッケージとして、patch,xz-utils,fakeroot,g++,libstdc++6-4.4-dev,build-essential,gfxboot,g++-4.4,squashfs-tools,mktemp,dpkg-devが要求され、追加パッケージとして勝手にインストールしてくれました。

インストール後、「アプリケーション」→「システムツール」の下にあるUCKを選んで起動しすると、システム要件(空き領域5GB以上、インターネットアクセスができること)の確認画面が出ます。

  1. インストールする言語パック選択画面が表示されるので、ja を選択します。
  2. ライブCDのブート時に利用できる言語パック選択画面が表示されるので、ja を選択します。
  3. Desktop環境の選択画面が表示されるので、gnomeを選択します。
  4. ベースになるISOイメージを選択します。(ディスク上のファイルを選択します)
  5. 作成するライブCDの名前を入力します。(最大32文字)
  6. 構築中に手作業でカスタマイズするかと聞かれるので、Yesを選びます。
  7. Windows関連のファイルを削除するか聞かれるので、Yesを選びます。

ここからしばらくISOイメージの解凍などが行われ、しばらくするとまたメニュー画面になります。

  1. パッケージマネージャ、コンソールアプリケーション、ビルド継続を選択する画面が表示されるので、パッケージマネージャを選択して起動します。
  2. 「UCK Package manager」が起動するので、パッケージの追加削除を行います。
  3. 以下のものを削除(Complete Removalで削除)
    OpenOffice関連、Cross Platformの下のすべて、gnome-bluetooth、evolution関連、rhythmbox、aspell、empathy、gwibber、transmission、
  4. 以下のものを追加
    setserial

これで、「Apply」を押して適用します。その後、ついでに「Mark All Upgrades」でできるだけアップデートをかけておきました。で、とりあえず今回は「Continue building」を押して、継続してみます。

しばらくすると、「370001 extents written (722MB)」と表示されて、新しいISOファイルが生成されました・・・が、722MBということは、CDには入らない・・・。orz

#後でご丁寧に「でかくてはいらないよ」というメッセージまで出た・・・。

この後表示されたメッセージによると、出来上がったISOファイルは

# qemu -cdrom ISOファイル名 -boot d -m 256

として試すことができるようである。