아두이노프로세싱 프로그래밍

Processing Client에 의한 Ethernet 웹서버 LED ON OFF

coding art 2018. 7. 7. 15:09
728x90

______________________________________________________________________________________


ProcessingHTTP 기능을 사용하여 PC에 설치된 무선 공유기를 통해 무선 WiFi 가 가능한 아두이노 WeMos 보드에 설치된 LED를 제어할 수 있었다. 이번에는 이더넷 쉴드가 설치된 아두이노 우노 보드에 설치된 LED를 제어하여 보자.

   


두 모델에서의 차이점은 다 같이 가상ip를 사용하지만 이더넷의 경우에는 무선 공유기의 ID 와 비밀번호가 필요치 않으며 그 대신 이더넷 통신선을 Processing 코드를 실행하는 PC의 무선 공유기의 커넥터에 연결하였다.

 

아두이노 이더넷 보드의 코드는 첨부된 코드를 참조하여라. Processing 에서의 클라이언트 코드도 첨부하였다. 두 코드에서 가상 ip 192.168.0.11 을 사용하였다. 이 가상ip는 필자가 보유한 WeMos 보드의 실제 가상ip인데 이더넷 보드에서도 잘 작동된다. 이 가상ip가 혹 문제가 된다면 마지막 11을 한자리 수로 바꿔 잘되는 번호를 찾아보기 바란다.

 

아두이노 이더넷 보드에 설치된 LEDON OFF 하기 위해서는 Processing 코드를 실행 후 마우스 버튼을 좌측 우측 번걸아 가면서 클릭해 보도록 하자. 아울러 아두이노 시리얼 모니터에서 ON OFF 가 출력됨을 확인해 보자.

 

다음 동영상을 참조하기 바란다.

https://www.youtube.com/watch?v=JwMvBLKCHWo

 

스팀잇에서 넘어 오신 분은 아래의 첨부된 코드를 참조하기 바람

 

//Webserver_ethernet_LED_ON_OFF_from_Processing_01

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 11 }; // fixed IP addr in LAN

EthernetServer server(80); //server port
String readString;
int ledPin = 2;
void setup(){
pinMode(ledPin, OUTPUT); //pin selected to control LED
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop(){
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 (c == '\n') {
    Serial.println(readString); //print to serial monitor for debuging

       if(readString.indexOf(on") != -1)  {
         digitalWrite(ledPin, HIGH);
        }
        else  {
        if(readString.indexOf("OFF") != -1)  {
          digitalWrite(ledPin, LOW);
        }
      }

    delay(1);
client.stop();
    readString=""; //clearing string for next read
    }//if (c == '\n') {
   
      }//if (client.available()) {
    }//while (client.connected()) {
  }// if (client) {
}//끝


  

//Client_WeMos_LED_ON_OFF_01: A simple web client using HTTP
import processing.net.*;
Client c;
String data;
void setup() {
    size(400,400);
    background(255);
}

void draw() {

}
void mousePressed() {
  if (mouseButton == LEFT) {
  background(255);
  c = new Client(this, "192.168.0.11", 80);  // Connect to server on port 80
  c.write(on\n");
  background(255,0,0);
  delay(10);  
  }
  else {
  background(0);
  c = new Client(this, "192.168.0.11", 80);
  c.write("OFF\n");
  delay(10);
  }
}//end of program