본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA
Study/라즈베리파이

Firmata 공부하기 #3 - Firmata 개발 환경 설정

by 마즈다 2021. 2. 2.
반응형

 

Firmata는 2가지 방식으로 사용이 가능하다.

 

그 한 가지 방법은 아두이노의 스케치에서 Firmata 라이브러리를 include한 후 라이브러리의 API를

활용하는방법이고, 다른 한 가지는 아두이노에는 범용 스케치를 업로드하고 모든 코딩을 클라이언트

쪽에서 하는 방법이다.

 

우선 두 번째 방법인 범용 Firmata 스케치를 아두이노에 업로드한 후 클라이언트에서만 코딩을 하는 방법을

알아보도록 하겠다. 이 방법은 아두이노 스케치의 C 프로그래밍에 익숙하지 않은 개발자들이 클라이언트

(호스트 PC)에서 본인에게 익숙한 언어로 개발을 할 수 있다는 장점이 있다.

 

본격적으로 Firmata의 소스 코드를 알아보기 전에 우선 간단하게 개발 환경을 먼저 정리하고 진행하고자

한다. 다만 이 글에서는 매킨토시 환경 하에서 Python Client를 선택하여 진행하는 만큼 Windows 사용자나

Python이 아닌 다른 언어를 사용하시는 분들은 다른 곳을 참조하셔서 환경을 구성하는 것이 좋을 것 같다.

 

환경 구성하기1 - 아두이노에 FirmataExpress 설치하기

 

Firmata 기반의 개발을 하기 위해서는 클라이언트(호스트 PC)에서는 Firmata Client 라이브러리를 설치

하여야 하며 아두이노에는 범용 Firmata 스케치를 업로드하는 것으로 끝난다.

 

누누이 말하듯이 Firmata Client 라이브러리는 다양한 언어로 구현이 되어있다. 각자에게 익숙한 언어로 된

라이브러리를 선택하면 되지만 역시 가장 심플하게 구현되어있는 것은 Python으로 구현된 라이브러리이다.

나역시 Java와 iOS의 Obj-c가 주로 사용하는 개발 언어이지만 코드를 분석하고 구현하는데는 오히려

Python이 더 접근하기 쉬웠고 소스 파일 구성도 매우 단순하여 부담이 없었다.

 

일반적으로 Python 라이브러리 중에는 pyFirmata, 아두이노 범용 스케치로는 StandardFirmata를 많이 

이용하는데 나는 자료가 좀 더 상세하게 정리되어있는 pymata4와 여기에 더 적합하다는 FirmataExpress를

사용하였다.

 

아두이노에서 기본적으로 제공하는 범용 Firmat 스케치 예제들이다.

 

사용하게 될 FirmataExpress는 기본 예제에 포함되어있지 않으므로 아두이노 스케치 IDE의 라이브러리 

관리 메뉴로 들어가 검색한 후 설치해야 한다(나는 이미 설치한 후라서 Installed로 표시되고 있다).

 

1. 툴 > 라이브러리 관리... 메뉴를 선택한다.

 

 

2. 라이브러리 매니저 창에서 Firmata로 검색을 한 후 FirmataExpress를 찾아 설치를 진행한다.

 

 

3. 설치가 완료되면 파일 > 예제 > 사용자 지정 라이브러리의 예제 항목에서 FirmataExpress를 찾을 수 있다.

 

 

라이브러리가 설치된 후 파일 > 예제 > 사용자 지정 라이브러리의 예제 항목에서 FirmataExpress를 찾아

열고 아두이노에 업로드하면 아두이쪽의 준비는 끝이다.

 

환경 구성하기 2 - Python 개발환경 구성하기

 

다음은 클라이언트 쪽인데…일단 Python의 설치 및 환경설정에 대한 내용은 그 자체만으로 한 번의 포스팅으로

끝날 내용이 아니므로 여기서는 생략을 하겠다. 일단 PC에 Python이 설치되어 있다는 전제하에 진행을 하겠다.

