Daftar Isi:

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

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

Video: ATtiny85 IR USB Receiver: 11 Langkah (dengan Gambar)
Video: ATtiny85 IR Remote Control for Room Automation, smallest Arduino 2024, Juli
Anonim
Penerima USB ATtiny85 IR
Penerima USB ATtiny85 IR

PERINGATAN, INSTRUCTABLE INI TELAH Usang

Pustaka v-usb dirancang untuk bekerja dengan protokol USB 1.1 yang hampir tidak ada saat ini. Dengan hadirnya USB3 Anda akan mengalami lebih dari sakit kepala mencoba membuat perangkat v-usb berfungsi. Setelah mengganti pusat multimedia saya, saya mendapatkan banyak masalah stabilitas dan meskipun receiver berfungsi, setelah beberapa saat berhenti bekerja. Saya telah gagal mencoba untuk memperbaikinya. Saya juga membuat versi atmega328p tetapi yang ini memiliki masalah yang sama. Menggunakan pengatur waktu pengawas untuk mengatur ulang papan secara berkala juga tidak membantu, jadi saya menyerah pada v-usb.

Bantulah diri Anda sendiri dan jangan melanjutkan instruksi ini kecuali untuk tujuan pendidikan. Saya sarankan sebagai gantinya membeli modul chip ATmega 32U4 yang telah mengintegrasikan antarmuka usb dan ikuti panduan ini:

www.sparkfun.com/tutorials/337

Kemudian masukkan sensor IR TSOP31238 dan Anda siap melakukannya.

Halo pembuat! ini adalah instruksi untuk membangun penerima IR USB yang berfungsi menggunakan mikrokontroler Attiny85. Saya memulai proyek ini untuk mengatasi kurangnya dukungan (setidaknya dukungan lengkap) untuk beberapa remote IR di GNU/Linux OS. Dengan mengikuti petunjuk ini, Anda dapat membuat penerima IR USB yang dapat diprogram yang bekerja dengan remote IR apa pun dengan harga beberapa dolar.

