[Dprglist] Raspberry pi to Arduino Serial Communications

Pat Caron patcaron at mail.com
Wed Jan 6 12:24:25 PST 2021


During the last RBNV I mentioned that I was having problems communicating
with an Arduino connected to the RPI due to that nature of the USB bus and
what device gets connected first ei: /dev/ttyUSB0 vs /dev/ttyUSB1 or
/dev/ttyACM0...etc when using multiple Arduinos.  To resolve this I used
some udev rules as below to connect the devices to a symbolic link
therefore resolving the unknown USB device name.  The same symbolic link
name will be given to the USB serial device connected to a specific port.

I created */etc/udev/rules.d/99-tty-by-path.rules* with the following
content on the raspberry pi.

# Rules to create SYMLINK to Arduino device by USB path
ACTION=="add", SUBSYSTEMS=="usb", KERNELS=="1-1.2.7:1.0",
SYMLINK+="ttyUSB-motor"
ACTION=="add", SUBSYSTEMS=="usb", KERNELS=="1-1.2.7:1.1",
SYMLINK+="ttyUSB-ultrasonic"

I got the path for the KERNELS=="1-1.2.7:1.x" by typing the command below
in the terminal for each devices connected
udevadm info -a --name=ttyACM0

      looking at parent device
'/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2.7/1-1.2.7:1.0':
    *KERNELS=="1-1.2.7:1.0"*
    SUBSYSTEMS=="usb"

Reload the rules or reboot for them to take effect!!

In python I use:

    try:
        link = txfer.SerialTransfer('/dev/ttyUSB-motor', 57600)

        link.open()
        time.sleep(2) # allow some time for the Arduino to completely reset
        while True:
            .......

Regards,
...Pat
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dprg.org/pipermail/dprglist-dprg.org/attachments/20210106/a07fafc7/attachment-0001.html>


More information about the DPRGlist mailing list