Control arduino with phone, over the internet


hello!

so, relatively new in arduino world, yes, i'm n00b :)

ok, know basics of arduino. now, here thing. have arduino uno , ethernet shield connected router. phone (ios) want turn off led on selected pin (let's turn off led on digital pin 13).

how can achieve this?

and fun, let's assume phone , ethernet shield not on same network.

i thinking in way: app on phone send "turn off pin 13" request on website, , website need send request on router ethernet shield , then...arduino process , on.

is correct way? did did this? if yes, there tutorial on project?

thank you!

regards,
golobich

basic client /server control code.

code: [select]

//zoomkat 10-6-13
//simple button iframe code
//open serial monitor see arduino receives
//use ' instead of " in html ilnes
//address http://192.168.1.102:84/ when submited
//for use w5100 based ethernet shields

#include <spi.h>
#include <ethernet.h>

byte mac[] = { 0xde, 0xad, 0xbe, 0xef, 0xfe, 0xed }; //ethernet shield mac address
byte ip[] = { 192, 168, 1, 102 }; // arduino ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
ethernetserver server(84); //server port

string readstring;

//////////////////////

void setup(){

  pinmode(4, output); //pin selected control
  //start ethernet
  ethernet.begin(mac, ip, gateway, gateway, subnet);
  server.begin();

  //enable serial data print
  serial.begin(9600);
  serial.println("servertest1"); // can keep track of loaded
}

void loop(){
  // create client connection
  ethernetclient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char char http request
        if (readstring.length() < 100) {

          //store characters string
          readstring += c;
          //serial.print(c);
        }

        //if http request has ended
        if (c == '\n') {

          ///////////////
          serial.println(readstring); //print serial monitor debuging

          //now output html data header
             if(readstring.indexof('?') >=0) { //don't send new page
               client.println("http/1.1 204 zoomkat\r\n\r\n");
             }
             else {
          client.println("http/1.1 200 ok"); //send new page
          client.println("content-type: text/html");
          client.println();

          client.println("<html>");
          client.println("<head>");
          client.println("<title>arduino test page</title>");
          client.println("</head>");
          client.println("<body>");

          client.println("<h1>zoomkat's simple arduino button</h1>");
         
          client.println("<a href='/?on1' target='inlineframe'>on</a>");
          client.println("<a href='/?off' target='inlineframe'>off</a>");

          client.println("<iframe name=inlineframe style='display:none'>");         
          client.println("</iframe>");

          client.println("</body>");
          client.println("</html>");
             }

          delay(1);
          //stopping client
          client.stop();

          ///////////////////// control arduino pin
          if(readstring.indexof("on1") >0)//checks on
          {
            digitalwrite(4, high);    // set pin 4 high
            serial.println("led on");
          }
          if(readstring.indexof("off") >0)//checks off
          {
            digitalwrite(4, low);    // set pin 4 low
            serial.println("led off");
          }
          //clearing string next read
          readstring="";

        }
      }
    }
  }
}



Arduino Forum > Using Arduino > Project Guidance > Control arduino with phone, over the internet


arduino

Comments