Talaan ng mga Nilalaman:

ATtiny85 IR USB Receiver: 11 Hakbang (na may Mga Larawan)
ATtiny85 IR USB Receiver: 11 Hakbang (na may Mga Larawan)

Video: ATtiny85 IR USB Receiver: 11 Hakbang (na may Mga Larawan)

Video: ATtiny85 IR USB Receiver: 11 Hakbang (na may Mga Larawan)
Video: Make ATtiny85 IR Remote Control Device Using Relay Module | Learn AVR Microcontroller Programming 2024, Hulyo
Anonim
ATtiny85 IR USB Receiver
ATtiny85 IR USB Receiver

BABALA, ANG INSTRUCTABLE NA ITO AY NAGING OBSOLETE

Ang v-usb library ay idinisenyo upang gumana kasama ang USB 1.1 protocol na halos hindi na umiiral sa panahong ito. Sa pagdating ng USB3 magkakaroon ka ng higit pa sa sakit ng ulo na sinusubukan na gumana ang mga v-usb device. Matapos baguhin ang aking multimedia center, marami akong mga isyu sa katatagan at kahit na gumagana ang tatanggap, makalipas ang ilang sandali ay tumitigil ito sa paggana. Hindi ako matagumpay na sinusubukan na ayusin ito. Gumawa din ako ng isang bersyon ng atmega328p ngunit ang isang ito ay may parehong mga isyu. Ang paggamit ng isang timer ng tagabantay upang mai-reset ang board nang pana-panahon ay hindi rin nakatulong kaya sumuko ako sa v-usb.

Gawin ang iyong sarili ng isang pabor at huwag magpatuloy sa pagtuturo na ito maliban kung para sa mga hangaring pang-edukasyon. Inirerekumenda ko sa halip na bumili ng isang module ng chip na ATmega 32U4 na isinama na ang interface ng usb at sundin ang gabay na ito:

www.sparkfun.com/tutorials/337

Pagkatapos magtapon ng isang IR sensor TSOP31238 at mahusay kang pumunta.

Kamusta mga gumagawa! ito ay isang itinuro upang bumuo ng isang gumaganang USB IR receiver gamit ang isang Attiny85 microcontroller. Sinimulan ko ang proyektong ito upang mapagtagumpayan ang kakulangan ng suporta (hindi bababa sa kumpletong suporta) para sa ilang mga IR remote sa GNU / Linux OS. Kasunod sa mga tagubiling ito maaari kang bumuo ng isang programmable USB IR receiver na gumagana sa anumang IR remote para sa ilang mga pera.

Una sa lahat, ang itinuturo na ito ay hindi magkakaroon nang wala ang pagsusumikap ng mga tao na lumikha ng mga silid aklatan na ginagamit ko dito:

  • David A. Mellis para sa kanyang attiny core
  • Rowdy Dog Software para sa kanilang library na TinyTuner
  • Rowdy Dog Software para sa kanilang maliit na bootloader
  • Rancidbacon (https://rancidbacon.com/) para sa kanyang arduino port ng v-usb library (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee para sa kanyang IR library para sa maliliit na mga core na natagpuan sa mga komento ng itinuturo na https://www.instructables.com/id/Attiny-IR-librar… code sa https://www.instructables.com/id/Attiny-IR -librar…

Minsan ay hindi madaling makahanap ng tamang may-ari ng isang silid-aklatan, kung kaya't nagkamali ako, mangyaring mag-iwan ng komento at malulutas ko ang isyu sa lalong madaling panahon.

Ang gabay na ito ay umiiral dahil hindi ko nakita ang isang kumpletong tutorial / gabay na gumagana sa labas ng kahon (maaaring mayroon ito, ngunit hindi ko ito makita) kaya tinipon ko ang lahat ng impormasyong magagamit sa web at pagkatapos ng maraming pagsubok at mga error na naisip ko ng isang kumpletong gabay upang bumuo ng isang gumaganang USB IR receiver na talagang gumagana nang maayos.

Ang mga pangunahing mapagkukunan ng impormasyon na sinusundan ko:

  • 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…

Hakbang 1: Ilang Pagsasaalang-alang

  • Wala akong pagmamay-ari ng isang AVR ISP programmer at hindi ko talaga ginugusto ang pagbili ng isa kaya gumamit ako ng isang Arduino upang mai-program ang attiny85
  • Wala akong pakialam sa anumang iba pang OS kaysa sa GNU / Linux kaya hindi ko alam kung ito ay gagana kung hindi man.
  • may iba pang mga IR library ngunit hindi ko sila magawang gumana kahit na sa isang arduino. Isaalang-alang man na nagsimula ako sa isang limitadong kaalaman tungkol sa mga aklatan ng IR. Siguro maaari ko silang gumana ngayon matapos ang karanasan na nakuha sa pagharap sa isang patas na halaga ng mga isyu. Gayunpaman, nawala ako at desperado bago hanapin ang silid-aklatan na ibinigay ng Seejaydee at ginamit ko iyon mula pa (maraming salamat sa tao!).
  • Mayroong iba pang mga pag-configure ng hardware, ngunit ginamit ko lamang ang isa na gumagamit ng 5V upang mapagana ang attiny85 at dalawang 3.6V 0.5W zener diode upang i-clamp ang boltahe ng mga linya ng data, gumagana ito sa labas ng kahon kaya't hindi ako nagulo iba pang mga pagsasaayos.
  • Maaari kang gumamit ng isang 16Mhz na kristal o maaari mong gamitin ang tinytuner library upang i-calibrate ang panloob na orasan ng iyong attiny85. Masidhi kong pinapayuhan ang paggamit ng kristal, mas matatag ito at marahil ay makatipid sa iyo ng maraming sakit ng ulo.
  • Gumagamit ako dito ng dalawang magkakaibang mga bootloader para sa attiny85:

a) Bersyon ng Rowdy Dog Software, isinama nito ang isang serial interface na napakalamig at napakaliit upang magkaroon ka ng mas maraming puwang para sa iyong programa at iba pang mga aklatan. Ang problema ay para sa ilang kadahilanan kahit na gumagana ito nang maayos, pagkalipas ng ilang oras ang aparato ng usb ay naka-disconnect (maaari mong makita ang mga isyu sa command dmesg). Hindi ko alam kung ito ay isang problema ng core o isang halo-halong kumbinasyon ng core kasama ang mga napiling aklatan kaya't ilang sandali ay nagpasya akong gamitin ang core na ito upang mai-decode lamang ang mga malalayong key at i-calibrate ang orasan (kapag hindi gumagamit ng 16Mhz kristal). Pagkatapos nito, sinusunog ko lamang ang Mellis bootloader at ina-upload ang tiyak na sketch na hindi gumagamit ng serial interface.

b) Bersyon ng Mellis, matatag na bootloader, ginamit ko ito sa maraming mga proyekto. Gagamitin ko palagi ang bootloader na ito kung may kasamang serial interface. Ginagamit ko ang pangunahing ito sa huling sketch pagkatapos ng pag-decode ng lahat ng mga susi sa aking mga remote.

Hakbang 2: Magsimula Tayo Sa Hardware

Magsimula Tayo Sa Hardware
Magsimula Tayo Sa Hardware
Magsimula Tayo Sa Hardware
Magsimula Tayo Sa Hardware
Magsimula Tayo Sa Hardware
Magsimula Tayo Sa Hardware

Mga tool na kailangan mo:

  • isang board na katugmang arduino
  • isang serial sa usb adapter upang mai-decode ang iyong mga remote key (gumamit lamang ng isang FT232RL)
  • isang PC na may naka-install na GNU / Linux at ang arduino IDE ay maayos na na-configure, gumagamit ako ng arduino IDE 1.8.0
  • isang IR remote upang subukan ang iyong aparato (kahit na ang isang crappy tulad ng mga matatagpuan sa arduino starter kit ay gagana)
  • isang multimeter upang i-debug ang iyong board (sana ay hindi mo ito kailangan, good luck!)

Ang listahan ng mga materyales:

  • 1 attiny85
  • 2 68R resistors
  • 1 1.5K risistor
  • 1 4.7K risistor
  • 1 16Mhz na kristal
  • 1 22pF capacitor
  • 1 0.1uF capacitor
  • 1 10uF capacitor
  • 2 3.6V 0.5W zener diode
  • 1 uri ng USB Isang konektor ng lalaki
  • 1 strip pin na may 6 na pin upang mai-program at i-debug ang board.
  • 1 IR sensor TSOP31238
  • maraming kape upang mapanatili kang gising

Bago ang paghihinang sa tiyak na board, malamang na gugustuhin mong gumawa ng isang prototype ng breadboard para sa mga layunin sa pagsubok, ang pagsunod sa schema na nakakabit sa itinuturo na ito ay dapat na sapat upang maitaguyod ito.

Upang ikonekta ang attiny85 sa PC, ang panghuling disenyo ay gumagamit ng isang uri ng USB Isang konektor na na-solder sa board, ngunit para sa prototype kakailanganin mong gumawa ng isang USB cable na maaari kang kumonekta sa isang breadboard:

