Я хочу создать свое собственное модульное USB-устройство, используя ATtiny45, который просто отправляет данные на ПК через USB. Я не читаю данные, поэтому однонаправленное (ATtiny -> PC) соединение было бы вполне нормально.
Я использую Arduino Uno в качестве интернет-провайдера со стандартным эскизом ArduinoISP, загруженным из программного обеспечения Arduino. Я думаю об использовании AVRDUDE для программирования ATtiny45 с Arduino в качестве ISP, потому что я хочу иметь возможность использовать код на C, скомпилированный в HEX, поскольку он более продвинут, чем язык программирования Arduino.
Мои основные мысли о схеме:
Как видите, я хочу «прямое» USB-соединение. Пока я знаю, что для этого мне нужно использовать программное решение.
Я управлял SoftwareSerial для работы с моим ATtiny45. Для этого я использовал программное обеспечение Arduino для программирования ATtiny45 с помощью следующего кода:
#include <SoftwareSerial.h> #define rxPin 3 #define txPin 4 SoftwareSerial serial(rxPin, txPin); void setup() { pinMode(rxPin, INPUT); pinMode(txPin, OUTPUT); pinMode(led, OUTPUT); serial.begin(4800); } void loop() { serial.println("1"); delay(1000); }
Обратите внимание, что я не использую контакт 3 (пока), но мне нужно определить его для SoftwareSerial.
Таким образом, используя SoftwareSerial, я смог отправить данные с ATtiny непосредственно на вывод TX моего Arduino UNO, на который был загружен пустой эскиз для этого теста. Я использовал Serial Monitor из программного обеспечения Arduino для чтения данных на COM4 (в моем случае), потому что мой компьютер не распознавал никакое устройство (COM-порт), так как я пытался подключить запрограммированный ATtiny непосредственно к USB-кабелю.
К сожалению, я получил только странные символы Юникода в Serial Monitor. Я думаю, что это потому, что данные в шестнадцатеричном формате или около того. Итак, я заметил, что мне нужно подключить USB / Serial Converter между USB и ATtiny45 ... Я искал такие преобразователи, но я не хочу использовать какие-либо готовые платы, так как я хочу все мои компоненты на одной плате. Я думаю, что чип FTDI был бы слишком "большим" для моего проекта, не так ли? (У него слишком маленькие контакты, чтобы паять ...)
Тогда V-USB был моим вторым подходом, так как ему не нужен конвертер USB / Serial (как я знаю). Поэтому, чтобы использовать V-USB, мне нужно использовать AVRDUDE, как я упоминал ранее.
Я нашел этот хороший пример V-USB EasyLogger . Содержит схему конструкции и пример прошивки. (C / C ++ / HEX)
Единственное, что я хочу знать: мне действительно нужно, чтобы моя схема выглядела так, как показано в примере? ->
Что еще мне нужно знать об USB-соединении такого типа? (Зачем мне нужен USB / последовательный преобразователь? Могу ли я просто подключить +5 и VCC? Какие компоненты мне абсолютно необходимы? Какой сигнал мне нужно отправить через TX? Биты? Шестнадцатеричные? Какое напряжение ему нужно быть ? )
Спасибо за все ваши ответы.
ОБНОВИТЬ
Вот некоторые дополнительные ссылки, которые действительно помогли мне в некоторых моментах. Но я все еще не понял это полностью ...
первый -> http://www.ernstc.dk/arduino/tinycom.html
а второй -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino (прокрутите вниз до раздела «Последовательный вывод»)
Ответы:
Вы можете связать ATtiny45 с USB напрямую, без конвертера FTDI.
Чтобы все работало, вам понадобится библиотека V-USB .
Очень хороший пример того, что все работает, здесь , что он использует тот же пример от EasyLogger.
У того же автора есть еще несколько приятных советов и проектов с USB и uC.
Пример схемы с ATtiny:
смоделировать эту схему - схема, созданная с использованием CircuitLab
источник
По сути, USB - это протокол связи высокого уровня с особыми требованиями для управления уровнем сигнала, синхронизации и завершения. Он не такой простой, как последовательный, он имеет дифференциальные линии данных и кодировку NRZI, требуемый опрос, квитирование связи и т. Д. Вот почему вам нужен USB / последовательный адаптер или почему вам нужна аппаратная или программная реализация USB.
В то время как USB использует питание 5 В, сигнальные линии фактически имеют напряжение от 3,3 до 3,6 В. Вот почему схема VUSB, которую вы показываете, использует стабилитроны на этих двух линиях. Tiny не может просто работать при 3,3 В, потому что он не может работать на необходимых 16 МГц при 3,3 В.
Остальные части, R1-R3, D1, D2 и C1, C2, являются минимально необходимыми деталями. Это не очень много спрашивает о функциях, которые вы получаете. Смотрите эту страницу для списка всех проектов, которые используют vusb.
Коммутатор, R4 и LED1 являются частью конкретного примера прошивки для регистрации данных, и их можно избежать, если вам это не нужно / смените прошивку.
источник
Слишком много вопросов, чтобы ответить в одном посте, но вот несколько быстрых моментов:
Некоторые микроконтроллеры содержат «конечную точку» USB и соответствующее оборудование, но сайт Atmel показывает, что ATTiny45 нет.
Поэтому вы не можете просто подключить порты микроконтроллера к USB-разъему, как это, потому что USB является сложной шиной как на электронном уровне, так и на уровне протокола.
Однако, как отмечается в комментариях ниже, вы ищете по правильным линиям с V-USB, я не использовал это, поэтому оставлю другие комментарии.
Чипы FTDI не слишком сложны для пайки, но правильная печатная плата с сопротивлением припоя сделает это проще.
Ранее я использовал что-то вроде этого кабеля FT232 :
(источник: ftdichip.com )
Он имеет встроенную в разъем USB микросхему FTDI и выполняет преобразование всех уровней, одновременно обеспечивая подачу питания. Конец представляет собой простой 0,1-дюймовый шаг разъема, который можно подключить к контактному разъему.
Они доступны на eBay по доступным ценам.
источник