Windows serverでWebサーバーを動かし、室内の機器が動かせないかなぁなんて思ってたので、PHPを使って、Windows serverとArduinoをシリアル通信するのを考えてみた。
こういうのは、Raspberrypiなどが文献が多くやりやすいのかも。
Windows serverに拘ったのは、自宅サーバーにWindows serverを設置したからに他ならない。

ヒントになったのは、このブログの書き込み。
execというPHPコマンドを使って、modeという呪文を唱えると、COMポートの設定ができるのだ。
modeというのは、昔からあったらしく、デバイス設定のDOSコマンドだ(これを見るまでは知らんかったよ)。
先人よありがとう!

下記のファイルをarduino.phpという名称を付けて保存する。
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
</head>
<body>
<?php
if(isset($_POST[“pwr”])){

exec(“mode COM2: BAUD=9600 PARITY=n DATA=8 STOP=1 to=off dtr=off rts=off”);
//COM2ポートをオープンする
$fp = fopen(“COM2”, “w”);

if ($_POST[“pwr”]==”ON”){
//Arduinoにponという文字を送信する
fwrite($fp, “pon”);
}else{
//Arduinoにpoffという文字を送信する
fwrite($fp, “poff”);
}
//COMポートをクローズする
fclose($fp);

//arduino.phpを再表示する
echo ‘<meta http-equiv=”refresh” content=”0;URL=arduino.php”>’;
exit;

}
else{
//初期状態
}
?>
<form method=”POST” action=””>

<input type=”submit” name=”pwr” value=”ON” />
<input type=”submit” name=”pwr” value=”OFF” />

</form>
</body>
</html>
//arduino.php終わり

こいつを、Windows server若しくは、サーバーに仕立てたWindows PCに入れておき、同じネットワークに接続している別のPCのブラウザ(若しくは、localhost)で表示させると、ON/OFFというボタンが出現する。
サーバー側に接続したArduinoに「ponという文字を受信したら、ポートをON、poffという文字を受信したら、ポートをOFF」というように設定してやれば、ブラウザのON/OFFボタンを使って、Arduinoのポートを制御できる。
VPNを使ってもOKだ。

シリアル通信できると、Arduinoだけでなく、色々な機器の制御が可能になる。
外出先から、自宅の機器を制御できるなんて、考えるだけでもワクワクしてくるね。