Pertama-tama, instruksi ini tidak akan ada tanpa kerja keras dari orang-orang yang membuat perpustakaan yang saya gunakan di sini:

  • David A. Mellis untuk inti attiny-nya
  • Perangkat Lunak Anjing Rowdy untuk perpustakaan mereka TinyTuner
  • Perangkat Lunak Anjing Rowdy untuk bootloader kecil mereka
  • Rancidbacon (https://rancidbacon.com/) untuk port arduino dari perpustakaan v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee untuk perpustakaan IR-nya untuk inti kecil yang ditemukan di komentar kode https://www.instructables.com/id/Attiny-IR-librar… yang dapat diinstruksikan di https://www.instructables.com/id/Attiny-IR -perpustakaan…

Terkadang tidak mudah untuk menemukan pemilik perpustakaan yang tepat, jadi jika saya melakukan kesalahan, silakan tinggalkan komentar dan saya akan menyelesaikan masalah ini secepatnya.

Panduan ini ada karena saya tidak menemukan tutorial/panduan lengkap yang bekerja di luar kotak (mungkin ada, tetapi saya tidak dapat menemukannya) jadi saya mengumpulkan semua info yang tersedia di web dan setelah sejumlah percobaan dan kesalahan Saya datang dengan panduan lengkap untuk membangun penerima USB IR yang berfungsi yang benar-benar berfungsi dengan baik.

Sumber informasi 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 ISP AVR dan saya tidak terlalu suka membelinya, jadi saya menggunakan Arduino untuk memprogram attiny85
  • Saya tidak peduli dengan OS lain selain GNU/Linux jadi saya tidak tahu apakah ini akan berhasil.
  • ada perpustakaan IR lain tetapi saya tidak dapat membuatnya berfungsi bahkan dengan Arduino. Pertimbangkan bahwa saya mulai dengan pengetahuan terbatas tentang perpustakaan IR. Mungkin saya bisa membuatnya bekerja sekarang setelah pengalaman yang diperoleh menangani cukup banyak masalah. Bagaimanapun, saya tersesat dan putus asa sebelum menemukan perpustakaan yang disediakan Seejaydee dan saya telah menggunakannya sejak itu (terima kasih banyak kawan!).
  • Ada konfigurasi perangkat keras lain, tetapi saya hanya menggunakan yang menggunakan 5V untuk memberi daya pada attiny85 dan dua dioda zener 3.6V 0,5W untuk menjepit tegangan jalur data, ini berfungsi di luar kotak jadi saya tidak mengacaukannya konfigurasi lainnya.
  • Anda dapat menggunakan kristal 16Mhz atau Anda dapat menggunakan perpustakaan tinytuner untuk mengkalibrasi jam internal attiny85 Anda. Saya sangat menyarankan penggunaan kristal, itu jauh lebih stabil dan mungkin akan menghindarkan Anda dari banyak sakit kepala.
  • Saya menggunakan di sini dua bootloader berbeda untuk attiny85:

a) Versi Software Anjing Rowdy, telah mengintegrasikan antarmuka serial yang sangat keren dan sangat kecil sehingga Anda memiliki lebih banyak ruang untuk program Anda dan perpustakaan lainnya. Masalahnya adalah karena beberapa alasan meskipun berfungsi dengan baik, setelah beberapa waktu perangkat usb terputus (Anda dapat menemukan masalah dengan perintah dmesg). Saya tidak tahu apakah ini masalah inti atau kombinasi campuran inti ditambah perpustakaan yang dipilih jadi setelah beberapa saat saya memutuskan untuk menggunakan inti ini hanya untuk memecahkan kode tombol jarak jauh dan mengkalibrasi jam (bila tidak menggunakan 16Mhz kristal). Setelah itu saya tinggal burn bootloader Mellis dan upload sketch definitif yang tidak menggunakan serial interface.

b) Versi Mellis, bootloader stabil, saya telah menggunakan ini di banyak proyek. Saya akan selalu menggunakan bootloader ini jika menyertakan antarmuka serial. Saya menggunakan inti ini dalam sketsa terakhir setelah mendekode semua tombol pada remote saya.

Langkah 2: Mari Mulai Dengan Perangkat Keras

Mari Mulai Dengan Perangkat Keras
Mari Mulai Dengan Perangkat Keras
Mari Mulai Dengan Perangkat Keras
Mari Mulai Dengan Perangkat Keras
Mari Mulai Dengan Perangkat Keras
Mari Mulai Dengan Perangkat Keras

Alat yang Anda butuhkan:

  • papan yang kompatibel dengan arduino
  • adaptor serial ke usb untuk memecahkan kode kunci jarak jauh Anda (cukup gunakan FT232RL)
  • PC dengan GNU/Linux terinstal dan arduino IDE dikonfigurasi dengan benar, saya menggunakan arduino IDE 1.8.0
  • remote IR untuk menguji perangkat Anda (bahkan yang jelek seperti yang ditemukan di starter kit arduino akan berfungsi)
  • multimeter untuk men-debug papan Anda (saya harap Anda tidak membutuhkannya, semoga berhasil!)

Daftar bahan:

  • 1 attiny85
  • 2 resistor 68R
  • 1 1.5K resistor
  • 1 4.7K resistor
  • 1 kristal 16Mhz
  • 1 kapasitor 22pF
  • 1 0.1uF kapasitor
  • 1 10uF kapasitor
  • 2 dioda zener 3.6V 0.5W
  • 1 konektor USB tipe A laki-laki
  • 1 pin strip dengan 6 pin untuk memprogram dan men-debug board.
  • 1 sensor IR TSOP31238
  • banyak kopi untuk membuatmu tetap terjaga

