İçindekiler:

ATtiny85 IR USB Alıcı: 11 Adım (Resimlerle)
ATtiny85 IR USB Alıcı: 11 Adım (Resimlerle)

Video: ATtiny85 IR USB Alıcı: 11 Adım (Resimlerle)

Video: ATtiny85 IR USB Alıcı: 11 Adım (Resimlerle)
Video: Digispark ATTINY85 IR remote for PC 2024, Kasım
Anonim
ATtiny85 IR USB Alıcı
ATtiny85 IR USB Alıcı

UYARI, BU TALİMAT ESKİ OLDU

v-usb kütüphanesi, günümüzde neredeyse hiç bulunmayan USB 1.1 protokolü ile çalışacak şekilde tasarlanmıştır. USB3'ün gelişiyle birlikte v-usb aygıtlarını çalıştırmaya çalışırken baş ağrısından daha fazlasına sahip olacaksınız. Multimedya merkezimi değiştirdikten sonra birçok stabilite sorunu yaşıyorum ve alıcı çalışsa da bir süre sonra çalışmıyor. Düzeltmeye çalışırken başarısız oldum. Ben de bir atmega328p sürümü yaptım ama bunda da aynı sorunlar vardı. Kartı periyodik olarak sıfırlamak için bir watchdog zamanlayıcı kullanmak da yardımcı olmadı, bu yüzden v-usb'den vazgeçtim.

Kendinize bir iyilik yapın ve eğitim amaçlı olmadıkça bu talimatla devam etmeyin. Bunun yerine, USB arabirimini zaten entegre etmiş bir ATmega 32U4 yonga modülü satın almanızı ve bu kılavuzu izlemenizi öneririm:

www.sparkfun.com/tutorials/337

Ardından bir IR sensörü TSOP31238 atın ve gitmeye hazırsınız.

Merhaba yapımcılar! bu, bir Attiny85 mikro denetleyici kullanarak çalışan bir USB IR alıcısı oluşturmak için bir talimattır. Bu projeye, GNU/Linux işletim sistemindeki bazı IR uzaktan kumandaları için destek eksikliğini (en azından tam destek) aşmak için başladım. Bu talimatları izleyerek, birkaç dolar karşılığında herhangi bir IR uzaktan kumandayla çalışan programlanabilir bir USB IR alıcısı oluşturabilirsiniz.

Her şeyden önce, bu talimat, burada kullandığım kütüphaneleri oluşturan insanların sıkı çalışması olmadan var olmazdı:

  • David A. Mellis, öz çekirdeği için
  • TinyTuner kütüphaneleri için Rowdy Dog Yazılımı
  • Küçük önyükleyicileri için Rowdy Dog Yazılımı
  • Rancidbacon (https://rancidbacon.com/) v-usb kitaplığının arduino portu için (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • Seejaydee, https://www.instructables.com/id/Attiny-IR-librar… kodunun https://www.instructables.com/id/Attiny-IR'deki yorumlarında bulunan küçük çekirdekler için IR kütüphanesi için -kütüphane…

Bazen bir kütüphanenin doğru sahibini bulmak kolay değildir, bu yüzden bir hata yaparsam lütfen yorum bırakın ve sorunu en kısa sürede çözeceğim.

Bu kılavuz, kullanıma hazır tam bir eğitim/kılavuz bulamadığım için var (var olabilir, ancak bulamadım), bu yüzden web'de bulunan tüm bilgileri ve çok sayıda denemeden sonra topladım ve Hatalar Aslında oldukça iyi çalışan, çalışan bir USB IR alıcısı oluşturmak için eksiksiz bir kılavuz buldum.

Takip ettiğim ana bilgi kaynakları:

  • https://nathan.chantrell.net/20121014/tinypremot…
  • https://forum.arduino.cc/index.php?PHPSESSID=ap4jg…
  • https://blog.petrockblock.com/2012/05/19/usb-keybo…
  • https://learn.adafruit.com/using-an-infrared-libr…
  • https://codeandlife.com/2012/03/03/diy-usb-passwor…
  • https://codeandlife.com/2012/02/22/v-usb-with-atti…
  • https://www.instructables.com/id/Attiny-IR-librar…

Adım 1: Bazı Hususlar

  • Bir AVR ISP programlayıcısına sahip değilim ve bir tane satın almaktan gerçekten hoşlanmıyorum, bu yüzden attiny85'i programlamak için bir Arduino kullandım
  • GNU/Linux'tan başka bir işletim sistemi umurumda değil, bu yüzden bunun başka türlü çalışıp çalışmayacağını bilmiyorum.
  • başka IR kütüphaneleri var ama onları bir arduino ile bile çalıştıramadım. IR kitaplıkları hakkında sınırlı bir bilgiyle başladığımı düşünün. Belki çok sayıda sorunla uğraşırken edindiğim deneyimden sonra onları şimdi çalıştırabilirim. Her neyse, Seejaydee'nin sağladığı kütüphaneyi bulmadan önce kayboldum ve çaresizdim ve o zamandan beri bunu kullanıyorum (çok teşekkürler dostum!).
  • Başka donanım konfigürasyonları da var, ancak ben sadece attiny85'e güç sağlamak için 5V kullananı ve veri hatlarının voltajını kelepçelemek için iki adet 3.6V 0.5W zener diyotu kullandım, kutunun dışında çalışıyor, bu yüzden uğraşmadım diğer konfigürasyonlar.
  • 16Mhz kristal kullanabilir veya attiny85'inizin dahili saatini kalibre etmek için tinytuner kitaplığını kullanabilirsiniz. Kristalin kullanılmasını şiddetle tavsiye ederim, çok daha stabildir ve muhtemelen sizi birçok baş ağrısından kurtaracaktır.
  • Burada attiny85 için iki farklı önyükleyici kullanıyorum:

a) Rowdy Dog Yazılım versiyonu, programınız ve diğer kütüphaneler için daha fazla alana sahip olmanız için çok havalı ve çok küçük bir seri arayüz entegre etmiştir. Sorun şu ki, bazı nedenlerden dolayı oldukça iyi çalışmasına rağmen, bir süre sonra usb aygıtının bağlantısı kesildi (sorunları dmesg komutuyla bulabilirsiniz). Bunun bir çekirdek sorunu mu yoksa çekirdek artı seçilen kitaplıkların karışık bir kombinasyonu mu olduğunu bilmiyorum, bu yüzden bir süre sonra bu çekirdeği sadece uzak tuşların kodunu çözmek ve saati kalibre etmek için kullanmaya karar verdim (16Mhz kullanmadığımda) kristal). Ondan sonra, Mellis önyükleyicisini yakıyorum ve seri arayüzü kullanmayan kesin çizimi yüklüyorum.

b) Mellis versiyonu, kararlı bootloader, bunu birçok projede kullandım. Seri bir arayüz içerseydi, bu önyükleyiciyi her zaman kullanırdım. Bu çekirdeği, uzaktan kumandamdaki tüm tuşların kodunu çözdükten sonra son çizimde kullanıyorum.

Adım 2: Donanımla Başlayalım

Donanımla Başlayalım
Donanımla Başlayalım
Donanımla Başlayalım
Donanımla Başlayalım
Donanımla Başlayalım
Donanımla Başlayalım

İhtiyacınız olan araçlar:

  • arduino uyumlu bir kart
  • uzak anahtarlarınızın kodunu çözmek için bir seri USB adaptörü (sadece bir FT232RL kullanın)
  • GNU/Linux yüklü ve arduino IDE'si düzgün yapılandırılmış bir PC, arduino IDE 1.8.0 kullanıyorum
  • cihazınızı test etmek için bir IR uzaktan kumanda (arduino başlangıç kitlerinde bulunanlar gibi berbat bir uzaktan kumanda bile işe yarayacaktır)
  • tahtanızda hata ayıklamak için bir multimetre (Umarım buna ihtiyacınız olmaz, iyi şanslar!)

Malzeme listesi:

  • 1 attiny85
  • 2 68R direnç
  • 1 1.5K direnç
  • 1 4.7K direnç
  • 1 16Mhz kristal
  • 1 22pF kapasitör
  • 1 0.1uF kapasitör
  • 1 10uF kapasitör
  • 2 3.6V 0.5W zener diyot
  • 1 USB tip A erkek konektör
  • Kartı programlamak ve hata ayıklamak için 6 pimli 1 şerit pimi.
  • 1 IR sensörü TSOP31238
  • seni uyanık tutmak için bir sürü kahve

Kesin kartı lehimlemeden önce, muhtemelen test amacıyla bir devre tahtası prototipi yapmak istersiniz, bu talimata ekli şemayı takip etmek onu oluşturmak için yeterli olacaktır.

Attiny85'i PC'ye bağlamak için nihai tasarım, karta lehimlenmiş bir USB A tipi konektör kullanır, ancak prototip için bir devre tahtasına bağlayabileceğiniz bir USB kablosu yapmanız gerekir:

Küçük bir perfboard 4 pimine lehimleyin, ardından eski bir USB kablosunu kesin ve pimleri usb kablosunun içindeki 4 kabloya lehimleyin:

  • kırmızı VCC'dir (5V)
  • siyah GND'dir
  • beyaz D-
  • yeşil D+'dır

Her şeyi sıcak tutkalla bir arada tutun.

Şimdi ISP programlayıcıyı (Arduino), USB'yi seri adaptöre (FT232RL) ve IR sensörünü attiny85'e bağlamamız gerekiyor.

Kabloları değiştirmeden farklı önyükleyicileri yakabilmeniz, çizimleri yükleyebilmeniz ve seri bağlantı noktasını kontrol edebilmeniz için hepsini birbirine bağlı bırakabilirsiniz, Bunu yapmak için, aşağıdaki talimatları izleyerek her şeyi bağlayın:

ISP programcısı (Arduino): bu, önyükleyicileri yakmamıza ve eskizleri yüklememize izin verir

  • arduino'da pin11'e (MOSI) attiny85 PB0 (pin5)
  • arduino'da pin12'ye (MISO) attiny85 PB1 (pin6)
  • arduino'da attiny85 PB2'den (pin7) pin13'e (SCK)
  • attiny85 RESET (pin1) arduino'da pin10'a çekmeli (4.6k'dan VCC'ye)
  • arduino'da attiny85 VCC - 5V
  • arduino'da attiny85 GND'den GND'ye

usb'den seri bağdaştırıcıya (FT232RL): bu, seri bağlantı noktasını kontrol etmemizi sağlar

  • attiny85 PB0 (pin5 RX) FT232RL'de TX'e
  • attiny85 PB2 (pin7 TX) FT232RL'de RX'e
  • attiny85 GND (pin4) FT232RL'de GND'ye
  • attiny85 zaten arduino tarafından desteklendiğinden, 5v'yi FT232RL'ye bağlamanız gerekmez, aksi takdirde şunları bağlayın: attiny85 VCC (pin8) FT232RL'de 5V

usb'den seri adaptöre (FT232RL) yalnızca saat kalibrasyonu için ("ATtiny85 @ 8MHz (dahili osilatör; BOİ devre dışı)" önyükleyicisi için)

  • FT232RL attiny85'te PB4 (pin3 RX) TX'e
  • FT232RL attiny85'te PB3 (pin2 TX) RX'e
  • FT232RL'de GND'den (pin4) GND'ye
  • attiny85 zaten arduino tarafından desteklendiğinden, 5v'yi FT232RL'ye bağlamanız gerekmez, aksi takdirde şunları bağlayın: attiny85 VCC (pin8) FT232RL'de 5V

Bir 16Mhz kristal kullanıyorsanız, onu Attiny85 pinleri PB3 (pin2) ve PB4 (pin3)'e bağlayın ve her bir pini 22pF'lik bir başlık aracılığıyla GND'ye bağlayın.

Onları GND'ye paralel olarak bağlayan 0.1uF ve 10uF kapasitörlere sahip Attiny85 VCC'yi filtreleyin

IR sensörü çıkış pinini attiny85 PB1'e (pin6) bağlayın, gücü açın.

USB arayüzünü oluşturun ve bağlayın:

  • GND (siyah tel): onu ortak GND'ye bağlayın (tüm topraklar birbirine bağlanır)
  • D- (beyaz tel) attiny85 PB0'a (pin5) 68R direnç üzerinden bağlanır, ayrıca 3.6V 0.5W zener üzerinden toprağa bağlayın ve 1.5K dirençle VCC'ye kadar çekin
  • PB2'ye 68R direnç üzerinden bağlanan D+ (yeşil kablo), 3,6V 0,5W zener aracılığıyla toprağa bağlayın
  • 5V, bu aşamada her şey Arduino tarafından çalıştırıldığından, onu bağlantısız bırakabilirsiniz, aksi takdirde onu attiny85 VCC'ye bağlayın

Zener diyotlar, anotlar GND'ye ve katotlar D+ ve D- veri hatlarına bağlanacak şekilde bağlanır.

Adım 3: Son Tasarım

Son tasarım
Son tasarım
Son tasarım
Son tasarım
Son tasarım
Son tasarım

Nihai tasarım için delikli bileşenlerle perfboard kullanabilir veya kendi kartınızı aşındırabilir ve smd bileşenlerini kullanabilirsiniz. Bir tahtayı nasıl kazıyacağınızı öğrenmek için google'da aramanız yeterli, çevrimiçi olarak harika öğreticiler var.

Kendi tahtamı kazıdım ve nihai sonuçlardan (küçük, sağlam ve sağlam tahta) çok memnunum. sadece tahtayı teneke makasımla kestim.

Bu arada, resimlerdeki izler çıplak bakır değil, bakırı hafifçe kalaylayan kötü bir kimyasalla işlendi (kansere neden olduğundan şüpheleniliyor, bu yüzden çok dikkatli kullanın, lateks küreler ve toz maskesi):

Mizanpajınızı tasarlamak için yukarıdaki şemaları kullanın veya tahtanızı aşındırmak için sadece pcb ayak izimi kullanabilirsiniz.

Adım 4: Yazılımla Başa Çıkma

Bu projedeki devre çok kolay, bunun yerine yazılım daha büyük bir çaba gerektiriyor.

Bunun çalışması için en az 2 kitaplığa (bir kristal kullanmıyorsanız bir tane daha) artı 2 önyükleyiciye ihtiyacımız var. Bu projeye başladığımda bazı kütüphaneleri test ettim, bazen çalışmıyorlardı ve çoğu zaman kutudan çıkmış bir Attiny85 ile çalışacak şekilde yapılandırılmamışlardı (henüz bilmiyordum). Sonra kütüphaneler/önyükleyiciler ile çakışan kesintilerle ilgili sorunlar buldum. Sonunda, son devreyi bilgisayarıma bağladığımda oldukça fazla hatayla uğraşmak zorunda kaldım. Yine de bu kılavuza sahip değildim, bu yüzden iyi olacağını düşünüyorum, sadece bu talimattaki adımları izleyin, eğer bunu hata yapmadan yaparsanız sorun olmaz:)

Şimdi birkaç kitaplık kurmamız ve yapılandırmamız gerekiyor:

  • arduino kitaplığı için v-usb: bu kitaplık, mikro denetleyicinin bilgisayar tarafından HID USB Klavye olarak tanınmasına olanak tanır ve biz bunu bilgisayara tuş vuruşlarını göndermek için kullanacağız. Bu kütüphanenin attiny85 ile uyumlu olması için bazı değişikliklere ihtiyacı var.
  • Tinytuner kütüphanesini yalnızca 16Mhz kristal kullanmayacaksanız kullanın. Daha sonra mikrodenetleyicinin dahili saatini kalibre etmeniz gerekecektir. Bu kütüphane kutunun dışında çalışır.
  • IR sensörüyle etkileşime geçmek için Attiny-IR kitaplığı. Bu kütüphane kutunun dışında çalışır.

Ayrıca 2 önyükleyiciye ihtiyacımız var:

  • Seri arayüze sahip Köpek Yazılım versiyonu. Bu önyükleyici, millis() işlevi için timer1'i kullandığından ve IR kitaplığıyla çalışmadığından, attiny85 ile çalışmak için küçük bir ince ayar gerektiriyor. Zamanlayıcıyı timer0 olarak değiştirmemiz gerekiyor.
  • Mellis versiyonu, son aşamada kullanacağımız kararlı bootloader. Bu kutunun dışında çalışır.

Adım 5: V-usb Kitaplığının Kurulumu ve Konfigürasyonu

Kitaplığı https://code.google.com/archive/p/vusb-for-arduin… adresinden indirin…Dosyayı açın ve kitaplıklar/UsbKeyboard klasörünü eskiz defteri kitaplıkları klasörünüze kopyalayın.

Şimdi ATtiny85 ile uyumlu olması için birkaç dosyayı düzenlemeniz gerekiyor (arduino ile çalışacak şekilde yapılandırılmıştır):

A) usbconfig.h'yi düzenleyin:

"Donanım Yapılandırması" değişikliği altında:

#define USB_CFG_IOPORTNAME Dto##define USB_CFG_IOPORTNAME B

ve

#define USB_CFG_DMINUS_BIT 4to#USB_CFG_DMINUS_BIT 0 tanımlayın

"İsteğe Bağlı Donanım Yapılandırması" değişikliği altında:

#define USB_CFG_PULLUP_IOPORTNAME Dto##define USB_CFG_PULLUP_IOPORTNAME B

Tam bir "önyükleme uyumlu HID" belirtimi oluşturmak için (aksi takdirde hiçbir multimedya anahtarı çalışmaz), ayrıca şunları da değiştirin:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#USB_CFG_INTERFACE_SUBCLASS 0x01 // Önyükleme

ve

#define USB_CFG_INTERFACE_PROTOCOL 0 // Keyboardto#define USB_CFG_INTERFACE_PROTOCOL 0x01 // Klavye

İsteğe bağlı olarak, üretici ve cihaz adını aşağıdaki tanımlarda da değiştirebilirsiniz:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) UsbKeyboard.h'yi düzenleyin:

değiştirmek:

PORTD = 0; // YAPILACAKLAR: Yalnızca USB pinleri için mi?DDRD |= ~USBMASK;

ile

PORTB = 0; // YAPILACAKLAR: Sadece USB pinleri için mi?DDRB |= ~USBMASK;

101'den daha fazla anahtar koduna izin vermek için ayrıca:

0x25, 0x65, // MANTIK_MAKSİMUM (101)'e:0x25, 0xE7, // MANTIK_MAKSİMUM (231)

ve

0x29, 0x65, // USAGE_MAXIMUM (Klavye Uygulaması)to:0x29, 0xE7, // USAGE_MAXIMUM (Klavye Uygulaması)

Bu 3 dosyayı da düzenlemeniz gerekebilir:

usbdrv.husbdrv.cUsbKeyboard.h

ve PROGMEM'i her gördüğünüzde, değişken tipi adından önce "const" ekleyin (ör. PROGMEN char usbHidReportDescriptor[35] ==> PROGMEM const char usbHidReportDescriptor[35])

Bu net değilse https://forum.arduino.cc/index.php?topic=391253.0#… adresini ziyaret edin.

Ekli kitaplığı indirirseniz (tüm bu değişiklikleri kendim yaptım) ve sadece eskiz defteri kitaplıkları klasörünüze çıkarırsanız tüm bu değişiklikleri önleyebilirsiniz:

attiny85 için yapılandırılmış UsbKeyboard

Düzenleme: Son zamanlarda Alejandro Leiva'nın (https://github.com/gloob) bu kitaplıkla ilgilendiğini ve iyi çalıştığını keşfettim. Ayrıca onun sürümünü, attiny ile çalışmasını sağlamak için yaptığım gerekli değişikliklerle deneyebilirsiniz, bu yüzden bunu kontrol etmek istiyorsanız, sadece eskiz defteri kitaplıkları klasörünüze çıkarın.

Attiny85 için yapılandırılmış UsbKeyboard (Alejandro Leiva sürümü)

Adım 6: Attiny-IR ve Tinytuner Kitaplıklarının Kurulumu

A) Attiny-IR kütüphanesi:

drive.google.com/open?id=0B_w9z88wnDtFNHlq… adresinden indirin, ardından eskiz defteri kitaplıkları klasörünüze açın.

B) Tinytuner kütüphanesi:

Bu sadece bir 16Mhz kristal kullanmıyorsanız gereklidir, ama inanın bana, kristal olmadan da çalışsa bile, kristalle çok daha kararlıdır ve birkaç sente mal olur, bu yüzden basit tutun, bir kristal kullanın ve atlayın bu kütüphane.

Henüz ikna olmadınız mı? tamam, kitaplığı https://storage.googleapis.com/google-code-archive adresinden indirin… ardından eskiz defteri kitaplıkları klasörünüze açın.

Kitaplıklarla işimiz bitti, şimdi önyükleyicileri kurmaya devam ediyoruz.

7. Adım: Önyükleyicilerin Kurulumu ve Konfigürasyonu

İki bootloader kuracağız, Mellis'inki benim tecrübelerime göre daha stabil ve onu son çizimde kullanacağız. Rowdy Dog Software tarafından geliştirilen diğeri harika bir çekirdek, çok küçük ve entegre bir seri arayüz mevcut, ancak uzaktan kumandam bir süre sonra çöktü, bu yüzden bu önyükleyiciyi sadece attiny85 dahili saatini kalibre etmek ve uzaktan kumandamızın kodunu çözmek için kullanacağız. düğmeler.

attiny85 seri yeteneklerini vermek için uygun kütüphaneler olduğunu biliyorum, ancak daha sonra seri nesneyi kullanan kütüphaneleri ayarlamanız gerekecek…Bu prosedürü daha çok seviyorum.

Kurulumla başlayalım:

A) Mellis önyükleyici:

sadece Arduino IDE tercihlerini açın ve Ek Pano Yöneticisi URL'lerini ekleyin:

raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Ardından Arduino IDE pano yöneticisini açın ve attiny'yi arayın, Mellis'ten panoları yükleyin. Şimdi Arduino ID'sini ATtiny25/45/85 ve ATtiny24/44/84 panolarını görmelisiniz.

B) Rowdy Dog Software küçük önyükleyici:

önyükleyiciyi https://storage.googleapis.com/google-code-archive… adresinden indirin.

Dosyayı açın ve eskiz defterinizin/donanımınızın içindeki küçük klasörü kopyalayın (henüz yoksa bu klasörü oluşturun). ardından eskiz defteri/donanım/küçük/avr/ klasörüne gidin ve:

1) Prospective Boards.txt dosyasını boards.txt dosyasına kopyalayın

2) platform.txt dosyasını düzenleyin ve bazı değişiklikler yapın:

compiler.path değişkeninin yorumunu kaldırın ve arduino kurulum klasörünüzün içindeki donanım/tools/avr/bin/ klasörünü işaret etmesine izin verin:

compiler.path={PATH_TO_YOUR_ARDUINO_FOLDER}/hardware/tools/avr/bin/

decompiler. S.flags değiştir=-c -g -assembler-with-cpptocompiler. S.flags=-c -g -x assembler-with-cpp

Ardından, her şeyin yerinde olduğundan emin olarak aşağıdaki değişkenleri değiştirin (bu dosyalar mevcut olmalıdır, aksi takdirde değişkenleri doğru yollara yönlendirin):

tools.avrdude.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude

tools.avrdude.config.path={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf

tools.avrdude.cmd.path.linux={runtime.ide.path}/hardware/tools/avr/bin/avrdude

tools.avrdude.config.path.linux={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf

3) cores/tiny/core_build_options.h dosyasını düzenleyin ve değiştirin:

#define TIMER_TO_USE_FOR_MILLIS 1 ile #define TIMER_TO_USE_FOR_MILLIS 0

Bu çok önemlidir, aksi takdirde IR alıcısı her düğme için sıfır verir. Bu ifade, timer1'i IR kitaplığı için kullanılabilir bırakarak millis() işlevi için timer0'ı yapılandırır. Son çizim yine de timer0'ı devre dışı bırakacak, böylece ne millis() ne de delay() işlevlerine sahip olmayacaksınız. Bunun yerine mevcut delayMicroseconds() işlevine sahip olabilirsiniz.

Bu önyükleyici minimum düzeydedir, ancak Seri nesne desteğini içerir:

Attiny85 PB2 (pin7) TX ve PB0 (pin5) RX'dir

ISP programlayıcı (arduino) ve aynı anda bağlı seri - usb adaptörü ile bir konfigürasyona sahip olabilirsiniz, böylece kabloları çok sık değiştirmenize gerek kalmaz:

Artık hem kitaplıkları hem de önyükleyicileri kurduk ve uygun şekilde yapılandırdık, en zor iş tamamlandı ve işleri test etmeye başlayabiliriz.

8. Adım: Önyükleyicileri Yazma ve Eskizleri Yükleme

Herhangi bir olası sorunu çözebilmeniz için Arduino IDE tercihleri altındaki ayrıntılı çıktıyı etkinleştirmenizi şiddetle tavsiye ederim.

Attiny85'e bir önyükleyici yakmak için ISP örneğini Arduino'ya yüklemeniz ve ardından programlayıcı Arduino'yu ISP olarak seçmeniz gerekir.

Şimdi arduino üzerindeki sıfırlama ve topraklama pinleri arasına 10 uF'lik bir kapasitör yerleştirin (yazma işlemi için gerekli değildir, ancak eskizleri attiny85'e yüklemek içindir).

Artık arduino, önyükleyicileri yakmaya ve eskizleri yüklemeye hazır. Attiny'nize uygun doğru kartı seçip yakmanız yeterli.

Attiny85'e bir çizim yüklemek için, onu arduino IDE'ye yükleyin ve "Programlayıcı kullanarak yükle" üzerine tıklayın.

ÖNEMLİ: Kroki yüklerken 3 adım vardır, derleme, yazma ve doğrulama. Derleme ve yazma başarılı bir şekilde çalıştıysa, ancak doğrulama işlemi başarısız olduysa, çizimin yine de çalışması mümkündür.

Adım 9: Attiny85 Dahili Saatini Kalibre Edin (Kristal Kullanıyorsanız Bunu Atlayın)

16Mhz kristali kullanmamaya karar verirseniz, attiny85 saatinizi kalibre etmeniz gerekir, bu nedenle seri arayüze sahip bir önyükleyiciye ihtiyacımız olacak ve doğru kalibrasyonu elde etmek için tinytuner kitaplığını kullanacağız.

Sonraki adımları izleyin

  • ISP programcısı olarak Arduino'yu araçlar altında seçin
  • "ATtiny85 @ 8MHz (dahili osilatör; BOİ devre dışı)" kartını seçin
  • Bağlanmadan önce açıklandığı gibi ISP bağlantınızın hazır olduğunu varsayıyorum, aksi takdirde bağlantıları yapın
  • önyükleyici yakmak
  • bu önyükleyici, seri arabirim için farklı pinler yapılandırmıştır, bu yapılandırmayı yalnızca mevcut önyükleyici için kullanın

- FT232RL'de PB4 (pin3 RX) - FT232RL'de TX (pin2 TX) - FT232RL'de PB3 (pin2 TX) - FT232RL'de RX attiny85 - attiny85 zaten arduino tarafından desteklendiğinden FT232RL'de GND (pin4) - GND bağlamanız gerekmez FT232RL'deki 5v, aksi takdirde bağlayın: attiny85 VCC (pin8) FT232RL'de 5V

  • Tinytuner örneğini attiny85'e yükleyin
  • seri iletişimi izlemek için ekran programını açın: screen /dev/ttyUSB0 9600
  • RESET pinini (pin1) GND'ye bağlayarak attiny85'i sıfırlayın (bir dakika), Ekran penceresinde bir karşılama mesajı görüntülenmelidir.
  • Kalibrasyon bitene kadar tek 'x' karakterleri (satır başı yok; satır besleme yok) göndermeye devam edin
  • kalibrasyonun değerini bir yere not edin (OSCCAL = 0x). Bu, son eskizlerde beyan etmeniz gereken değerdir.

Adım 10: Uzak Düğmelerinizin Kodunu Çözün

Şimdi uzak düğmelerimizin kodunu çözme ve bunları PC'deki belirli tuş vuruşlarına atama zamanı, bunu yapmak için sonraki adımları izleyin:

  • bir kristal kullanmıyorsanız "ATtiny85 @ 16MHz (dahili PLL;4.3V BOD)" kartını seçin, aksi takdirde "ATtiny85 @ 16 MHz (harici kristal; 4.3 V BOD"), ardından yakın
  • taslağı yükleyin:
  • Bir kristal kullanmıyorsanız, OSCCAL değişkenini içeren satırın yorumunu kaldırın ve saatin kalibrasyonunu yaptığınızda bulduğunuz değere atayın.
  • Sensörün daha önce açıklandığı gibi bağlı olduğunu varsayıyorum, aksi halde bağlayın
  • FT232RL seri-usb adaptörünün bağlı olduğunu da varsayıyorum, aksi halde bağlayın
  • RESET pinini (pin1) GND'ye bağlayarak attiny85'i sıfırlayın (sadece bir an)
  • kumandanızın tuşlarına art arda basın ve ekran penceresini kontrol edin, her kayıt için son numarayı açıklamanız gerekir, her tuş 2 farklı numara üretebilir

Örnek:

ALINDI D44 3396 ALINDI 544 1348

Az önce bastığınız butona göre 3396 ve 1348'i not edin, o zaman o butona ne yapmak istediğinize karar vermelisiniz. Örneğin, bu düğmenin "Sesi aç" multimedya anahtar kodunu göndermesini isteyebilirim, sonra o anahtar kodunun kimliğini bulmam gerekir. Bunu yapmak için PDF'yi indirin:

Sayfa 53 "Klavye/Klavye Sayfası" bölümüne bakın ve uzak düğmelerinizi klavye kodlarına bağlamak için Kullanım Kimliği (Aralık) sütunundaki sayıları kullanın. Örneğimizde "Sesi aç" için anahtar kodunun 128 olduğunu görebiliriz.

UsbKeyboard kitaplığındaki UsbKeyboard.h dosyasını daha önce kurduğumuz v-usb paketinden düzenleyin ve zaten orada değilse mevcut tanımlara ekleyin:

#define KEY_VOL_UP 128

Tüm remote/s butonlarımız ve UsbKeyboard.h dosyasındaki tüm tanımlamalar hazır olduğunda son adıma geçebiliriz.

Adım 11: Son Çizimi Yükleme ve En İyisini Umalım

Son Taslak Yükleniyor ve En İyisi İçin Umut!
Son Taslak Yükleniyor ve En İyisi İçin Umut!
Son Taslak Yükleniyor ve En İyisi İçin Umut!
Son Taslak Yükleniyor ve En İyisi İçin Umut!

Artık tüm uzaktan kumanda düğmelerinin kodunu çözdük, UsbKeyboard.h dosyası bizim anahtar kodlarımızla dolduruldu, bu yüzden şimdi arduino IDE'sine kesin çizimi şuradan yükleyebiliriz:

github.com/venumz/ATtiny85-USB-IR-alıcı…

Bu dosya, alıcım için kullandığım dosyanın aynısı ve 2 farklı uzaktan kumanda için çalışıyor, bu nedenle uzaktan kumandanızla/kumandalarınızla çalışmak için onu güncellemeniz gerektiği açık.

Bir kristal kullanmıyorsanız, OSCCAL değişkenini içeren satırın yorumunu kaldırın ve saatin kalibrasyonunu yaptığınızda bulduğunuz değere atayın.

Döngü işlevinde bunun gibi birçok ifade olduğuna dikkat edin:

if(results.value==3405 || sonuçlar.value==1357) { // yukarı ok

if(lastStroke!=results.value) UsbKeyboard.sendKeyStroke(KEY_ARROW_UP);

}

Uzaktan kumandanızdaki her düğme için bir tane olmak üzere kendi ifadelerinizi oluşturmalısınız. "if" koşulunda, uzaktan kumandanızın kodunu çözerken bulduğunuz değerleri sonuçlar.değerine koymalısınız ve UsbKeyboard.sendKeyStroke yönteminin argümanı olarak, önceden tanımlanmış anahtar kodlardan birini UsbKeyboard.h dosyasına koymalısınız.

"if(lastStroke!=results.value) " koşulu gereklidir çünkü bazı uzaktan kumandalar aynı kodu her vuruşta iki kez gönderir ve bu ikinci vuruşu engeller. Tam olarak emin değilim ve uzaktan kumandanızda programlanmış olan IR protokolüne bağlı olabilir (Kızılötesi protokolleri konusunda gerçekten uzman değilim) ancak kendi uzaktan kumandamdaki deneyimime göre, her düğme 2 farklı kod üretebilir ve butona basılı tutarken aynı kodu gönderiyor, butona tekrar basarsanız diğerini gönderiyor. Yani kodlar alternatif bir şekilde gönderilmiş gibi görünüyor, sanırım gerçekten butona kaç kez bastığınızı bilmek standart bir mod.

Tamam, neredeyse bitirdik, sadece son taslağı yükleyin, PC'ye bağlayın ve nasıl gittiğini görün.

Bu adım için, hem arduino'yu hem de usb'yi seri bağdaştırıcıya çıkarmanız ve ancak o zaman USB'yi PC bağlantı noktanıza takmanız daha iyidir (bir şeyler ters giderse devrenizin hata ayıklaması daha kolay olacaktır).

Her şey yolunda gittiyse, bir terminal açıp dmesg komutunu gönderdiğinizde, bu adımdaki ilk görüntüye benzer bir şey görmelisiniz. Eğer sorun varsa, ikinci resimdeki gibi hatalar olmalı ve devrenizde ve/veya yazılımınızda hata ayıklamaya başlamalısınız. Başlangıçtaki hataların kaynaklarından biri, IR alıcımla çalışmayan bir USB hub'ıydı (diğerleri olsa da çalıştı)… bu nedenle, bu son adım için IR alıcısını doğrudan PC bağlantı noktasına takmak daha iyi. Nihai hataları bulmak zor olabilir, ancak sonunda benim gibi çok şey öğreneceksiniz ve ödemeniz gereken bedel buna değer, sizi temin ederim.

Hepsi bu kadar millet, bu talimatta herhangi bir hata fark ederseniz bana bildirin ve yepyeni IR USB alıcınızın keyfini çıkarın!

Önerilen: