Go Down

Topic: Control devices over ethernet shield? (Read 2518 times) previous topic - next topic

amjlopez

Hello:
I would like to switch on/off... a Mitsubishi projector with its own PJLINK protocol over ethernet (It uses 3452 port and the power command is "POWR 1" (http://pjlink.jbmia.or.jp/english/data/PJLink%20Specifications100.pdf).

Can I  send TCP/UDP commands with Arduino/Ethernet shield?
Have you some samples on comunnicate with devices over ethernet?
many thanks

wildbill

Take a look at the UDPSendReceive sketch in the ethernet section of the IDE examples.

cjdelphi

Downloading Adobe Reader (just did a fresh install of Windows)..


Any reason why you're not simply using your computer? why Arduino?



amjlopez

Sometimes I don't need the PC, and only use buttons to power on/off devices.
Many thanks

cjdelphi

Here, thought i could use this myself for testing ethernet projects.....



I've attached the source code and exe file, i use Delphi 5, see no point in upgrading lol, everything i do is not really sophisticated but good for small utilities and tools, feel free to compile it yourself if you have Delphi it uses TClientSocket (comes with Delphi 4 - 7 i think)....

Hope someone finds it useful.. simply stick in the IP address and Port and connect via TCP IP and send whatever from the send button.

amjlopez


cjdelphi

Code: [Select]

/*
 Web client

This sketch connects to a website (http://www.google.com)
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13

created 18 Dec 2009
by David A. Mellis

*/

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(173,194,33,104); // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
 // start the serial library:
 Serial.begin(9600);
 // start the Ethernet connection:
 if (Ethernet.begin(mac) == 0) {
   Serial.println("Failed to configure Ethernet using DHCP");
   // no point in carrying on, so do nothing forevermore:
   for(;;)
     ;
 }
 // give the Ethernet shield a second to initialize:
 delay(1000);
 Serial.println("connecting...");

 // if you get a connection, report back via serial:
 if (client.connect(server, 4325)) {  //projector port
   Serial.println("connected");
   client.println("POWR 1"); //power up projector
   client.stop();
   
 }
 else {
   // kf you didn't get a connection to the server:
   Serial.println("connection failed");
 }
}

void loop()
{

//none of this is really needed unless you need return data (either for security or otherwise or ack)

 // if there are incoming bytes available
 // from the server, read them and print them:
 if (client.available()) {
   char c = client.read();
   Serial.print(c);
 }

 // if the server's disconnected, stop the client:
 if (!client.connected()) {
   Serial.println();
   Serial.println("disconnecting.");
   client.stop();

   // do nothing forevermore:
   for(;;)
     ;
 }
}





zoomkat

Below is some simple web server test code that controls arduino pin 5 and a servo

Code: [Select]

//zoomkat 4-1-12
//simple button GET for servo and pin 5
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html, or use ' instead of "
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields

#include <SPI.h>
#include <Ethernet.h>

#include <Servo.h>
Servo myservo;  // create servo object to control a servo

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // 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(5, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  myservo.write(90); //set initial servo position if desired
  myservo.attach(7);  //the pin for the servo control
  //enable serial data print
  Serial.begin(9600);
  Serial.println("server servo/pin 5 test 1.0"); // so I can keep track of what is loaded
}

void loop(){
  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string
          readString += c;
          //Serial.print(c);
        }

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

          ///////////////
          Serial.println(readString); //print to serial monitor for debuging

          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 GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>Zoomkat's simple Arduino button</H1>");
         
          client.println("<a href=\"/?on\"\">ON</a>");
          client.println("<a href=\"/?off\"\">OFF</a>");

          client.println("</BODY>");
          client.println("</HTML>");

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

          ///////////////////// control arduino pin
          if(readString.indexOf("on") >0)//checks for on
          {
            myservo.write(40);
            digitalWrite(5, HIGH);    // set pin 4 high
            Serial.println("Led On");
          }
          if(readString.indexOf("off") >0)//checks for off
          {
            myservo.write(140);
            digitalWrite(5, LOW);    // set pin 4 low
            Serial.println("Led Off");
          }
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}

Google forum search: Use Google Advanced Search and use Http://forum.arduino.cc/index in the "site or domain:" box.

amjlopez

Thank you very much.
I am having an error in :

EthernetClient client;
and

IPAddress server(173,194,33,104); // Google
error: 'IPAddress' does not name a type

Do you know why?

PaulS

Quote
Do you know why?

Because you are not using Arduino 1.0?

amjlopez

Thank you.

I have another question about:

I am in a local network not Internet.
My device (projector) has IP:192.168.1.100  port (4352)
Arduino IP: 192.168.200

I don't know where to put the projector IP in the code. I only want to send the command you know "POWR 1".

Thanks again

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy