혁신을 이룹니다, 오딘박스(OdinBOX)

언제나 어디서나 오딘박스와 함께!

NodeMCU(ESP-12E) 개발 환경 구축 및 LED 제어

간지뽕빨리턴님 2020. 4. 11. 18:35
반응형

NodeMCU, Arduino, 아두이노, ESP12E,LED,저항,전기,전선

NodeMCU(ESP-12E) 개발환경 구축

개발환경을 먼저 만들어주기 위해서 준비해야 할 프로그램은 아래와 같습니다.

목차

    1. Arduino IDE [링크]

    아두이노 IDE

    아두이노를 개발할때 통합개발환경을 지원을 해준다, 컴파일부터 편집기, 업로더를 지원해주는 환경이며, 개발에 필요한 각종 옵션들과 라이브러리를 관리 할 수 있는 것이다.

    2. CP210x USB to UART Bridge VCP Drivers [링크]

    NodeMCU에 필요한 드라이버로써 설치가 필요하다, 해당 링크로 들어가서 설치 완료 !

     

    여기까지 설치가 완료되면, 기본적인 환경 구축은 끝났습니다, 이제 세부적인 설정을 조금 더 하면, 개발 환경이 구축이 됩니다. 일단, 아두이노IDE 설치가 완료되면, 실행합니다.

    1. [파일] → [환경설정] → [추가적인 보드 매니저 URLs에 "http://arduino.esp8266.com/stable/package_esp8266com_index.json" 입력 후 확인

    2. [툴] → [보드 매니저] → [보드 매니저] [ESP8266 검색] → [최신버전으로 설치]

    3. [툴] → [보드:ooooooo] [NodeMCU v1.0 (ESP-12E Module) 선택]
    4. [툴] → [포트] → [해당 기기 포트로 변경]

    - 주의 : 해당 설정은 ESP-12E를 기준으로 작성되었습니다.

     

    이제 모든 준비는 끝났습니다. 이제 NodeMCU를 이용하여, LED 제어를 해보겠습니다.

     

     

    LED 제어

    내가 가지고 있는 것은 대략 이정도이다, 오른쪽부터 본체, 브레드보드(빵판이라고도 불린다), 기타 부품, 케이블, 여분의 케이블과 LED 및 저항등이 준비되어져 있다.

    NodeMCU와 브레드보드의 조합 크기는 역시 작다. 그러면, 이제 본격적으로 한번 해봐야겠다.

     

     

    LED Source & images

    void setup() {
      #define LED_PIN1 D1
      #define LED_PIN2 D2
      // put your setup code here, to run once:
      pinMode(LED_PIN1, OUTPUT);
      pinMode(LED_PIN2, OUTPUT);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      digitalWrite(LED_PIN1, HIGH);
      delay(1000);
      digitalWrite(LED_PIN1, LOW);
      delay(1000);
    
      digitalWrite(LED_PIN2, HIGH);
      delay(1000);
      digitalWrite(LED_PIN2, LOW);
      delay(1000);
    }

     

    void setup() {
      #define LED_PIN1 D1
      #define LED_PIN2 D2
      #define LED_PIN3 D3
      
      // put your setup code here, to run once:
      pinMode(LED_PIN1, OUTPUT);
      pinMode(LED_PIN2, OUTPUT);
      pinMode(LED_PIN3, OUTPUT);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      digitalWrite(LED_PIN1, HIGH);
      delay(1000);
      digitalWrite(LED_PIN1, LOW);
      delay(1000);
    
      digitalWrite(LED_PIN2, HIGH);
      delay(1000);
      digitalWrite(LED_PIN2, LOW);
      delay(1000);
    
      digitalWrite(LED_PIN3, HIGH);
      delay(1000);
      digitalWrite(LED_PIN3, LOW);
      delay(1000);
    }

     

    #define LED01 D1 // Led in NodeMCU at pin GPIO16 (D0).
    #define LED02 D2
    #define LED03 D3
    void setup() {
    pinMode(LED, OUTPUT); // set the digital pin as output.
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    }
    void loop() {
    digitalWrite(LED01, HIGH);
    delay(500);          
    digitalWrite(LED01, LOW); 
    delay(500);         
    
    digitalWrite(LED02, HIGH);
    delay(500);          
    digitalWrite(LED02, LOW); 
    delay(500);         
    
    digitalWrite(LED03, HIGH);
    delay(500);          
    digitalWrite(LED03, LOW); 
    delay(500);
    }

     

    #define red_pin D1
    #define yellow_pin D2
    #define blue_pin D3
    
    void setup() {
    
    pinMode(red_pin, OUTPUT); // set the digital pin as output.
    pinMode(yellow_pin, OUTPUT);
    pinMode(blue_pin, OUTPUT);
    Serial.begin(9600);
    }
    void loop() {
    blinkLED(red_pin,500);
    blinkLED(yellow_pin,500);
    blinkLED(blue_pin,500);
    }
    
    void blinkLED(int pinNo, int delayTime)
    {
      digitalWrite(pinNo, HIGH);
      delay(delayTime);
      digitalWrite(pinNo, LOW);
      delay(delayTime);
    }

     

    void setup() {
      #define LED_PIN1 D1
      #define LED_PIN2 D2
      #define LED_PIN3 D3
      
      // put your setup code here, to run once:
      pinMode(LED_PIN1, OUTPUT);
      pinMode(LED_PIN2, OUTPUT);
      pinMode(LED_PIN3, OUTPUT);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      if(random(3)==0){
        digitalWrite(LED_PIN1, HIGH);
        delay(1000);
        digitalWrite(LED_PIN1, LOW);
        delay(1000);  
      } else if(random(3)==1){
       digitalWrite(LED_PIN2, HIGH);
       delay(1000);
       digitalWrite(LED_PIN2, LOW);
       delay(1000); 
      } else {
        0digitalWrite(LED_PIN3, HIGH);
       delay(1000);
       digitalWrite(LED_PIN3, LOW);
       delay(1000);  
      }
      
    
      
    
      
    }

     

    #define LED1 D1 // odinbox
    #define LED2 D2
    #define LED3 D3
    
    int count = 0;
    bool direction = true;
    
    void setup() {
    pinMode(LED1, OUTPUT); // odinbox
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
    }
    
     void blinkLED(int ledPin, int delayTime){
        digitalWrite(ledPin, HIGH);
        delay(delayTime);          
        digitalWrite(ledPin, LOW); 
        delay(delayTime);
        count++;   
      }
      
    void loop() {
      count = 0;
      if(direction){
        blinkLED(LED1, 500);
        blinkLED(LED2, 500);
        blinkLED(LED3, 500);
        direction = false;  
      }
      if (!direction){
        blinkLED(LED2, 500);
        blinkLED(LED1, 500);
        direction = true;
      } 
      if (direction){ 
         blinkLED(LED2, 500);
         blinkLED(LED3, 500);
         direction = false;
      } else {
        blinkLED(LED1, 500);
        direction = true;
      }
      
    }

     

    글을 끝내면서 덧붙이는 말

    처음해보는 것이라서 그런지 많이 헤매기도 하고 선정리도 다른 분들이 한 것을 검색해보니 완전 형편없는 수준인 것 같습니다. 앞으로 더 공부를 해야하지만 더 열심히 해야하는 이유를 알것 같습니다. 혼자 해보고 LED가 켜지는 모습에 우와하면서 기뻐하던 감정을 생각하면서 앞으로 더욱 열심히 해보겠습니다 여러분들 모두 열공이요 ! :D