Isi kandungan:

Penerima USB ATtiny85 IR: 11 Langkah (dengan Gambar)
Penerima USB ATtiny85 IR: 11 Langkah (dengan Gambar)

Video: Penerima USB ATtiny85 IR: 11 Langkah (dengan Gambar)

Video: Penerima USB ATtiny85 IR: 11 Langkah (dengan Gambar)
Video: arduino project Project Car garage parking alarm attiny85 digispark 2024, Julai
Anonim
Penerima USB ATtiny85 IR
Penerima USB ATtiny85 IR

AMARAN, INSTRUKTELI INI TELAH MENJADI OBSOLETE

Perpustakaan v-usb dirancang untuk berfungsi dengan protokol USB 1.1 yang hampir tidak ada pada masa ini. Dengan kedatangan USB3, anda akan mengalami lebih dari sekadar sakit kepala yang berusaha menjadikan peranti v-usb berfungsi. Setelah menukar pusat multimedia saya, saya mendapat banyak masalah kestabilan dan walaupun penerima berfungsi, setelah beberapa lama ia berhenti berfungsi. Saya tidak berjaya membetulkannya. Saya juga membuat versi atmega328p tetapi ini mempunyai masalah yang sama. Menggunakan pemasa pengawas untuk menetapkan semula papan secara berkala tidak membantu, jadi saya menyerah pada v-usb.

Buatlah kebaikan dan jangan teruskan arahan ini melainkan untuk tujuan pendidikan. Saya cadangkan untuk membeli modul cip ATmega 32U4 yang telah mengintegrasikan antara muka usb dan ikuti panduan ini:

www.sparkfun.com/tutorials/337

Kemudian masukkan sensor IR TSOP31238 dan anda boleh pergi.

Hello pembuat! ini boleh diarahkan untuk membina penerima IR USB yang berfungsi dengan menggunakan mikrokontroler Attiny85. Saya memulakan projek ini untuk mengatasi kekurangan sokongan (sokongan sekurang-kurangnya lengkap) untuk beberapa remote IR di OS GNU / Linux. Dengan mengikuti arahan ini, anda boleh membina penerima IR USB yang dapat diprogramkan yang berfungsi dengan jauh IR mana-mana dengan beberapa dolar.

Pertama sekali, pengajaran ini tidak akan wujud tanpa kerja keras orang yang membuat perpustakaan yang saya gunakan di sini:

  • David A. Mellis untuk terasnya yang cantik
  • Perisian Rowdy Dog untuk perpustakaan mereka TinyTuner
  • Perisian Rowdy Dog untuk pemuat but kecil mereka
  • Rancidbacon (https://rancidbacon.com/) untuk port arduino perpustakaan v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee untuk perpustakaan IRnya untuk inti kecil yang terdapat pada komen dari kod https://www.instructables.com/id/Attiny-IR-librar… yang boleh diarahkan di https://www.instructables.com/id/Attiny-IR -librar …

Kadang-kadang tidak mudah untuk mencari pemilik perpustakaan yang tepat, jadi sekiranya saya melakukan kesilapan, silakan tinggalkan komen dan saya akan menyelesaikan masalah dengan SEGERA.

Panduan ini wujud kerana saya tidak menemui tutorial / panduan lengkap yang berfungsi di luar kotak (mungkin ada, tetapi saya tidak dapat mencarinya) jadi saya mengumpulkan semua maklumat yang terdapat di web dan setelah banyak percubaan dan Kesalahan Saya membuat panduan lengkap untuk membina penerima IR USB yang berfungsi dan berfungsi dengan baik.

Sumber maklumat utama yang saya ikuti:

  • https://nathan.chantrell.net/20121014/tinypcremot…
  • 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…

Langkah 1: Beberapa Pertimbangan

  • Saya tidak memiliki programmer AVR ISP dan saya tidak begitu gemar membelinya, jadi saya telah menggunakan Arduino untuk memprogram attiny85
  • Saya tidak peduli dengan OS lain selain GNU / Linux jadi saya tidak tahu apakah ini akan berfungsi sebaliknya.
  • ada perpustakaan IR lain tetapi saya tidak dapat membuatnya berfungsi walaupun tidak menggunakan arduino. Walaupun begitu, saya mulakan dengan pengetahuan terhad mengenai perpustakaan IR. Mungkin saya dapat membuat mereka bekerja sekarang setelah pengalaman yang diperoleh menangani banyak masalah. Bagaimanapun, saya tersesat dan putus asa sebelum menemui perpustakaan yang disediakan oleh Seejaydee dan sejak itu saya menggunakannya (terima kasih banyak!).
  • Terdapat konfigurasi perkakasan lain, tetapi saya hanya menggunakan konfigurasi yang menggunakan 5V untuk menghidupkan attiny85 dan dua diod zener 0.56 0.5W untuk mengikat voltan garis data, ia berfungsi di luar kotak jadi saya tidak main-main konfigurasi lain.
  • Anda boleh menggunakan kristal 16Mhz atau anda boleh menggunakan perpustakaan tinytuner untuk menentukur jam dalaman attiny85 anda. Saya sangat menyarankan penggunaan kristal itu, ia jauh lebih stabil dan mungkin akan membuatkan anda banyak sakit kepala.
  • Saya menggunakan di sini dua pemuat but yang berbeza untuk attiny85:

a) Versi Rowdy Dog Software, ia telah menggabungkan antara muka bersiri yang sangat keren dan sangat kecil sehingga anda mempunyai lebih banyak ruang untuk program dan perpustakaan lain. Masalahnya adalah kerana beberapa sebab walaupun berfungsi dengan baik, setelah beberapa lama peranti usb terputus (anda boleh menemui masalah dengan perintah dmesg). Saya tidak tahu apakah ini masalah inti atau gabungan inti ditambah perpustakaan yang dipilih jadi selepas beberapa ketika saya memutuskan untuk menggunakan teras ini hanya untuk menyahkod kekunci jarak jauh dan menentukur jam (apabila tidak menggunakan 16Mhz kristal). Selepas itu, saya hanya membakar pemuat boot Mellis dan memuat naik lakaran pasti yang tidak menggunakan antara muka bersiri.

b) Versi Mellis, pemuat but stabil, saya telah menggunakannya dalam banyak projek. Saya selalu menggunakan bootloader ini sekiranya ia merangkumi antara muka bersiri. Saya menggunakan inti ini dalam lakaran akhir setelah menyahkod semua kunci pada alat kawalan jauh saya.

Langkah 2: Mari Mulakan Dengan Perkakasan

Mari Mulakan Dengan Perkakasan
Mari Mulakan Dengan Perkakasan
Mari Mulakan Dengan Perkakasan
Mari Mulakan Dengan Perkakasan
Mari Mulakan Dengan Perkakasan
Mari Mulakan Dengan Perkakasan

Alat yang anda perlukan:

  • papan serasi arduino
  • penyesuai siri ke usb untuk menyahkod kunci jauh anda (hanya menggunakan FT232RL)
  • PC dengan GNU / Linux terpasang dan arduino IDE dikonfigurasi dengan betul, saya menggunakan arduino IDE 1.8.0
  • alat kawalan jauh IR untuk menguji peranti anda (walaupun alat yang jelek seperti yang terdapat dalam kit pemula arduino akan berfungsi)
  • multimeter untuk menyahpepijat papan anda (Saya harap anda tidak memerlukannya, semoga berjaya!)

Senarai bahan:

  • 1 attiny85
  • 2 perintang 68R
  • 1 perintang 1.5K
  • 1 perintang 4.7K
  • 1 kristal 16Mhz
  • 1 kapasitor 22pF
  • 1 kapasitor 0.1uF
  • 1 kapasitor 10uF
  • 2 3.6V 0.5W diod zener
  • 1 Penyambung lelaki jenis USB A
  • 1 jalur pin dengan 6 pin untuk memprogram dan menyahpepijat papan.
  • 1 sensor IR TSOP31238
  • banyak kopi untuk memastikan anda terjaga

Sebelum menyolder papan definitif, anda mungkin ingin membuat prototaip papan roti untuk tujuan pengujian, kerana skema yang dilampirkan pada instruksional ini sudah cukup untuk membuatnya.

