Chcę stworzyć własne modułowe urządzenie USB za pomocą ATtiny45, który po prostu wysyła dane do komputera przez USB. Nie czytam danych, więc połączenie jednokierunkowe (ATtiny -> PC) byłoby całkowicie w porządku.
Używam Arduino Uno jako ISP ze standardowym szkicem ArduinoISP załadowanym z oprogramowania Arduino. Zastanawiam się nad użyciem AVRDUDE do programowania ATtiny45 z Arduino jako ISP, ponieważ chcę móc używać kodu C skompilowanego do HEX, ponieważ jest on bardziej zaawansowany niż Arduino Programming Langue.
Moje podstawowe myśli o obwodzie:
Jak widać, chcę „bezpośredniego” połączenia USB. Jak dotąd wiem, że muszę do tego użyć rozwiązania programowego.
Udało mi się SoftwareSerial współpracować z moim ATtiny45. W tym celu użyłem oprogramowania Arduino do zaprogramowania ATtiny45 następującym kodem:
#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); }
Pamiętaj, że nie używam Pin 3 (jeszcze), ale muszę to zdefiniować dla SoftwareSerial.
W ten sposób, korzystając z SoftwareSerial, byłem w stanie wysłać dane z ATtiny bezpośrednio do pinu TX mojego Arduino UNO, który został załadowany do niego pusty szkic na potrzeby tego testu. Używałem Serial Monitor oprogramowania Arduino do odczytu danych na COM4 (w moim przypadku), ponieważ mój komputer nie rozpoznał żadnego urządzenia (portu COM), ponieważ próbowałem podłączyć zaprogramowane ATtiny bezpośrednio do kabla USB.
Niestety mam tylko dziwne znaki Unicode w Serial Monitor. Myślę, że dzieje się tak, ponieważ dane są w formacie szesnastkowym. Zauważyłem więc, że muszę podłączyć konwerter USB / szeregowy między USB a ATtiny45 ... Szukałem takich konwerterów, ale nie chcę używać żadnych gotowych płyt, ponieważ chcę wszystkich moje komponenty na jednej płycie. Myślę, że układ FTDI byłby o wiele za duży dla mojego projektu, prawda? (Ma zbyt małe szpilki, by lutować ...)
V-USB było wtedy moim drugim podejściem, ponieważ nie wymaga konwertera USB / szeregowego (jak wiem). Aby użyć V-USB, musiałbym użyć AVRDUDE, jak wspomniałem wcześniej.
Znalazłem ten ładny przykład V-USB EasyLogger . Zawiera projekt obwodu i przykładowe oprogramowanie układowe. (C / C ++ / HEX)
Jedyne, co chcę wiedzieć, to: czy naprawdę muszę sprawić, aby mój obwód wyglądał tak, jak pokazano w przykładzie? ->
Co jeszcze muszę wiedzieć o tego rodzaju połączeniu USB? (Dlaczego potrzebuję konwertera USB / szeregowego? Czy mogę po prostu podłączyć +5 i VCC? Jakie elementy są absolutnie potrzebne? Jaki rodzaj sygnału muszę wysłać przez TX? Bity? Szesnastkowy? Jakiego napięcia potrzebuje być ? )
Dziękuję za wszystkie odpowiedzi.
AKTUALIZACJA
Oto kilka dodatkowych linków, które naprawdę pomogły mi w niektórych punktach. Ale nadal nie rozumiałem tego w pełni ...
pierwszy -> http://www.ernstc.dk/arduino/tinycom.html
a drugi -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino (przewiń w dół do sekcji „Wyjście szeregowe”)
Odpowiedzi:
Możesz komunikować się ATtiny45 bezpośrednio z USB, bez konwertera FTDI.
Aby wszystko działało, potrzebujesz biblioteki V-USB .
Bardzo dobrym przykładem wszystkiego pracy jest tutaj , że wykorzystuje ona ten sam przykład z EasyLogger.
Ten sam autor ma kilka innych ciekawych wskazówek i projektów z USB i USB.
Przykładowy obwód z ATtiny:
symulacja tego obwodu - Schemat utworzony przy użyciu CircuitLab
źródło
Zasadniczo USB jest protokołem komunikacyjnym wysokiego poziomu, który ma określone wymagania dotyczące sterowania, synchronizacji i terminacji na poziomie linii sygnałowej. Nie jest tak prosty jak szeregowy, ma różnicowe linie danych i kodowanie NRZI, wymagane odpytywanie, uzgadnianie itp. Dlatego właśnie potrzebujesz adaptera USB / szeregowego, lub potrzebujesz implementacji sprzętu lub oprogramowania USB.
Podczas gdy USB wykorzystuje zasilanie 5 V, linie sygnałowe są w rzeczywistości od 3,3 V do 3,6 V. Właśnie dlatego pokazany obwód VUSB wykorzystuje diody Zenera na tych dwóch liniach. Mały nie może po prostu działać przy 3,3 V, ponieważ nie może być taktowany przy wymaganym 16 MHz przy 3,3 V.
Reszta części, R1-R3, D1, D2, i C1, C2 są absolutnie minimalnymi wymaganymi częściami. To tak naprawdę nie wymaga dużo funkcji. Zobacz tę stronę, aby uzyskać listę wszystkich projektów korzystających z vusb.
Przełącznik, R4 i LED1 są częścią konkretnego przykładu oprogramowania do rejestrowania danych i można ich uniknąć, jeśli nie jest potrzebny / nie zmienia oprogramowania.
źródło
Zbyt wiele pytań, aby odpowiedzieć w jednym poście, ale oto kilka krótkich punktów:
Niektóre mikrokontrolery zawierają „punkt końcowy” USB i odpowiedni sprzęt, ale strona Atmel pokazuje, że ATTiny45 nie.
Dlatego nie można po prostu podłączyć portów mikrokontrolera do takiego złącza USB, ponieważ USB jest skomplikowaną magistralą zarówno na poziomie elektronicznym, jak i protokołu.
Jednak, jak zauważono w komentarzach poniżej, wyszukujesz właściwe V-USB, nie użyłem tego, więc zostawię komentarz.
Chipy FTDI nie są zbyt trudne do lutowania, ale odpowiednia płytka z opornością lutowniczą ułatwi to.
Wcześniej używałem czegoś takiego jak ten kabel FT232 :
(źródło: ftdichip.com )
Ma wbudowany układ FTDI w złączu USB i obsługuje translację wszystkich poziomów, a także zapewnia zasilanie. Koniec to proste złącze o skoku 0,1 ", które można podłączyć do listwy kołkowej.
Są dostępne w serwisie eBay w rozsądnych cenach.
źródło