아두이노 Arduino

[아두이노] 파이썬 Pyserial로 Blink 예제 실행하기 (PC to Arduino)

끄적끄적아무거나 2022. 5. 12. 09:04
반응형

 

목차

     

     

    이번 과정은 아두이노 보드와 컴퓨터(PC)를 USB 케이블을 이용해서 연결하고 파이썬(Python)의 Pyserial로 명령을 아두이노에 전달하고 아두이노는 이를 실행하는 예제를 해보겠습니다.

     

    이 실습을 진행하기 위해서는 아래의 과정이 필요합니다.

     

    1. 아두이노 보드 프로그램 : Serial 통신에서 특정 명령어가 전달되면 Blinking 예제 실행

    2. 컴퓨터(Visual Studio)로 파이썬 작성하고 Serial로 특정 명령어 전달

     

     

     

     

     

    1. 아두이노 보드 프로그램 : Serial 통신에서 특정 명령어가 전달되면 Blinking 예제 실행

     

    우선 이번 코드는 아두이노의 시리얼(Serial) 통신을 열고 아래 명령이 들어오면 LED를 0.5초 단위로 깜빡이면서 켜거나 꺼지는 코드를 작성할 것입니다.

     

    1. "on" 명령이 들어올 경우 : LED 0.5초 단위로 Blinking

    2. "off" 명령이 들어올 경우 : LED Blinking 끄기

     

     

    검증은 아두이노 스케치 소프트웨어 툴 -> 시리얼 모니터 (Serial Monitor)에서 합니다.

     

    아래 예제 코드를 통해 쉽게 이해해보겠습니다.

     

    예제 코드>>

    void setup() {
      pinMode(LED_BUILTIN, OUTPUT);
      Serial.begin(9600);
      while (!Serial) {
        ;
      }
    }
    
    int blk_on = 0;
    
    void loop() {
      if (Serial.available() > 0)
      {
        String cmmd = Serial.readStringUntil('\n');
        Serial.println(cmmd);
        if (cmmd == "on")
        {
          blk_on = 1;
        }
        else if (cmmd == "off")
        {
          blk_on = 0;
        }    
      }
      if (blk_on ==1){
        digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
        delay(500);                       // wait for a second
        digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
        delay(500);     
      }
    }

    1~7번 라인: Serial 통신 연결

    12~15번 라인: 시리얼 통신으로 명령이 엔터(Enter, \n)와 함께 들어오면 명령어를 다시 컴퓨터로 보내서 Debugging 함

    16~23번 라인: On, off에 따라서 blk_on 을 변경함

    25~30번 라인: blk_on이 1일 경우 LED를 깜빡거림

     

     

    결과>>

     

    시리얼 모니터는 입력값을 출력해주었고 그림처럼 아두이노 보드는 "on" 명령을 받았을 때 LED 가 깜빡거렸습니다. 

     

     

     

     

     

     

     

    2. 컴퓨터(Visual Studio)로 파이썬 작성하고 Serial로 특정 명령어 전달

     

     

    저는 Visual Studio를 사용해서 파이썬 코드를 작성 합니다. Visual Studio 를 사용해서 파이썬 코드를 작성한 글은 파이썬 카테고리에서 확인할 수 있습니다.

     

    우선 다음 포스트에서 상세하게 Pyserial 모듈 (라이브러리) 동작 방법 및 메세지 주고 받는 방법에 대해 알아보고 이번 장 예제는 간단하게 "on" 메세지를 보내는 방법에 대해 알아 보겠습니다.

     

     

    예제 코드>>

    import serial
    import time
    
    comms = serial.Serial("COM6", baudrate=9600)
    time.sleep(2)
    
    msg = "on\n"
    comms.write(msg.encode())
    
    comms.close()

    4번 라인: 아두이노에서 설정한 속도 baudrate와 동일하게 9600bps (bit per second)로 설정 합니다.

    5번 라인: 통신 연결을 위해 잠시 2초 홀딩합니다. 다음 장 예제는 열결 상태 확인하는 문구를 사용하겠습니다

    7번 라인: 보낼 메시지, LED가 켜진 후 off로 변경해서 시험해보시길 바랍니다.

     

     

    결과>>

    앞의 그림과 같이 정상적으로 LED가 깜빡거리는 것을 확인하였습니다. 

     

     

    반응형