Untuk menyambungkan attiny85 ke PC, reka bentuk akhir menggunakan penyambung USB jenis A yang disolder ke papan, tetapi untuk prototaip anda perlu membuat kabel USB yang boleh anda sambungkan ke papan roti:

Pateri ke dalam sekeping kecil papan wangi 4 pin, kemudian potong kabel USB lama dan pasangkan pin ke 4 wayar di dalam kabel usb:

  • merah ialah VCC (5V)
  • hitam adalah GND
  • putih adalah D-
  • hijau ialah D +

Jaga segalanya dengan gam panas.

Sekarang kita perlu menyambungkan programmer ISP (Arduino), penyesuai USB ke siri (FT232RL) dan sensor IR ke attiny85.

Anda boleh terus terhubung sehingga anda dapat membakar pemuat but yang berbeza, memuatkan lakaran dan memeriksa port bersiri tanpa menukar wayar, Untuk melakukannya, sambungkan semua yang mengikuti arahan ini:

Pengaturcara ISP (Arduino): ini membolehkan kita membakar pemuat but dan memuatkan lakaran

  • attiny85 PB0 (pin5) hingga pin11 (MOSI) dalam arduino
  • attiny85 PB1 (pin6) hingga pin12 (MISO) dalam arduino
  • attiny85 PB2 (pin7) hingga pin13 (SCK) dalam arduino
  • attiny85 RESET (pin1) dengan pullup (4.6k ke VCC) ke pin10 di arduino
  • attiny85 VCC hingga 5V di arduino
  • attiny85 GND ke GND di arduino

usb ke penyesuai bersiri (FT232RL): ini membolehkan kami memeriksa port bersiri

  • attiny85 PB0 (pin5 RX) hingga TX di FT232RL
  • attiny85 PB2 (pin7 TX) hingga RX di FT232RL
  • attiny85 GND (pin4) hingga GND pada FT232RL
  • kerana attiny85 sudah dikuasakan oleh arduino, anda tidak perlu menyambungkan 5v pada FT232RL, jika tidak, sambungkan: attiny85 VCC (pin8) ke 5V pada FT232RL

usb ke penyesuai bersiri (FT232RL) hanya untuk penentukuran jam (hanya untuk pemuat but "ATtiny85 @ 8MHz (pengayun dalaman; BOD dilumpuhkan)")

  • PB4 (pin3 RX) ke TX di attiny85 FT232RL
  • PB3 (pin2 TX) ke RX di attiny85 FT232RL
  • GND (pin4) hingga GND pada FT232RL
  • kerana attiny85 sudah dikuasakan oleh arduino, anda tidak perlu menyambungkan 5v pada FT232RL, jika tidak, sambungkan: attiny85 VCC (pin8) ke 5V pada FT232RL

Sekiranya anda menggunakan kristal 16Mhz, sambungkannya ke pin Attiny85 PB3 (pin2) dan PB4 (pin3) dan sambungkan setiap pin ke GND juga masing-masing melalui penutup 22pF.

Tapis Attiny85 VCC dengan kapasitor 0.1uF dan 10uF yang menghubungkannya selari dengan GND

Sambungkan pin output sensor IR ke PB1 attiny85 (pin6), hidupkan.

Bina dan sambungkan antara muka usb:

  • GND (wayar hitam): sambungkannya ke GND biasa (semua landasan dihubungkan bersama)
  • D- (wayar putih) disambungkan ke attiny85 PB0 (pin5) melalui perintang 68R, sambungkan juga ke tanah melalui zener 3.6V 0.5W dan tarik ke VCC dengan perintang 1.5K
  • D + (wayar hijau) disambungkan ke PB2 melalui perintang 68R, sambungkan ke tanah melalui zener 3.6V 0.5W
  • 5V, anda boleh membiarkannya tidak tersambung kerana semuanya dikuasakan oleh Arduino pada tahap ini, jika tidak, sambungkannya ke attiny85 VCC

Diod zener disambungkan sehingga anod diikat ke GND dan katod disambungkan ke garis data D + dan D-.

Langkah 3: Reka Bentuk Akhir

Reka Bentuk Akhir
Reka Bentuk Akhir
Reka Bentuk Akhir
Reka Bentuk Akhir
Reka Bentuk Akhir
Reka Bentuk Akhir

