Arduino Nano Every USB-соединение не работает

У меня есть две оригинальные (спроектированные и собранные в Италии) платы Arduino Nano Every из немецкого интернет-магазина. Они пришли запечатанными в оригинальной упаковке. Когда я пытаюсь подключить их к компьютеру, они не включаются.

Что я уже пробовал:

  • 6 разных USB-кабелей.
  • 1 настольный ПК с Arch Linux и Windows 10, все доступные порты USB (разъёмы на передней панели, материнская плата на задней стороне)
  • 1 ноутбук с Arch Linux
  • 1 Google Pixel 4 XL с адаптером USB-B–C.

Никакая комбинация USB-кабелей с любым из вышеупомянутых USB-портов/машин/операционных систем не позволяет загрузить платы Arduino Nano Every (светодиоды не мигают).

Я попробовал подать питание на платы с помощью батарейного блока на 9 В на контактах V_in и GND, и это сработало. Я также пробовал запитать платы от батарейного блока на 9 В, а затем подключить USB, но вышеупомянутые машины/операционные системы не распознают новое устройство, подключенное через USB, несмотря на то, что платы включены (мигают светодиоды).

Я также трижды проверил физическое соединение USB-кабелей на обоих концах, чтобы убедиться, что они вставлены правильно. Я могу использовать вышеупомянутые USB-кабели, USB-порты, машины и операционные системы для зарядки других устройств или передачи данных на другие устройства (например, смартфоны, устройства для чтения электронных книг, USB-накопители, внешние жесткие диски и т. д.). ).

Что мне следует сделать дальше, чтобы Arduino Nano Every заработал?

Сообщите мне, какую дополнительную информацию мне следует предоставить. Спасибо!

Примечание. Насколько я вижу, при использовании lsusb в Linux всегда должен отображаться список подключенных USB-устройств, независимо от групп, в которых находится мой пользователь. Тем не менее, я также загрузил cdc_acm и добавил SUBSYSTEMS=="usb-serial", TAG+="uaccess" в правило udev, расположенное по адресу /etc/udev/rules.d/01-ttyusb. Rules и перезагрузил правила udev, но безрезультатно.

, 👍0

Обсуждение

попробуйте установить пакет плат megaAVR в IDE. он также устанавливает драйверы, @Juraj

спасибо @Juraj, на самом деле модуль ядра cdc_acm уже управляет устройствами, которые поддерживают интерфейс абстрактной модели управления классом коммуникационных устройств. Кроме того, поскольку имеющиеся у меня платы Arduino Nano Every даже не запускаются, проблемы с драйверами, по моему мнению, маловероятны., @hintze

Просто чтобы быть уверенным: в случае, если вы питаете платы от USB, горит ли индикатор питания постоянно?, @timemage

Что касается комментария Юрай, я считаю, что он важен для вашего тестирования Windows 10, и, я думаю, это все, о чем он намеревался рассказать. Насколько я помню, Windows в некоторых (во всех?) случаях требует «драйвера» Arduino, несмотря на то, что это интерфейс CDC-ACM. Однако в нем нет собственно драйвера; нет файла .sys. Это просто файл .INF, который связывает встроенный драйвер CDC-ACM .sys с VID:PID/интерфейсом Arduino. Просто в Windows это не происходит полностью автоматически, как в Linux. Тем не менее, ему нужно только перечислить USB (даже без «драйверов»), чтобы хотя бы каким-то образом отобразить его в диспетчере устройств., @timemage

Неа, вообще никаких признаков жизни от плат не подается, если USB подключить как описано., @hintze

На нижней стороне платы расположены контрольные точки для сигналов D+ и D- возле разъема USB и D12. Я бы проверил напряжение на GND при питании от VIN и обратил бы внимание на то, какое напряжение на них появляется. Затем отключите плату и проверьте целостность каждого USB-кабеля на хост-конце., @timemage


