Firmware & Sirkuit Koneksi USB 2.0 langsung ATtiny45

9

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: masukkan deskripsi gambar di sini

Seperti yang Anda lihat, saya ingin koneksi USB "langsung". Sejauh ini saya tahu bahwa saya harus menggunakan solusi berbasis perangkat lunak untuk ini.

  1. 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 ...)

  2. 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? -> masukkan deskripsi gambar di sini

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

Kartu as
sumber
2
Ya, benar, setidaknya jika Anda tidak ingin melanggar spesifikasi batas listrik terlalu buruk . Harap perhatikan bahwa konektor "USB" Anda di diagram bagian atas salah label. D + / D- bukan jalur pengiriman dan penerimaan yang berbeda, melainkan pasangan diferensial dua arah .
Chris Stratton
Saya minta maaf atas sketsa buruk saya. Saya benar-benar bukan orang listrik, tetapi seorang programmer. "Gambar" hanyalah visualisasi dari pikiran saya yang ada dalam pikiran saya ketika saya merencanakan proyek ini.
Ace

Jawaban:

5

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:

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Butzke
sumber
Penanya sudah melihat V-USB.
Ignacio Vazquez-Abrams
Terima kasih banyak. Saya akan mencoba ini secepat mungkin. Tapi pertama-tama saya ingin menanyakan cara yang tepat untuk memprogram ATtiny45 dengan V-USB lib .. Saya tidak yakin apa dan bagaimana melakukannya .. Saya sudah melihat ke dalam AVRDUDE. sejauh ini saya tahu bahwa saya harus memuat bootloader ??? ke kecil serta firmware (file hex ??). Dan saya pikir saya perlu mengkompilasi kode C (misalnya contoh easylogger) setelah saya mengubah kode untuk aplikasi saya. Baik ?
Ace
dan juga bisakah Anda tolong "sederhanakan" sirkuit ke minimum? Saya bingung karena misalnya LED ... saya benar-benar tidak memerlukan komponen tambahan seperti LED atau Sensor saat ini.
Ace
dan apa jenis diode D2 & D3? Dioda Schottky?
Ace
dan juga, bagaimana dengan bit Fuse? dan bagian paling akhir dari pos yang Anda tautkan, mereka mengatakan sesuatu tentang sekering ?? Saya mendengar bahwa jika saya membuat kesalahan dengan sekering, saya dapat merusak yang kecil?
Ace
5

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.

Pejalan kaki
sumber
Terima kasih atas jawaban itu. Saya tahu bahwa jalur data penggunaan usb ~ 3.3V. Tapi yang tidak saya mengerti adalah, bagaimana tepatnya sinyal USB didefinisikan? Bukankah itu deretan bit? Tidak bisakah saya hanya "meniru" bit-bit itu dengan timing yang tepat dalam satu loop (sinyal tuning on & off)? Saya sudah memiliki yang kecil menggunakan osc internal untuk berjalan pada 8MHz dan boudrate serial 4800, jadi waktunya tidak menjadi masalah menurut beberapa blogposts yang saya temukan ...
Ace
1
@Ace 4800 bps adalah 4,8 khz. USB kecepatan rendah adalah 1,5 MHZ Dan ada encoding, parity, usb deskriptor dan semuanya. VUSB memang "meniru" data usb, tetapi sangat sangat kompleks.
Pejalan kaki
1
Pada dasarnya, Anda mencoba melakukan yang setara dengan seseorang yang mencoba menggunakan kode morse pada komputer, dengan mengetuk monitor.
Pejalan kaki
HAHA XD Alasan mengapa saya menggunakan boudrate 4800 dijelaskan pada tautan kedua di pembaruan saya.
Ace
1

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 :

Kabel USB FT232
(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.

David
sumber
Di sini, baca.
Ignacio Vazquez-Abrams
Itu cukup menarik. Saya akan mengedit posting saya sesuai, mungkin orang lain dapat membantu dengan spesifikasi V-USB.
David
@ David - Ya, VUSB pada dasarnya meniru USB. Posting Anda benar secara umum tetapi secara khusus keluarga ATTiny dapat terhubung ke USB melalui metode ini.
Gustavo Litovsky
Terima kasih atas jawaban anda. Saya seharusnya mengatakan bahwa saya berencana untuk membangun proyek di atas satu papan yang memiliki kepala USB A (seperti ini computerkabelversand.de/pictures/picturesbig/… ) di atasnya. jadi pada dasarnya sepertinya USB stick biasa. tidak ada kabel, hanya jack 3pin di ujung lainnya. inilah mengapa saya menyebutnya "modular". dengan cara ini saya dapat memprogram ATtiny secara individual (ini dilepas) dan memiliki sensor / perangkat saya yang berbeda terhubung ke 3 atau 4 (RX yang saya belum gunakan) meninggalkan pin.
Ace
1
Lihat ini hari ini yang mungkin berguna bagi Anda: rayshobby.net/?p=7363
David