Untuk reka bentuk akhir, anda boleh menggunakan papan wangi dengan komponen lubang atau mengukir papan anda sendiri dan menggunakan komponen smd. Untuk mempelajari cara membuat papan tulis, cukup google, terdapat tutorial hebat yang terdapat dalam talian.

Saya telah mengukir papan saya sendiri dan saya sangat gembira dengan hasil akhir (papan kecil, stabil dan kukuh). Ya, saya tahu bahawa potongannya menyakitkan, tetapi saya tidak dapat menggunakan alat kuasa sehingga larut malam dan saya hanya memotong papan dengan gunting timah saya.

Ngomong-ngomong, jejak pada gambar itu bukan tembaga kosong, mereka telah dirawat dengan bahan kimia jahat yang sedikit mengikat tembaga (disyaki boleh menyebabkan barah, jadi gunakannya dengan berhati-hati, bola getah dan topeng debu):

Gunakan skema di atas untuk merancang susun atur anda atau anda hanya boleh menggunakan jejak pcb saya untuk mengukir papan anda.

Langkah 4: Berurusan dengan Perisian

Litar dalam projek ini sangat mudah, perisian sebaliknya memerlukan usaha yang lebih besar.

Kami memerlukan sekurang-kurangnya 2 perpustakaan (satu lagi jika anda tidak menggunakan kristal) ditambah 2 pemuat but untuk membuat ini berfungsi. Semasa saya memulakan projek ini, saya menguji beberapa perpustakaan, kadang-kadang ia tidak berfungsi dan banyak kali mereka tidak dikonfigurasi untuk berfungsi dengan Attiny85 di luar kotak (saya belum tahu itu). Kemudian saya mendapati masalah dengan perpustakaan / pemuat but yang saling bertindih. Akhirnya saya terpaksa mengatasi banyak kesilapan semasa menyambungkan litar terakhir ke PC saya. Walaupun begitu, saya tidak mempunyai panduan ini, jadi saya rasa anda akan baik-baik saja, ikuti langkah-langkah dalam arahan ini, jika anda melakukannya tanpa melakukan kesalahan, anda pasti baik-baik saja:)

Kita sekarang perlu memasang dan mengkonfigurasi beberapa perpustakaan:

  • v-usb untuk perpustakaan arduino: perpustakaan ini membolehkan mikrokontroler dikenali oleh PC sebagai Papan Kekunci USB HID, dan kami akan menggunakannya untuk menghantar sebatan kekunci ke PC. Perpustakaan ini memerlukan beberapa perubahan agar serasi dengan attiny85
  • perpustakaan tinytuner hanya jika anda tidak akan menggunakan kristal 16Mhz. Anda perlu kemudian mengkalibrasi jam dalaman mikrokontroler. Perpustakaan ini berfungsi di luar kotak.
  • Perpustakaan Attiny-IR untuk berinteraksi dengan sensor IR. Perpustakaan ini berfungsi di luar kotak.

Kami juga memerlukan 2 pemuat but:

  • Versi Perisian Anjing, dengan antara muka bersiri tersedia. Pemuat but ini memerlukan tweak kecil untuk berfungsi dengan attiny85 kerana ia menggunakan pemasa1 untuk fungsi milis () dan tidak akan berfungsi dengan perpustakaan IR. Kita perlu menukar pemasa menjadi pemasa0.
  • Versi Mellis, bootloader stabil yang akan kita gunakan pada peringkat akhir. Ini berfungsi di luar kotak.

Langkah 5: Pemasangan dan Konfigurasi Perpustakaan V-usb

Muat turun perpustakaan dari https://code.google.com/archive/p/vusb-for-arduin… Unzip fail dan salin perpustakaan folder / UsbKeyboard ke dalam folder perpustakaan buku sketsa anda.

Sekarang anda perlu mengedit beberapa fail agar serasi dengan ATtiny85 (dikonfigurasi untuk berfungsi dengan arduino):

A) edit usbconfig.h:

di bawah perubahan "Hardware Config":

#tentukan USB_CFG_IOPORTNAME Dto ## tentukan USB_CFG_IOPORTNAME B

dan

#tentukan USB_CFG_DMINUS_BIT 4untuk # tentukan USB_CFG_DMINUS_BIT 0

