it checks whether the line begins with
GET
. If yes, it calls
handle_command
; oth-
erwise, it checks whether the line is empty, because all HTTP messages are
terminated by an empty line. In this case,
receive_from_server
sends back an
“OK” response, waits for a millisecond to give the client some time to process
the response, and then disconnects from the client by calling
stop
.
Admittedly, that was a lot of code, but the effort was well worth it. Using the
InfraredProxy
is really simple now:
RemoteControl/InfraredProxy/InfraredProxy.ino
#include <SPI.h>
#include <Ethernet.h>
#include <IRremote.h>
#include "infrared_proxy.h"
const unsigned int PROXY_PORT = 80;
const unsigned int BAUD_RATE = 9600;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 2, 42);
EthernetServer server(PROXY_PORT);
InfraredProxy ir_proxy;
void setup() {
Serial.begin(BAUD_RATE);
Ethernet.begin(mac, ip);
server.begin();
}
void loop() {
ir_proxy.receive_from_server(server);
}
As usual, we define the MAC and IP addresses we’d like to use. Then we define
an
EthernetServer
object, passing it the port it should listen to, 80 (the standard
HTTP port). Also, we initialize a new
InfraredProxy
object.
In the
setup
method, we initialize the serial port for debugging purposes. We
also initialize the Ethernet shield, and we call
EthernetServer
’s
begin
method to
start our server’s listener. In
loop
, we call only the
InfraredProxy
’s
receive_from_server
method, passing it our
EthernetServer
instance.
Let’s finally test the code! Attach the Ethernet shield to your Arduino, and
attach the infrared LED circuit to the shield. Configure the MAC and IP
addresses, compile the InfraredProxy sketch, and upload it to your Arduino.
Point your web browser to
http://192.168.2.42/SAMSUNG/32/E0E040BF
(adjust the URL
to your local settings!) and see what happens to your TV set or whatever
report erratum • discuss
Building an Infrared Proxy • 221
www.it-ebooks.info