Sebelum menyolder papan definitif, Anda mungkin ingin membuat prototipe papan tempat memotong roti untuk tujuan pengujian, mengikuti skema yang dilampirkan pada instruksi ini harus cukup untuk membangunnya.

Untuk menghubungkan attiny85 ke PC, desain akhir menggunakan konektor USB tipe A yang disolder ke papan, tetapi untuk prototipe Anda perlu membuat kabel USB yang dapat Anda sambungkan ke papan tempat memotong roti:

Solder ke sepotong kecil perfboard 4 pin, lalu potong kabel USB lama dan solder pin ke 4 kabel di dalam kabel usb:

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

Satukan semuanya dengan lem panas.

Sekarang kita perlu menghubungkan programmer ISP (Arduino), adaptor USB ke serial (FT232RL) dan sensor IR ke attiny85.

Anda dapat membiarkan semuanya terhubung sehingga Anda dapat membakar bootloader yang berbeda, memuat sketsa, dan memeriksa port serial tanpa mengubah kabel, Untuk melakukannya, hubungkan semuanya dengan mengikuti petunjuk berikut:

Programmer ISP (Arduino): ini memungkinkan kita untuk membakar bootloader dan memuat sketsa

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

usb ke adaptor serial (FT232RL): ini memungkinkan kita untuk memeriksa port serial

  • attiny85 PB0 (pin5 RX) ke TX di FT232RL
  • attiny85 PB2 (pin7 TX) ke RX di FT232RL
  • attiny85 GND (pin4) ke GND pada FT232RL
  • karena attiny85 sudah ditenagai oleh arduino, Anda tidak perlu menghubungkan 5v pada FT232RL, jika tidak, sambungkan: attiny85 VCC (pin8) ke 5V pada FT232RL

usb ke adaptor serial (FT232RL) hanya untuk kalibrasi jam (hanya untuk bootloader "ATtiny85 @ 8MHz (osilator internal; BOD dinonaktifkan)")

  • PB4 (pin3 RX) ke TX di FT232RL attiny85
  • PB3 (pin2 TX) ke RX di FT232RL attiny85
  • GND (pin4) ke GND pada FT232RL
  • karena attiny85 sudah ditenagai oleh arduino, Anda tidak perlu menghubungkan 5v pada FT232RL, jika tidak, sambungkan: attiny85 VCC (pin8) ke 5V pada FT232RL

Jika Anda menggunakan kristal 16Mhz, sambungkan ke pin Attiny85 PB3 (pin2) dan PB4 (pin3) dan sambungkan setiap pin ke GND juga melalui tutup 22pF masing-masing.

Filter Attiny85 VCC dengan kapasitor 0,1uF dan 10uF yang menghubungkannya secara paralel ke GND

Hubungkan pin keluaran sensor IR ke attiny85 PB1 (pin6), nyalakan.

Bangun dan hubungkan antarmuka usb:

  • GND (kabel hitam): sambungkan ke GND umum (semua ground terhubung bersama)
  • D- (kabel putih) dihubungkan ke attiny85 PB0 (pin5) melalui resistor 68R, sambungkan juga ke ground melalui zener 3.6V 0.5W dan tarik ke VCC dengan resistor 1.5K
  • D+ (kabel hijau) terhubung ke PB2 melalui resistor 68R, sambungkan ke ground melalui zener 3.6V 0.5W
  • 5V, Anda dapat membiarkannya tidak terhubung karena semuanya ditenagai oleh Arduino pada tahap ini, jika tidak, hubungkan ke attiny85 VCC

Dioda zener dihubungkan sehingga anoda terikat pada GND dan katoda dihubungkan dengan jalur data D+ dan D-.

Langkah 3: Desain Akhir

Desain Akhir
Desain Akhir
Desain Akhir
Desain Akhir
Desain Akhir
Desain Akhir

Untuk desain akhir, Anda dapat menggunakan perfboard dengan komponen lubang tembus atau mengetsa papan Anda sendiri dan menggunakan komponen smd. Untuk mempelajari cara mengetsa papan, cukup google saja, ada tutorial luar biasa yang tersedia secara online.