di bawah perubahan "Konfigurasi Perkakasan Pilihan":

#tentukan USB_CFG_PULLUP_IOPORTNAME Dto ## tentukan USB_CFG_PULLUP_IOPORTNAME B

Untuk membuat spesifikasi "boot compliant HID" penuh (jika tidak ada kunci multimedia yang berfungsi), ubah juga:

#tentukan USB_CFG_INTERFACE_SUBCLASS 0 // Bootto #efinisikan USB_CFG_INTERFACE_SUBCLASS 0x01 // Boot

dan

#tentukan USB_CFG_INTERFACE_PROTOCOL 0 // Papan kekunciuntuk # tentukan USB_CFG_INTERFACE_PROTOCOL 0x01 // Papan kekunci

Secara pilihan, anda juga boleh menukar nama pengeluar dan peranti dalam takrif berikut:

#tentukan USB_CFG_VENDOR_NAME

#tentukan USB_CFG_DEVICE_NAME

B) edit UsbKeyboard.h:

ubah:

PORTD = 0; // TODO: Hanya untuk pin USB? DDRD | = ~ USBMASK;

ke

PORTB = 0; // TODO: Hanya untuk pin USB? DDRB | = ~ USBMASK;

Untuk membenarkan kod lebih dari 101 berubah juga:

0x25, 0x65, // LOGICAL_MAXIMUM (101) hingga: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

dan

0x29, 0x65, // USAGE_MAXIMUM (Aplikasi Papan Kekunci) hingga: 0x29, 0xE7, // USAGE_MAXIMUM (Aplikasi Papan Kekunci)

Anda mungkin perlu mengedit juga 3 fail ini:

usbdrv.husbdrv.cUsbKeyboard.h

dan setiap kali anda melihat PROGMEM menambah "const" sebelum nama jenis pemboleh ubah (cth: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Sekiranya ini tidak jelas, lawati

Anda boleh mengelakkan semua perubahan ini jika anda memuat turun perpustakaan yang dilampirkan (saya membuat semua perubahan ini sendiri) dan hanya mengeluarkannya di dalam folder perpustakaan buku sketsa anda:

UsbKeyboard dikonfigurasi untuk attiny85

Edit: baru-baru ini saya mendapati bahawa Alejandro Leiva (https://github.com/gloob) telah mengurus perpustakaan ini dan nampaknya berfungsi dengan baik juga. Anda juga boleh mencuba versinya dengan perubahan yang diperlukan yang saya buat untuk membuatnya berfungsi dengan attiny, jadi jika anda ingin menyemaknya, hanya mengeluarkannya di dalam folder perpustakaan buku sketsa anda.

UsbKeyboard dikonfigurasi untuk attiny85 (versi Alejandro Leiva)

Langkah 6: Pemasangan Perpustakaan Attiny-IR dan Tinytuner

A) Perpustakaan Attiny-IR:

muat turun dari https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… kemudian lepaskan zip ke folder perpustakaan buku lakaran anda.

B) Perpustakaan Tinytuner:

Ini hanya diperlukan jika anda tidak menggunakan kristal 16Mhz, tetapi percayalah, walaupun ia berfungsi juga tanpa kristal, ia jauh lebih stabil dengannya dan harganya beberapa sen, jadi tetap mudah, gunakan kristal dan langkau perpustakaan ini.

Belum yakin? ok, muat turun pustaka darihttps://storage.googleapis.com/google-code-archive… kemudian lepaskan zip ke folder perpustakaan buku sketsa anda.

Kita sudah selesai dengan perpustakaan, sekarang kita beralih untuk memasang bootloader.

Langkah 7: Pemasangan dan Konfigurasi Bootloader

Kami akan memasang dua pemuat but yang Mellis sesuai dengan pengalaman saya lebih stabil dan kami akan menggunakannya dalam lakaran akhir. Yang lain yang dibangunkan oleh Rowdy Dog Software adalah teras yang hebat, sangat kecil dan dengan antara muka bersiri bersepadu, tetapi alat kawalan jauh saya terhenti setelah beberapa ketika dengannya, jadi kami akan menggunakan bootloader ini hanya untuk menentukur jam dalaman attiny85 dan untuk menyahkod jarak jauh kami butang.

