Почему Digispark может быть HID, а Arduino Uno/Nano — нет?

Я пытался сделать проект с Nano в качестве головы, который был основан на V-USB-подобной библиотеке EasyHID. По неизвестным причинам эта попытка не увенчалась успехом, и мне не удалось заставить Nano работать правильно. Это нормально: ребята написали, что эта затея имеет менее 50% успеха, потому что 328p работает на грани своих возможностей при эмуляции протокола USB.

Позже я обнаружил, что некоторые люди используют Digispark в качестве основы для своих проектов HID, и он более стабилен, чем Nano. Пожалуйста, объясните, в чем основные отличия, благодаря которым Attiny выигрывает в проектах HID? И, кроме того, есть ли способ получать сигналы от 8 и более кнопок (аналоговая клавиатура?), когда P4 и P3 заняты как USB+ и USB-?

P.S. У меня пока нет Digispark для тестов, поэтому этот интерес гипотетический. У этой платы очень ограниченный функционал, поэтому я сомневаюсь, что смогу применить ее в других проектах.

, 👍-1

Обсуждение

почему вы хотите использовать виртуальный USB? Arduino Micro/Leonardo имеет собственную периферию USB, @Juraj

@Juraj Я ищу дешевое и суперкомпактное решение, @Mik

Микро такой же маленький, как Нано, @Juraj


2 ответа


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

2

Вы можете использовать многоканальный аналого-цифровой преобразователь, подключенный к Attiny через I2C. AD7606 даст вам 8 отдельных аналоговых входов, используя всего два контакта для подключения к шине I2C. В качестве альтернативы вы можете использовать ADS1115. Это снова чип аналого-цифрового преобразователя. У него всего 4 канала, но вы можете подключить два к одной шине I2C, чтобы получить 8 входных каналов. ADS1115 доступен на eBay в аккуратном корпусе, совместимом с макетной платой.

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

Что касается вашего вопроса о том, какую плату использовать для HID-устройств, Arduino Nano не имеет встроенного USB-контроллера, поэтому его нельзя использовать для эмуляции USB-устройства, но ATtiny85 и Arduino Leonardo имеют.

,

Думаю, в моем случае больше подойдет расширитель шины ввода-вывода, кажется, его проще использовать с 16k матричной клавиатурой, которая у меня есть. И, может быть, вы также сможете ответить на первый вопрос об аппаратной специфике?, @Mik

Я немного дополнил свой ответ относительно ATtiny и Nano — и да — похоже, что вам лучше подойдет расширитель шины, а не многоканальный АЦП., @Lee-xp


1

В ответ на главный вопрос «Почему Digispark может быть HID, а Arduino Uno/Nano — нет?», основное отличие заключается в том, что процессор ATtiny85 в DigiSpark напрямую подключен к компьютеру через USB, в то время как в Nano/Uno между ними есть еще один чип.

Второй чип на Uno/Nano запрограммирован как USB-последовательное устройство, поэтому Uno/Nano не может быть HID-устройством без перепрограммирования этого чипа.

Прошивка Nicohood (без привязки, это всего лишь один пример, о котором я слышал) https://github.com/NicoHood/HID — это проект, цель которого — добавить функции к платам Uno путем обновления прошивки на USB-последовательном чипе на Uno.

Обратите внимание, что не все микросхемы USB-Serial можно обновить; насколько я понимаю, поддерживаются версии ATmega16u2.

,