Saya telah mengetsa papan saya sendiri dan saya sangat senang dengan hasil akhirnya (papan kecil, stabil, dan kokoh). Ya, saya tahu bahwa potongannya payah, tetapi saya tidak dapat menggunakan perkakas listrik apa pun hingga larut malam dan saya potong saja papannya dengan gunting snip timah saya.

Omong-omong, jejak pada gambar bukan tembaga telanjang, mereka telah diperlakukan dengan bahan kimia jahat yang sedikit membuat tembaga (diduga menyebabkan kanker, jadi gunakan dengan sangat hati-hati, bola lateks dan masker debu):

Gunakan skema di atas untuk mendesain tata letak Anda atau Anda bisa menggunakan jejak PCB saya untuk mengetsa papan Anda.

Langkah 4: Berurusan Dengan Perangkat Lunak

Rangkaian dalam proyek ini sangat mudah, perangkat lunak malah membutuhkan usaha yang lebih besar.

Kami membutuhkan setidaknya 2 perpustakaan (satu lagi jika Anda tidak menggunakan kristal) ditambah 2 bootloader untuk membuat ini berfungsi. Ketika saya memulai proyek ini, saya menguji beberapa perpustakaan, kadang-kadang mereka tidak berfungsi dan sering kali mereka tidak dikonfigurasi untuk bekerja dengan Attiny85 di luar kotak (saya belum tahu itu). Kemudian saya menemukan masalah dengan perpustakaan/bootloader yang tumpang tindih. Akhirnya saya harus berurusan dengan cukup banyak kesalahan ketika saya menghubungkan sirkuit terakhir ke PC saya. Saya tidak memiliki panduan ini, jadi saya pikir Anda akan baik-baik saja, cukup ikuti langkah-langkah dalam instruksi ini, jika Anda melakukannya tanpa membuat kesalahan, Anda seharusnya baik-baik saja:)

Sekarang kita perlu menginstal dan mengkonfigurasi beberapa perpustakaan:

  • v-usb untuk perpustakaan arduino: perpustakaan ini memungkinkan mikrokontroler dikenali oleh PC sebagai Keyboard USB HID, dan kami akan menggunakannya untuk mengirim penekanan tombol ke PC. Pustaka ini memerlukan beberapa perubahan agar kompatibel dengan attiny85
  • perpustakaan tinytuner hanya jika Anda tidak akan menggunakan kristal 16Mhz. Anda kemudian perlu mengkalibrasi jam internal mikrokontroler. Perpustakaan ini bekerja di luar kotak.
  • Attiny-IR-library untuk berinteraksi dengan sensor IR. Perpustakaan ini bekerja di luar kotak.

Kami juga membutuhkan 2 bootloader:

  • Versi Perangkat Lunak Anjing, dengan antarmuka serial tersedia. Bootloader ini memerlukan tweak kecil untuk bekerja dengan attiny85 karena menggunakan timer1 untuk fungsi millis() dan tidak akan bekerja dengan perpustakaan IR. Kita perlu mengubah timer ke timer0.
  • Versi Mellis, bootloader stabil yang akan kita gunakan di tahap akhir. Ini bekerja di luar kotak.

Langkah 5: Instalasi dan Konfigurasi Perpustakaan V-usb

Unduh perpustakaan dari https://code.google.com/archive/p/vusb-for-arduin…Unzip file dan salin folder perpustakaan/UsbKeyboard ke folder perpustakaan buku sketsa Anda.

Sekarang Anda perlu mengedit beberapa file agar kompatibel dengan ATtiny85 (dikonfigurasi untuk bekerja dengan arduino):

A) edit usbconfig.h:

di bawah perubahan "Konfigurasi Perangkat Keras":

#menentukan USB_CFG_IOPORTNAME Duntuk##menentukan USB_CFG_IOPORTNAME B

