Duplex serial communication between Arduino and Raspberrypi
Raspberrypi Setup
Detect the Arduino board
When connecting the Arduino with a USB cable, you should see it appear as /dev/ttyACM0 or /dev/ttyUSB0 (sometimes the number can be different, for example /dev/ttyACM1).
Simply open terminal and run the following command.
Run
ls /dev/tty*
and you should see it. At this point if you’re not sure which device is the Arduino board, simply disconnect the board (remove the USB cable), and run the above command again. This way you will easily spot the serial device name of your Arduino. For example in following pictures will observe the difference while running command before and after inserting arduino USB cable.
Before inserting USB
After inserting USB
Here the difference is there is added a port red marked.
Install Python Serial library on Raspberry Pi
You need to install a library to be able to use the Serial interface with Python.
To install it:
Run
python3 -m pip install pyserial
This Python library is well-known and used in a lot of applications.
When installing, if you get an error such as “/usr/bin/python3: No module named pip”, then you need to install pip first with
Run
sudo apt install python3-pip
and Run
Sudo pip3 install pyserial.
Code for Raspberrypi
import serial # Module needed for serial communication
import time
if __name__ == '__main__':
#change port instead ttyUSB0 by following above setup step.
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
ser.flush()
while (1):
send_string = ("My name is Raspberry Pi\n")
# Send the string. Make sure you encode it before you send it to the Arduino.
ser.write(send_string.encode('utf-8'))
# Do nothing for 500 milliseconds (0.5 seconds)
time.sleep(1)
# Receive data from the Arduino
receive_string = ser.readline().decode('utf-8').rstrip()
print(receive_string)
Code for arduino
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
String data = Serial.readStringUntil('\n');
Serial.print("You sent me: ");
Serial.println(data);
}
}
Comments
Post a Comment