何ヶ月か前にDIGI-COMP 1なる紙製コンピュータが話題になりましたよね。
回帰ブームっぽいので、WWWpic2なる小型のWebサーバを制作してみました。組み立てただけですけどね(^-^;;
Webサーバといってもハードから作ります。SLIP(Serial IP; シリアル回線インターネットプロトコル)でネットワーク接続しますので、真似してみたい方はシリアルポート(COMポート)というレガシーなデバイスを備えたPCも必要です。新し目の小型PCには備えていなかったり、USBシリアルだと電圧が足りない場合があります。
PCとの接続には、インストール不要の1CD/DVD Linux「KNOPPIX」を使用してご紹介しています。
&bnsp;
○パーツを揃えよう
電子パーツについては、日本で手にいれやすい汎用的なものに置き換えました。デジタル回路ですので、抵抗値やコンデンサ容量など多少違くても大丈夫です。
パーツ | 型番 | 数量 | 価格目安 | 備考 |
---|---|---|---|---|
汎用基盤 | 何でも | 2/5欠け | @80×0.4=32円 | 1枚80円 |
PICマイコン | PIC 16F84A-20 | 1個 | 300円 | 秋月さん、千石さん、などで入手可 |
EEPROM | 不要 | 現バージョンでは未使用 | ||
18pin ICソケット | 1個 | 20円 | PIC用 | |
8pin ICソケット | 不要 | EEPROM用 | ||
セラロック | 10MHzのもの | 1個 | 40円 | ※クリスタルの場合は別途コンデンサも忘れずに |
3端子レギュレータ | 78L05など5V用 | 1個 | 20円 | 5個100円 |
NPN トランジスタ | 2SC1815-GR | 3個 | @5×2=10円 | 20個100円 |
シリコンダイオード | 1S1588 | 3個 | @2×3=6円 | 1S2076A / 1N4148など 50本100円 |
電解コンデンサ | 10uF程度 | 2個 | @10×2=20円 | |
セラミックコンデンサ | 33pF程度 | 2個 | ※発振子をクリスタルにした場合 | |
カーボン抵抗 | 10KΩ程度 | 2個 | @1.5×3=4.5円 | 100本150円 |
カーボン抵抗 | 4.7KΩ程度 | 1個 | @1.5×1=3円 | 100本150円 |
カーボン抵抗 | 2.2KΩ程度 | 2個 | @1.5×2=6円 | 100本150円 |
Dサブ 9ピン メス | 1個 | 50円 | ||
合計 | 507円 | 初回袋買いだと1,260円 |
※公式サイトの注意書きに、「トランジスタはHFE>50」とあります。Oランクだとギリギリかもしれませんので、Yランク以上が良いと思います(未確認)。
○組み立てよう
回路図のとおりにハンダ付けします。WWWpic2はGPLとして公開されていますので、日本語訳付きで載せておきます。
○PICに書き込もう
とりあえず動かすには、HEXファイルをそのまま書き込んでください。公式サイトで配布されています。出力されるHTMLはコード中に埋め込まれていますので、適宜変更またはMPLABでリビルドしてください。
また、Port Bに繋いだペリフェラルの状態を、HTML経由で読み出せるようになっていますので、色々と遊べそうです。詳しい事は、ソースを眺めてみてください。
ちなみに、PICライターはお持ちでなくても、1,000円程度で作れます!
◆関連リンク
・シリアルポート接続PICライターの製作 - ROCのホームぺージ
※シリアル接続、ノートやUSBシリアルなどでは電圧不足に注意
・PIC Writer for Windows - Ishijima's World
※パラレル接続、対応OS注意
○PCに接続しよう
・WindowsPCで通信テスト(通電テスト)。もちろんMACでもおk
制作したWWWpic2を、PCのシリアルポートに接続します。Windows環境でも、回路チェックは可能です。TeraTermなどで19200bps・N81で接続して、何か文字を送れば、「OK」という文字を返してきます。
・LinuxPCに繋げてネットワーキング
良さそうでしたら、KNOPPIXから起動してください。COMポートがttyS0としてコマンド例を示します。
knoppix@Knoppix:~$ su root@Knoppix:/home/knoppix# slattach -d -p slip -s 19200 ttyS0 & [1] 3385 root@Knoppix:/home/knoppix# slattach: tty_open: looking for lock slattach: tty_open: trying to open /dev/ttyS0 slattach: tty_open: /dev/ttyS0 (fd=3) slattach: tty_set_speed: 19200 slattach: tty_set_databits: 8 slattach: tty_set_stopbits: 1 slattach: tty_set_parity: N slip started on ttyS0 interface sl0 root@Knoppix:/home/knoppix# ifconfig sl0 192.168.2.1 root@Knoppix:/home/knoppix# ifconfig sl0 dstaddr 192.168.2.2 root@Knoppix:/home/knoppix# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.2.2 0.0.0.0 255.255.255.255 UH 0 0 0 sl0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 root@Knoppix:/home/knoppix# telnet 192.168.2.2 80 Trying 192.168.2.2... Connected to 192.168.2.2. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.0 200 <a href=a>PortB control</a><hr><a href=http://kyllikki.fluff.org/hardware/>wwwpic2 homepConn ection closed by foreign host. root@Knoppix:/home/knoppix#ね、簡単でしょ? (Bob Ross風に)
このマシンからは、ブラウザで http://192.168.2.2/ にアクセスできます。
※コマンド例中のIPアドレスや通信速度は、PIC側はIP:192.168.2.2、19200bps・パリティ無し・8bit・ストップ1bit と決め打ちになっているため固定です。これらの値を変更するには、ソース修正が必要です。
○ネットワークしよう
家庭内乱LANを組んでいる環境では、これでWWWpic2も立派なネットワークの一員になりました。他のマシンに適切にルート設定をしてあげれば、そのマシンからもアクセスできます。LinuxマシンのIPを192.168.1.5とすれば、ネットワーク構成はこんな感じでしょうか。
例えば、Windows2000/XP/Vistaで192.168.2.0/255.255.255.0のネットワークへの経路を追加するのであれば
route ADD 192.168.2.0 MASK 255.255.255.0 192.168.1.5 METRIC 3 IF 1みたいにしてください。
ブロードバンドルータにルート追加と併せてIPマスカレードの設定もすれば、当然ですが世界中からアクセス可能です。
○商標など
WWWpic2は、Denis Petrov氏のWWWpicをベースに、Vincent Sanders氏が手を加えGPLとして公開されています。WindowsはMicrosoftの、PICはMicrochipの、セラロックは村田製作所の、その他商品名は一般に各社の商標または登録商標です。