Saya tahu bahawa ada perpustakaan yang tersedia untuk memberikan kemampuan bersiri attiny85, tetapi kemudian anda perlu mengubah perpustakaan yang menggunakan objek bersiri… Saya lebih suka prosedur ini.

Mari mulakan dengan pemasangan:

A) Pemuat but Mellis:

hanya buka pilihan Arduino IDE dan tambahkan URL Pengurus Papan Tambahan:

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

Kemudian buka pengurus papan Arduino IDE dan cari attiny, pasang papan dari Mellis. Sekarang anda akan melihat Arduino ID papan ATtiny25 / 45/85 dan ATtiny24 / 44/84.

B) Pemuat but kecil perisian Rowdy Dog:

muat turun pemuat but dari

Buka zip fail dan salin folder kecil di dalam buku sketsa / perkakasan anda (buat folder ini jika belum ada). kemudian pindah ke folder sketsa / perkakasan / tiny / avr / dan:

1) salin fail Prospective Boards.txt ke papan fail.txt

2) edit platform.txt fail dan buat beberapa perubahan:

Tanggalkan compiler.path pemboleh ubah dan biarkan ke arah perkakasan / alat / avr / bin / folder di dalam folder pemasangan arduino anda:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER} / perkakasan / alat / avr / bin /

ubah alsocompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

Kemudian ubah pemboleh ubah berikut memastikan semuanya berada di tempatnya (fail tersebut mesti ada, jika tidak, arahkan pemboleh ubah ke jalan yang betul):

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

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

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

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

3) edit core core / tiny / core_build_options.h dan ubah:

#tentukan TIMER_TO_USE_FOR_MILLIS 1 hingga # tentukan TIMER_TO_USE_FOR_MILLIS 0

Ini sangat penting, jika tidak, penerima IR akan mengeluarkan sifar untuk setiap butang. Pernyataan ini mengkonfigurasi pemasa0 untuk fungsi milis () meninggalkan pemasa1 tersedia untuk perpustakaan IR. Sketsa akhir akan mematikan pemasa 0 sehingga anda tidak akan mempunyai fungsi milis () dan kelewatan (). Anda mungkin mempunyai fungsi delayMicroseconds () yang ada.

Pemuat but ini minimum, tetapi telah merangkumi sokongan objek Serial:

Attiny85 PB2 (pin7) adalah TX dan PB0 (pin5) adalah RX

Anda boleh mempunyai konfigurasi dengan programmer ISP (arduino) dan penyambung siri ke usb yang disambungkan pada masa yang sama sehingga anda tidak perlu terlalu kerap menukar wayar:

Sekarang kita mempunyai perpustakaan dan bootloader yang dipasang dan dikonfigurasikan dengan betul, kerja paling sukar diselesaikan dan kita boleh mula menguji semuanya.

Langkah 8: Membakar Bootloader dan Memuat naik Sketsa

Saya sangat menyarankan untuk mengaktifkan output verbose di bawah pilihan Arduino IDE supaya anda dapat mengetahui apa-apa masalah akhirnya.

Untuk membakar bootloader ke Attiny85, anda perlu memuat naik contoh ISP ke Arduino dan kemudian pilih pengaturcara Arduino sebagai ISP.

Sekarang letakkan kapasitor 10uF antara reset dan pin ground pada arduino (ia tidak diperlukan untuk proses pembakaran, tetapi untuk memuat naik lakaran ke attiny85).

Sekarang arduino sudah siap untuk membakar pemuat but dan memuatkan lakaran. Anda hanya perlu memilih papan yang sesuai dengan hiasan anda dan membakarnya.

Untuk memuatkan sketsa ke Attiny85, masukkan ke arduino IDE dan klik "Upload menggunakan programmer".

PENTING: semasa memuat naik lakaran terdapat 3 langkah, penyusunan, penulisan dan pengesahan. Sekiranya penyusunan dan penulisan berjaya, tetapi proses pengesahan gagal, ada kemungkinan sketsa akan berjaya.

Langkah 9: Kalibrasi Jam Dalaman Attiny85 (lewatkan ini jika anda menggunakan kristal)

