아두이노를 이용한 미니 웹 서버 만들기 - LED 제어

by Bong Kyu Lee | 2016-01-25 17:37

블루투스 통신을 통해 LED를 제어해 보듯, 컴퓨터에서 직접 웹 사이트에 접속해서 LED를 제어하는 동작을 진행해 보겠습니다. 보드는 다음과 같이 연결되어 있습니다.

그림 1. 이더넷 쉴드에 LED 연결모습

 

그림 2. 이더넷 쉴드에 LED 연결 모습

 

이 프로그램의 소스코드는 이전 스토리에서 본 웹 서버와 큰 틀에서는 비슷한 구조를 가지고 있습니다. 다른 점이 있다면,

 

1. LED 제어를 위해 핀 모드를 설정한 부분

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

2. 클라이언트에서 전달한 주소값 뒤에 있는 GET을 읽고 처리하는 부분

 

에서 차이가 있습니다. 문자는 한 문자 단위로 처리하고 있습니다.

 

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 0, 199);
EthernetServer server(80);
boolean reading = false;
void setup() {
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}
void loop() {
 checkForClient();
}
void checkForClient(){
  EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    boolean sentHeader = false;
    while (client.connected()) {
      if (client.available()) {
        if(!sentHeader){
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          sentHeader = true;
        }
        // *주목
        // 클라이언트의 GET을 읽어들인다.
        char c = client.read();
        if(reading && c == ' ') reading = false;
        if(c == '?') reading = true; //found the ?, begin reading the info
        if(reading){
          Serial.print(c);
           switch (c) {
            case '2':
              triggerPin(2, client);
              break;
            case '3':
              triggerPin(3, client);
              break;
            case '4':
              triggerPin(4, client);
              break;
            case '5':
              triggerPin(5, client);
              break;
            case '6':
              triggerPin(6, client);
              break;
            case '7':
              triggerPin(7, client);
              break;
            case '8':
              triggerPin(8, client);
              break;
            case '9':
              triggerPin(9, client);
              break;
          }
        }
        if (c == '\n' && currentLineIsBlank)  
          break;
        if (c == '\n') {
          currentLineIsBlank = true;
        }else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1); 
    client.stop();
  } 
}
void triggerPin(int pin, EthernetClient client){
  client.print("Turning on pin ");
  client.println(pin);
  client.print("<br>");
  digitalWrite(pin, HIGH);
  delay(100);
  digitalWrite(pin, LOW);
  delay(100);
}

코드 1. 웹서버에 LED를 제어하는 소스코드

 

아래의 동영상은 실제 실행 영상입니다. 주소 뒤에 출력하고자 하는 LED의 번호를 입력하면 LED가 빛이 나고 있습니다.

 

이더넷으로도 아두이노에게 명령을 내릴 수 있는 방법을 알아봤습니다. 이 이야기는 여기까지입니다. 다음번에는 더 재밌는 메이커를 만들어보겠습니다. ㅇㅅㅇ/

[출처] http://www.makewith.co/page/project/350/story/705/

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
22 [Raspberry Pi] 라즈베리파이 : 10 Uses for a Raspberry Pi in Manufacturing : 제조 분야에서의 라즈베리파이의 10가지 용도 file 졸리운_곰 2024.12.28 215
21 [Raspberry Pi] 라즈베리파이 GPIO 포트 ( LED, 버튼 ) 제어 file 졸리운_곰 2024.01.02 275
20 [Raspberry Pi] 라즈베리파이 GPIO file 졸리운_곰 2024.01.02 205
19 [Raspberry Pi] 2020년에 Raspberry Pi에서 실행할 수 있는 20가지 최고의 운영 체제 file 졸리운_곰 2024.01.02 191
18 [Raspberry Pi] 라즈베리파이 클러스터(병렬연결) file 졸리운_곰 2024.01.02 260
17 [라즈베리파이] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (4) - 한글 설정 file 졸리운_곰 2021.07.10 475
16 [라즈베리파이] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (3) 최적화 하기(raspi-config) file 졸리운_곰 2021.07.10 208
15 [라즈베리파이] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (2) - 이미지 size 늘리기 file 졸리운_곰 2021.07.08 207
14 [라즈베리파이] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (1) 프로그램설치 file 졸리운_곰 2021.07.08 209
13 Installing Latest Tensor flow and Keras on RASPBERRY PI file 졸리운_곰 2019.11.12 285
12 라즈베리파이 qemu : Raspberry Pi Emulator for Windows 10 file 졸리운_곰 2019.11.05 678
11 Raspberry Pi 3에 LAMP (Linux, Apache, MySQL, PHP) 설치하는 방법 file 졸리운_곰 2019.10.30 258
10 라즈베리파이에 OpenCV와 텐서플로(Tensorflow) 설치하기 file 졸리운_곰 2019.10.25 435
9 라즈베리파이 아두이노 연동 file 졸리운_곰 2019.10.25 517
8 TensorFlow 1.9 Officially Supports the Raspberry Pi : 라즈베리파이에서의 공식적인 텐서플로 사용 file 졸리운_곰 2019.03.18 304
7 라즈베리파이 Raspberry Pi 3 Model B+ 회로도 : raspberry pi schematic file 졸리운_곰 2019.03.17 1375
6 [Yocto] 욕토 프로젝트의 참고 링크 (학습링크) 졸리운_곰 2015.11.07 563
5 라즈베리파이 강좌모음 링크 file 졸리운_곰 2014.11.11 2938
4 라즈베리파이 클러스터 구축 : Clustering on RaspberryPi.pdf file 졸리운_곰 2014.11.11 658
3 라즈베리 파이 커널 소스 컴파일 하는 방법 졸리운_곰 2014.09.07 617
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED