개발자/Arduino

컴퓨터에서 직접 Arduino 제어하는 Firmata 사용법

지구빵집 2020. 9. 17. 10:12
반응형

 

 

 

 

Firmata는 아두이노 통합개발환경(스케치)이 아니더라도 Arduino Board에 Firmata 코드를 올린 후에 PC에서 Python을 이용하여 보드 제어가 가능한 프로토콜을 지원합니다. 즉, 윈도우 혹은 리눅스와 같은 호스트 컴퓨터에서 소프트웨어로 아두이노를 직접 제어할 수 있는 기능을 지원하는 것이 Firmata 프로토콜입니다.

 

1. 아두이노 IDE를 열어 보드와 컴포트를 확인한 후 메뉴 파일 -> 예제 -> Firmata -> StandardFirmata 를 열어서 컴파일, 업로드합니다. 현재 스케치 버전은 아두이노 1.8.12입니다.

 

파일 -> 예제 -> Firmata -> StandardFirmata 열어 업로딩

 

2. Firmata를 실습할 수 있는 프로그램을 다운로드 합니다. Firmata 홈페이지에서  자신의 컴퓨터 환경에 맞는 프로그램을 다운 받습니다. exe 파일은 직접 실행이 됩니다. 실행하면 아래와 같은 화면이 뜹니다.

 

Firmata 실행화면

 

3. 아두이노 보드가 연결된 포트를 선택하면 아래처럼 각 Pin의 입 출력과 상태와 현재 값(Low, High), 아날로그 핀에서는 읽은 아날로그 값이 변하면서 출력하면 성공입니다. 마지막 참고문서에 Firmata 프로토콜 문서와 상세한 프로그램 언어별 사용법 링크를 나중에 참고하세요.

 

 

이 상태에서 pin 13번 pin은 Output으로 되어 있고, 옆에 low 버튼을 누르면 high 로 변하면서 아두이노 우노 보드의 LED가 깜박이는 것을 볼 수 있습니다.

 

 

Python에서 Arduino 보드 이용하기

 

1. 우선 Python에서 Firmata 프로토콜로 Arduino 보드와 통신하기 위해서는 python에 pyFirmata를 설치해야 합니다. 설치 안내 페이지 참고. 

 

파이선이 설치된 컴퓨터에서 pyFirmata 설치

$ pip install pyfirmata

 

파이선으로 가장 기본 예제인 Blink 예제를 짜서 실행시키면 1초 마다 보드 위 13번 LED가 점등함을 볼 수 있습니다. 그런데 안켜짐. ㅠ.ㅠ

 

#!/usr/bin/env python3

from pyfirmata import Arduino

PIN = 13
DELAY = 1
board = None


def Blink():
    global board
    #
    if board is None:
        board = Arduino('COM3')
        print("Communication Successfully started")
    while True:
        board.digital[PIN].write(1) 
        board.pass_time(DELAY) 
        board.digital[PIN].write(0) 
        board.pass_time(DELAY)

Blink()

 

 

참고

처음 Firmata 위키페이지, 지금은 아래 깃허브로 이동

Firmata 프로토콜 문서 깃허브

Firmata 소스코드와 프로그램 언어에 따른 상세한 사용법

Firmata for Particle 

Arduino with Python: How to Get Started

 

 

 

 

 

 

 

 

 

 

 

반응형