Maghinang sa isang maliit na piraso ng perfboard 4 na mga pin, pagkatapos ay gupitin ang isang lumang USB cable at solder ang mga pin sa 4 ng mga wires sa loob ng usb cable:

  • pula ang VCC (5V)
  • itim ay GND
  • maputi ang D-
  • berde ay D +

Panatilihin ang lahat kasama ang mainit na pandikit.

Ngayon kailangan naming ikonekta ang ISP programmer (Arduino), ang USB sa serial adapter (FT232RL) at ang IR sensor sa attiny85.

Maaari mong iwanan ang lahat na magkonekta nang magkasama upang masunog ang iba't ibang mga bootloader, mag-load ng mga sketch at suriin ang serial port nang hindi binabago ang mga wire, Upang magawa ito, ikonekta ang lahat ng sumusunod sa mga tagubiling ito:

ISP programmer (Arduino): pinapayagan kaming sunugin ang mga bootloader at i-load ang mga sketch

  • attiny85 PB0 (pin5) hanggang pin11 (MOSI) sa arduino
  • attiny85 PB1 (pin6) hanggang pin12 (MISO) sa arduino
  • attiny85 PB2 (pin7) hanggang pin13 (SCK) sa arduino
  • attiny85 RESET (pin1) na may pullup (4.6k sa VCC) sa pin10 sa arduino
  • attiny85 VCC hanggang 5V sa arduino
  • attiny85 GND sa GND sa arduino

usb sa serial adapter (FT232RL): pinapayagan kaming suriin ang serial port

  • attiny85 PB0 (pin5 RX) sa TX sa FT232RL
  • attiny85 PB2 (pin7 TX) sa RX sa FT232RL
  • attiny85 GND (pin4) sa GND sa FT232RL
  • dahil ang attiny85 ay pinalakas na ng arduino hindi mo na kailangang ikonekta ang 5v sa FT232RL, kung hindi man ikonekta: attiny85 VCC (pin8) sa 5V sa FT232RL

usb sa serial adapter (FT232RL) para lamang sa pag-calibrate ng orasan (para lamang sa bootloader na "ATtiny85 @ 8MHz (panloob na oscillator; hindi pinagana ng BOD)")

  • Ang PB4 (pin3 RX) sa TX sa FT232RL attiny85
  • PB3 (pin2 TX) hanggang RX sa FT232RL attiny85
  • GND (pin4) sa GND sa FT232RL
  • dahil ang attiny85 ay pinalakas na ng arduino hindi mo na kailangang ikonekta ang 5v sa FT232RL, kung hindi man ikonekta: attiny85 VCC (pin8) sa 5V sa FT232RL

Kung gumagamit ka ng isang 16Mhz na kristal, ikonekta ito sa Attiny85 pin PB3 (pin2) at PB4 (pin3) at ikonekta ang bawat pin sa GND pati na rin sa bawat cap na 22pF bawat isa.

I-filter ang Attiny85 VCC na may 0.1uF at 10uF capacitors na kumokonekta sa kanila nang kahanay sa GND

Ikonekta ang output ng IR sensor output pin sa attiny85 PB1 (pin6), i-power up ito.

Buuin at ikonekta ang interface ng usb:

  • GND (itim na kawad): ikonekta ito sa karaniwang GND (lahat ng mga bakuran ay magkakaugnay)
  • D- (puting wire) na konektado sa attiny85 PB0 (pin5) sa pamamagitan ng isang risistor na 68R, ikonekta din ito sa lupa sa pamamagitan ng isang 3.6V 0.5W zener at hilahin ito hanggang sa VCC na may 1.5K resistor
  • Ang D + (berdeng kawad) ay konektado sa PB2 sa pamamagitan ng isang risistor ng 68R, ikonekta ito sa lupa sa pamamagitan ng isang 3.6V 0.5W zener
  • 5V, maiiwan mo ito na walang koneksyon dahil ang lahat ay pinalakas ng Arduino sa yugtong ito, kung hindi man ikonekta ito sa attiny85 VCC

Ang mga diode ng zener ay konektado upang ang mga anode ay nakatali sa GND at ang mga cathode ay konektado sa mga linya ng data na D + at D-.

Hakbang 3: Pangwakas na Disenyo

Pangwakas na Disenyo
Pangwakas na Disenyo
Pangwakas na Disenyo
Pangwakas na Disenyo
Pangwakas na Disenyo
Pangwakas na Disenyo

Para sa pangwakas na disenyo maaari kang gumamit ng perfboard na may sa pamamagitan ng mga bahagi ng butas o mag-ukit ng iyong sariling board at gumamit ng mga bahagi ng smd. Upang malaman kung paano mag-ukit ng isang board, i-google lamang ito, may mga kahanga-hangang tutorial na magagamit online.

Naukit ko ang aking sariling board at nasisiyahan ako sa huling resulta (maliit, matatag at matatag na board). Oo, alam ko na ang hiwa ay sumuso, ngunit hindi ko magamit ang anumang tool sa kuryente sa sobrang gabi at ako gupitin lamang ang pisara gamit ang aking gunting na snip na lata.

Sa pamamagitan ng paraan, ang mga bakas sa mga imahe ay walang hubad na tanso, sila ay ginagamot sa isang hindi magandang kemikal na bahagyang tinakpan ang tanso (hinihinalang mag-uudyok sa cancer, kaya't gamitin ito nang may mabuting pag-iingat, latex globes at isang dust mask):

Gamitin ang mga eskematiko sa itaas upang idisenyo ang iyong layout o maaari mo lamang gamitin ang aking pcb footprint upang mag-ukit ng iyong board.

Hakbang 4: Pakikitungo Sa Software

Ang circuit sa proyektong ito ay napakadali, ang software sa halip ay nangangailangan ng isang mas malaking pagsisikap.

Kailangan namin ng hindi bababa sa 2 mga aklatan (isa pa kung hindi ka gumagamit ng isang kristal) kasama ang 2 mga bootloader upang magawa ito. Nang sinimulan ko ang proyektong ito sinubukan ko ang ilang mga silid-aklatan, kung minsan ay hindi sila gumana at maraming beses na hindi lamang sila na-configure upang gumana sa isang Attiny85 sa labas ng kahon (hindi ko pa alam iyon). Pagkatapos ay nakita ko ang mga isyu sa mga aklatan / bootloader na magkakapatong na mga pagkakagambala. Sa wakas ay kinailangan kong harapin ang isang patas na halaga ng mga pagkakamali nang ikonekta ko ang pangwakas na circuit sa aking PC. Wala akong gabay na ito, kaya sa palagay ko magiging maayos ka, sundin lamang ang mga hakbang sa itinuro na ito, kung gagawin mo iyon nang hindi nagkakamali dapat kang maging maayos:)

Kailangan namin ngayon upang mag-install at mag-configure ng ilang mga aklatan:

  • v-usb para sa arduino library: pinapayagan ng library na ito ang microcontroller na makilala ng PC bilang isang HID USB Keyboard, at gagamitin namin ito upang magpadala ng mga pangunahing stroke sa PC. Ang library na ito ay nangangailangan ng ilang mga pagbabago upang maging tugma sa attiny85
  • tinytuner library lamang kung hindi ka gagamit ng isang 16Mhz na kristal. Kakailanganin mo pagkatapos upang i-calibrate ang panloob na orasan ng microcontroller. Gumagawa ang library na ito sa labas ng kahon.
  • Ang Attiny-IR-library upang makipag-ugnay sa IR sensor. Gumagawa ang library na ito sa labas ng kahon.

Kailangan din namin ng 2 bootloader:

  • Bersyon ng Dog Software, na magagamit ang serial interface. Ang bootloader na ito ay nangangailangan ng isang maliit na pag-aayos upang gumana kasama ang attiny85 dahil gumagamit ito ng timer1 para sa millis () na function at hindi gagana sa IR library. Kailangan nating baguhin ang timer sa timer0.
  • Bersyon ng Mellis, matatag na bootloader na gagamitin namin sa huling yugto. Gumagana ito sa labas ng kahon.

Hakbang 5: Pag-install at Pag-configure ng V-usb Library

I-download ang library mula sa https://code.google.com/archive/p/vusb-for-arduin…Izip ang file at at kopyahin ang mga library ng folder / UsbKeyboard sa iyong folder ng mga aklatan ng sketchbook.

Ngayon ay kailangan mong i-edit ang isang pares ng mga file upang maging katugma sa ATtiny85 (naka-configure ito upang gumana kasama ang arduino):

A) i-edit ang usbconfig.h:

sa ilalim ng pagbabago ng "Hardware Config":

# tukuyin ang USB_CFG_IOPORTNAME Dto ## tukuyin ang USB_CFG_IOPORTNAME B

at

# tukuyin ang USB_CFG_DMINUS_BIT 4to # tukuyin ang USB_CFG_DMINUS_BIT 0

sa ilalim ng pagbabago na "Opsyonal na Hardware Config":