3 ответа


Лучший ответ:

-1

Я заказал Arduino Nano (не «Every») в другом интернет-магазине, и он включается, как только я подключаюсь к USB. Поскольку в Arduino Nano используется мини-USB (в Arduino Nano Every используется микро-USB), я использую кабель, отличный от тех, которые я пробовал на двух имеющихся у меня платах Arduino Nano Every. Но учитывая, что я попробовал несколько кабелей, которые также работают с другими устройствами, теперь я уверен, что две имеющиеся у меня платы просто сломаны. Мне не повезло.

,

1

Такие вопросы часто требуют тщательного поиска неисправностей, пока не будет найдена причина. Для того, чтобы это было полезно как можно большему количеству людей, составим список действий. (Добавьте комментарий, если есть какие-либо дополнительные действия, и я добавлю их в список.)

  • "...питание плат с помощью батарейного блока 9 В на контактах V_in и GND..."

Убедитесь, что источник питания 9 В подключен к VIN. Внутренний стабилизатор напряжения обеспечит необходимые 5 В и 3 В 3 для остальной части Nano-Every. Учтите, что если напряжение 9 В было случайно подключено к контактам 5 В или 3 В 3, части Nano-Every могут быть повреждены.

  • "при использовании lsusb в Linux всегда должен отображаться список подключенных USB-устройств"

Да, так и должно быть. Если "lsusb" вводится до и после подключения Nano. Каждый раз в списке должно быть дополнительное USB-устройство. Если изменений нет, возможно, что-то физически не так (плохой кабель или неправильный кабель (т. е. только для зарядки), неисправный Nano или сгоревшая деталь).

Кроме того, "lsusb" обычно не требует root-прав. Но подумайте о том, чтобы попробовать «sudo lsubs»; чтобы убедиться, что все USB-устройства видны.

Вот пример вывода команды «lsusb»; запускаться, когда Nano-Every был подключен к компьютеру с Ubuntu:

$ lsusb
...
Bus 001 Device 004: ID 2341:0058 Arduino SA Arduino Nano Every
  • "Я также загрузил модуль cdc_acm..."

Проверяя систему Ubuntu, которая может успешно программировать Nano-Every, я не вижу установленного пакета со словами cdc_acm.

(Мне придется изучить вышеизложенное. Хотя менеджер пакетов Ubuntu управляет cdc-acm.ko, cdc-acm.ko существует.)

  • "...и добавлены SUBSYSTEMS=="usb-serial", TAG+="uaccess" к правилу udev, расположенному по адресу /etc/udev/rules.d/01-ttyusb.rules"

Имейте в виду, что добавление правила udev с низким значением, например "01*" скорее всего, будет скрыто любым правилом udev с более высоким номером, если совпадение будет найдено. Большинство разработчиков добавляют правила udev, которые начинаются с большого числа, например «99*». чтобы смягчить эту проблему.

При этом маловероятно, что потребуется изменение правил udev. Большинство, если не все, дистрибутивы Linux адекватно поддерживают периферийные устройства типа USB/CDC без каких-либо модификаций. При подключении Nano-Every к вышеупомянутому компьютеру с Ubuntu создается новое устройство по адресу /dev/ttyACM0.

  • "Я пробовал питать платы от батареи напряжением 9 В"

Избегайте использования 9-вольтовых батарей типа PP3. Они могут быть проблематичными, когда достигнута их более низкая токовая мощность. В этот момент их выходное напряжение может упасть. Приведение к неожиданным результатам. Если такая батарея необходима, обратите пристальное внимание на потребляемый ток, суммируя все ожидаемые максимальные токи. Короче говоря, процессор с меньшим энергопотреблением на платах Arduino, построенный с использованием LDO (регулятор с низким падением напряжения), имеет больше шансов на работу. как и ожидалось. Другие платы Arduino могут работать не так хорошо, и сильноточные компоненты, такие как двигатель, соленоид или реле, скорее всего, не будут работать.

,

Вы пишете: "возможно что-то физически не так (плохой кабель или неправильный кабель (т.е. только зарядка), плохой Nano или сгоревшая деталь)". Да, именно поэтому я попробовал 2 разные платы Arduino Nano Every, используя 5 разных USB-кабелей, на 3 разных машинах, использующих 3 разные операционные системы, где все упомянутые элементы фактически работают, за исключением двух плат Arduino Nano Every., @hintze

cdc_acm — это модуль ядра, который управляет устройствами, поддерживающими Интерфейс абстрактной модели управления классом коммуникационного устройства (см. ls -l /lib/modules/$(uname -r), см. также https://www.kernelconfig.io/config_usb_acm или https://www.keil.com /pack/doc/mw/USB/html/group__usbh__cdcacm_functions.html, @hintze

Я составил несколько общий список того, что стоит попробовать, чтобы другие тоже могли получить от него пользу. Я видел, где вы пробовали несколько кабелей. Хотел спросить, они одинаковые (возможно все только с зарядкой) или от разных производителей. Теперь я вижу cdc-acm.ko. Я использовал «sudo dpkg -l | grep cdc | grep acm», который не показывает такого пакета в Ubuntu. Мне нравится идея @KIIV проверять 5 В и 3 В 3 при подаче питания через USB, а также после переключения на батарею 9 В по VIN. Это должно сказать нам, работают ли регуляторы и силовые диоды Nano-Every. Также избегайте использования слаботочных батарей PP3 9 В., @st2000


0

В ядре Linux наблюдается некоторая регрессия, и сенсорный экран со скоростью 1200 бод не работает должным образом (кажется, он используется для переключения между режимом updi и последовательным соединением).

Я начал использовать скрипт, упомянутый в https://github.com/arduino/ArduinoCore-megaavr/issues/124 и в большинстве случаев мне удавалось загрузить его (но лучше, чем в большинстве случаев неудачно), когда я выполнял его за несколько секунд до загрузки.

Например, плата Curious nano с Atmega4809 работает отлично, поскольку эмулирует отладчик+последовательный порт+накопитель (но требует правильного VID/PID в правилах udev или подключения хранилища)

Упомянутый сценарий:

#!/usr/bin/python3
#   Run this script to reset the Arduino Nano Every
#   eg. sudo python3 mcu_reset.py
#
# Note: You must install pyserial first; i.e. sudo pip3 pyserial

import serial
import os, sys
# total arguments
n = len(sys.argv)
if n >= 2:
    port = sys.argv[1]
else:
    port = '/dev/ttyACM0'

print("Port: {}".format(port))

#re-enable hupcl temporarily (necessary for arduino reset using serial port)
os.system('sudo /bin/stty -F {} hupcl'.format(port))

try:
    #perform Arduino Nano Every reset "handshake"
    ser = serial.Serial()
    ser.baudrate = 1200
    ser.port = port
    ser.open()
    ser.close()

except serial.SerialException:
    print("Error: serial.SerialException")
    exit()
,

Спасибо за Ваш ответ! К сожалению, если плата даже не включается, не распознается lsusb и микросхема последовательного USB-соединения на плате не работает - как должна помочь установка скорости передачи данных на этом последовательном порту?, @hintze

И он не включается даже от USB-зарядки? Как насчет использования контакта 5 В (с входом 5 В)? Если первый не работает, а второй работает (что, вероятно, работает, поскольку на Vin тоже подается напряжение 5 В), то защитный диод между Vusb и +5 В может быть перепутан или разрушен, или разъем USB каким-то образом поврежден., @KIIV

Возможно, также проверьте 3V3, он питает коммуникационный чип [Nano Every Schematics](https://www.makerguides.com/wp-content/uploads/2020/09/Arduino-Nano-Every-Schematics.pdf), @KIIV