学研電子ブロックのIPv6モジュールを作ってみた

学研電子ブロックのIPv6モジュールを作ってみた

タグ:
井上 博之

インターネット総合研究所(IRI)

 学研の電子ブロックをご存知だろうか? 今から25年ほど前に発売されたもので、トランジスタや抵抗などの電子部品が小さなブロックに入っており、それをパズルのように組み合わせることでラジオやアンプなどの電子回路を何十種類も作れるというものだ。昨年、この復刻版EX-150が学研の大人の科学シリーズとして発売された。では、その機能ブロックとして、「IPv6ネットワークと通信するためのモジュール(ブロック)」を作ってみようと思いついたのだが、何とか動くものができたので、そのレポートをお送りしたい。

電子ブロックのIPv6モジュールの思いつき

 電子ブロックとその復刻版に関する詳しい情報は、学研のホームページを見て欲しい。もともとの電子ブロックシリーズの最初の発売が1976年だそうなので、「学研の電子ブロック」といって「ああ、あれか、懐かしいね」と思う世代は、今では30歳台だろうか。実は、私も当時欲しかったけれど、買ってもらえなかった口で、友達のうちで遊んでいた記憶がある。ということで、昨年4月に復刻版が出たときは、学研の先行予約に申し込んで発売当日に入手していた。

 と、せっかく入手した電子ブロックだが、キラキラと輝く目をした:-)小中学生の頃とは違って、特に夢中にはなれず、結局子供のおもちゃと化していた。ところが、この7月に電子ブロックEX-150のオプションとして拡張キットなるものが発売された。この拡張キットにはフルカラーLEDやフォトトランジスタやタイマICなど最近の電子パーツが色々と入っており、従来の電子ブロックではできなかった多彩な実験ができるようになっている。さらに、ちょうどその頃IPv6アプリコンテストのインプリ部門の前期〆切のお知らせがあり、何となく「IPv6の通信モジュールができたら面白いかも」という思いつきが浮かんだのであった。

 製作してみようと思ったIPv6モジュールのコンセプトをまとめてみよう。

  • イーサネットインタフェースを備え、IPv6ネットワークと接続できること。ユーザとのインタフェースは、Webベースとする。
  • 電子ブロックの1つのブロックとして、本体に差し込んで使用する独立したモジュールとする。

  • 応用回路としては、電子ブロックにもともと載っている、お風呂水位センサや、ラジオやランプの回路のON/OFFなどを、IPv6ネットワーク経由で制御可能とする。

  • モジュールの動作はユーザが(その気になれば)プログラム可能とする。

  • モジュールから直接電子ブロックで作成した回路に接続するのではなく、センサブロックのようなものを用意して、それを差し換えることで、色々な回路とつながるようにしたい。

コントローラとセンサ選び

 IPv6ネットワークと、電子ブロックの回路を接続するには、何かのコントローラ(組み込みCPUボードのようなものと、その上で動くOS)が必要となる。また、電子ブロックという配線や端子の数に制限がある状況で、入出力をどうやって行うかという問題もあった。まずは順当に、組み込みLinuxなどが動く名刺サイズ程度のCPUボードを使うことも考えたが、なかなか良いものが見つからなかった(個人的にやっていたので、資金の問題もあった)。一方センサのほうは、Maxim社(旧Dallas Semiconductor社)という半導体メーカの1-Wireインタフェースのデバイスを使用することを考えていた。1-Wireは要するに1本のバスで、温度センサやデジタル/アナログの入出力のセンサ(機能IC)を接続でき、電源線も含めて2本あるいは3本の配線でセンサの接続が完了してしまうという特徴がある(1本の信号線とアースの合計2本の配線で双方向の通信ができるLANのようなものと思ってもらうと分かりやすいだろう)。また、バスなので、複数のセンサも同じ配線に並列に接続するだけでよい。デバイスの形状も小さく、電子ブロックの1つ1つのブロックに組み込むのも簡単そうで、センサはこれで決まりだった。

 コントローラについては、結局、NTTコミュニケーションズのIPv6実証実験でモニター配布された情報家電コントローラ が手元にあったので、それを利用することにした。この装置は、コントローラとして、同じくMaxim社のTINIというCPUボードが入っており、1-WireインタフェースやWebサーバ機能を備えており、また、日本のインターネットノード社によってIPv6スタックが搭載されており、開発が楽にできそうという目論見があった。実のところ初めからIPv6情報家電コントローラを流用しようという考えはあったのだが、いかんせん(基板の)サイズが大きく、当初はあきらめていた。適したコントローラが見つからないので、再び情報家電コントローラに戻り、分解して基板をじっと見ていたところ、「もしかして、基板の不要そうな部分を切り落としたら、電子ブロック本体に入るかも!?」という考えがむらむらと沸いてきた。TINIの回路図とにらめっこをしながら配線パターンを追っていき、えいや、と不要(そう)な部分を全て切り落としてスリムになった基板に通電すると、無事動作してくれたのであった。しかし、それなりに大きなサイズになってしまったため、電子ブロックの応用回路のための余地はブロック1行分(ブロック8個分)しか残らず、これで何か意味のある(デモを見せるための)回路を作らなければならないと、また頭を悩ますことになるのだが。

 次は、これを電子ブロック本体に入る「ブロック」に加工し、他のブロックと接触させるための接点を作る必要がある。これは割と簡単で、東急ハンズなどで買ってきたアクリル板と、接点用のリン青銅板を加工して、8×5個分の大きさのブロックに組み上げた。イーサネットコネクタとシリアルポートは、当初はコネクタを上部につけることも考えたが、スペースの関係もあり、それぞれケーブルのかたちで引き出すことにした。また、元の電子ブロックは1.5Vの単三電池4本を使った6Vの電源だったのだが、コントローラが5Vのみということで、また長時間使うことも考えて、外付けのACアダプタ仕様に改造した。DC5VのACアダプタを用意して、本体の空いたスペースにジャック(ACアダプタの差し込み口)を取り付け、内部の電源に配線する。以上でハードウェアは完成だ。

