아두이노 사용 방법

아두위키 : Arduwiki


아두이노를 사용하는 여러가지 방법을 소개합니다.

아두이노 IDE

아두이노(Arduino) IDE(통합 개발 환경)는 아두이노 마이크로컨트롤러를 프로그래밍하기 위한 소프트웨어 환경을 제공하는 툴입니다.

아두이노는 오픈 소스 하드웨어 플랫폼으로, 다양한 프로젝트에서 사용되는 간단한 컴퓨팅 장치를 제작하고 프로그래밍하는 데 사용됩니다.

C++를 기반으로 합니다.

설치

1. 아두이노 홈페이지 접속

2. Software 탭 클릭



3. 원하는 버전 다운로드

  • 2021년 아두이노 IDE 2.0 버전이 출시되면서 기존의 1.x 버전, 새로운 2.x 버전 다운로드가 가능합니다.
  • 2.x 버전에서 여러가지 편의기능들이 추가되었지만 기존의 1.x 버전이 익숙하신 분, 1.x 버전으로 수록된 책이나 참고 자료를 그대로 따라하고 싶으신 분들은 1.x 버전을 그대로 사용하셔도 무방합니다.
  • 사용 중인 운영체제에 맞는 버전으로 설치파일을 다운로드 받은 후, 실행하여 설치해주세요.


사용

1. 설치된 아두이노 IDE를 실행합니다.

2. 컴퓨터(혹은 노트북)에 아두이노 보드를 연결합니다.

3. 아두이노 정품 보드가 아닌 호환 보드의 경우 별도로 드라이버를 설치하셔야 합니다. 드라이버 설치 가이드

4. 아두이노 IDE에서 아두이노 보드와 포트를 설정합니다.


  • 보드는 현재 사용 중인 아두이노 보드의 종류에 맞게 선택해주시면 됩니다.
  • 포트 번호를 잘 모르시는 경우에는 장치 관리자에서 확인해주시면 됩니다.


5. 아두이노 사용 테스트

  • 아두이노 기본 예제 Blink를 불러옵니다. Blink 예제는 13번 핀 LED가 1초마다 켜지고 꺼지기를 반복하는 코드입니다.
  • 업로드 버튼을 누르고 아두이노의 13번 핀 LED가 정상적으로 깜빡거리는지 확인합니다.


실행결과

1초마다 아두이노 13번 핀에 연결된 LED가 켜지고 꺼지기를 반복합니다.


엔트리, 엔트리 파이선

엔트리(Entry)는 시각적 프로그래밍 언어 중 하나로, 주로 초등학생과 중학생을 대상으로 하는 교육용 프로그래밍 플랫폼입니다.

엔트리는 MIT에서 개발한 Scratch와 유사한 시각적 블록 프로그래밍 환경을 제공하며, 사용자가 블록을 조립하여 프로그램을 만들 수 있도록 도와줍니다.

본문에서는 엔트리 오프라인 프로그램을 사용합니다.

설치

1. 엔트리 홈페이지 접속

2. 다운로드 탭 클릭

3. 운영체제에 맞는 버전을 다운로드하신 후 및 실행하여 설치해주세요.


사용

1. 설치된 엔트리 오프라인 프로그램를 실행합니다.

2. 컴퓨터(혹은 노트북)에 아두이노 보드를 연결합니다.

3. 하드웨어 - 연결 프로그램 열기 버튼을 누릅니다.


4. 해당하는 하드웨어를 선택해주세요. 본문에서는 아두이노 Uno 확장모드를 사용합니다.

* 포트 번호 확인 방법은 위 아두이노 IDE 관련 내용에서 확인해주세요.


5. 최초 실행 시 드라이버와 펌웨어를 설치를 눌러줍니다.


6. 하드웨어가 정상적으로 연결이 완료되었다면 다음과 같이 새로운 블록이 생성됩니다.


7. 아두이노 사용 테스트

  • 13번 핀 LED가 1초마다 켜지고 꺼지기를 반복하는 코드입니다.


  • 엔트리 파이선으로 전환 및 코드 작성도 가능합니다.


  • 시작하기 버튼을 누르고 아두이노의 13번 핀 LED가 정상적으로 깜빡거리는지 확인합니다.

실행결과

1초마다 아두이노 13번 핀에 연결된 LED가 켜지고 꺼지기를 반복합니다.

파이썬

응용프로그램 개발, 웹 개발, 데이터 분석, 인공지능, 기계 학습 등 다양한 영역에서 활용되는 프로그래밍 언어입니다.

간결하고 읽기 쉬운 문법을 가져 코딩에 입문할 때도 많이 선택되는 언어입니다.

설치

1. Python 홈페이지 접속

2. Downloads 탭 클릭 후 운영체제에 맞는 Python 설치파일 다운로드

  • 파이썬 최신버전에서 Firmata 사용 시 일부 호환성 문제가 발생할 수 있습니다. 본문에서는 권장 버전인 Python 3.7 버전을 사용합니다.
  • 빨간 상자로 표시된 부분은 본문에서 사용한 버전과 설치파일입니다. 운영체제 및 사용환경에 따라 달라질 수 있습니다.


3. 설치 중 반드시 Add Python 3.x to PATH를 체크해주세요. 체크하지 않는 경우 환경 변수가 설정되지 않아 명령 프롬프트나 터미널에서 python 명령어를 사용할 때 파이썬 실행 파일의 경로를 직접 지정해주어야 합니다.

pyserial 사용

pyserial은 시리얼 통신을 위한 파이썬 라이브러리로, 시리얼 포트를 열고 데이터를 송수신할 수 있게 해줍니다.

1. win + R키를 누른 후 실행창에 cmd를 입력해 명령 프롬프트 창을 엽니다.

2. pip install pyserial 을 입력해 'pyserial' 라이브러리를 설치합니다.


3. IDLE(Python)을 실행하신 후 File - New File을 클릭해 새 스크립트를 열어주세요.


4. 13번 핀 LED가 1초마다 켜졌다 꺼졌다를 반복하는 예제 테스트

  • 아두이노에 다음 코드를 업로드해주세요.
    int ledPin = 13;
    
    void setup() {
      pinMode(ledPin, OUTPUT);
      Serial.begin(9600);
    }
    
    void loop() {
      if (Serial.available() > 0) {
        char command = Serial.read();
        if (command == '1') {
          digitalWrite(ledPin, HIGH); // LED 켜기
        } else if (command == '0') {
          digitalWrite(ledPin, LOW);  // LED 끄기
        }
      }
    }
    
  • 3번 과정에서 열었던 Python IDLE 스크립트에 다음 코드를 작성하신 후 F5를 눌러 실행시켜주세요.
    import serial
    import time
    
    # 시리얼 포트 설정 (아두이노 IDE에서 확인 가능)
    serial_port = 'COM4'
    
    # 시리얼 포트 열기
    ser = serial.Serial(serial_port, 9600, timeout=1)
    
    try:
        while True:
            # 아두이노에 '1'을 보내서 LED 켜기
            ser.write(b'1')
            print("LED ON")
            time.sleep(1)
    
            # 아두이노에 '0'을 보내서 LED 끄기
            ser.write(b'0')
            print("LED OFF")
            time.sleep(1)
    
    except KeyboardInterrupt:
        # 프로그램 종료 시 시리얼 포트 닫기
        ser.close()
    

실행결과

1초마다 아두이노 13번 핀에 연결된 LED가 켜지고 꺼지기를 반복합니다.

Firmata 사용

Firmata는 아두이노와 컴퓨터 간의 편리한 통신을 위한 프로토콜이자 라이브러리입니다. Firmata를 아두이노에 업로드하면, 아두이노 보드의 디지털 및 아날로그 핀을 파이썬이나 다른 환경에서 간편하게 제어할 수 있게 됩니다.

1. win + R키를 누른 후 실행창에 cmd를 입력해 명령 프롬프트 창을 엽니다.

2. pip install pyfirmata 를 입력해 라이브러리를 설치합니다.


3. IDLE(Python)을 실행하신 후 File - New File을 클릭해 새 스크립트를 열어주세요.


4. 13번 핀 LED가 1초마다 켜졌다 꺼졌다를 반복하는 예제 테스트

  • 아두이노에서 StandardFirmata 예제를 불러오신 후 업로드해주세요.


  • 3번 과정에서 열었던 Python IDLE 스크립트에 다음 코드를 작성하신 후 F5를 눌러 실행시켜주세요.
    import pyfirmata
    
    test = pyfirmata.Arduino('COM4')
    
    while True:
        test.digital[13].write(1) # 13번 핀 LED ON
        test.pass_time(1) # 1초 대기
        test.digital[13].write(0) # 13번 핀 LED OFF
        test.pass_time(1) # 1초 대기
    


실행결과

1초마다 아두이노 13번 핀에 연결된 LED가 켜지고 꺼지기를 반복합니다.