PICNICはPICを利用したNICの意味でしょうか? TriState社で制作し、秋月電子さんでキット販売しています。
http://www.tristate.ne.jp/tsjob007.htm
に、同社のキットが紹介されています。
PICNICはLANとSerial(Rs232C)の二つの接続用コネクタと、入出力を設定可能な二つのポートから構成されます。LANからSerialと二つのポートを、UDBのポートとして扱うことができます。つまり、LANから二つのポートにアクセスすることで、入力や出力が可能です。また、シリアルともリンクできますから、USB
> PICNICのシリアルを介して、シリアルに接続された機器の制御が可能です。
また、PICNICはWEBのサーバーとCGIの機能を実装しています。したがって、web から二つのポートの値を取得したら、値を設定できます。
したがって、出力ポートを「水遣りスイッチ」に接続しておけば、web から「水遣り」が可能です。また、おまけに、温度センサーが RA5 に接続しています。web
から、PICNICがおかれている場所の温度を知ることができます。
ポートとシリアルを制御するPC側のプログラムソースがあります。これを応用すれば、PCからLANを経由した制御が可能です。
また、PICNICはPIC16F877で制御されています。このファームウエアも公開されていますから、サーバーの機能を追加したりカスタマイズすることも可能です。NTPプロトコルを実装した例が、TriState社のwebで紹介されています。
PICNICは RTL8019AS をethernet Controller として利用しています。RTLのデータ信号をPICのDポート、アドレス信号(5本)を
Cポートに接続しています。
PICのBポート(8本)とAポート(6本)をPICNICの外部端子に接続しています。このうち、RB4〜RB7はLEDに接続されていますから状態を確認できます。RA5は内部で温度センサに接続されています。
PICNICにはLCD表示が接続可能になっています。ただし、LCDの制御にPB2〜PB7を共用しますから、外部端子としては利用できなくなります。このLCDは、UDPのポーとして、LANよる表示することもできます。
PICNICは二つの起動モードがあり、シリアル接続の利用法が異なります。ブートモードの場合、LANの接続はなく、状態の表示と設定が可能です。シリアルにHyperTermを接続し、ブートモードで立ち上げると、Hypertermへの状態表示とコマンド入力を受け付けます。設定した
IP が不明な場合、この ブートモードでの起動が利用できます。
シリアルコネクタの近くのJP2を短絡して起動するとブートモードになります。
PICNICには、ネットワークの状態を表示する3個のLEDがあります。緑はLANへの接続状態を示します。黄色はLANからの受信で、これは、PICNIC以外の受信でも点灯します。赤色はPICNICからLANへの送信時に点灯します。
IPを設定するにはシリアル(RS232)端子から行います。PCでHyperTerminalを9600bpsで立ち上げておきます。シリアルコネクタを接続し、PICNIC側を「ブート(ストラップ)モード」(JP2の1-2ピンショート)で立ち上げます。すると、
PIC Network Interface Card - Bootstrap Mode Version 1.2.0.0 ***** Configuration ***** MAC Addr. :00-02-CB-01-CE-31 [I]P Addr. :192.168.1.200 [N]etMask :255.255.255.0 [G]ateWay :0.0.0.0 [H]ttpPort #80 [L]CD Port #0 [P]arallelPort #10001 [S]erialPort #10002 PICNIC>
などと表示されます。これで、現在設定されているIPを知ることができます。HyperTerminalから
PICNIC>i=192.168.1.201
と入力します。
これで、PICNICのIPを変更できます。その他の設定はwebから行うこともできます。
PICNICにはwebサーバー の機能が組み込まれています。IEで
http://192.168.1.200
でPICに接続すると、下記のようなページが表示されます。
この画面で。RB4のHボタンをクリックすると、PICNIC側のLED4が点灯します。RA5In の 「27Celsius」は、PICNICの内蔵されている温度センサーの値の表示です。
webの画面では、下記の設定(Configuration)や状態(Status)も表示されます。ここから、PICNICのIPアドレスを変更することも可能です。ただし、有効にするには一旦PICNICをリセットする必要があります。
picdos はDOSレベル(ウインドウを利用しない)PICNICのポートを制御するプログラムです。
PN_open()で、PicnicのIPと、LCD、Pararell,Serial のポートを指定して開きます。IP を変更した場合、プログラムも修正が必要です。次に、PN_dirp()で、ポートの入力、出力を設定します。最後にPN_outp()
でポートの指定ビットを1にします。これで、PICNICのLED4,5,6,7が点灯します。
PN_の関数を利用するには picnic.h、および、PICNIC.lib が必要です。これらは、元は、DLLフィルダに入っていますが、同じプログラムと同じフォルダに入れるよう変更しました。picnic.lib を追加するには、プロジェクトメニューから、「設定」、「リンク」と辿ります。オブジェクト/ライブラリ/
の最後に、PICNIC.lib へのパスを指定します。
#include "stdafx.h" #include "picnic.h" // 環境に合わせて変更してください /* RB4-7のピンを出力に設定し、全てにHを出力するプログラム 4つのLEDが光ります!! */ int main(int argc, char* argv[]) { PICNIC *pn; pn = PN_open("192.168.1.200", 0, 10001, 10002); PN_dirp(pn, PICNIC_PORTB, 4, PN_OUTPUT); PN_dirp(pn, PICNIC_PORTB, 5, PN_OUTPUT); PN_dirp(pn, PICNIC_PORTB, 6, PN_OUTPUT); PN_dirp(pn, PICNIC_PORTB, 7, PN_OUTPUT); PN_outp(pn, PICNIC_PORTB, 4, 1); // RB.4 <= 'H' PN_outp(pn, PICNIC_PORTB, 5, 1); // RB.5 <= 'H' PN_outp(pn, PICNIC_PORTB, 6, 1); // RB.6 <= 'H' PN_outp(pn, PICNIC_PORTB, 7, 1); // RB.7 <= 'H' PN_close(pn); return 0; }
このプログラムを応用すれば、PICNICのポートを利用したプログラムを作成できます。
プログラムの構成
主要な変数を説明します。 これは、LANとSerialRS232Cの間の文字列伝送をします。PicTermを立ち上げ、PICNICのシリアル端子には、HyperTermを接続しておきます。立ち上げると、文字表示画面が開きます。「設定メニュー」でIPアドレス、PICNICのシリアルポートの番号を設定します。ツールバーの電話機ボタンで接続をします。
PicTermから文字入力すると、PicTern>LAN>シリアル>HyperTerm と文字が流れます。逆も可能です。
こちらのプログラムは、MFC になっています。
このプログラムを応用すれば、LAN と シリアルをブリッジするプログラムが作成できそうです。
これは、(多分)PICTermで利用している、PICNIC.DLL を生成するプロジェクトです。
PICNICの機能として、PICNICのIPを 0.0.0.0 にすると、DHCP でIPを取得するとの説明があります。しかし、実際にIPを0に設定すると、IPは取得しているのですが、DHCPサーバーのほうのIP貸し出しリストに表示されません。
最初に組み立てたキットは期待どおりの動作をしません。ブートモードで起動すると、MACアドレスが すべて FF で表示されます。組み立て中に壊したのか、キットに不具合があったのかは不明です。もう一つ購入し、そちらは正常に動作しました。PICやROMを交換しても症状は同じです。