Привязка ардуино к порту малинки

Тема в разделе "Arduino & Shields", создана пользователем user999, 17 апр 2020.

  1. user999

    user999 Гик

    Помогите побороть ошибку.
    Пытаюсь создать правила, что бы при подключении ардуино к малинке в файле не менять каждый раз /dev/ttyUSB*.
    Создал файл с правилами \etc\udev\rules.d\
    Код (Python):
    SUBSYSTEMS=="usb", ATTRS{idProduct}=="0002", ATTRS{idVendor}=="1d6b" ATTR{serial}=="3f980000.usb",GROUP="dialout", MODE="0666",  SYMLINK+="arduino"
    Устройство появилось
    Код (Text):
    lrwxrwxrwx 1 root root          15 Apr 16 23:43 arduino -> bus/usb/001/001
    В консоле прописал
    Код (Text):
    sudo usermod -a -G tty pi
    sudo usermod -a -G dialout pi
    sudo chmod 666 /dev/ttyUSB0
    В файле питона поменял /dev/ttyUSB* на /dev/arduino
    Выскакивает ошибка
    Код (C++):
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 308, in _rec                                              onfigurePort
        orig_attr = termios.tcgetattr(self.fd)
    termios.error: (25, 'Inappropriate ioctl for device')

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "./first.py", line 6, in <module>
        ser=serial.Serial("/dev/arduino",9600)
      File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 261, in __ini                                              t__
        self.open()
      File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 282, in open
        self._reconfigurePort()
      File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 311, in _rec                                              onfigurePort
        raise SerialException("Could not configure port: %s" % msg)
    serial.serialutil.SerialException: Could not configure port: (25, 'Inappropriate                                               ioctl for device')
     
  2. AlexU

    AlexU Гуру

    Таким образом Вы создаёте symlink к файлу USB устройства, а не к файлу "Serial" устройства. Поэтому питоновская программа и ругается на то, что драйвер не поддерживает IOCTL запрос -- драйвер-то не тот.
    Нужно отслеживать появление файла устройства /dev/ttyUSB0, затем проверять, что это нужная Ардуино и после успешной проверки к этому файлу создавать symlink /dev/arduino. Но задача проверки не простая.
     
    parovoZZ нравится это.
  3. ZAZ-965

    ZAZ-965 Гуру

    Подсистема должна быть SUBSYSTEM=="tty". У меня переходники PL2303 и CH341. У обоих атрибут serial "0", попробовал различать их по имени драйвера
    Код (Bash):
    cat 99-usb-serial.rules
    SUBSYSTEM=="tty", DRIVERS=="pl2303",  SYMLINK+="arduino", MODE="0666"
    SUBSYSTEM=="tty", DRIVERS=="ch341-uart",  SYMLINK+="modbus",  MODE="0666"

    ls -l /dev/arduino && ls -l /dev/modbus
    lrwxrwxrwx 1 root root 7 Apr 17 17:44 /dev/arduino -> ttyUSB1
    lrwxrwxrwx 1 root root 7 Apr 17 17:43 /dev/modbus -> ttyUSB0
     
     
  4. user999

    user999 Гик

    У меня 2 ардуины и различить их не удается.
    Пока оставил это вопрос до лучших времен. Вышел из ситуации следующим образом:
    Код (Text):
    KERNEL=="ttyUSB*", KERNELS=="1-1.3:1.0", GROUP="dialout", MODE="0666",  SYMLINK+="devices"
    KERNEL=="ttyUSB*", KERNELS=="1-1.5:1.0", GROUP="dialout", MODE="0666",  SYMLINK+="sensors"
    В итоге линк идет не на устройство, а на физический порт. Это единственные различия, к которым можно привязать. Но подключать нужно каждое устройство к своему порту
     
  5. user999

    user999 Гик

    У меня еще вопрос. Скрипты, которые управляют 2-мя ардуинками на малинке практически идентичны, различается только порт и ссылка на Гет запрос php. Могут ли как то 2 порта повлиять на работу друг друга. Я несколько дней настраивал первую плату и сбоев не было, а сегодня подключив другую у первой периодически пропадает отправка в порт. Может ссылки на виртуальные порты или одинаковые переменные в файлах питона как т влияют? Куда копать?
     
  6. user999

    user999 Гик

    И еще вопрос. Как правильно питать ардуинки. Они подключены по usb к малине и питаются от нее. Не погарят ли usb-порты малины. Может ардуинки запитать от дополнительного источника. Но вроде как usb в приоритете у ардуино по питанию? Что скажете?