dan

#menentukan USB_CFG_DMINUS_BIT 4untuk#menentukan USB_CFG_DMINUS_BIT 0

di bawah perubahan "Konfigurasi Perangkat Keras Opsional":

#menentukan USB_CFG_PULLUP_IOPORTNAME Duntuk##menentukan USB_CFG_PULLUP_IOPORTNAME B

Untuk membuat spesifikasi lengkap "HID yang sesuai dengan boot" (jika tidak, tombol multimedia tidak akan berfungsi), ubah juga:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#define USB_CFG_INTERFACE_SUBCLASS 0x01 // Boot

dan

#menentukan USB_CFG_INTERFACE_PROTOCOL 0 // Keyboarduntuk#menentukan USB_CFG_INTERFACE_PROTOCOL 0x01 // Keyboard

Secara opsional, Anda juga dapat mengubah nama pabrikan dan perangkat dalam definisi berikut:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) edit UsbKeyboard.h:

mengubah:

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

ke

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

Untuk mengizinkan kode kunci lebih dari 101 ubah juga:

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

dan

0x29, 0x65, // USAGE_MAXIMUM (Aplikasi Keyboard)ke:0x29, 0xE7, // USAGE_MAXIMUM (Aplikasi Keyboard)

Anda mungkin perlu mengedit juga 3 file ini:

usbdrv.husbdrv.cUsbKeyboard.h

dan setiap kali Anda melihat PROGMEM tambahkan "const" sebelum nama jenis variabel (mis: PROGMEN char usbHidReportDescriptor[35] ==> PROGMEM const char usbHidReportDescriptor[35])

Jika ini tidak jelas kunjungi

Anda dapat menghindari semua perubahan ini jika Anda hanya mengunduh pustaka terlampir (saya membuat semua perubahan ini sendiri) dan mengekstraknya di dalam folder pustaka buku sketsa Anda:

UsbKeyboard dikonfigurasi untuk attiny85

Sunting: baru-baru ini saya menemukan bahwa Alejandro Leiva (https://github.com/gloob) telah diurus perpustakaan ini dan tampaknya berfungsi dengan baik juga. Anda juga dapat mencoba versinya dengan perubahan yang saya buat untuk membuatnya bekerja dengan attiny, jadi jika Anda ingin memeriksa ini, ekstrak saja di dalam folder perpustakaan buku sketsa Anda.

UsbKeyboard dikonfigurasi untuk attiny85 (versi Alejandro Leiva)

Langkah 6: Instalasi Perpustakaan Attiny-IR dan Tinytuner

A) Perpustakaan Attiny-IR:

unduh dari https://drive.google.com/open?id=0B_w9z88wnDtFNHlq…lalu unzip ke folder perpustakaan buku sketsa Anda.

B) Pustaka Tinytuner:

Ini hanya diperlukan jika Anda tidak menggunakan kristal 16Mhz, tetapi percayalah, meskipun ia bekerja juga tanpa kristal, itu jauh lebih stabil dengan itu dan harganya beberapa sen, jadi tetap sederhana, gunakan kristal dan lewati perpustakaan ini.

Belum yakin? ok, unduh perpustakaan dari https://storage.googleapis.com/google-code-archive…lalu unzip ke folder perpustakaan buku sketsa Anda.

Kami selesai dengan perpustakaan, sekarang kami melanjutkan untuk menginstal bootloader.

Langkah 7: Instalasi dan Konfigurasi Bootloader

Kami akan menginstal dua bootloader yang Mellis menurut pengalaman saya lebih stabil dan kami akan menggunakannya dalam sketsa akhir. Yang lain dikembangkan oleh Rowdy Dog Software adalah inti yang luar biasa, sangat kecil dan dengan antarmuka serial terintegrasi yang tersedia, tetapi remote saya jatuh setelah beberapa waktu sehingga kami akan menggunakan bootloader ini hanya untuk mengkalibrasi jam internal attiny85 dan untuk memecahkan kode remote kami tombol.

