Chương trình cơ sở và mạch kết nối USB 2.0 trực tiếp ATtiny45


9

Tôi muốn tạo một thiết bị USB mô-đun của riêng mình bằng ATtiny45 chỉ đơn giản là gửi dữ liệu tới PC qua USB. Tôi không đọc dữ liệu, vì vậy một kết nối (ATtiny -> PC) sẽ hoàn toàn ổn.

Tôi đang sử dụng Arduino Uno với tư cách là ISP với bản phác thảo ArduinoISP tiêu chuẩn được tải từ bên trong Phần mềm Arduino. Tôi đang nghĩ đến việc sử dụng AVRDUDE để lập trình ATtiny45 với Arduino là ISP vì tôi muốn có thể sử dụng mã C được biên dịch sang HEX vì nó tiên tiến hơn Langue Lập trình Arduino.

Suy nghĩ cơ bản của tôi về mạch: nhập mô tả hình ảnh ở đây

Như bạn thấy, tôi muốn có kết nối USB "trực tiếp". Cho đến nay tôi biết rằng tôi phải sử dụng một giải pháp dựa trên phần mềm cho việc này.

  1. Tôi đã quản lý SoftwareSerial để làm việc với ATtiny45 của mình. Để làm điều này, tôi đã sử dụng Phần mềm Arduino để lập trình ATtiny45 với mã sau:

    #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);
    }

    Xin lưu ý rằng tôi không sử dụng Pin 3 (chưa) nhưng tôi cần xác định nó cho SoftwareSerial.

    Bằng cách này, bằng cách sử dụng SoftwareSerial, tôi có thể gửi dữ liệu từ ATtiny trực tiếp vào chân TX của Arduino UNO của tôi có một bản phác thảo trống được tải lên cho bài kiểm tra này. Tôi đang sử dụng Trình giám sát nối tiếp của Phần mềm Arduino để đọc dữ liệu trên COM4 (trong trường hợp của tôi) vì PC của tôi không nhận ra bất kỳ thiết bị nào (cổng COM) khi tôi cố gắng nối trực tiếp ATtiny được lập trình vào cáp USB.

    Thật không may, tôi chỉ có các ký tự unicode lạ trong Trình giám sát nối tiếp. Tôi nghĩ đó là vì dữ liệu ở định dạng hex. Vì vậy, tôi nhận thấy rằng tôi cần kết nối Bộ chuyển đổi USB / Nối tiếp với USB và ATtiny45 ... Tôi đã tìm kiếm các bộ chuyển đổi như vậy, nhưng tôi không muốn sử dụng bất kỳ bảng được tạo sẵn nào, vì tôi muốn tất cả các thành phần của tôi trên một bảng duy nhất. Tôi nghĩ rằng một con chip FTDI sẽ quá "nhiều" cho dự án của tôi, phải không? (Nó có các chân quá nhỏ để hàn ...)

  2. V-USB sau đó là cách tiếp cận thứ hai của tôi, vì nó không cần bộ chuyển đổi USB / Nối tiếp (như tôi biết). Vì vậy, để sử dụng V-USB, tôi sẽ cần sử dụng AVRDUDE như tôi đã đề cập trước đó.

    Tôi đã tìm thấy ví dụ tuyệt vời này V-USB EasyLogger . Nó chứa một thiết kế mạch và phần mềm ví dụ. (C / C ++ / HEX)

    Điều duy nhất tôi muốn biết là: Tôi có thực sự cần phải làm cho mạch của mình trông giống như trong ví dụ không? -> nhập mô tả hình ảnh ở đây

Tôi cần biết gì nữa về loại kết nối USB này? (Tại sao tôi cần bộ chuyển đổi USB / Nối tiếp? Tôi có thể kết nối +5 & VCC không? Tôi hoàn toàn cần những thành phần nào? Tôi cần loại tín hiệu nào để gửi qua TX? Bit? Hex? Điện áp nào cần được ? )

Cảm ơn tất cả các câu trả lời của bạn.


CẬP NHẬT

Dưới đây là một số liên kết quảng cáo thực sự giúp tôi trong một số điểm. Nhưng tôi vẫn chưa hiểu hết ...