# tukuyin ang USB_CFG_PULLUP_IOPORTNAME Dto ## tukuyin ang USB_CFG_PULLUP_IOPORTNAME B

Upang lumikha ng isang buong detalye ng "sumusunod na boot na HID" (kung hindi man gagana ang mga multimedia key), baguhin din:

# tukuyin ang USB_CFG_INTERFACE_SUBCLASS 0 // Bootto # tukuyin ang USB_CFG_INTERFACE_SUBCLASS 0x01 // Boot

at

# tukuyin ang USB_CFG_INTERFACE_PROTOCOL 0 // Keyboardto # tukuyin ang USB_CFG_INTERFACE_PROTOCOL 0x01 // Keyboard

Opsyonal na maaari mo ring baguhin ang tagagawa at pangalan ng aparato sa mga sumusunod na tumutukoy:

# tukuyin ang USB_CFG_VENDOR_NAME

# tukuyin ang USB_CFG_DEVICE_NAME

B) i-edit ang UsbKeyboard.h:

baguhin:

PORTD = 0; // TODO: Para lamang sa mga USB pin? DDRD | = ~ USBMASK;

sa

PORTB = 0; // TODO: Para lamang sa mga USB pin? DDRB | = ~ USBMASK;

Upang payagan ang mga keycode na higit sa 101 baguhin din:

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

at

0x29, 0x65, // USAGE_MAXIMUM (Application ng Keyboard) sa: 0x29, 0xE7, // USAGE_MAXIMUM (Application ng Keyboard)

Maaaring kailanganin mong i-edit din ang 3 mga file na ito:

usbdrv.husbdrv.cUsbKeyboard.h

at tuwing makakakita ka ng PROGMEM magdagdag ng "const" bago ang pangalan ng variable type (hal: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Kung hindi ito malinaw na bisitahin ang

Maaari mong maiwasan ang lahat ng mga pagbabagong ito kung mai-download mo lang ang nakalakip na silid-aklatan (ginawa ko mismo ang mga pagbabagong ito) at i-extract lamang ito sa loob ng iyong mga folder ng mga aklatan ng sketchbook:

Na-configure ang UsbKeyboard para sa attiny85

I-edit: kamakailan ko lang natuklasan na si Alejandro Leiva (https://github.com/gloob) ay inalagaan ang silid-aklatan na ito at tila gumana rin nang maayos. Maaari mo ring subukan ang kanyang bersyon sa mga kinakailangang pagbabago na ginawa ko upang magawa itong gumana sa attiny, kaya kung nais mong suriin ito i-extract lamang ito sa loob ng iyong mga folder ng mga aklatan ng sketchbook.

Ang UsbKeyboard ay naka-configure para sa attiny85 (Alejandro Leiva bersyon)

Hakbang 6: Pag-install ng Attiny-IR at Tinytuner Library

A) Attiny-IR library:

i-download ito mula sa https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… pagkatapos ay i-zip ito sa iyong folder ng mga aklatan ng sketchbook.

B) Tinytuner library:

Kailangan lamang ito kung hindi ka gumagamit ng isang 16Mhz na kristal, ngunit maniwala ka sa akin, kahit na gumana din ito nang walang kristal, mas matatag ito at nagkakahalaga sila ng ilang sentimo, kaya't panatilihing simple, gumamit ng isang kristal at laktawan library na ito

Hindi pa kumbinsido? ok, i-download ang library mula sa https://storage.googleapis.com/google-code-archive… pagkatapos ay i-zip ito sa iyong folder ng mga aklatan ng sketchbook.

Tapos na kami sa mga silid-aklatan, ngayon ay nagpapatuloy kami upang mai-install ang mga bootloader.

Hakbang 7: Pag-install at Pag-configure ng mga Bootloader

Mag-i-install kami ng dalawang bootloader na ang Mellis ay ayon sa aking karanasan na mas matatag at gagamitin namin ito sa huling sketch. Ang isa pang binuo ni Rowdy Dog Software ay isang kahanga-hangang core, napakaliit at may isang integrated serial interface na magagamit, ngunit ang aking remote ay nag-crash pagkatapos ng ilang oras sa ito kaya gagamitin namin ang bootloader na ito upang mai-calibrate lamang ang attiny85 panloob na orasan at upang mai-decode ang aming remote mga pindutan

Alam ko na may magagamit na mga aklatan upang bigyan ang attiny85 serial na mga kakayahan, ngunit pagkatapos ay kakailanganin mong i-tweak ang mga aklatan na gumagamit ng serial object … Mas gusto ko ang pamamaraang ito.

Magsimula tayo sa pag-install:

A) Mellis bootloader:

