How to connect Arduino and Python

Example, how to send a message from Arduino to a Python-program

Arduino code:

void setup() {
	Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}

void loop() {
	Serial.println("Hello, it'a Ardunio!"); //send message
	delay(5000);
}

In Python we use pyserial library

In the examples in this library, the following is used to open the port:

ser = serial.Serial('/dev/ttyUSB0')

but I had no success with such type to the port open. To find in Linux, that name is used as serial-port name need run command:

$ ls /dev/serial/by-id/

the output will be something like:

usb-1a86_USB2.0-Serial-if00-port0 

Python-code will look so:

import serial
arduino = serial.Serial('/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0', 9600, timeout=.1)

while True:
    data = arduino.readline()[:-3] #the last bit gets rid of the new-line chars
    if data:
        print (data)

Load the firmware on Arduino and run our python script. We can see the following in the terminal:

Now send a message from Python to Arduino

Arduino code:

void setup() {
    Serial.begin(9600);
}

void loop() {
	if(Serial.available() > 0) {
		char data = Serial.read();
		char str[2];
		str[0] = data;
		str[1] = '\0';
		Serial.print(str);
	}
}

Python-code:

import serial, time
arduino = serial.Serial('/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0', 9600, timeout=.1)
time.sleep(1) #give to the connection a second

while True:
    arduino.write(str.encode('Hello from Python!' + '\n'))
    time.sleep(10)

Now open Serial Monitor in Arduino IDE and there we can see:

Post your comment

Search
Popular Posts
Subscribe
{{post}}