Arduino with PySerial - SaratogaEDD2014/RapidPrototyper GitHub Wiki
Python Arduino API
We now have a separate repository, originally forked from vascop, to use for Python to Arduino communication. It uses a simple set of messages to notify the arduino to perform certain actions.
Arduino Python Tutorial
Talking to Arduino over a serial interface is pretty trivial in Python. On Unix-like systems you can read and write to the serial device as if it were a file, but there is also a wrapper library called pySerial that works well across all operating systems.
After installing pySerial, reading data from Arduino is straightforward:
import serial ser = serial.Serial('/dev/tty.usbserial', 9600) while True: ... print ser.readline() '1 Hello world!\r\n' '2 Hello world!\r\n' '3 Hello world!\r\n'
Writing data to Arduino is easy too:
import serial # if you have not already done so ser = serial.Serial('/dev/tty.usbserial', 9600) ser.write('5')
Note that you will need to connect to the same device that you connect to from within the Arduino development environment. I created a symlink between the longer-winded device name and /dev/tty.usbserial to cut down on keystrokes.
It is worth noting that the example above will not work on a windows machine; the arduino serial device takes some time to load, and when a serial connection is established it resets the arduino.
Any write() commands issued before the device initialised will be lost. A robust server side script will read from the serial port until the arduino declares itself ready, and then issue write commands. Alternatively It is possible to work around this issue by simply placing a 'time.sleep(2)' call between the serial connection and the write call.