buksan lamang ang mga kagustuhan sa Arduino IDE at idagdag sa Mga Karagdagang Mga Boards Manager URL:

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

Pagkatapos buksan ang manager ng Arduino IDE boards at maghanap para sa attiny, i-install ang mga board mula sa Mellis. Ngayon ay dapat mong makita ang Arduino ID na ATtiny25 / 45/85 at ATtiny24 / 44/84 boards.

B) Rowdy Dog Software maliit na bootloader:

i-download ang bootloader mula sa

I-zip ang file at kopyahin ang maliit na folder sa loob ng iyong sketchbook / hardware (likhain ang folder na ito kung wala pa ito). pagkatapos ay lumipat sa folder sketchbook / hardware / tiny / avr / at:

1) kopyahin ang file na Prospective Boards.txt sa file boards.txt

2) i-edit ang file platform.txt at gumawa ng ilang mga pagbabago:

Alisan ng loob ang variable compiler.path at iwanan ito na tumuturo sa folder ng hardware / tool / avr / bin / sa loob ng iyong folder ng pag-install ng arduino:

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

baguhin dincompiler S.flags = -c -g -assembler-with-cpptocompiler S.flags = -c -g -x assembler-kasama-cpp

Pagkatapos baguhin ang mga sumusunod na variable na tinitiyak na ang lahat ay nasa lugar nito (dapat na mayroon ang mga file na iyon, kung hindi man ay ituro ang mga variable sa mga tamang landas):

tools.avrdude.cmd.path = {runtime.ide.path} / hardware / tool / 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) i-edit ang mga file cores / tiny / core_build_options.h at baguhin:

# tukuyin ang TIMER_TO_USE_FOR_MILLIS 1 upang # tukuyin ang TIMER_TO_USE_FOR_MILLIS 0

Napakahalaga nito, kung hindi man ang IR receiver ay maglalabas ng mga zero para sa bawat pindutan. Ang pahayag na ito ay nag-configure ng timer0 para sa millis () na pagpapaandar na iniiwan ang timer1 na magagamit sa IR library. Ang pangwakas na sketch ay hindi pagaganahin ang timer0 pa rin upang wala kang magagamit na alinman sa millis () at pagkaantala () na mga pagpapaandar. Maaari kang magkaroon ng magagamit na pagka-antala ngMontroseconds) sa halip.

Ang bootloader na ito ay minimal, ngunit may kasamang suporta sa Serial object:

Ang Attiny85 PB2 (pin7) ay TX at ang PB0 (pin5) ay RX

Maaari kang magkaroon ng isang pagsasaayos kasama ang programmer ng ISP (arduino) at ang serial sa usb adapter na konektado nang sabay-sabay kaya hindi mo kailangang palitan ang mga wire nang madalas:

Ngayon mayroon kaming parehong mga aklatan at mga bootloader na naka-install at maayos na na-configure, ang pinakamahirap na trabaho ay nakumpleto at maaari naming simulan ang pagsubok ng mga bagay up.

Hakbang 8: Nasusunog na Mga Bootloader at Pag-upload ng Mga Sketch

Masidhi kong pinapayuhan na buhayin ang output ng verbose sa ilalim ng mga kagustuhan ng Arduino IDE upang malaman mo ang anumang isyu sa huli.

Upang masunog ang isang bootloader sa Attiny85 kailangan mong i-upload ang halimbawa ng ISP sa Arduino at pagkatapos ay piliin ang programmer Arduino bilang ISP.

Ngayon maglagay ng 10uF capacitor sa pagitan ng pag-reset at mga ground pin sa arduino (hindi ito kinakailangan para sa proseso ng pagkasunog, ngunit ito ay upang mag-upload ng mga sketch sa attiny85).

Ngayon ang arduino ay handa nang magsunog ng mga bootloader at mag-load ng mga sketch. Kailangan mo lamang piliin ang tamang board na katugma sa iyong attiny at sunugin ito.

Upang mai-load ang isang sketch sa Attiny85, i-load ito sa arduino IDE at mag-click sa "I-upload gamit ang programmer".

MAHALAGA: kapag ina-upload ang sketch mayroong 3 mga hakbang, pagtitipon, pagsusulat at pag-verify. Kung ang pagtitipon at pagsusulat ay matagumpay na gumana, ngunit nabigo ang proseso ng pag-verify, posible na gagana pa rin ang sketch.

Hakbang 9: I-calibrate ang Attiny85 Panloob na Clock (laktawan ito Kung Gumamit Ka ng Isang Crystal)

Kung sakaling magpasya kang hindi gamitin ang 16Mhz na kristal na kailangan mo upang i-calibrate ang iyong attiny85 na orasan, kaya kakailanganin namin ang isang bootloader na may magagamit na serial interface at gagamitin namin ang tinytuner library upang makuha ang tamang pagkakalibrate.

Sundin ang mga susunod na hakbang

  • piliin sa ilalim ng mga tool ang Arduino bilang ISP programmer
  • piliin ang board na "ATtiny85 @ 8MHz (internal oscillator; BOD disable)"
  • Ipinapalagay ko na mayroon kang koneksyon sa ISP na handa na tulad ng inilarawan bago kumonekta kung hindi man gawin ang mga koneksyon
  • sunugin ang bootloader
  • ang bootloader na ito ay nag-configure ng iba't ibang mga pin para sa serial interface, gamitin lamang ang pagsasaayos na ito para sa kasalukuyang bootloader

- PB4 (pin3 RX) sa TX sa FT232RL attiny85 - PB3 (pin2 TX) hanggang RX sa FT232RL attiny85 - GND (pin4) sa GND sa FT232RL dahil ang attiny85 ay pinalakas na ng arduino na hindi mo kailangang kumonekta ang 5v sa FT232RL, kung hindi man ikonekta: attiny85 VCC (pin8) sa 5V sa FT232RL

  • i-upload ang tinytuner halimbawa sa attiny85
  • buksan ang programa sa screen upang subaybayan ang serial na komunikasyon: screen / dev / ttyUSB0 9600
  • i-reset ang attiny85 na kumokonekta sa RESET pin (pin1) sa GND (sandali lamang), Isang maligayang mensahe ang dapat ipakita sa window ng screen
  • Magpatuloy na magpadala ng mga solong character na 'x' (walang carro-return; walang line-feed) hanggang sa matapos ang pagkakalibrate
  • i-annotate sa kung saan ang halaga ng pagkakalibrate (OSCCAL = 0x). Ito ang halaga na kakailanganin mong ideklara sa huling mga sketch

Hakbang 10: I-decode ang Iyong Mga Remote na Button

Ngayon ay oras na upang decode ang aming mga remote na pindutan at italaga ang mga ito sa tukoy na mga pangunahing stroke sa PC, upang gawin iyon sundin ang mga susunod na hakbang:

  • piliin ang pisara na "ATtiny85 @ 16MHz (panloob na PLL; 4.3V BOD)" kung hindi ka gumagamit ng isang kristal, "ATtiny85 @ 16 MHz (panlabas na kristal; 4.3 V BOD" kung hindi man, pagkatapos ay sunugin ito
  • i-load ang sketch:
  • Kung hindi ka gumagamit ng isang kristal, i-unsment ang hilera na naglalaman ng variable ng OSCCAL at italaga ito sa halagang nahanap mo noong ginawa mo ang pagkakalibrate ng orasan
  • Ipinapalagay ko na ang sensor ay konektado tulad ng inilarawan dati, kung hindi man ikonekta ito
  • Ipinapalagay ko rin na ang FT232RL serial sa usb adapter ay konektado, kung hindi man ikonekta ito
  • i-reset ang attiny85 na kumokonekta sa RESET pin (pin1) sa GND (sandali lamang)
  • pindutin nang paulit-ulit ang mga pindutan ng iyong remote at pag-checkout sa window ng screen, kailangan mong i-annotate ang huling numero para sa bawat record, ang bawat pindutan ay maaaring makabuo ng 2 magkakaibang mga numero

Halimbawa:

TANGGAP D44 3396RECEIVED 544 1348

I-Annotate ang 3396 at 1348 na nauugnay sa pindutan na na-hit mo lang, pagkatapos ay dapat kang magpasya kung ano ang nais mong gawin sa pindutang iyon. Halimbawa Gusto ko ang pindutang iyon upang maipadala ang multimedia keycode na "Volume up", pagkatapos ay kailangan kong hanapin ang ID para sa keycode na iyon. Upang magawa iyon, i-download ang PDF:

Hanapin ang seksyong "Pahina ng Keyboard / Keypad" na pahina 53 at gamitin ang mga numero sa haligi na Usage ID (Dis) upang maiugnay ang iyong mga malalayong pindutan sa mga code ng keyboard. Sa aming halimbawa maaari naming makita na ang keycode para sa "Volume up" ay: 128.

I-edit ang file na file na UsbKeyboard.h sa loob ng UsbKeyboard library mula sa v-usb package na na-install namin dati at idagdag sa mayroon nang mga tumutukoy kung wala pa ito:

# tukuyin ang KEY_VOL_UP 128

Kapag tapos na kami sa lahat ng aming mga remote / s na pindutan at lahat ng mga tumutukoy sa file na UsbKeyboard.h handa na kaming lumipat sa huling hakbang.

Hakbang 11: Nilo-load ang Pangwakas na Sketch at Inaasahan para sa Pinakamahusay

Nilo-load ang Pangwakas na Sketch at Inaasahan para sa Pinakamahusay!
Nilo-load ang Pangwakas na Sketch at Inaasahan para sa Pinakamahusay!
Nilo-load ang Pangwakas na Sketch at Inaasahan para sa Pinakamahusay!
Nilo-load ang Pangwakas na Sketch at Inaasahan para sa Pinakamahusay!

Mayroon na kaming lahat ng mga remote na pindutan na na-decode, ang file na UsbKeyboard.h ay puno ng aming mga keycode, kaya maaari na nating mai-load sa arduino IDE ang tumutukoy na sketch mula sa:

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

Ang file na ito ay ang eksaktong file na ginagamit ko para sa aking tatanggap, at gumagana ito para sa 2 magkakaibang mga remote, kaya malinaw na kakailanganin mong i-update ito upang gumana sa iyong remote / s.

Kung hindi ka gumagamit ng isang kristal, i-unsment ang hilera na naglalaman ng variable na OSCCAL at italaga ito sa halagang nahanap mo noong ginawa mo ang pagkakalibrate ng orasan

Pansinin na sa pag-andar ng loop maraming mga pahayag tulad nito:

kung (results.value == 3405 || results.value == 1357) {// arrow up

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

}

Dapat kang lumikha ng iyong sariling mga pahayag, isa bawat pindutan sa iyong remote. Sa kundisyon na "kung" dapat mong ilagay sa mga resulta. Bigyan ng halaga ang mga halagang natagpuan mo ang pag-decode ng iyong remote at bilang pagtatalo ng paraan ng UsbKeyboard.sendKeyStroke dapat mong ilagay ang isa sa natukoy na mga keycode sa file na UsbKeyboard.h.

Ang kondisyong "kung (lastStroke! = Results.value)" ay kinakailangan dahil ang ilang mga remote ay nagpapadala ng parehong code ng dalawang beses bawat hit, at pinipigilan nito ang pangalawang hit. Hindi ako lubos na sigurado at Maaaring depende ito sa IR protocol na naka-program sa iyong remote (Hindi talaga ako dalubhasa sa mga IR protocol) ngunit ayon sa aking karanasan sa aking sariling mga remote, ang bawat pindutan ay maaaring gumawa ng 2 magkakaibang mga code at habang pinindot mo ang pindutan, nagpapadala ito ng parehong code, ngunit kung na-hit mo muli ang pindutan, ipinapadala nito ang isa pa. Kaya't tila na ang mga code ay ipinadala sa isang kahaliling paraan, hulaan ko ito ay isang karaniwang mode upang malaman kung gaano karaming beses mo talagang na-hit ang pindutan.

Ok, halos tapos na tayo, i-upload lamang ang huling sketch, ikonekta ito sa PC at tingnan kung paano ito nangyayari.

Para sa hakbang na ito, mas mabuti kung i-unplug mo ang parehong arduino at usb sa serial adapter at pagkatapos lamang, i-plug ang USB sa iyong PC port (kung sakaling may magkamali ang iyong circuit ay magiging mas simple sa pag-debug).

Kung ang lahat ay gumana nang maayos, kapag binuksan mo ang isang terminal at ipadala ang utos ng dmesg dapat mong makita ang isang bagay na katulad sa unang imahe sa hakbang na ito. Kung may mga isyu, dapat kang magkaroon ng mga error tulad ng mga matatagpuan sa pangalawang imahe at dapat mong simulang i-debug ang iyong circuit at / o ang software. Ang isa sa pinagmulan ng paunang mga pagkakamali na mayroon ako ay isang USB hub na hindi gagana sa aking IR receiver (ang iba ay nagtrabaho kahit na) … kaya mas mabuti para sa huling hakbang na ito na i-plug ang IR receiver nang direkta sa iyong PC port. Ang mga pagkakamali sa kalaunan ay maaaring mahirap hanapin, ngunit sa huli, tulad ko, marami kang matutunan at sulit ang halagang babayaran, sinisiguro ko sa iyo.

Iyon lang ang mga tao, ipaalam sa akin kung napansin mo ang anumang mga error sa itinuro na ito at masiyahan sa iyong bagong tatanggap ng IR USB!

Inirerekumendang: