USB-связь между Arduino Nano и модулем UHF Reader

usb

Я работаю над проектом, для которого требуется комплект разработки считывателя УВЧ, который может обмениваться данными через RS232 или через USB. Через USB и последовательный терминал я смог отправлять команды считывателю, а также анализировать его реакцию.

Моя цель — отправить те же команды считывателю, но через Arduino Nano. Моим первым побуждением было использовать RS232, преобразуя сигнал через MAX232. Однако это для школьного проекта, и мой консультант предпочел, чтобы я попробовал работать с USB. Я знаком со связью UART и предполагал, что USB работает с использованием UART.

Я купил USB-конвертер, который дает мне доступ к контактам, но у него было два дополнительных контакта, которых я не ожидал: CTS и DTR. Я попытался установить связь, несмотря на эти контакты (просто оставив их открытыми и подключив Rx, Tx, Vcc и GND, как обычно). При подключении к УВЧ-считывателю устройство включилось (поскольку оно получает питание от USB-соединения), однако не получило выходной сигнал от Arduino Nano.

Я знаю, что моя скорость передачи данных и другие настройки верны, потому что, как я уже сказал, связь через USB и последовательный терминал не вызывает у меня проблем. Моя первоначальная мысль заключалась в том, что мне нужно правильно соединить контакты CTS и DTR, но я сразу не смог найти хорошего руководства о том, как это сделать, и я не совсем уверен, что проблема именно в этом. Другая моя мысль заключалась в том, что, возможно, я неправильно записываю свои HEX-значения из Arduino, используя строку, подобную следующей, где «UHF_Reader» определяется SoftwareSerial:

UHF_Reader.write(0xAA);

Однако исследования показали, что это действительно правильный способ вывода значений HEX через последовательный порт.

Моей последней попыткой решить эту проблему было подключение микро-USB от Nano к USB считывателя, а затем использование программного обеспечения Serial в сочетании с USB-конвертером для анализа вывода на последовательном терминале при включении Nano. через блок питания 5В. Однако, поскольку считыватель получает питание от порта USB, он даже не включился, когда я попытался это сделать (я предполагаю, что питание Vcc может осуществляться только с USB-конца?). Тем не менее, и эта попытка оказалась бесполезной.

Если кто-нибудь может дать какой-либо совет или указать мне ссылки на что-то подобное, я буду очень признателен! Я потратил на это некоторое время и просто не могу понять, в чем проблема.

Для справки: считыватель, который я использую, находится здесь: Считыватель UHF

А USB-конвертер, который я использую, находится здесь: USB-конвертер

, 👍0


1 ответ


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

0

Я предполагал, что USB работает с использованием UART.

Нет. У вас это наоборот. Устройства могут эмулировать UART (известный как CDC/ACM) через USB-соединение в качестве одного из многих возможных профилей устройств, но это примерно так же далеко от UART, как автомобиль Формулы-1 от пенни фартинга.

USB работает по строгому принципу «ведущий/подчиненный». То есть у него есть одно главное устройство, называемое Хост, которое координирует все устройства на шине и отправляет к ним запросы. Все, что вы подключаете к USB-системе, является устройством и требует, чтобы хост сообщал ему, что делать.

Ни Nano, ни этот адаптер, который вы купили, не являются хостами. Это просто Устройства. И Устройства не могут общаться с Устройствами. Только хосты могут общаться с устройствами.

Это означает, что где-то вам нужен хост. Если вы хотите, чтобы им управлял Arduino, вам понадобится USB Host Shield (или что-то подобное), который обычно обменивается данными через SPI.

Если устройство, с которым вы пытаетесь связаться, использует профиль CDC/ACM, вы можете использовать с ним USB Host Shield. Если он использует собственный профиль, такой как CH340G или FT232, то заставить его работать с USB Host Shield будет намного сложнее (возможно, даже невозможно), если вы не знакомы с используемым базовым протоколом.

,