以下のサンプルは、GR-SAKURAに接続されたアナログセンサの値を
ネットワーク経由で取得するサンプルです。
今回の例ではアナログピン0番に‘Cdsセルが接続されていて、
周囲の明るさを取得しています。
仕様
このサンプルの実行には仮想COMポートの接続が必須になります。
`IP address `を192.168.11.234 に設定しています。ポート8080 を使います。
このあたりは環境に合わせて変更してください。
web browser が送ってくる "GET / HTTP 1.1" という文字列の中の"1" を
検出した所で、センサーの値を含むHTMLデータをGR-SAKURAが送り出します。
もっと良いやり方があると思いますが、これでも動いたので投稿します。
仮想COMport に出てくるデバッグログ
set static ip address
IP Address set successfully.
My IP address is: 192.168.11.234
client connected
G
E
T
/
H
P
1
server sent the data
Server sent FIN packet
GR-SAKURA用スケッチ
#include <rxduino.h>
#include <SPI.h>
#include <Ethernet.h>
TEthernet Ethernet;
byte mac[] = {0x08, 0x09, 0x3c, 0x12, 0x34, 0x56};
byte ip[] = {192,168,11,234};
byte dns[]= {8,8,8,8};
byte gateway[] = {192, 168, 11, 1};
byte subnet[] = {255,255,255,0};
EthernetServer server(8080);
int val;
void setup()
{
Serial.begin(38400,SCI_AUTO);
Serial.println("");
Serial.println("set static ip address");
Ethernet.begin(mac,ip,dns,gateway,subnet );
Serial.println("IP Address set successfully.");
Serial.print("My IP address is: ");
Serial.println(Ethernet.localIP());
server.begin();
analogReference(RAW12BIT);
}
void loop()
EthernetClient client = server.available();
if (client) {
Serial.println("client connected");
while (client.connected())
Ethernet.processPackets();
char query = client.read();
Serial.println(query);
if (query == '1')
val = analogRead(0);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE> Read Analog Sensor over the network </TITLE>");
client.println("</HEAD>");
client.println("<BODY BGCOLOR=\"#F2D8DF\">"); // SAKURA color
client.print("Sensor val = ");
client.println(val);
client.println("</BODY>");
client.println("</HTML>");
Serial.println("server sent the data");
break;
client.stop(); // send FIN packet
Serial.println("Server sent FIN packet");
Serial.println();
delay(1000);
注意:このスケッチを長時間動かしてみましたが、途中からGR-SAKURAが
Browser側のPCが送るsyn パケットに応答しなくなる問題があるようです。
私の環境ではSerial.println() によるデバッグしかできませんので、GR-SAKURAが
応答を返さない場合の本格的なデバッグは出来ません。