IPv6モジュールを装着した状態

IPv6モジュールを装着した状態
IPv6モジュール外観IPv6モジュール外観

応用回路

 さて、IPv6モジュールを本体に入れてしまうと、電子ブロックの8個分しかスペースが残らない。この中に、それなりに意味のある回路を入れる必要がある。できれば、センサとなるブロックからの入力として何かわかりやすいものを得てIPv6ネットワーク経由でWebブラウザに表示し、また、Webブラウザからの操作に応じて音や光が出るものを作りたいと考えていた。そこで、入力としては温度(気温)を測定することにし、出力としては単なるLEDのON/OFFではつまらないので、デジタルでの出力(つまり、1か0かの出力)によって、音源ブロックと本体内蔵のアンプを組み合わせたメロディ出力をON/OFFすることを考えた。なお、音源ブロック(メロディICブロック)は拡張キットに含まれていたブロックを使用している。

 センサとして使用する1-Wireのデバイスとしては、3端子の温度センサIC(DS18B20)と、同じく3端子のデジタル入出力のIC(DS2406)を利用し、それぞれを使用していない電子ブロックの中身に組み込んだ。デジタル出力がわかるようにブロック内部にLEDを入れ、また同時にデジタル入力も可能となるので、もともとあるキースイッチのブロックに入れることで、このスイッチが押されたことを検出できるようにもした。

 改造したブロックの外観と、全体の構成図は以下のようになった。これで、なんとか8ブロック分に収まったが、IPv6モジュールの各信号端子は引き回しを考慮したため、今回の回路に合わせた配置になっている。

温度センサブロック

温度センサブロック
デジタル入出力ブロック(LED内蔵)

デジタル入出力ブロック(LED内蔵)
全体の構成図

全体の構成図

制御プログラム

 IPv6ネットワークを経由したクライアント側では、Webブラウザを使用して表示し操作するため、特別なものは必要ない。電子ブロックのIPv6モジュールのコントローラには、1-WireのセンサICと通信を行い、またWebへのHTMLでの出力を行うプログラムを動かす必要がある。なお、IPv6プロトコルスタックについては、コントローラにもともと載っているため、IPアドレスの設定を除けば、プログラムからは特に気にする必要はない。

 コントローラ側のHTMLを生成するプログラムは、センサのリアルタイム情報などを含む動的なページを生成する必要から、いわゆるcgi-binの形態とした。コントローラであるTINIボードは、Javaの仮想マシンを搭載しており、センサとの通信やHTML生成のプログラムはJava言語で作成する必要がある。IPv6とは直接関係ないが、そのプログラムの例を見てみよう。ここでは、温度センサICと1-Wireインタフェースを通じて通信を行い、センサの情報を読み出し、HTMLのページを生成している。なお、1-Wireの通信ライブラリはMaxim社より提供されているため、その関数を使用している。関数とメソッド名を見れば、おおむね処理の内容は理解してもらえるだろう。

この記事のトラックバックURL

http://www.ipv6style.jp/trackback/265
Ads by Google

特集

リンク

go6.netはIPv6の普及を促進するコミュニティ・ポータルです。
http://go6.net/

IPv6ブログ