이 부분이 어려운 경우 앞서 말한대로 각자에게 익숙한 언어로 구현된 라이브러리를 이용하면 된다.

 

일단 나는 PyCharm을 이용하여 학습을 진행하였다. PyCharm에서 Virtualenv로 프로젝트를 생성하여 코딩

하는 법에 대해서만 간략하게 설명하도록 하겠다 (현재 맥미니를 사용 중이라 매킨토시 기준으로 작성한다).

 

1. Pycharm의 File 메뉴를 선택한 후 New Project를 선택한다.

 

2. Create Project 창에서 제일 처음 Location은 그냥 두고 Project Interpriter… 항목에서 New environment using Virtualenv를 선택한다. Location 항목에 프로젝트를 생성할 경로를 입력하고 Base Interpreter는 시스템에 설치된 Python 중 하나를 선택한다.

 

3. 프로젝트를 생성할 시의 옵션으로 기존 프로젝트에 붙여넣을지, 새 창으로 열지, 현재 윈도우에서 열지를 물어보는 창. New Window로 선택하면 무난함.

 

4. 프로젝트가 생성되면 아래와 같이 창이 열린다.

 

5. Firmata를 사용하기 위해 필요한 라이브러리를 추가하기 위해 Preferences... 메뉴를 연다.

 

6. Project <프로젝트 이름> 항목을 선택한 후 Project Interpreter를 선택한다. 기본으로 설치된 pip와 setup tool 라이브러리가 보인다. 필요한 라이브러리를 추가하기 위해 하단 좌측의 + 버튼을 클릭한다.

 

7. + 버튼을 누르면 열리는 Available Packages 창에서 pymata4로 검색을 한다. 검색된 목록에서 pymata4를 선택하고 좌측 하단의 Install Package 버튼을 클릭하여 설치한다. 설치 시 의존성에 필요한 패키지를 모두 설치한다.

 

8. 설치를 하고 난 후 아래 화면과 같이 pymata4와 pyserial 2개의 패키지가 추가로 설치된 것을 확인할 수 있다. Firmata가 기본적으로 Serial 통신을 하기 때문에 의존 패키지로 pyserial이 함께 설치된다.

 

9. 이제 다시 프로젝트 화면으로 돌아가 프로젝트 이름에 마우스 우클릭을 하여 New > Python File을 선택하여 소스 코드를 입력할 Python 파일을 만든다.

 

10. 파일명을 입력하고 OK 버튼을 클릭하여 파일을 생성한다.

 

11. 일단 빠른 테스트를 위해 생성된 Python 파일에는 pymata4의 예제 중 digital_output.py 파일을 그대로 카피하여 붙여넣기 하였다.

 

12. 코딩된 Python 파일을 실행하기 위하여 Run 메뉴의 Run…항목을 클릭한다.

 

13. 코드가 실행되면서 아래의 영상과 같이 LED에 1초 간격으로 4번 불이 들어오고 프로그램이 종료된다. 하단의 Run 창에는 아래 화면과 같이 로그가 찍힌다. Auto-discovery complete. Found 22 Digital Pins and 8 Analog Pins까지는 pymata4 라이브러리에서 찍는 로그로 아두이노가 연결된 serial 포트를 찾고 아두이노 및 아두이노에 업로드된 Firmata에 대한 정보를 가져오는 내용이 출력된다.



 

 

정리

 

오늘은 간단하게 개발 환경 구성과 간단한 예제를 하나 돌려보았다.

 

본문에서 설명한 것과 같이 아두이노는 FirmataExpress 스케치를 업로드한 이후 더이상 할 것이 없다. 

이제부터 모든 아두이노 제어는 호스트 PC에서 Python(물론 지원하는 타 언어를 이용해도 됨) 언어로

코딩하여 진행하게 된다.

 

다음 포스팅부터 pymata4와 FirmataExpress를 하나하나 뜯어보면서 어떻게 동작하는지에 대해 

살펴보도록 하자.

 

반응형