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”)