cái đầu tiên -> http://www.ernstc.dk/arduino/tinycom.html

và thứ hai -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino (cuộn xuống phần "Đầu ra nối tiếp")


2
Có, bạn làm, ít nhất là nếu bạn không muốn vi phạm các thông số kỹ thuật giới hạn điện quá tệ . Xin lưu ý rằng trình kết nối "USB" trong sơ đồ phía trên của bạn bị dán nhãn sai. D + / D- không phải là các đường truyền và nhận riêng biệt, mà là một cặp vi sai hai chiều .
Chris Stratton

Tôi xin lỗi vì bản phác thảo xấu của tôi. Tôi thực sự không phải là người điện, mà là một lập trình viên. "Bản vẽ" chỉ là một hình ảnh trực quan của tôi mà tôi có trong đầu khi tôi đang lên kế hoạch cho dự án này.
Ace

Câu trả lời:


5

Bạn có thể giao tiếp trực tiếp ATtiny45 với USB mà không cần bộ chuyển đổi FTDI.

Để làm mọi thứ hoạt động, bạn sẽ cần thư viện V-USB .

Một ví dụ rất hay về mọi thứ đang hoạt động ở đây , đó là sử dụng cùng một ví dụ từ EasyLogger.

Cùng tác giả có một số mẹo và dự án hay khác với USB và uC.

Một mạch mẫu với ATtiny:

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab


Người hỏi đã xem V-USB.
Ignacio Vazquez-Abrams

Cảm ơn bạn rất nhiều. Tôi sẽ thử nó ngay khi tôi có thể. Nhưng trước tiên tôi muốn hỏi bạn cách propper để lập trình ATtiny45 với lib V-USB .. Tôi không chắc chắn điều gì và làm như thế nào .. Tôi đã xem xét về AVRDUDE. Cho đến nay tôi biết rằng tôi phải tải một bộ tải khởi động ??? đến phần nhỏ cũng như phần sụn (tệp hex ??). Và tôi nghĩ rằng tôi cần phải biên dịch mã C (ví dụ: ví dụ easylogger) sau khi tôi thay đổi mã cho ứng dụng của mình. đúng ?
Ace

và bạn cũng có thể vui lòng "đơn giản hóa" mạch đến mức tối thiểu? Tôi cảm thấy bối rối vì ví dụ như đèn LED ... tôi thực sự không cần bất kỳ thành phần quảng cáo nào như đèn LED hoặc cảm biến tại thời điểm này.
Ace

và loại điốt nào là D2 & D3? Điốt Schottky?
Ace

và còn nữa, những gì về các bit Fuse? và cuối bài bạn đã liên kết, họ nói gì về cầu chì ?? Tôi nghe nói rằng nếu tôi làm gì đó sai với cầu chì, tôi có thể làm hỏng cái nhỏ không?
Ace

5

Về cơ bản, USB là một giao thức truyền thông cấp cao với các yêu cầu cụ thể đối với việc lái xe ở cấp tín hiệu, thời gian và kết thúc. Nó không đơn giản như nối tiếp, nó có các dòng dữ liệu khác biệt và mã hóa NRZI, bỏ phiếu bắt buộc, bắt tay, v.v ... Đó là lý do tại sao bạn cần bộ chuyển đổi USB / Nối tiếp hoặc tại sao bạn cần triển khai phần cứng hoặc phần mềm USB.

Trong khi USB sử dụng nguồn 5V, các đường tín hiệu thực tế là 3,3V đến 3,6V. Đây là lý do tại sao mạch VUSB bạn hiển thị sử dụng điốt zener trên hai dòng đó. Tiny không thể đơn giản chạy ở mức 3,3V vì không thể chạy ở mức 16 MHz cần thiết ở mức 3,3V.

Phần còn lại của các bộ phận, R1-R3, D1, D2 và C1, C2 là các bộ phận bắt buộc tối thiểu. Đó không thực sự là yêu cầu rất nhiều cho các tính năng bạn nhận được. Xem trang này để biết danh sách tất cả các dự án sử dụng vusb.

Công tắc, R4 và LED1 đều là một phần của ví dụ phần mềm ghi nhật ký dữ liệu cụ thể và có thể tránh được nếu bạn không cần nó / thay đổi phần sụn.


Cảm ơn bạn cho câu trả lời. Tôi biết rằng các dòng dữ liệu của usb sử dụng ~ 3,3V. Nhưng điều tôi không hiểu là, chính xác tín hiệu USB được định nghĩa như thế nào? Đó không phải là một hàng bit? Tôi không thể "mô phỏng" các bit đó với thời gian phù hợp trong một vòng lặp (bật và tắt tín hiệu điều chỉnh)? Tôi đã có một chút sử dụng osc nội bộ để chạy ở tốc độ 8 MHz và boudrate nối tiếp 4800, vì vậy thời gian không phải là vấn đề theo một số blogpost tôi đã tìm thấy ...
Ace

1
@Ace 4800 bps là 4,8 khz. USB tốc độ thấp là 1,5 MHZ Và có mã hóa, chẵn lẻ, mô tả usb và mọi thứ. VUSB không "mô phỏng" dữ liệu usb, nhưng nó rất phức tạp.
Người qua đường

1
@Ace về cơ bản, bạn đang cố gắng làm tương đương với ai đó đang cố sử dụng mã morse trên máy tính, bằng cách nhấn vào màn hình.
Người qua đường

HAHA XD Lý do tại sao tôi sử dụng boudrate 4800 được giải thích trong liên kết thứ hai trong bản cập nhật của tôi.
Ace

1

Có quá nhiều câu hỏi để trả lời trong một bài, nhưng đây là một vài điểm nhanh:

Một số bộ vi điều khiển chứa "điểm cuối" USB và phần cứng có liên quan, nhưng trang Atmel cho thấy ATTiny45 không có.

Do đó, bạn không thể đơn giản kết nối các cổng vi điều khiển với đầu nối USB như vậy, bởi vì USB là một bus phức tạp ở cả cấp độ điện tử và giao thức.

Tuy nhiên như đã lưu ý trong các bình luận bên dưới mà bạn đang tìm kiếm dọc theo dòng bên phải bằng V-USB, tôi chưa sử dụng điều này nên sẽ để người khác bình luận.

Các chip FTDI không quá khó để hàn, nhưng một PCB thích hợp với điện trở hàn sẽ làm cho nó dễ dàng hơn.

Trước đây tôi đã sử dụng một cái gì đó giống như cáp FT232 này :

Cáp USB FT 232
(nguồn: ftdichip.com )

Nó có chip FTDI được nhúng trong đầu nối USB và xử lý tất cả các bản dịch cấp độ đồng thời cung cấp năng lượng. Kết thúc là một đầu nối cao độ 0,1 "đơn giản mà bạn có thể kết nối với tiêu đề pin.

Chúng có sẵn trên eBay với giá cả hợp lý.



Điều đó khá thú vị. Tôi sẽ chỉnh sửa bài đăng của mình cho phù hợp, có lẽ ai đó khác có thể trợ giúp với thông tin cụ thể về V-USB.
David

@David - Có, về cơ bản VUSB mô phỏng USB. Bài viết của bạn nói chung là chính xác nhưng cụ thể là gia đình ATTiny có thể được kết nối với USB thông qua phương pháp này.
Gustavo Litovsky

Cảm ơn câu trả lời của bạn. Tôi nên nói rằng tôi đang lên kế hoạch xây dựng dự án trên một bảng duy nhất có đầu USB A (giống như cái máy tính này có nhãn máy tính.and / hình ảnh / hình ảnh trên màn hình). về cơ bản, nó trông giống như một thanh USB thông thường. không có dây cáp, chỉ có giắc cắm 3 chân ở đầu kia. đây là lý do tại sao tôi gọi nó là "mô-đun". bằng cách này, tôi có thể lập trình ATtiny riêng (có thể tháo rời) và có các cảm biến / thiết bị khác nhau được kết nối với 3 hoặc 4 (RX mà tôi chưa sử dụng) chân trái.
Ace

1
Hãy xem cái này hôm nay có thể có ích cho bạn: rayhulk.net/?p=7363
David
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.