Sekiranya anda memutuskan untuk tidak menggunakan kristal 16Mhz, anda perlu mengkalibrasi jam attiny85 anda, jadi kami memerlukan pemuat but dengan antara muka bersiri yang tersedia dan kami akan menggunakan perpustakaan tinytuner untuk mendapatkan penentukuran yang betul.

Ikuti langkah seterusnya

  • pilih di bawah alat yang Arduino sebagai pengaturcara ISP
  • pilih papan "ATtiny85 @ 8MHz (pengayun dalaman; BOD dilumpuhkan)"
  • Saya menganggap bahawa anda mempunyai sambungan ISP seperti yang dijelaskan sebelum menyambung sebaliknya lakukan sambungan
  • bakar pemuat but
  • bootloader ini telah mengkonfigurasi pin yang berbeza untuk antara muka bersiri, gunakan konfigurasi ini hanya untuk bootloader semasa

- PB4 (pin3 RX) ke TX di FT232RL attiny85 - PB3 (pin2 TX) ke RX di FT232RL attiny85 - GND (pin4) ke GND pada FT232RL kerana attiny85 sudah digerakkan oleh arduino, Anda tidak perlu menyambung 5v pada FT232RL, jika tidak, sambungkan: attiny85 VCC (pin8) hingga 5V pada FT232RL

  • muat naik contoh tinytuner ke attiny85
  • buka program skrin untuk memantau komunikasi bersiri: screen / dev / ttyUSB0 9600
  • set semula attiny85 yang menghubungkan pin RESET (pin1) ke GND (sebentar), Mesej alu-aluan akan dipaparkan di tetingkap skrin
  • Terus hantar aksara 'x' tunggal (tidak ada kembalinya kereta; tidak ada suapan baris) sehingga penentukuran selesai
  • beri penjelasan di suatu tempat nilai penentukuran (OSCCAL = 0x). Inilah nilai yang perlu anda nyatakan pada lakaran akhir

Langkah 10: Nyahkod Butang Jauh Anda

Kini tiba masanya untuk menyahkod butang jarak jauh kami dan menetapkannya ke sebatan kekunci tertentu di PC, untuk melakukannya ikuti langkah seterusnya:

  • pilih papan "ATtiny85 @ 16MHz (PLL dalaman; BOD 4.3V)" jika anda tidak menggunakan kristal, "ATtiny85 @ 16 MHz (kristal luaran; 4.3 V BOD" jika tidak, kemudian bakar
  • muatkan lakaran:
  • Sekiranya anda tidak menggunakan kristal, lepaskan baris yang mengandungi pemboleh ubah OSCCAL dan tetapkan pada nilai yang anda dapati semasa anda melakukan penentukuran jam
  • Saya menganggap bahawa sensor disambungkan seperti yang dijelaskan sebelumnya, jika tidak, sambungkannya
  • Saya juga menganggap bahawa siri FT232RL ke penyesuai usb disambungkan, jika tidak, sambungkannya
  • tetapkan semula attiny85 yang menghubungkan pin RESET (pin1) ke GND (sebentar)
  • tekan berulang kali butang alat kawalan jauh anda dan periksa tetingkap skrin, anda perlu memberi penjelasan nombor terakhir untuk setiap rekod, setiap butang boleh menghasilkan 2 nombor yang berbeza

Contoh:

DITERIMA D44 3396 DITERIMA 544 1348

Nyatakan 3396 dan 1348 dengan butang yang baru anda tekan, maka anda mesti memutuskan apa yang anda mahu lakukan dengan butang itu. Contohnya, saya mahu butang itu menghantar kod multimedia “Volume up”, maka saya perlu mencari ID untuk keode itu. Untuk melakukannya, muat turun PDF:

Perhatikan bahagian "Halaman Papan Kekunci / Pad Keypad" halaman 53 dan gunakan nombor di lajur ID Penggunaan (Dis) untuk mengikat butang jauh anda ke kod papan kekunci. Dalam contoh kita dapat melihat bahawa kod kunci untuk "Volume up" adalah: 128.

Edit fail fail UsbKeyboard.h di dalam perpustakaan UsbKeyboard dari pakej v-usb yang kami pasang sebelumnya dan tambahkan ke definisi yang ada jika belum ada:

#tentukan KEY_VOL_UP 128

