ATtiny45 direct USB 2.0 Connection Ürün Yazılımı ve Devresi


9

PC'ye USB üzerinden veri gönderen bir ATtiny45 kullanarak kendi modüler USB cihazımı yapmak istiyorum . Veri okumuyorum, bu yüzden tek yönlü (ATtiny -> PC) bağlantı tamamen iyi olurdu.

Arduino Yazılımı içinden standart ArduinoISP taslağı ile ISP olarak Arduino Uno kullanıyorum . Ben Arduino Programlama Langue daha gelişmiş olduğundan HEX için derlenmiş C kodu kullanabilmek istiyorum çünkü ATDiny45 ISP olarak ATtiny45 programlamak için AVRDUDE kullanmayı düşünüyorum.

Devrenin temel düşünceleri: resim açıklamasını buraya girin

Gördüğünüz gibi, "doğrudan" bir USB bağlantısı istiyorum. Şimdiye kadar bunun için yazılım tabanlı bir çözüm kullanmam gerektiğini biliyorum.

  1. Ben başardınız SoftwareSerial benim ATtiny45 ile çalışmak için. Bunun için aşağıdaki kodla ATtiny45'i Programlamak için Arduino Yazılımını kullandım:

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

    Lütfen Pin 3'ü (henüz) kullanmadığımı ancak SoftwareSerial için tanımlamam gerektiğini unutmayın.

    Bu şekilde, SoftwareSerial kullanarak, ATtiny'den doğrudan bu test için üzerine boş bir çizim yüklenen Arduino UNO'nun TX pinine veri gönderebildim. Bilgisayarım programlanmış ATtiny'yi doğrudan bir USB kablosuna bağlamaya çalıştığım için COM4'teki verileri (benim durumumda) okumak için Arduino Yazılımının Seri Monitörünü kullanıyordum.

    Ne yazık ki Seri Monitörde garip unicode karakterler var. Bence veri onaltılık biçimde ya da öylesine. Bu yüzden USB ve ATtiny45 arasında bir USB / Seri Dönüştürücü bağlamanız gerektiğini fark ettim ... Bu tür dönüştürücüler aradım, ancak önceden istediğim panoları kullanmak istemiyorum, çünkü hepsini istiyorum bileşenlerim tek bir kartta. Bence bir FTDI yongası projem için çok "çok" olurdu, değil mi? (Lehimlemek için çok küçük pimler var ...)

  2. V-USB benim ikinci yaklaşımımdı, çünkü bir USB / Seri dönüştürücüye ihtiyaç duymadığı için (bildiğim gibi). V-USB kullanmak için AVRDUDE kullanmalıyım.

    Bu güzel örneği V-USB EasyLogger buldum . Bir devre tasarımı ve örnek ürün yazılımı içerir. (C / C ++ / HEX)

    Bilmek istediğim tek şey: Devremi örnekte gösterildiği gibi göstermem gerekiyor mu? -> resim açıklamasını buraya girin

Bu tür USB bağlantısı hakkında başka nelere ihtiyacım var? (Neden bir USB / Seri dönüştürücüye ihtiyacım var? Sadece +5 ve VCC'yi bağlayabilir miyim? Kesinlikle hangi bileşenlere ihtiyacım var? TX ile ne tür bir sinyale ihtiyacım var? Bit? Hex? Hangi voltaj gerekiyor olmak ? )

Tüm cevaplarınız için teşekkürler.


GÜNCELLEME

İşte bazı noktalarda bana gerçekten yardımcı olan bazı ek bağlantılar. Ama hala tam olarak anlamadım ...

ilki -> http://www.ernstc.dk/arduino/tinycom.html

ve ikincisi -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino ("Seri Çıktı" bölümüne gidin)


2
Evet, en azından elektriksel sınır özelliklerini çok fazla ihlal etmek istemiyorsanız yaparsınız . Üst şemanızdaki "USB" konektörünüzün yanlış etiketlendiğini lütfen unutmayın. D + / D- ayrı gönderme ve alma hatları değil, çift ​​yönlü diferansiyel çiftidir .
Chris Stratton

Kötü çizimim için üzgünüm. Ben gerçekten elektrikli adam değilim, programcıyım. "Çizim" sadece bu projeyi planlarken aklıma gelen düşüncelerimin bir görselleştirmesiydi.
Ace

Yanıtlar:


5

ATtiny45'i bir FTDI dönüştürücü olmadan doğrudan USB'ye iletebilirsiniz.

Her şeyin çalışması için V-USB kütüphanesine ihtiyacınız olacak .

Her şey çalışma çok iyi bir örnektir burada o EasyLogger örneğin aynısını kullanır.

Aynı yazarın USB ve UC ile başka güzel ipuçları ve projeleri var.

ATtiny ile örnek devre:

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik


Asker zaten V-USB'ye baktı.
Ignacio Vazquez-Abrams

Çok teşekkür ederim. Bunu mümkün olan en kısa sürede deneyeceğim. Ama önce ben ATtiny45 V-USB lib ile programlamak için propper yolu sormak istiyorum .. Ne ve nasıl yapacağından emin değilim .. AVRDUDE içine baktım. şimdiye kadar bir bootloader yüklemek zorunda olduğunu biliyorum ??? yanı sıra firmware küçük (hex dosya ??). Ve ben benim uygulama için kod değiştirdikten sonra (örneğin easylogger örnek) C kodu derlemek gerektiğini düşünüyorum. sağ ?
Ace

ve ayrıca devreyi çıplak minimum seviyeye "basitleştirebilir misiniz?" Örneğin LED yüzünden kafan karıştı ... Şu anda LED'ler veya Sensörler gibi herhangi bir ek bileşene gerçekten ihtiyacım yok.
Ace

ve ne tür diyotlar D2 ve D3? Schottky diyotları?
Ace

ve ayrıca, Sigorta bitleri hakkında ne düşünüyorsunuz? ve bağladığınız yazının sonunda, sigortalar hakkında bir şeyler söylüyorlar ?? Sigortalarla ilgili bir sorun çıkarırsam minik çocuğu mahvedebilir miyim?
Ace

5

Temel olarak, USB sinyal hattı seviyesi sürüş, zamanlama ve sonlandırma için özel gereksinimleri olan yüksek seviyeli bir iletişim protokolüdür. Seri kadar basit değil, diferansiyel veri hatları ve NRZI kodlaması, gerekli yoklama, el sıkışma, vb.

USB 5V güç kullanırken, sinyal hatları aslında 3.3V ila 3.6V arasındadır. Gösterdiğiniz VUSB devresinin bu iki satırda zener diyotları kullanmasının nedeni budur. Tiny sadece 3.3V'de çalışamaz çünkü 3.3V'de gereken 16MHz'de saatlenemez.

Parçaların geri kalanı, R1-R3, D1, D2 ve C1, C2 minimum gereken minimum parçalardır. Bu gerçekten olsun özellikleri için çok sormak değil. Vusb kullanan tüm projelerin listesi için bu sayfaya bakınız.

Anahtar, R4 ve LED1, belirli veri günlüğü ürün yazılımı örneğinin bir parçasıdır ve ihtiyacınız yoksa / ürün yazılımını değiştirirseniz önlenebilir.


Bu cevap için teşekkürler. Usb veri hatlarının ~ 3.3V kullandığını biliyordum. Ama anlamadığım şey, USB sinyalinin tam olarak nasıl tanımlandığıdır? Bunlar bir sıra bit değil mi? Bu bitleri bir döngüde doğru zamanlama ile "taklit edemez miyim" (ayar sinyali açık ve kapalı)? Ben zaten 8MHz ve 4800 bir seri boudrate çalıştırmak için dahili osc kullanmak var, bu yüzden zamanlama buldum bazı blogposts göre sorun olmamalı ...
Ace

1
@Ace 4800 bps 4.8 khz'dir. USB düşük hız 1.5 MHZ ve kodlama, eşlik, usb tanımlayıcıları ve her şey var. VUSB, usb verilerini "taklit eder", ancak çok karmaşıktır.
Passerby

1
@ Temelde, monitöre dokunarak bilgisayarda mors kodu kullanmaya çalışan birinin eşdeğerini yapmaya çalışıyorsunuz.
Passerby

HAHA XD 4800 boudrate kullanmamın nedeni güncellememdeki ikinci linkte açıklanıyor.
Ace

1

Bir gönderide cevaplanacak çok fazla soru var, ancak işte birkaç hızlı nokta:

Bazı mikro denetleyiciler bir USB "uç noktası" ve ilgili donanımı içerir, ancak Atmel sitesi ATTiny45'in olmadığını gösterir.

Bu nedenle, mikrodenetleyici bağlantı noktalarını böyle bir USB konektörüne bağlayamazsınız, çünkü USB hem elektronik hem de protokol düzeyinde karmaşık bir veri yoludur.

Ancak aşağıdaki yorumlarda belirtildiği gibi V-USB ile doğru hatlarda arama yapıyorsunuz, bunu kullanmadım, bu yüzden başkalarını yorum yapmaya bırakacaksınız.

FTDI yongalarının lehimlenmesi çok zor değildir, ancak lehim direncine sahip uygun bir PCB bunu kolaylaştırır.

Daha önce bu FT232 kablosu gibi bir şey kullandım :

FT232 USB kablosu
(kaynak: ftdichip.com )

USB konnektörüne gömülü FTDI yongasına sahiptir ve aynı zamanda güç sağlarken tüm seviye çevirileri idare eder. Sonunda, bir pim başlığına bağlayabileceğiniz basit bir 0,1 "adımlı bağlantıdır.

Bunlar eBay'de makul fiyatlarla mevcuttur.



Bu oldukça ilginç. Yazımı buna göre düzenleyeceğim, belki başka biri V-USB özelliklerine yardımcı olabilir.
David

@David - Evet, VUSB temel olarak USB'yi öykünür. Postanız genel olarak doğrudur, ancak özellikle ATTiny ailesi bu yöntemle USB'ye bağlanabilir.
Gustavo Litovsky

Cevabınız için teşekkürler. Projeyi üzerinde USB A kafası olan tek bir kart üzerine kurmayı planladığımı belirtmeliydim (bunun gibi bir computerkabelversand.de/pictures/picturesbig/… ). temelde ortak bir USB çubuğuna benziyor. kablo yok, diğer ucunda sadece 3 pinli bir jak var. bu yüzden ona "modüler" adını verdim. bu şekilde ATtiny'yi ayrı ayrı programlayabilirim (çıkarılabilir) ve farklı sensörlerimi / cihazlarımı 3 veya 4'e (henüz kullanmadığım RX) sol pimlere bağladım.
Ace

1
Bugün sizin için yararlı olabilecek olanları gördüm: rayshobby.net/?p=7363
David
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.