Python 코드를 Arduino (Uno)에 "컴파일"하는 방법이 있습니까?
저는 Arduino Uno를 사용하는 로봇 공학 유형 프로젝트를 가지고 있으며 짧게 말하면 AI 알고리즘을 실험하고 있습니다. 그러나 NumPy / SciPy를 사용하여 매우 간단한 고수준 매트릭스 알고리즘을 구현해야 하지만 C 또는 C ++에서는 완전히 악몽입니다. 밖에 도서관이 있어도 이것은 우스꽝스러워지고 있습니다.
이 프로젝트를 파이썬으로 할 수있는 방법이 있습니까? 메가 가이 기능을 가지고 있다는 얘기를들은 것 같지만 우노가 있고 교체하는 것은이 시점에서 옵션이 아닙니다 (프로젝트를 상당히 되돌릴 수 있습니다.) 또한 파이썬을 사용하여 통신하는 것에 대해 들었습니다. USB를 통해 Arduino에 연결되지만 작동 중에는 USB 케이블을 넣을 수 없습니다. 프로그램을 업로드하고 끝낼 수 있어야합니다.
거기에 옵션이 있습니까? 아니면 막 다른 골목에 도달 했습니까?
이 년에서 로봇 파이썬을 사용하는 방법에 대한 이야기가 있었다 PyConAU이 라고 아! 나는 당신이 'BING'으로가는 기계를 가지고있는 것을 본다! Graeme Cross 박사.
그가 마이크로 컨트롤러 보드에서 Python을 사용하기 위해 권장 한 유일한 옵션은 PyMite 였습니다.이 옵션 은 Python-On-A-Chip 이라는 이름으로도 사용됩니다 .
다양한 보드에 이식되었습니다. 특히 그는 Arduino Mega가 귀하에게 옵션이 아니라고 언급했지만 다른 Arduino 보드에서 지원 될 수 있다고 언급했습니다.
그러나 Python의 "배터리가 포함되지 않은"버전이기 때문에 numpy / scipy 등을 실행하고 실행하는 데 실제 문제가있을 가능성이 높습니다.
다른 포스터가 제안했듯이 C로 구현하는 것은 저항이 가장 적은 경로 일 수 있습니다.
업데이트 : 아두 이노 전용은 아니지만 pyMCU 는 칩에 파이썬을 제공하는 것으로 보입니다. 저자는 충분한 관심이 있다면 Arduino 버전의 pyMCU를 개발할 수 있다고 말합니다.
나는 arduino에서 실행될 수 있도록 파이썬의 정상적인 부분 집합을 C ++로 컴파일하는 특정한 목적을 가지고 "작은 파이썬"에서 C ++ ( Pyxie 라고 함 -Py CC- Pyc-C에서 재생) 컴파일러 작업을 시작했습니다. .
이것은 작성 시점 (0.0.16)에서 완전하지는 않지만, 현재는 arduino "blink"예제를 실행하기에 충분한 파이썬의 아주 작은 부분 집합을 컴파일 할 수 있습니다. 이를 지원하기 위해 컴파일 프로필이 있습니다. 이는 본질적으로 "arduino 도구 모음을 사용하여 컴파일"을 의미합니다.
컴파일 할 수있는 프로그램은 다음과 같습니다.
led = 13
pinMode(led, OUTPUT)
while True:
digitalWrite(led, HIGH)
delay(1000)
digitalWrite(led, LOW)
delay(1000)
이는 구문 분석, 분석 (예 : 유형 추론 등)을 수행하고 C ++로 컴파일 한 다음 16 진수 파일로 컴파일하여 장치에로드 할 수 있습니다.
유용 하기까지는 갈 길이 멀지 만 진행 중이며 로드맵 등이 있습니다.
- PyPI- http: //pypi.python.org/pypi/pyxie
- 홈페이지-http: //www.sparkslabs.com/pyxie/index.html
특히 Micropython (및 PyMite)과의 주요 차이점은 두 구현 모두를 실행하기에는 너무 작은 장치로 컴파일하도록 설계되었다는 것입니다. (이것은 또한 Python to C ++ 컴파일러가 더 큰 실행 환경을 목표로하는 동안 ShedSkin과 같은 것과 매우 다르다는 것을 의미합니다)
Arduino uno에서 직접 실행되는 모든 종류의 Python 스크립트를 얻는 것은 어려울 것입니다. 이유는 그것이 해석 된 언어이기 때문에 일반 텍스트 스크립트 외에도 온보드 인터프리터가 필요하기 때문입니다. arduino uno에서 모든 것에 대한 충분한 메모리가 없을 것입니다.
가장 잘 할 수있는 것은 Python 스크립트를 네이티브 기계어 코드로 컴파일하는 방법을 찾는 것입니다 (이것이 C / C ++ 작동 방식입니다). 나는 다른 플랫폼에서 그런 일을하는 프로젝트를 보았지만 (내가 아는 한) 아직 Arduino uno에서 성공적으로 수행하는 프로젝트는 없습니다.
자세한 내용 은 http://www.toptechboy.com/using-python-with-arduino-lessons/ 를 방문 하십시오 .
이것이 당신을 도울 것입니다. 감사!
'programing' 카테고리의 다른 글
'ws : // xxx : nn'에 대한 WebSocket 연결 실패 : 핸드 셰이크 응답을 받기 전에 연결이 종료 됨 '오류를 잡는 방법? (0) | 2021.01.16 |
---|---|
단일 어셈블리 다국어 Windows Forms 배포 (ILMerge 및 위성 어셈블리 / 지역화)-가능합니까? (0) | 2021.01.16 |
printf에 대한 h 및 hh 수정 자의 목적은 무엇입니까? (0) | 2021.01.16 |
클래스 제거시 CSS 애니메이션을 되돌릴 수 있습니까? (0) | 2021.01.16 |
C ++ 모듈을 준비하려면 C ++를 어떻게 작성해야합니까? (0) | 2021.01.16 |