やりたいこと
Arduino Uno(Arduino Ethernet Shield搭載)をWebサーバーにして、スマホでHTTPアクセスした時にLEDを点滅させる
事前準備
Arduino Ethernet Shieldは当然ながらLANケーブルと接続する必要があります。
スマホでLANケーブルなんて嫌なので、LANポートを備えたWifiルータなどを用いて
Arduino Ethernet ShieldとwifiルータをLANケーブルで接続し、wifiルータ経由でスマホからArduino Unoにアクセスすることにします。
自分はTAXANのMeoBankSD ワイヤレスSDカードリーダー&WiFiルーターを持ってたので今回はこれを使いました。
回路
Arduinoの8番PIN - 200kΩ(100kΩ x 2本)のカーボン抵抗 - LED - GND
スケッチ(プログラム)
MACアドレスの部分は自分の持ってるArduino Ethernet Shieldに記載してあるものを記述して下さい
// イーサネットライブラリを読み込み
#include <SPI.h>
#include <Ethernet.h>
// Arduino Ethernet ShieldのMACアドレスをセット
byte mac[] = {0x**, 0x**, 0x**, 0x**, 0x**, 0x**};
// サーバーとなるArduinoのIPアドレス
IPAddress ip(10, 10, 1, 101);
// HTTP通信をするのでサーバーのポートは80でセット
EthernetServer server(80);
// LEDライト用PIN番号
int ledPin = 8;
void setup() {
pinMode(ledPin, OUTPUT);
// LEDの明かりは初期状態では切っておく
digitalWrite(ledPin, LOW);
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
//イーサネット通信開始
Ethernet.begin(mac, ip);
//サーバ開始
server.begin();
// デバッグログ用
Serial.begin(9600);
// サーバーのIPアドレス
Serial.println(Ethernet.localIP());
}
void loop() {
// クライアントからのアクセス受信
EthernetClient client = server.available();
if (client) {
// LEDの明かりを入れる
digitalWrite(ledPin, HIGH);
}
// サーバーがコネクションを早く閉じ過ぎる為、
// Firefoxがプロトコル違反を報告するみないなので、ここでdelay(1)を入れておく
delay(1);
client.stop();
// LEDの明かりを切る
digitalWrite(ledPin, LOW);
}
最後に
以上でやりたいことが完了しました。
今後はこの辺を応用してArduinoをWebから操作していきたいと思います。