Saya tahu bahwa ada perpustakaan yang tersedia untuk memberikan kemampuan serial attiny85, tetapi kemudian Anda perlu men-tweak perpustakaan yang menggunakan objek serial…Saya lebih suka prosedur ini.

Mari kita mulai dengan instalasi:

A) Bootloader Mellis:

cukup buka preferensi Arduino IDE dan tambahkan URL Manajer Papan Tambahan:

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

Kemudian buka pengelola papan Arduino IDE dan cari attiny, instal papan dari Mellis. Sekarang Anda akan melihat ID Arduino papan ATtiny25/45/85 dan ATtiny24/44/84.

B) Rowdy Dog Software bootloader kecil:

unduh bootloader dari

Buka zip file dan salin folder kecil di dalam buku sketsa/perangkat keras Anda (buat folder ini jika belum ada). lalu pindah ke folder sketchbook/hardware/tiny/avr/ dan:

1) salin file Prospective Boards.txt ke file boards.txt

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

Batalkan komentar variabel compiler.path dan biarkan menunjuk ke folder hardware/tools/avr/bin/ di dalam folder instalasi arduino Anda:

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

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

Kemudian ubah variabel berikut memastikan semuanya ada di tempatnya (file-file itu harus ada, jika tidak arahkan variabel ke jalur yang benar):

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) edit file cores/tiny/core_build_options.h dan ubah:

#menentukan TIMER_TO_USE_FOR_MILLIS 1 hingga#menentukan TIMER_TO_USE_FOR_MILLIS 0

Ini sangat penting, jika tidak, penerima IR akan mengeluarkan angka nol untuk setiap tombol. Pernyataan ini mengonfigurasi timer0 untuk fungsi milis() sehingga timer1 tersedia untuk perpustakaan IR. Sketsa terakhir akan menonaktifkan timer0 sehingga Anda tidak akan memiliki fungsi millis() dan delay() yang tersedia. Anda mungkin memiliki fungsi delayMicroseconds() yang tersedia sebagai gantinya.

Bootloader ini minimal, tetapi telah menyertakan dukungan objek Serial:

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

Anda dapat memiliki konfigurasi dengan programmer ISP (arduino) dan adaptor serial ke usb yang terhubung secara bersamaan sehingga Anda tidak perlu terlalu sering mengganti kabel:

Sekarang kami memiliki pustaka dan bootloader yang diinstal dan dikonfigurasi dengan benar, pekerjaan tersulit selesai dan kami dapat mulai menguji semuanya.

Langkah 8: Membakar Bootloader dan Mengunggah Sketsa

Saya sangat menyarankan untuk mengaktifkan output verbose di bawah preferensi Arduino IDE sehingga Anda dapat mengetahui masalah akhirnya.

Untuk membakar bootloader ke Attiny85 Anda perlu mengunggah contoh ISP ke Arduino dan kemudian memilih programmer Arduino sebagai ISP.

Sekarang tempatkan kapasitor 10uF di antara pin reset dan ground pada arduino (tidak diperlukan untuk proses pembakaran, tetapi untuk mengunggah sketsa ke attiny85).

Sekarang arduino siap untuk membakar bootloader dan memuat sketsa. Anda hanya perlu memilih papan yang tepat yang kompatibel dengan attiny Anda dan membakarnya.

Untuk memuat sketsa ke Attiny85, muat ke arduino IDE dan klik "Unggah menggunakan programmer".

PENTING: saat mengunggah sketsa ada 3 langkah, kompilasi, penulisan dan verifikasi. Jika kompilasi dan penulisan berhasil, tetapi proses verifikasi gagal, ada kemungkinan sketsa akan tetap berfungsi.

Langkah 9: Kalibrasi Jam Internal Attiny85 (lewati Ini Jika Anda Menggunakan Kristal)

