Is there a way to “compile” Python code onto an Arduino (Uno)?

后端 未结 4 819
生来不讨喜
生来不讨喜 2021-01-30 12:48

I have a robotics type project with an Arduino Uno, and to make a long story short, I am experimenting with some AI algorithms. However, I need to implement some high level matr

相关标签:
4条回答
  • 2021-01-30 13:05

    There was a talk about using Python with robotics at this years PyConAU called Ah! I see you have the machine that goes 'BING'! by Dr. Graeme Cross.

    The only option he recommended for using Python on a microcontroller board was PyMite which I think also goes by the name of Python-On-A-Chip.

    It has been ported to a range of boards - specifically he mentions the Arduino Mega which you said is not an option for you, but it is possible it is supported on other Arduino boards.

    However, because it is a "batteries not included" version of Python it is more than likely that you will have a real problem getting numpy/scipy etc up and running.

    As other posters have suggested, implementing in C might be the path of least resistence.

    Update: again, not specifically for Arduino, but pyMCU looks to provide python on a chip. The author states he may look at developing an Arduino version of pyMCU if there is enough interest.

    0 讨论(0)
  • 2021-01-30 13:16

    I've started work on a "Little Python" to C++ (called Pyxie - a play on Py CC- Pyc-C) compiler, with the specific aim of compiling a sane subset of python to C++ such that it can run on an arduino.

    This is far from complete at time of writing (0.0.16), but it can currently compile a very small subset of python - enough for the arduino "blink" example to run. To support this, it has a compilation profile - which essentially means "compile using the arduino toolchain."

    A program it can compile looks like this:

    led = 13
    
    pinMode(led, OUTPUT)
    
    while True:
      digitalWrite(led, HIGH)
      delay(1000)
      digitalWrite(led, LOW)
      delay(1000)
    

    This parses, performs analysis (like type inference, etc), compiles to C++, which is then compiled to a hex file, which you can load onto your device.

    There's a long way to go before it's useful, but it is progressing and does have a roadmap/etc.

    • PyPI - http://pypi.python.org/pypi/pyxie
    • Homepage - http://www.sparkslabs.com/pyxie/index.html

    In particular a key difference from Micropython (and PyMite) is that it's designed to compile to devices too small to run either implementation. (This also means it's very different from things like ShedSkin which while a Python to C++ compiler target larger execution environments)

    0 讨论(0)
  • 2021-01-30 13:20

    This is not a direct solution but in your circumstances If I were you, I would write the AI program on my computer and the rest of it in Arduino. after that I would write a flask server with my AI program. and then, port forward from my router to the local machine. finally, make requests from Arduino to the server.

    0 讨论(0)
  • 2021-01-30 13:23

    It's going to be difficult to get any kind of Python script running directly on the Arduino uno.Reason is that it is an interpreted language, so you will need a interpreter on-board in addition to the plain text script. There is probably not going to be enough memory for all of thatin arduino uno.

    What you can do best is to find a way to compile a Python script to native machine code (this is how C/C++ works). I have seen projects around to do something like that for other platforms, but (as far as I know) none which does it successfully for Arduino uno yet.

    you can visit http://www.toptechboy.com/using-python-with-arduino-lessons/ for more.

    wish this will help you. thanks!

    0 讨论(0)
提交回复
热议问题