Firmata는 아두이노 통합개발환경(스케치)이 아니더라도 Arduino Board에 Firmata 코드를 올린 후에 PC에서 Python을 이용하여 보드 제어가 가능한 프로토콜을 지원합니다. 즉, 윈도우 혹은 리눅스와 같은 호스트 컴퓨터에서 소프트웨어로 아두이노를 직접 제어할 수 있는 기능을 지원하는 것이 Firmata 프로토콜입니다.
1. 아두이노 IDE를 열어 보드와 컴포트를 확인한 후 메뉴 파일 -> 예제 -> Firmata -> StandardFirmata 를 열어서 컴파일, 업로드합니다. 현재 스케치 버전은 아두이노 1.8.12입니다.
2. Firmata를 실습할 수 있는 프로그램을 다운로드 합니다. Firmata 홈페이지에서 자신의 컴퓨터 환경에 맞는 프로그램을 다운 받습니다. exe 파일은 직접 실행이 됩니다. 실행하면 아래와 같은 화면이 뜹니다.
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 소스코드와 프로그램 언어에 따른 상세한 사용법
Arduino with Python: How to Get Started
'개발자 > Arduino' 카테고리의 다른 글
Arduino nano 33 IoT 특별한 LSM6DS3 Library (0) | 2020.09.25 |
---|---|
고정밀 온도 습도 센서 DHT21 AM2301 Digital Temperature Humidity Sensor (0) | 2020.09.22 |
nano 33 IoT 보드로 구현한 스마트 가든 예제 (0) | 2020.09.21 |
Arduino Nano 33 IoT 개발 가이드 1-1 Blink Test (0) | 2020.09.18 |
Arduino Nano 33 IoT - Ultimate Guide (0) | 2020.09.07 |
수심 자동 측정 장치 JSN-SR04T (0) | 2020.08.03 |
리튬 배터리 충전 모듈 TP4056 사용법 (1) | 2020.07.20 |
프로젝트 참고 TinyML Application Development for Everyone (0) | 2020.05.22 |
더욱 좋은 정보를 제공하겠습니다.~ ^^