Прошивка и микросхема прямого подключения ATtiny45 USB 2.0

9

Я хочу создать свое собственное модульное USB-устройство, используя ATtiny45, который просто отправляет данные на ПК через USB. Я не читаю данные, поэтому однонаправленное (ATtiny -> PC) соединение было бы вполне нормально.

Я использую Arduino Uno в качестве интернет-провайдера со стандартным эскизом ArduinoISP, загруженным из программного обеспечения Arduino. Я думаю об использовании AVRDUDE для программирования ATtiny45 с Arduino в качестве ISP, потому что я хочу иметь возможность использовать код на C, скомпилированный в HEX, поскольку он более продвинут, чем язык программирования Arduino.

Мои основные мысли о схеме: введите описание изображения здесь

Как видите, я хочу «прямое» USB-соединение. Пока я знаю, что для этого мне нужно использовать программное решение.

  1. Я управлял 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 был бы слишком "большим" для моего проекта, не так ли? (У него слишком маленькие контакты, чтобы паять ...)

  2. Тогда 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 (прокрутите вниз до раздела «Последовательный вывод»)

туз
источник
2
Да, по крайней мере, если вы не хотите слишком сильно нарушать спецификации электрических ограничений . Обратите внимание, что ваш разъем USB на верхней диаграмме неправильно маркирован. D + / D- - это не отдельные линии передачи и приема, а двунаправленная дифференциальная пара .
Крис Страттон
Я извиняюсь за мой плохой набросок. Я действительно не электрик, а программист. «Рисунок» был просто визуализацией моих мыслей, которые я имел в виду, планируя этот проект.
Ace

Ответы:

5

Вы можете связать ATtiny45 с USB напрямую, без конвертера FTDI.

Чтобы все работало, вам понадобится библиотека V-USB .

Очень хороший пример того, что все работает, здесь , что он использует тот же пример от EasyLogger.

У того же автора есть еще несколько приятных советов и проектов с USB и uC.

Пример схемы с ATtiny:

схематический

смоделировать эту схему - схема, созданная с использованием CircuitLab

Butzke
источник
Аскер уже посмотрел на V-USB.
Игнасио Васкес-Абрамс
Огромное спасибо. Я попробую это, как только смогу. Но сначала я хочу спросить вас о более правильном способе программирования ATtiny45 с помощью библиотеки V-USB ... Я не уверен, что и как делать ... Я изучил AVRDUDE. до сих пор я знаю, что я должен загрузить загрузчик ??? крошечной, а также прошивки (шестнадцатеричный файл ??). И я думаю, что мне нужно скомпилировать код C (например, пример easylogger) после того, как я изменил код для своего приложения. правильно ?
Ace
а также не могли бы вы "упростить" схему до минимума? Я запутался, например, из-за светодиода ... мне действительно не нужны никакие дополнительные компоненты, такие как светодиоды или датчики.
Ace
а что за диоды D2 и D3? Диоды шоттки?
Ace
а также, как насчет битов предохранителей? и в самом конце поста вы связали, они что-то говорят о предохранителях ?? Я слышал, что если я сделаю что-то не так с предохранителями, я могу испортить крошечный?
Ace
5

По сути, 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 используют ~ 3,3 В. Но я не понимаю, как именно определяется сигнал USB? Разве это не ряд битов? Разве я не могу просто "эмулировать" эти биты с правильной синхронизацией в цикле (включение и выключение сигнала настройки)? У меня уже есть крошечное использование внутреннего osc для работы на частоте 8 МГц и серийной скорости 4800, поэтому время не должно быть проблемой в соответствии с некоторыми постами, которые я нашел ...
Ace
1
@ Ace 4800 бит / с - 4,8 кгц. Низкая скорость USB составляет 1,5 МГц. Есть кодировка, четность, дескрипторы usb и все. VUSB «эмулирует» данные USB, но это очень и очень сложно.
Прохожий
1
@ Как правило, вы пытаетесь сделать то же самое, что пытаться использовать азбуку Морзе на компьютере, нажав на монитор.
Прохожий
HAHA XD Причина, по которой я использую битрейт 4800, объясняется во второй ссылке в моем обновлении.
Ace
1

Слишком много вопросов, чтобы ответить в одном посте, но вот несколько быстрых моментов:

Некоторые микроконтроллеры содержат «конечную точку» USB и соответствующее оборудование, но сайт Atmel показывает, что ATTiny45 нет.

Поэтому вы не можете просто подключить порты микроконтроллера к USB-разъему, как это, потому что USB является сложной шиной как на электронном уровне, так и на уровне протокола.

Однако, как отмечается в комментариях ниже, вы ищете по правильным линиям с V-USB, я не использовал это, поэтому оставлю другие комментарии.

Чипы FTDI не слишком сложны для пайки, но правильная печатная плата с сопротивлением припоя сделает это проще.

Ранее я использовал что-то вроде этого кабеля FT232 :

FT232 USB-кабель
(источник: ftdichip.com )

Он имеет встроенную в разъем USB микросхему FTDI и выполняет преобразование всех уровней, одновременно обеспечивая подачу питания. Конец представляет собой простой 0,1-дюймовый шаг разъема, который можно подключить к контактному разъему.

Они доступны на eBay по доступным ценам.

Дэвид
источник
Вот, читай.
Игнасио Васкес-Абрамс
Это довольно интересно. Я отредактирую свой пост соответственно, возможно, кто-то еще может помочь со спецификой V-USB.
Дэвид
@ Дэвид - Да, VUSB в основном эмулирует USB. Ваш пост в целом верен, но именно этим способом можно подключить семейство ATTiny к USB.
Густаво Литовский
Спасибо за Ваш ответ. Я должен был подчеркнуть, что я планирую построить проект на одной плате, на которой есть головка USB A (как этот computerkabelversand.de/pictures/picturesbig/… ). так что в основном это выглядит как обычная флешка. без кабелей, только 3-контактный разъем на другом конце. Вот почему я назвал это "модульным". таким образом, я могу запрограммировать ATtiny индивидуально (он съемный) и подключить свои разные датчики / устройства к 3 или 4 (RX, который я пока не использую) левым контактам.
Ace
1
Видел это сегодня, которое может быть полезно
Дэвид