petrone_v2 for python / Intro
Modified : 2019.3.8
- 시작하기 전에
- 1. petrone_v2 for python 소개
- 2. 설치
- 3. 업그레이드
- 4. 삭제
- 5. 시리얼 포트 검색
- 6. 응용 프로젝트 예제
- 7. macOS에서 Visual Studio Code를 사용하여 예제 실행하기
시작하기 전에
아직 Python을 설치하지 않으셨다면 다음 문서를 먼저 확인하시기 바랍니다.
1. petrone_v2 for python 소개
petrone_v2 for python은 python에서 PETRONE V2를 쉽게 사용할 수 있도록 도와주는 라이브러리입니다.
https://pypi.python.org/pypi/petrone_v2
2. 설치
아래의 명령을 실행하시면 petrone_v2가 설치됩니다.
> pip install petrone_v2
macOS 에서는 아래와 같이 실행하시기 바랍니다.
> pip3 install petrone_v2
최신 버전이 설치되지 않는다면 아래의 명령을 사용하시기 바랍니다.
> pip --no-cache-dir install petrone_v2
macOS 에서는 아래와 같이 실행하시기 바랍니다.
> pip3 --no-cache-dir install petrone_v2
3. 업그레이드
최신 버전으로 업그레이드 하시려면 아래의 명령을 실행하시면 됩니다.
> pip install --upgrade petrone_v2
macOS 에서는 아래와 같이 실행하시기 바랍니다.
> pip3 install --upgrade petrone_v2
4. 삭제
아래의 명령을 실행하시면 petrone_v2가 삭제됩니다.
> pip uninstall petrone_v2
macOS 에서는 아래와 같이 실행하시기 바랍니다.
> pip3 uninstall petrone_v2
5. 시리얼 포트 검색
Drone 클래스 내부에서 pyserial을 사용하여 시리얼 포트에 연결합니다. 시리얼 포트에 연결하려면 장치 이름을 알고 있어야 합니다. 이 때 필요한 것이 컴퓨터에 연결된 시리얼 통신 장치들을 검색할 수 있는 명령입니다. 이 명령은 pyserial에서 제공하고 있습니다.
(pyserial은 petrone_v2를 설치한 경우 함께 설치됩니다.)
아래는 컴퓨터에 연결된 시리얼 통신 장치들의 이름을 확인하는 코드입니다.
from serial.tools.list_ports import comports
for port, desc, hwid in sorted(comports()):
print("%s" % (port))
장치에 대한 상세한 정보를 확인하려면 아래의 코드를 실행해보시기 바랍니다.
from serial.tools.list_ports import comports
nodes = comports()
count = 0;
for node in nodes:
print("[{0}]".format(count))
print(" device: ", node.device)
print(" description: ", node.description)
print(" manufacturer: ", node.manufacturer)
print(" hwid: ", node.hwid)
print(" interface: ", node.interface)
print(" location: ", node.location)
print(" name: ", node.name)
count += 1
6. 응용 프로젝트 예제
아래는 응용 프로젝트 예제입니다.
일반적인 진행 순서는 '드론 객체 생성' -> '시리얼 포트 연결' -> '명령' -> '시리얼 포트 닫기' 입니다.
from time import sleep
from petrone_v2.drone import *
from petrone_v2.protocol import *
if __name__ == '__main__':
drone = Drone() # 드론 객체 생성
drone.open("COM22") # 시리얼 포트 연결
drone.sendBuzzer(BuzzerMode.Scale, BuzzerScale.C4.value, 500) # 버저에 4옥타브 도 소리를 500ms 동안 내라고 명령하기
sleep(1) # 1초간 sleep
drone.close() # 시리얼 포트 닫기 및 내부 데이터 수신 스레드 종료
open() 함수 사용 시 인자를 넣지 않으면, 내부에서 시리얼 포트를 검색하여 가장 마지막에 검색된 장치에 연결을 시도합니다.
from time import sleep
from petrone_v2.drone import *
from petrone_v2.protocol import *
if __name__ == '__main__':
drone = Drone() # 드론 객체 생성
drone.open() # 시리얼 포트 연결(내부에서 시리얼 포트 리스트를 읽어서 마지막 장치에 연결)
drone.sendBuzzer(BuzzerMode.Scale, BuzzerScale.C4.value, 500) # 버저에 4옥타브 도 소리를 500ms 동안 내라고 명령하기
sleep(1) # 1초간 sleep
drone.close() # 시리얼 포트 닫기 및 내부 데이터 수신 스레드 종료
7. macOS에서 Visual Studio Code를 사용하여 예제 실행하기
아래는 Visual Studio Code 처음 실행 화면입니다.
여기에서 화면 좌측 상단의 새 파일을 선택하시면 빈 파일이 열립니다. 빈 파일에 아래의 코드를 복사해서 붙여 넣으시면 됩니다.
from time import sleep
from petrone_v2.drone import *
from petrone_v2.protocol import *
def eventInformation(information):
print("eventInformation()")
print("{0} / 0x{0:08X}".format(information.version.v))
print("{0}.{1}.{2}.{3}".format(
information.version.major,
information.version.minor,
information.version.stage.name,
information.version.build))
if __name__ == '__main__':
drone = Drone()
drone.open()
# 이벤트 핸들링 함수 등록
drone.setEventHandler(DataType.Information, eventInformation)
# Information 정보 요청
drone.sendRequest(DeviceType.Controller, DataType.Information)
sleep(0.1)
drone.close()
예제는 아래의 소스에서 포트 이름을 지운 것입니다.
예제 코드를 붙여 넣은 화면입니다.
파일을 저장해야 실행할 수 있습니다. 메뉴에서 파일 -> 저장을 선택합니다.
여기에서는 사용자/byrobot/Works 폴더에 test_sendrequest.py 라는 이름으로 저장하였습니다.
파일을 저장하자 코드 문법이 강조되었습니다.
화면의 빈 공간에 오른클릭을 하면 위와 같은 메뉴를 볼 수 있습니다. 예제를 실행하려면 여기에서 Run Python File in Terminal를 선택하면 됩니다.
PETRONE V2 조종기가 맥에 연결되어 있다면 위와 비슷한 결과를 확인할 수 있습니다. 만약 조종기가 연결되지 않았거나 연결에 문제가 있다면 아무런 결과도 표시하지 않습니다.
petrone_v2 for python
- Intro
- System
- Protocol
- Drone
- Examples - Ping
- Examples - Information
- Examples - Pairing
- Examples - Control
- Examples - Sensor
- Examples - Motor
- Examples - Setup
- Examples - Buzzer
- Examples - Vibrator
- Examples - Light
- Examples - Display
- Examples - Input
- Examples - Error