Apabila kita selesai dengan semua butang jarak jauh / s dan semua definisi dalam fail UsbKeyboard.h sudah siap kita dapat beralih ke langkah terakhir.

Langkah 11: Memuatkan Sketsa Akhir dan Harapan yang Terbaik

Memuatkan Sketsa Akhir dan Harapan yang Terbaik!
Memuatkan Sketsa Akhir dan Harapan yang Terbaik!
Memuatkan Sketsa Akhir dan Harapan yang Terbaik!
Memuatkan Sketsa Akhir dan Harapan yang Terbaik!

Kami sekarang mempunyai semua butang jauh yang didekodkan, fail UsbKeyboard.h diisi dengan kod kunci kami, jadi sekarang kami dapat memuatkan ke arduino IDE lakaran pasti dari:

github.com/venumz/ATtiny85-USB-IR-receiver…

Fail ini adalah fail yang tepat yang saya gunakan untuk penerima saya, dan berfungsi untuk 2 alat kawalan jauh yang berbeza, jadi dengan jelas anda perlu mengemas kini untuk bekerja dengan alat kawalan jauh anda.

Sekiranya anda tidak menggunakan kristal, lepaskan baris yang mengandungi pemboleh ubah OSCCAL dan tetapkan pada nilai yang anda dapati semasa anda melakukan penentukuran jam

Perhatikan bahawa dalam fungsi gelung terdapat banyak pernyataan seperti ini:

jika (hasil.value == 3405 || hasil.value == 1357) {// anak panah ke atas

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

}

Anda mesti membuat pernyataan anda sendiri, satu per butang di alat kawalan jauh anda. Dalam keadaan "if" anda mesti memasukkan hasilnya. Nilailah nilai yang telah anda temui menyahkod remote anda dan sebagai hujah kaedah UsbKeyboard.sendKeyStroke, anda mesti meletakkan salah satu kod yang sudah ditentukan dalam fail UsbKeyboard.h.

Syarat "if (lastStroke! = Results.value)" diperlukan kerana beberapa alat kawalan jauh menghantar kod yang sama dua kali setiap klik, dan ini menghalang hit kedua. Saya tidak begitu pasti dan Ini mungkin bergantung pada protokol IR yang telah diprogramkan ke alat kawalan jauh anda (saya sebenarnya tidak pakar dalam protokol IR) tetapi mengikut pengalaman saya dengan alat kawalan jauh saya sendiri, setiap butang dapat menghasilkan 2 kod yang berbeza dan semasa anda menekan dan menahan butang, ia akan menghantar kod yang sama, tetapi jika anda menekan butang itu lagi, ia akan menghantar yang lain. Oleh itu, nampaknya kod-kod tersebut dihantar dengan cara alternatif, saya rasa ini adalah mod standard untuk mengetahui berapa kali anda benar-benar menekan butang.

Ok, kita hampir selesai, muat naik lakaran terakhir, sambungkan ke PC dan lihat bagaimana kelanjutannya.

Untuk langkah ini, lebih baik jika anda mencabut penyesuai arduino dan usb ke siri dan kemudian, pasangkan USB ke port PC anda (sekiranya ada masalah, litar anda akan lebih mudah untuk debug).

Sekiranya semuanya berfungsi dengan baik, semasa anda membuka terminal dan menghantar arahan dmesg, anda akan melihat sesuatu yang serupa dengan gambar pertama pada langkah ini. Sekiranya terdapat masalah, anda seharusnya mempunyai kesalahan seperti yang terdapat pada gambar kedua dan anda mesti mula menyahpepijat litar dan / atau perisian anda. Salah satu sumber ralat awal yang saya ada ialah hab USB yang tidak berfungsi dengan penerima IR saya (yang lain berfungsi) … jadi lebih baik untuk langkah terakhir ini untuk memasang penerima IR terus ke port PC anda. Kesalahan akhirnya mungkin sukar dicari, tetapi pada akhirnya, seperti saya, anda akan belajar banyak dan harga yang harus dibayar adalah berbaloi, saya jamin.

Itu sahaja, beritahu saya jika anda melihat kesilapan dalam arahan ini dan nikmati penerima IR IR baru anda!

Disyorkan: