Saya ingin membuat perangkat USB modular saya sendiri menggunakan ATtiny45 yang hanya mengirim data ke PC melalui USB. Saya tidak membaca data, jadi koneksi satu arah (ATtiny -> PC) akan baik-baik saja.
Saya menggunakan Arduino Uno sebagai ISP dengan sketsa ArduinoISP standar yang dimuat dari dalam Perangkat Lunak Arduino. Saya sedang berpikir untuk menggunakan AVRDUDE untuk memprogram ATtiny45 dengan Arduino sebagai ISP karena saya ingin dapat menggunakan kode C yang dikompilasi ke HEX karena lebih maju daripada Bahasa Pemrograman Arduino.
Pikiran dasar saya tentang sirkuit:
Seperti yang Anda lihat, saya ingin koneksi USB "langsung". Sejauh ini saya tahu bahwa saya harus menggunakan solusi berbasis perangkat lunak untuk ini.
Saya telah mengelola SoftwareSerial untuk bekerja dengan ATtiny45 saya. Untuk ini saya telah menggunakan Perangkat Lunak Arduino untuk Memprogram ATtiny45 dengan kode berikut:
#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); }
Harap dicatat bahwa saya tidak menggunakan Pin 3 (belum) tetapi saya harus mendefinisikannya untuk SoftwareSerial.
Dengan cara ini, menggunakan SoftwareSerial, saya dapat mengirim data dari ATtiny langsung ke pin TX dari Arduino UNO saya yang memiliki sketsa kosong dimuat ke dalamnya untuk pengujian ini. Saya menggunakan Monitor Seri Perangkat Lunak Arduino untuk membaca data pada COM4 (dalam kasus saya) karena PC saya tidak mengenali perangkat apa pun (port COM) karena saya telah mencoba untuk menghubungkan ATtiny yang diprogram secara langsung ke kabel USB.
Sayangnya saya hanya mendapatkan karakter unik unicode di Serial Monitor. Saya pikir itu karena data dalam format hex atau lebih. Jadi saya perhatikan bahwa saya harus menghubungkan USB / Serial Converter antara USB dan ATtiny45 ... Saya sudah mencari konverter seperti itu, tetapi saya tidak ingin menggunakan papan pre-made, karena saya ingin semua komponen saya di satu papan. Saya pikir chip FTDI akan terlalu "banyak" untuk proyek saya, bukan? (Memiliki pin terlalu kecil untuk disolder ...)
V-USB adalah pendekatan kedua saya, karena tidak memerlukan konverter USB / Serial (seperti yang saya tahu). Jadi untuk menggunakan V-USB saya perlu menggunakan AVRDUDE seperti yang saya sebutkan sebelumnya.
Saya telah menemukan contoh yang bagus ini V-USB EasyLogger . Ini berisi desain sirkuit dan contoh firmware. (C / C ++ / HEX)
Satu-satunya hal yang ingin saya ketahui adalah: Apakah saya benar-benar perlu membuat rangkaian saya terlihat seperti yang ditunjukkan dalam contoh? ->
Apa lagi yang perlu saya ketahui tentang koneksi USB semacam ini? (Mengapa saya memerlukan konverter USB / Serial? Dapatkah saya menghubungkan +5 & VCC? Komponen apa yang benar-benar saya butuhkan? Sinyal apa yang harus saya kirim melalui TX? Bit? Hex? Tegangan apa yang dibutuhkan? menjadi ? )
Terima kasih atas semua jawaban Anda.
MEMPERBARUI
Berikut adalah beberapa tautan tambahan yang benar-benar membantu saya dalam beberapa hal. Tapi aku masih belum memahaminya sepenuhnya ...
yang pertama -> http://www.ernstc.dk/arduino/tinycom.html
dan yang kedua -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino (gulir ke bawah ke bagian "Serial Output")
sumber
Jawaban:
Anda dapat mengomunikasikan ATtiny45 ke USB secara langsung, tanpa konverter FTDI.
Agar semuanya berfungsi, Anda membutuhkan pustaka V-USB .
Contoh yang sangat baik dari semua yang berfungsi ada di sini , yang menggunakan contoh yang sama dari EasyLogger.
Penulis yang sama memiliki beberapa tips dan proyek yang bagus dengan USB dan UC.
Sirkuit sampel dengan ATtiny:
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
sumber
Pada dasarnya, USB adalah protokol komunikasi tingkat tinggi dengan persyaratan khusus untuk mengemudi, mengatur waktu, dan mengakhiri level sinyal. Ini tidak sesederhana serial, ia memiliki jalur data diferensial dan pengkodean NRZI, polling yang diperlukan, handshaking, dll. Itulah sebabnya Anda memerlukan adaptor USB / Serial, atau mengapa Anda memerlukan perangkat keras atau implementasi perangkat lunak USB.
Sementara USB menggunakan daya 5V, jalur sinyal sebenarnya 3.3V ke 3.6V. Inilah sebabnya mengapa rangkaian VUSB yang Anda tunjukkan menggunakan dioda zener pada dua saluran tersebut. Tiny tidak bisa hanya berjalan di 3.3V karena tidak bisa clock di 16MHz yang dibutuhkan di 3.3V.
Sisa bagian, R1-R3, D1, D2, dan C1, C2 adalah bagian minimum yang diperlukan. Itu tidak benar-benar meminta banyak fitur yang Anda dapatkan. Lihat halaman ini untuk daftar semua proyek yang menggunakan vusb.
Switch, R4, dan LED1 adalah bagian dari contoh firmware pencatatan data spesifik, dan dapat dihindari jika Anda tidak memerlukannya / ubah firmware.
sumber
Terlalu banyak pertanyaan untuk dijawab dalam satu posting, tetapi berikut adalah beberapa poin cepat:
Beberapa mikrokontroler berisi "titik akhir" USB dan perangkat keras yang relevan, tetapi situs Atmel menunjukkan bahwa ATTiny45 tidak.
Oleh karena itu Anda tidak bisa begitu saja menghubungkan port mikrokontroler ke konektor USB seperti itu, karena USB adalah bus yang rumit di tingkat elektronik dan protokol.
Namun seperti yang tercantum dalam komentar di bawah ini Anda mencari di sepanjang garis yang benar dengan V-USB, saya belum menggunakannya sehingga akan meninggalkan orang lain untuk berkomentar.
Chip FTDI tidak terlalu sulit untuk disolder, tetapi PCB yang tepat dengan ketahanan solder akan membuatnya lebih mudah.
Sebelumnya saya telah menggunakan sesuatu seperti kabel FT232 ini :
(sumber: ftdichip.com )
Ini memiliki chip FTDI tertanam di konektor USB dan menangani semua terjemahan tingkat sementara juga memasok daya. Akhirnya adalah konektor pitch 0,1 "sederhana yang dapat Anda sambungkan ke header pin.
Mereka tersedia di eBay untuk harga yang wajar.
sumber