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


9

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

Я використовую Arduino Uno як ISP зі стандартним ескізом 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);
    }

    Зверніть увагу, що я не використовую Pin 3 (поки що), але мені потрібно визначити його для SoftwareSerial.

    Таким чином, за допомогою SoftwareSerial я зміг надсилати дані з ATtiny безпосередньо на штифт TX мого Arduino UNO, на якому для цього тесту було завантажено порожній ескіз. Я використовував послідовний монітор програмного забезпечення Arduino для читання даних про COM4 (у моєму випадку), оскільки мій ПК не розпізнав жоден пристрій (COM-порт), оскільки я намагався підключити запрограмовану ATtiny безпосередньо на USB-кабель.

    На жаль, у Serial Monitor з'явилися лише дивні символи unicode. Я думаю, це тому, що дані у шістнадцятковому форматі. Тож я помітив, що мені потрібно підключити USB / послідовний перетворювач між USB та ATtiny45 ... Я шукав такі перетворювачі, але я не хочу використовувати будь-які заздалегідь зроблені плати, оскільки я хочу всіх мої компоненти на одній дошці. Я думаю, що мікросхем FTDI був би занадто "сильним" для мого проекту, чи не так? (У нього занадто крихітні шпильки для пайки ...)

  2. Тоді V-USB був моїм другим підходом, оскільки йому не потрібен USB / послідовний перетворювач (як я знаю). Тому для використання V-USB мені потрібно використовувати AVRDUDE, як я вже згадував раніше.

    Я знайшов цей приємний приклад V-USB EasyLogger . Він містить схему конструкції та приклад прошивки. (C / C ++ / HEX)

    Єдине, що я хочу знати: це мені дійсно потрібно, щоб моя схема виглядала так, як показано в прикладі? -> введіть тут опис зображення

Що ще мені потрібно знати про цей USB-з'єднання? (Для чого мені потрібен USB / послідовний перетворювач? Чи можу я просто підключити +5 та VCC? Які компоненти мені абсолютно потрібні? Який сигнал мені потрібно надсилати через TX? Біти? Hex? Яке напруга для цього потрібно бути ? )

Дякую за всі ваші відповіді.


ОНОВЛЕННЯ

Ось додаткові посилання, які дійсно допомогли мені в деяких моментах. Але я все ще не зрозумів це повністю ...

перший -> 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- - це не окремі лінії передачі та прийому, а скоріше двостороння диференціальна пара .
Кріс Страттон

Вибачте за свій поганий ескіз. Я справді не хлопець-електрик, а програміст. "Малюнок" був лише візуалізацією моїх думок, які я мав на увазі, коли планував цей проект.
Туз

Відповіді:


5

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

Щоб все працювало, вам знадобиться V-USB бібліотека .

Дуже хороший приклад того, що все працює тут , що він використовує той же приклад від EasyLogger.

У цього ж автора є ще якісь приємні порад та проектів із USB та UC.

Приклад схеми з ATtiny:

схематичний

імітувати цю схему - Схематично створено за допомогою CircuitLab


Автор запитувача вже подивився на V-USB.
Ігнасіо Васкес-Абрамс

Дуже дякую. Я спробую це, як тільки зможу. Але спершу я хочу попросити вас про пропперний спосіб програмування ATtiny45 за допомогою V-USB lib .. Я не впевнений, що і як робити .. Я заглянув у AVRDUDE. поки що я знаю, що мені доведеться завантажити завантажувач ??? на крихітний, а також на прошивку (шістнадцятковий файл ??). І я думаю, що мені потрібно зібрати код C (наприклад, приклад easylogger) після того, як я змінив код для своєї програми. правильно?
Туз

а також ви могли б, будь ласка, "спростити" схему до мінімуму? Я плутаюся через напр. Світлодіода ... Мені справді не потрібні додаткові компоненти, такі як світлодіоди або датчики.
Туз

і що таке діоди D2 & D3? Діоди Шоткі?
Туз

а також, що щодо бітів запобіжника? і в самому кінці публікації, яку ви пов’язали, вони щось кажуть про запобіжники ?? Я чув, що якщо я зробив щось не так із запобіжниками, я можу зіпсувати крихітні?
Туз

5

В основному, USB - це протокол зв'язку високого рівня зі специфічними вимогами до руху сигналу на рівні сигналу, часу та закінчення. Він не такий простий, як серійний, він має диференційовані лінії передачі даних та кодування NRZI, необхідне опитування, рукостискання і т. Д. Саме тому вам потрібен USB / послідовний адаптер, або для чого потрібне апаратне забезпечення або програмне забезпечення USB.

У той час як USB використовує потужність 5 В, сигнальні лінії насправді від 3,3 до 3,6 В. Ось чому схема VUSB, яку ви показуєте, використовує стабілітрони на цих двох лініях. Tiny не може просто працювати на 3.3V, тому що він не може бути тактований на потрібних 16 МГц на 3.3V.

Решта деталей, R1-R3, D1, D2, і C1, C2 - мінімально необхідні деталі. Це не дуже просити багато функцій, які ви отримуєте. Дивіться на цій сторінці список усіх проектів, які використовують vusb.

Перемикач, R4 та LED1 - це частина конкретного прикладу вбудованого програмного забезпечення для реєстрації даних, і його можна уникнути, якщо він вам не потрібен / змінити програмне забезпечення.


Дякую за відповідь Я знав, що лінії передачі даних usb використовують ~ 3.3V. Але що я не розумію, як саме визначається сигнал USB? Хіба це не ряд бітів? Чи не можу я просто "імітувати" ці біти з правильним синхронізуванням у циклі (сигнал увімкнення та вимкнення)? У мене вже є крихітне використання внутрішнього осс для роботи на частоті 8 МГц і послідовний будрат 4800, тому тимчасові терміни не повинні бути проблемою згідно з деякими знайденими нами блогами ...
Ace

1
@Ace 4800 bps - 4,8 кГц. USB низька швидкість - 1,5 МГц. Є кодування, парність, дескриптори usb і все. VUSB "емулює" usb-дані, але це дуже дуже складно.
Перехожий

1
@ В основному ви намагаєтеся зробити еквівалент тому, що хтось намагається використовувати код морзе на комп'ютері, натискаючи на монітор.
Перехожий

HAHA XD Причина, чому я використовую будрат 4800, пояснюється у другому посиланні мого оновлення.
Туз

1

Занадто багато питань, щоб відповісти в одному дописі, але ось кілька швидких моментів:

Деякі мікроконтролери містять "кінцеву точку" USB та відповідне обладнання, але сайт Atmel показує, що ATTiny45 цього не робить.

Тому ви не можете просто підключити порти мікроконтролера до USB-роз'єму так, тому що USB є складною шиною як на електронному, так і на протокольному рівні.

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

Мікросхеми FTDI не надто важкі для пайки, але правильна плата з опором припою полегшить її.

Раніше я використовував щось подібне до цього кабелю FT232 :

FT232 USB-кабель
(джерело: ftdichip.com )

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

Вони доступні на eBay за доступними цінами.



Це досить цікаво. Я відповідно відредагую свій пост, можливо, хтось інший може допомогти у специфіці V-USB.
Девід

@David - Так, VUSB в основному емулює USB. Ваше повідомлення в цілому правильне, але конкретно сім'я ATTiny може бути підключена до USB за допомогою цього методу.
Густаво Литовський

Дякую за вашу відповідь. Мені довелося б зазначити, що я планую будувати проект на одній платі, яка має на собі голову USB A (як ця, наприклад, комп'ютеркаbelversand.de/ pictures/picturesbig/… ). так що в основному це схоже на звичайний USB-накопичувач. немає кабелів, лише 3-контактний гніздо на іншому кінці. саме тому я назвав це «модульним». Таким чином, я можу програмувати ATtiny індивідуально (це знімний), і мої різні датчики / пристрої підключені до 3 або 4 (RX, яким я ще не користуюся) залишили шпильки.
Туз

1
Сьогодні ми побачили це, що може вам стати в нагоді
Девід
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.