Personally, I would not recommend using a serial link from the server to the Arduino as the Arduino resets itself everytime something is sent over serial, More correctly an ethernet shield would be great. Giving more scalability as the web server can talk to mutliple Arduinos with no great extra effort.
I installed XAMPP on my netbook as the webserver and used PHP code on the server to present the web interface and send the command to the Arduino over serial. The Arduino is waiting for a serial command and then depending on what it is will turn on or off the mounted LED.
So, not the most impressive looking demo, but as a proof of concept if I can turn on a LED I can control a relay to turn on an kind of device.
Below is the code. Be aware I'm more about getting the Arduino to do something and so the code will be a bit rough around the edges. It works but I definitely do not consider it best practise or even efficent code.
Use at your own risk.
PHP on the server:
<?php
exec('mode com4: baud=9600 data=8 stop=1 parity=n xon=no');
$switch1 = "";
/* Serial script for pan/tilt Camera with servos */
/* Script by Aneal Khimani, 2-12-10 */
//check the GET action SuperGlobal var to see if an
//action is to be performed
if (isset($_GET['action'])) {
$switch1 = $_GET['action'];
//Action required
switch ($switch1) {
case "on":
$fp = fopen("com4", "w");
fwrite($fp, chr(97));
fclose($fp);
break;
case "off":
$fp = fopen("com4", "w");
fwrite($fp, chr(98));
fclose($fp);
break;
}
}
?>
<html>
<body>
<center>
<p>
<font size="4">Flick Switch</font><br />
<table width="30">
<tr><td><a href="<?=$_SERVER['PHP_SELF'] . "?action=on" ?>">On</a></td><td><?php if($switch1 == 'on'){echo "<b>ON</b>";} ?></td></tr>
<tr><td><a href="<?=$_SERVER['PHP_SELF'] . "?action=off" ?>">Off</a></td><td><?php if($switch1 == 'off'){echo "<b>OFF</b>";} ?></td></tr>
</table>
</p>
</center>
</body>
</html>
Arduino Code:
/*
Used with the PHP code
http://localhost/arduino.php
*/
void setup() {
Serial.begin(9600); // initialize serial communication:
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
}
void loop() {
// read the serial port:
if (Serial.available() > 0) {
int inByte = Serial.read();
switch (inByte) {
case 'a':
digitalWrite(13, HIGH); // set the LED on
Serial.println("HIGH");
break;
case 'b':
digitalWrite(13, LOW); // set the LED off
Serial.
println("LOW");
break;
}
}
}