Jika Anda memutuskan untuk tidak menggunakan kristal 16Mhz, Anda perlu mengkalibrasi jam attiny85 Anda, jadi kami akan membutuhkan bootloader dengan antarmuka serial yang tersedia dan kami akan menggunakan perpustakaan tinytuner untuk mendapatkan kalibrasi yang benar.

Ikuti langkah selanjutnya

  • pilih di bawah alat Arduino sebagai programmer ISP
  • pilih papan "ATtiny85 @ 8MHz (osilator internal;BOD dinonaktifkan)"
  • Saya berasumsi bahwa Anda memiliki koneksi ISP yang siap seperti yang dijelaskan sebelum menghubungkan jika tidak, lakukan koneksi
  • bakar bootloader
  • bootloader ini telah mengonfigurasi pin yang berbeda untuk antarmuka serial, gunakan konfigurasi ini hanya untuk bootloader saat ini

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

  • unggah contoh tinytuner ke attiny85
  • buka program layar untuk memantau komunikasi serial: screen /dev/ttyUSB0 9600
  • reset attiny85 yang menghubungkan pin RESET (pin1) ke GND (sebentar), Pesan selamat datang akan ditampilkan di jendela layar
  • Lanjutkan pengiriman karakter 'x' tunggal (tanpa carriage-return; tanpa line-feed) hingga kalibrasi selesai
  • membubuhi keterangan di suatu tempat nilai kalibrasi (OSCCAL = 0x). Ini adalah nilai yang perlu Anda nyatakan pada sketsa akhir

Langkah 10: Decode Tombol Jarak Jauh Anda

Sekarang saatnya untuk memecahkan kode tombol jarak jauh kami dan menetapkannya ke penekanan tombol tertentu di PC, untuk melakukannya ikuti langkah-langkah berikut:

  • pilih board "ATtiny85 @ 16MHz (internal PLL;4.3V BOD)" jika tidak menggunakan kristal, "ATtiny85 @ 16 MHz (external crystal; 4.3 V BOD" jika tidak, lalu bakar
  • memuat sketsa:
  • Jika Anda tidak menggunakan kristal, batalkan komentar pada baris yang berisi variabel OSCCAL dan tetapkan ke nilai yang Anda temukan saat Anda melakukan kalibrasi jam
  • Saya berasumsi bahwa sensor terhubung seperti yang dijelaskan sebelumnya, jika tidak, hubungkan
  • Saya berasumsi juga bahwa serial FT232RL ke adaptor usb terhubung, jika tidak hubungkan
  • reset attiny85 menghubungkan pin RESET (pin1) ke GND (sebentar saja)
  • tekan berulang kali tombol remote Anda dan checkout jendela layar, Anda perlu membubuhi keterangan nomor terakhir untuk setiap catatan, setiap tombol dapat menghasilkan 2 nomor yang berbeda

Contoh:

DITERIMA D44 3396DITERIMA 544 1348

Beri anotasi 3396 dan 1348 terkait dengan tombol yang baru saja Anda tekan, lalu Anda harus memutuskan apa yang ingin Anda lakukan dengan tombol itu. Misalnya saya ingin tombol itu mengirim kode kunci multimedia "Volume naik", maka saya perlu menemukan ID untuk kode kunci itu. Untuk melakukannya, unduh PDF:

Cari bagian "Halaman Keyboard/Keypad" halaman 53 dan gunakan nomor di kolom Usage ID (Des) untuk mengikat tombol remote ke kode keyboard. Dalam contoh kita, kita dapat melihat bahwa kode kunci untuk "Volume naik" adalah: 128.

Edit file file UsbKeyboard.h di dalam perpustakaan UsbKeyboard dari paket v-usb yang kami instal sebelumnya dan tambahkan ke definisi yang ada jika belum ada:

#menentukan KEY_VOL_UP 128

Ketika kita selesai dengan semua tombol remote/s dan semua definisi dalam file UsbKeyboard.h sudah siap, kita dapat melanjutkan ke langkah terakhir.

Langkah 11: Memuat Sketsa Akhir dan Berharap yang Terbaik

Memuat Sketsa Akhir dan Berharap yang Terbaik!
Memuat Sketsa Akhir dan Berharap yang Terbaik!
Memuat Sketsa Akhir dan Berharap yang Terbaik!
Memuat Sketsa Akhir dan Berharap yang Terbaik!

Kami sekarang memiliki semua tombol jarak jauh yang didekodekan, file UsbKeyboard.h diisi dengan kode kunci kami, jadi sekarang kami dapat memuat sketsa definitif ke arduino IDE dari:

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

File ini adalah file persis yang saya gunakan untuk receiver saya, dan berfungsi untuk 2 remote yang berbeda, jadi jelas Anda perlu memperbaruinya agar bisa bekerja dengan remote Anda.

Jika Anda tidak menggunakan kristal, batalkan komentar pada baris yang berisi variabel OSCCAL dan tetapkan ke nilai yang Anda temukan saat melakukan kalibrasi jam

Perhatikan bahwa dalam fungsi loop ada banyak pernyataan seperti ini:

if(results.value==3405 || results.value==1357) { // panah ke atas

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

}

Anda harus membuat pernyataan Anda sendiri, satu per tombol di remote Anda. Dalam kondisi "jika" Anda harus memasukkan hasil. nilai nilai yang Anda temukan decoding remote Anda dan sebagai argumen dari metode UsbKeyboard.sendKeyStroke Anda harus meletakkan salah satu kode kunci yang sudah ditentukan dalam file UsbKeyboard.h.

Kondisi " if(lastStroke!=results.value) " diperlukan karena beberapa remote mengirim kode yang sama dua kali per pukulan, dan ini mencegah pukulan kedua. Saya tidak sepenuhnya yakin dan Ini mungkin tergantung pada protokol IR yang telah diprogram ke dalam remote Anda (saya tidak benar-benar ahli dalam protokol IR) tetapi menurut pengalaman saya dengan remote saya sendiri, setiap tombol dapat menghasilkan 2 kode yang berbeda dan saat Anda menekan dan menahan tombol, ia mengirimkan kode yang sama, tetapi jika Anda menekan tombol lagi, ia akan mengirimkan kode yang lain. Jadi sepertinya kode dikirim dengan cara alternatif, saya kira itu adalah mode standar untuk mengetahui berapa kali Anda benar-benar menekan tombol.

Ok, kita hampir selesai, tinggal upload sketsa terakhir, hubungkan ke PC dan lihat bagaimana kelanjutannya.

Untuk langkah ini, lebih baik jika Anda mencabut arduino dan usb ke adaptor serial dan hanya kemudian, colokkan USB ke port PC Anda (jika terjadi kesalahan, sirkuit Anda akan lebih mudah untuk di-debug).

Jika semuanya bekerja dengan baik, ketika Anda membuka terminal dan mengirim perintah dmesg Anda akan melihat sesuatu yang mirip dengan gambar pertama pada langkah ini. Jika ada masalah, Anda akan mengalami kesalahan seperti yang ditemukan pada gambar kedua dan Anda harus mulai men-debug sirkuit dan/atau perangkat lunak Anda. Salah satu sumber kesalahan awal yang saya alami adalah hub USB yang tidak berfungsi dengan penerima IR saya (yang lain berfungsi)…jadi lebih baik untuk langkah terakhir ini untuk mencolokkan penerima IR langsung ke port PC Anda. Kesalahan akhirnya bisa sulit ditemukan, tetapi pada akhirnya, seperti saya, Anda akan belajar banyak dan harga yang harus dibayar sepadan, saya jamin.

Itu saja, beri tahu saya jika Anda melihat ada kesalahan dalam instruksi ini dan nikmati receiver USB IR baru Anda!

Direkomendasikan: