[pyfirmata] 아두이노의 파이썬 언어 적용

일반적인 아두이노 하드웨어라면, 일반적으로는 Aruduino IDE 에서 C 언어를 응용하여 설계, 제어할 것이다.

하드웨어 제어에 있어 C언어 만큼 탁월한 언어는 없으면서도, 첫 프로그래밍 언어로는 쉽지 않기도 하다.(외울게 한 두 개만 있는게 아니지만)

이런 아두이노에 대해 C언어가 아닌 Python 을 이용하여 설계, 제어가 가능한 방법이 있다.

- 아두이노(Uno)의 기존 응용

아두이노에 별도의 프로그램이나 사용을 위한 드라이버를 생략하고 간단하게 나타낸다면 위와 유사한 형태 일 것이다.

여기에 Python 응용이 가능하게 끔 Firmata 소스를 업로드 할 것이다.

- 아두이노(Uno)를 이용하여 Python을 제어/응용에 쓰는 구도


C로 작성된 Firmata 의 StandartFirmata 소스를 업로드, 해당 소스를 '미들웨어' 처럼 사용하여 Python 으로 제어/응용을 위한 스크립트가 동작되도록 만들 수 있다.

- Firmata 적용 방법
Arduino IDE 에서 라이브러리 관리자를 통해 라이브러리를 받고 해당 되는 예제를 연결한 아두이노 보드에 업로드 하면 적용 된다

Firmata 라이브러리는 Firmata by Firmata Developer 를 사용하면 된다.


예제 : StandartFirmata 를 사용할 아두이노 보드에 업로드를 진행한다.
※ 이때 연결된 포트 명을 기록해 둘 것
- 예시 : Nano 보드를 연결한 상태의 포트번호 COM3



-  Python: pyfirmata

※ 주의 사항
pyfirmata 는 Python 버전 2.7, 3.6, 3.7 에서만 구동됨

환경 변수 및 Python 설치 과정은 생략

CMD(명령 프롬프트) 창 연 뒤 pip3 install pyfirmata 실행



해당 설치 수행 후 아두이노 보드 연결 및 아래의 예제 스크립트 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from pyfirmata import Arduino
import time
board = Arduino('COM20')#COM20 대신 이전에 기록한 포트 이름을 사용
print("Communication Successfully started")
 
#무한 반복 적용
#각 핀에 대한 접근은 List-indexing 방법을 사용하여 접근
#write() 메서드를 적용하여 출력 제어(1 : high, 0: low)
while True :
    board.digital[13].write(1)
    time.sleep(1)
    board.digital[13].write(0)
    time.sleep(1)
 
cs

- Python IDLE CMD 출력 화면

문제 없이 아두이노 보드의 내장 LED(13번 핀 이용) 점등, 점멸을 1초 단위로 반복한다면 테스트 완료

댓글