Cuprins:

Receptor USB ATtiny85 IR: 11 pași (cu imagini)
Receptor USB ATtiny85 IR: 11 pași (cu imagini)

Video: Receptor USB ATtiny85 IR: 11 pași (cu imagini)

Video: Receptor USB ATtiny85 IR: 11 pași (cu imagini)
Video: ATtiny85 Relay Control with IR Remote || 2-Channel IR Remote Control System Using ATtiny85 2024, Iulie
Anonim
Receptor USB IR ATtiny85
Receptor USB IR ATtiny85

AVERTISMENT, ACEST INSTRUCTABIL A DEVENIT OBSOLET

Biblioteca v-usb este concepută pentru a funcționa cu protocolul USB 1.1 care există cu greu în zilele noastre. Odată cu sosirea USB3, veți avea mai mult decât o durere de cap încercând să funcționeze dispozitivele v-usb. După ce mi-am schimbat centrul multimedia, am multe probleme de stabilitate și chiar dacă receptorul funcționează, după un timp acesta nu mai funcționează. Nu am reușit să încerc să o remediez. Am făcut și o versiune atmega328p, dar aceasta a avut aceleași probleme. Folosirea unui cronometru de pază pentru a reseta periodic placa nu a ajutat nici așa că am renunțat la v-usb.

Fă-ți o favoare și nu merge mai departe cu acest instructable decât dacă este în scopuri educaționale. Recomand în schimb să cumpărați un modul cip ATmega 32U4 care a integrat deja interfața USB și urmați acest ghid:

www.sparkfun.com/tutorials/337

Apoi aruncați un senzor IR TSOP31238 și sunteți bine să mergeți.

Bună ziua producătorilor! Acesta este un instructabil pentru a construi un receptor USB USB funcțional folosind un microcontroler Attiny85. Am început acest proiect pentru a depăși lipsa de suport (cel puțin suport complet) pentru unele telecomenzi IR în sistemul de operare GNU / Linux. Urmând aceste instrucțiuni, puteți construi un receptor USB programabil IR care funcționează cu orice telecomandă IR pentru câțiva dolari.

În primul rând, acest instructable nu ar exista fără munca grea a oamenilor care au creat bibliotecile pe care le folosesc aici:

  • David A. Mellis pentru nucleul său de atitudine
  • Software Roody Dog pentru biblioteca lor TinyTuner
  • Software Roody Dog pentru micul lor bootloader
  • Rancidbacon (https://rancidbacon.com/) pentru portul său arduino al bibliotecii v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee pentru biblioteca sa IR pentru nuclee mici găsite în comentariile codului https://www.instructables.com/id/Attiny-IR-librar… de pe https://www.instructables.com/id/Attiny-IR -bibliotecă …

Uneori nu este ușor să găsiți proprietarul potrivit al unei biblioteci, așa că, în cazul în care am greșit, vă rugăm să lăsați un comentariu și aș rezolva problema cât mai curând posibil.

Acest ghid există deoarece nu am găsit un tutorial / ghid complet care să funcționeze din cutie (poate exista, dar nu l-am putut găsi), așa că am adunat toate informațiile disponibile pe web și după o cantitate bună de încercări și erori Am venit cu un ghid complet pentru a construi un receptor IR USB funcțional care funcționează destul de bine.

Principalele surse de informații pe care le-am urmat:

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

Pasul 1: Câteva considerații

  • Nu dețin un programator AVR ISP și nu prea îmi place să cumpăr unul, așa că am folosit un Arduino pentru a programa attiny85
  • Nu-mi pasă de niciun alt sistem de operare decât GNU / Linux, deci nu știu dacă va funcționa altfel.
  • există alte biblioteci IR dar nu le-am putut face să funcționeze nici măcar cu un arduino. Luați în considerare totuși că am început cu o cunoaștere limitată despre bibliotecile IR. Poate că i-aș putea face să funcționeze acum, după experiența dobândită, abordând o cantitate echitabilă de probleme. Oricum, am fost pierdut și disperat înainte de a găsi biblioteca pe care a oferit-o Seejaydee și am folosit-o de atunci (mulțumesc, omule!).
  • Există alte configurații hardware, dar am folosit-o doar pe cea care folosește 5V pentru a alimenta attiny85 și două diode zener de 3,6V 0,5W pentru a prinde tensiunea liniilor de date, funcționează din cutie, așa că nu m-am încurcat cu alte configurații.
  • Puteți utiliza un cristal de 16Mhz sau puteți utiliza biblioteca tinytuner pentru a calibra ceasul intern al atiny85. Vă sfătuiesc cu tărie utilizarea cristalului, este mult mai stabil și probabil vă va scuti de multe bătăi de cap.
  • Folosesc aici două bootloadere diferite pentru attiny85:

a) Versiunea Rowdy Dog Software, a integrat o interfață serială foarte interesantă și foarte mică, astfel încât să aveți mai mult spațiu pentru programul dvs. și alte biblioteci. Problema este că, din anumite motive, chiar dacă funcționează destul de bine, după ceva timp dispozitivul USB a fost deconectat (puteți găsi problemele cu comanda dmesg). Nu știu dacă aceasta este o problemă a nucleului sau o combinație mixtă a nucleului plus bibliotecile alese așa că după un timp am decis să folosesc acest nucleu doar pentru a decoda tastele de la distanță și a calibra ceasul (când nu folosesc un 16Mhz cristal). După aceea, am ars bootloader-ul Mellis și am încărcat schița definitivă care nu utilizează interfața serială.

b) Versiunea Mellis, bootloader stabil, am folosit acest lucru în multe proiecte. Aș fi folosit acest bootloader întotdeauna dacă ar fi inclus o interfață serială. Folosesc acest nucleu în schița finală după ce am decodat toate tastele de pe telecomandele mele.

Pasul 2: Să începem cu hardware-ul

Să începem cu hardware-ul
Să începem cu hardware-ul
Să începem cu hardware-ul
Să începem cu hardware-ul
Să începem cu hardware-ul
Să începem cu hardware-ul

Instrumente de care aveți nevoie:

  • o placă compatibilă arduino
  • un adaptor serial la USB pentru a decoda cheile de la distanță (folosiți doar un FT232RL)
  • un PC cu GNU / Linux instalat și arduino IDE configurat corect, folosesc arduino IDE 1.8.0
  • o telecomandă IR pentru a vă testa dispozitivul (chiar și unul mizerabil precum cele găsite în kiturile de pornire arduino vor funcționa)
  • un multimetru pentru a vă depana placa (sper că nu veți avea nevoie de ea, mult succes!)

Lista materialelor:

  • 1 atiny85
  • 2 rezistențe 68R
  • 1 rezistor de 1,5K
  • 1 rezistor de 4.7K
  • 1 cristal de 16Mhz
  • 1 condensator 22pF
  • 1 condensator 0.1uF
  • 1 condensator 10uF
  • 2 diode zener de 3,6V 0,5W
  • 1 conector tată USB tip A.
  • 1 știft cu 6 pini pentru a programa și depana placa.
  • 1 senzor IR TSOP31238
  • multa cafea pentru a te tine treaz

Înainte de a lipi placa definitivă, probabil că ați dori să creați un prototip de panou pentru testare, urmând schema atașată acestui instructabil ar trebui să fie suficientă pentru ao construi.

Pentru a conecta attiny85 la computer, designul final folosește un conector USB de tip A care este lipit pe placă, dar pentru prototip va trebui să creați un cablu USB pe care să îl puteți conecta la o placă:

Lipiți într-o bucată mică de perfboard 4 pini, apoi tăiați un cablu USB vechi și lipiți pini pe 4 fire din interiorul cablului USB:

  • roșu este VCC (5V)
  • negru este GND
  • albul este D-
  • verde este D +

Păstrați totul împreună cu lipici fierbinte.

Acum trebuie să conectăm programatorul ISP (Arduino), adaptorul USB la serial (FT232RL) și senzorul IR la atiny85.

Puteți lăsa conectați toți împreună, astfel încât să puteți înregistra diferite încărcătoare de încărcare, să încărcați schițe și să verificați portul serial fără a schimba firele, Pentru aceasta, conectați totul urmând aceste instrucțiuni:

Programator ISP (Arduino): acest lucru ne permite să ardem bootloadere și să încărcăm schițe

  • attiny85 PB0 (pin5) la pin11 (MOSI) în arduino
  • attiny85 PB1 (pin6) la pin12 (MISO) în arduino
  • attiny85 PB2 (pin7) la pin13 (SCK) în arduino
  • attiny85 RESET (pin1) cu pullup (4,6k la VCC) la pin10 în arduino
  • attiny85 VCC la 5V în arduino
  • attiny85 GND în GND în arduino

adaptor USB la serial (FT232RL): acest lucru ne permite să verificăm portul serial

  • attiny85 PB0 (pin5 RX) la TX în FT232RL
  • attiny85 PB2 (pin7 TX) la RX în FT232RL
  • attiny85 GND (pin4) la GND pe FT232RL
  • deoarece attiny85 este deja alimentat de arduino nu este nevoie să conectați 5v pe FT232RL, altfel conectați: attiny85 VCC (pin8) la 5V pe FT232RL

adaptor usb la serial (FT232RL) numai pentru calibrarea ceasului (doar pentru bootloader "ATtiny85 @ 8MHz (oscilator intern; BOD dezactivat)")

  • PB4 (pin3 RX) la TX în atiny85 FT232RL
  • PB3 (pin2 TX) la RX în atiny85 FT232RL
  • GND (pin4) la GND pe FT232RL
  • deoarece attiny85 este deja alimentat de arduino nu este nevoie să conectați 5v pe FT232RL, altfel conectați: attiny85 VCC (pin8) la 5V pe FT232RL

Dacă utilizați un cristal de 16 MHz, conectați-l la pinii Attiny85 PB3 (pin2) și PB4 (pin3) și conectați fiecare pin la GND, de asemenea, printr-un capac de 22pF fiecare.

Filtrează Attiny85 VCC cu condensatori 0.1uF și 10uF conectându-i în paralel cu GND

Conectați pinul de ieșire al senzorului IR la attiny85 PB1 (pin6), alimentați-l.

Construiți și conectați interfața USB:

  • GND (fir negru): conectați-l la GND comun (toate terenurile sunt conectate împreună)
  • D- (fir alb) conectat la attiny85 PB0 (pin5) printr-un rezistor 68R, conectați-l și la masă printr-un zener de 3,6V 0,5W și trageți-l la VCC cu un rezistor de 1,5K
  • D + (fir verde) conectat la PB2 printr-un rezistor 68R, conectați-l la masă printr-un zener de 3,6 V 0,5 W
  • 5V, îl puteți lăsa neconectat, deoarece totul este alimentat de Arduino în acest stadiu, altfel conectați-l la atiny85 VCC

Diodele zener sunt conectate astfel încât anodii să fie legați de GND și catodii să fie conectați la liniile de date D + și D-.

Pasul 3: Proiectare finală

Design final
Design final
Design final
Design final
Design final
Design final

Pentru designul final, puteți utiliza placa de perfectionare cu componente orificiale traversante sau gravați propria placă și utilizați componente smd. Pentru a afla cum să gravezi o placă, doar să o googlezi, există tutoriale minunate disponibile online.

Mi-am gravat propria placă și sunt foarte mulțumit de rezultatele finale (placă mică, stabilă și robustă). Da, știu că tăierea e de rahat, dar nu am putut folosi niciun instrument electric atât de târziu în noapte și doar taie tabla cu foarfecele mele de staniu.

Apropo, urmele de pe imagini nu sunt cupru gol, ele au fost tratate cu o substanță chimică urâtă, care cupră ușor cuprul (se suspectează că induce cancerul, așa că folosiți-l cu mare atenție, globuri din latex și o mască de praf):

Utilizați schemele de mai sus pentru a vă proiecta aspectul sau puteți utiliza doar amprenta mea pentru a vă graba placa.

Pasul 4: Tratarea software-ului

Circuitul din acest proiect este foarte ușor, software-ul necesită în schimb un efort mai mare.

Avem nevoie de cel puțin 2 biblioteci (încă una dacă nu utilizați un cristal) plus 2 bootloadere pentru a face acest lucru să funcționeze. Când am început acest proiect, am testat unele biblioteci, uneori nu funcționau și de multe ori nu erau configurate să funcționeze cu un Attiny85 scoase din cutie (încă nu știam asta). Apoi am găsit probleme cu bibliotecile / încărcătoarele de încărcare care se suprapuneau întreruperilor. În cele din urmă a trebuit să mă confrunt cu o cantitate echitabilă de erori când am conectat circuitul final la computer. Totuși, nu aveam acest ghid, așa că cred că ai fi bine, urmează pașii din acest instructiv, dacă faci asta fără să faci greșeli, ar trebui să fii bine:)

Acum trebuie să instalăm și să configurăm câteva biblioteci:

  • v-usb pentru biblioteca arduino: această bibliotecă permite microcontrolerului să fie recunoscut de PC ca tastatură USB HID și îl vom folosi pentru a trimite lovituri de cheie către computer. Această bibliotecă are nevoie de unele modificări pentru a fi compatibilă cu attiny85
  • bibliotecă tinytuner numai dacă nu veți utiliza un cristal de 16 MHz. Va trebui apoi să calibrați ceasul intern al microcontrolerului. Această bibliotecă funcționează din cutie.
  • Biblioteca Attiny-IR pentru a interacționa cu senzorul IR. Această bibliotecă funcționează din cutie.

Avem nevoie și de 2 bootloadere:

  • Versiunea Software Dog, cu interfața serială disponibilă. Acest bootloader are nevoie de o mică modificare pentru a lucra cu attiny85, deoarece folosește timer1 pentru funcția millis () și nu va funcționa cu biblioteca IR. Trebuie să schimbăm temporizatorul în timer0.
  • Versiunea Mellis, bootloader stabil pe care îl vom folosi în etapa finală. Acest lucru funcționează din cutie.

Pasul 5: Instalarea și configurarea bibliotecii V-usb

Descărcați biblioteca de la https://code.google.com/archive/p/vusb-for-arduin… Dezarhivați fișierul și copiați folderul biblioteci / UsbKeyboard în folderul bibliotecilor de schițe.

Acum trebuie să editați câteva fișiere pentru a fi compatibil cu ATtiny85 (este configurat să funcționeze cu arduino):

A) editați usbconfig.h:

sub modificarea „Configurare hardware”:

#define USB_CFG_IOPORTNAME Dto ## define USB_CFG_IOPORTNAME B

și

#define USB_CFG_DMINUS_BIT 4pentru # define USB_CFG_DMINUS_BIT 0

sub modificarea „Configurare hardware opțională”:

#define USB_CFG_PULLUP_IOPORTNAME Dto ## define USB_CFG_PULLUP_IOPORTNAME B

Pentru a crea o specificație completă „HID compatibilă cu bootarea” (altfel nu vor funcționa chei multimedia), modificați și:

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

și

#define USB_CFG_INTERFACE_PROTOCOL 0 // Tastaturăpentru # define USB_CFG_INTERFACE_PROTOCOL 0x01 // Tastatură

Opțional, puteți schimba și numele producătorului și al dispozitivului în următoarele definiții:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) editați UsbKeyboard.h:

Schimbare:

PORTD = 0; // TODO: Numai pentru pinii USB? DDRD | = ~ USBMASK;

la

PORTB = 0; // TODO: Numai pentru pinii USB? DDRB | = ~ USBMASK;

Pentru a permite modificarea codurilor de taste mai mari de 101:

0x25, 0x65, // LOGICAL_MAXIMUM (101) până la: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

și

0x29, 0x65, // USAGE_MAXIMUM (aplicație tastatură) la: 0x29, 0xE7, // USAGE_MAXIMUM (aplicație tastatură)

Poate fi necesar să editați și aceste 3 fișiere:

usbdrv.husbdrv.cUsbKeyboard.h

și de fiecare dată când vedeți PROGMEM adăugați „const” înainte de numele tipului variabilei (ex: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Dacă acest lucru nu este clar, vizitați

Puteți evita toate aceste modificări dacă pur și simplu descărcați biblioteca atașată (eu am făcut toate aceste modificări eu însumi) și doar o extrageți în dosarul bibliotecilor din caietul de schițe:

UsbKeyboard configurat pentru attiny85

Edit: recent am descoperit că Alejandro Leiva (https://github.com/gloob) a fost îngrijit de această bibliotecă și pare să funcționeze bine și. De asemenea, puteți încerca versiunea sa cu modificările necesare pe care le-am făcut pentru ca aceasta să funcționeze cu attiny, așa că, dacă doriți să verificați acest lucru, extrageți-o doar în folderul bibliotecilor de caiete.

UsbKeyboard configurat pentru attiny85 (versiunea Alejandro Leiva)

Pasul 6: Instalarea bibliotecilor Attiny-IR și Tinytuner

A) Biblioteca Attiny-IR:

descărcați-l de la https://drive.google.com/open?id=0B_w9z88wnDtFNHlq … apoi dezarhivați-l în dosarul bibliotecilor de schițe.

B) Biblioteca Tinytuner:

Acest lucru este necesar numai dacă nu utilizați un cristal de 16Mhz, dar credeți-mă, deși funcționează și fără cristal, este mult mai stabil cu acesta și costă câțiva cenți, deci păstrați-l simplu, utilizați un cristal și săriți această bibliotecă.

Nu ești încă convins? ok, descărcați biblioteca de pe https://storage.googleapis.com/google-code-archive… apoi dezarhivați-o în dosarul bibliotecilor de schițe.

Am terminat cu bibliotecile, acum trecem la instalarea bootloaderelor.

Pasul 7: Instalarea și configurarea bootloaderelor

Vom instala două încărcătoare de încărcare, cel din Mellis este, conform experienței mele, mai stabil și îl vom folosi în schița finală. Celălalt dezvoltat de Rowdy Dog Software este un nucleu minunat, foarte mic și cu o interfață serială integrată disponibilă, dar telecomanda mea s-a prăbușit după ceva timp, așa că vom folosi acest bootloader doar pentru a calibra ceasul intern attiny85 și pentru a decoda telecomanda noastră butoane.

Știu că există biblioteci disponibile pentru a oferi capacităților seriale attiny85, dar atunci va trebui să modificați bibliotecile care folosesc obiectul serial … Îmi place mai bine această procedură.

Să începem cu instalarea:

A) Mellis bootloader:

trebuie doar să deschideți preferințele IDE Arduino și să adăugați în „Adrese URL suplimentare ale managerului de plăci:

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

Apoi deschideți managerul de plăci Arduino IDE și căutați attiny, instalați plăcile de pe Mellis. Acum ar trebui să vedeți ID-ul Arduino plăcile ATtiny25 / 45/85 și ATtiny24 / 44/84.

B) Rowdy Dog Software mic bootloader:

descărcați bootloaderul de la

Dezarhivați fișierul și copiați minusculul dosar din caietul de schițe / hardware (creați acest dosar dacă nu există încă). apoi mutați în dosarul schițe / hardware / tiny / avr / și:

1) copiați fișierul Prospective Boards.txt în fișierul boards.txt

2) editați fișierul platform.txt și efectuați câteva modificări:

Decomentați variabila compiler.path și lăsați-o să indice spre folderul hardware / tools / avr / bin / din folderul de instalare arduino:

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

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

Apoi modificați următoarele variabile asigurându-vă că totul este la locul său (acele fișiere trebuie să existe, altfel îndreptați variabilele către căile potrivite):

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) editați fișierul core / tiny / core_build_options.h și modificați:

#define TIMER_TO_USE_FOR_MILLIS 1 la # define TIMER_TO_USE_FOR_MILLIS 0

Acest lucru este foarte important, altfel receptorul IR va emite zerouri pentru fiecare buton. Această declarație configurează timer0 pentru funcția millis () lăsând timer1 disponibil bibliotecii IR. Schița finală va dezactiva oricum timer0, astfel încât să nu aveți disponibile nici funcțiile de milis () și delay (). Este posibil să aveți în loc funcția delayMicroseconds ().

Acest bootloader este minim, dar a inclus suport pentru obiectele seriale:

Attiny85 PB2 (pin7) este TX și PB0 (pin5) este RX

Puteți avea o configurație cu programatorul ISP (arduino) și adaptorul serial la USB conectate în același timp, astfel încât să nu aveți nevoie să schimbați firele prea des:

Acum avem atât bibliotecile, cât și bootloader-urile instalate și configurate corect, cea mai grea lucrare este finalizată și putem începe testarea lucrurilor.

Pasul 8: Arderea încărcătorilor de încărcare și încărcarea schițelor

Vă sfătuiesc cu tărie să activați ieșirea detaliată sub preferințele IDE Arduino, astfel încât să puteți da seama de orice eventuală problemă.

Pentru a arde un bootloader în Attiny85 trebuie să încărcați exemplul ISP pe Arduino și apoi să selectați programatorul Arduino ca ISP.

Acum puneți un condensator de 10 uF între pinii de resetare și împământare pe arduino (nu este necesar pentru procesul de ardere, dar este să încărcați schițe în attiny85).

Acum, arduino este gata să ardă bootloadere și să încarce schițe. Trebuie doar să selectați placa potrivită compatibilă cu attiny-ul dvs. și să o ardeți.

Pentru a încărca o schiță în Attiny85, încărcați-o în IDE-ul arduino și faceți clic pe „Încărcați utilizând programatorul”.

IMPORTANT: la încărcarea schiței există 3 pași, compilare, scriere și verificare. Dacă compilarea și scrierea au funcționat cu succes, dar procesul de verificare eșuează, este posibil ca schița să funcționeze oricum.

Pasul 9: Calibrați ceasul intern Attiny85 (omiteți acest lucru dacă utilizați un cristal)

În cazul în care decideți să nu utilizați cristalul de 16 MHz, trebuie să vă calibrați ceasul attiny85, așa că vom avea nevoie de un bootloader cu o interfață serială disponibilă și vom folosi biblioteca tinytuner pentru a obține calibrarea corectă.

Urmați pașii următori

  • selectați sub instrumente Arduino ca programator ISP
  • selectați placa "ATtiny85 @ 8MHz (oscilator intern; BOD dezactivat)"
  • Presupun că aveți conexiunea ISP pregătită așa cum este descris înainte de conectare, altfel faceți conexiunile
  • arde bootloader
  • acest bootloader a configurat pini diferiți pentru interfața serială, utilizați această configurație numai pentru bootloader-ul curent

- PB4 (pin3 RX) la TX în FT232RL attiny85 - PB3 (pin2 TX) la RX în FT232RL attiny85 - GND (pin4) la GND pe FT232RL deoarece attiny85 este deja alimentat de arduino nu trebuie să vă conectați 5v pe FT232RL, în caz contrar conectați: attiny85 VCC (pin8) la 5V pe FT232RL

  • încărcați exemplul tinytuner în attiny85
  • deschideți programul de ecran pentru a monitoriza comunicarea serială: screen / dev / ttyUSB0 9600
  • resetează attiny85 conectând pinul RESET (pin1) la GND (doar o clipă), un mesaj de întâmpinare ar trebui să fie afișat pe fereastra ecranului
  • Continuați să trimiteți caractere „x” unice (fără returnare la căruță; fără avans de linie) până când se termină calibrarea
  • adnotați undeva valoarea calibrării (OSCCAL = 0x). Aceasta este valoarea pe care va trebui să o declarați în schițele finale

Pasul 10: Decodează butoanele de la distanță

Acum este timpul să decodăm butoanele noastre de la distanță și să le atribuim loviturilor de tastă specifice din computer, pentru a face acest lucru, urmați pașii următori:

  • selectați placa „ATtiny85 @ 16MHz (PLL intern; 4.3V BOD)” dacă nu utilizați un cristal, „ATtiny85 @ 16 MHz (cristal extern; 4.3 V BOD” în caz contrar, apoi ardeți-l
  • încărcați schița:
  • Dacă nu utilizați un cristal, decomentați rândul care conține variabila OSCCAL și atribuiți-l valorii pe care ați găsit-o când ați făcut calibrarea ceasului
  • Presupun că senzorul este conectat așa cum s-a descris anterior, în caz contrar conectați-l
  • Presupun, de asemenea, că adaptorul serial FT232RL la USB este conectat, altfel conectați-l
  • resetează attiny85 conectând pinul RESET (pinul 1) la GND (doar un moment)
  • apăsați în mod repetat butoanele telecomenzii și verificați fereastra ecranului, trebuie să adnotați ultimul număr pentru fiecare înregistrare, fiecare buton poate produce 2 numere diferite

Exemplu:

PRIMIT D44 3396 PRIMIT 544 1348

Adnotați 3396 și 1348 în asociere cu butonul pe care tocmai l-ați apăsat, apoi trebuie să decideți ce doriți să faceți cu acel buton. De exemplu, aș putea dori ca acel buton să trimită codul cheie multimedia „Volumul crescut”, apoi trebuie să găsesc ID-ul codului respectiv. Pentru aceasta, descărcați PDF-ul:

Căutați secțiunea „Pagina Tastatură / Tastatură” pagina 53 și utilizați numerele din coloana ID de utilizare (Dec) pentru a lega butoanele de la distanță de codurile tastaturii. În exemplul nostru putem vedea că codul cheie pentru „Creșterea volumului” este: 128.

Editați fișierul fișierul UsbKeyboard.h din biblioteca UsbKeyboard din pachetul v-usb pe care l-am instalat anterior și adăugați-l la definițiile existente dacă nu este deja acolo:

#define KEY_VOL_UP 128

Când am terminat cu toate butoanele telecomenzii noastre și toate definițiile din fișierul UsbKeyboard.h sunt gata, putem trece la ultimul pas.

Pasul 11: Încărcarea schiței finale și speranța pentru cel mai bun

Încărcarea schiței finale și speranța pentru cel mai bun!
Încărcarea schiței finale și speranța pentru cel mai bun!
Încărcarea schiței finale și speranța pentru cel mai bun!
Încărcarea schiței finale și speranța pentru cel mai bun!

Acum avem toate butoanele de la distanță decodificate, fișierul UsbKeyboard.h este umplut cu codurile noastre de taste, așa că acum putem încărca în IDE-ul arduino schița definitivă din:

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

Acest fișier este exact fișierul pe care îl folosesc pentru receptorul meu și funcționează pentru 2 telecomenzi diferite, așa că este clar că ar trebui să îl actualizați pentru a lucra cu telecomanda / telecomanda.

Dacă nu utilizați un cristal, decomentați rândul care conține variabila OSCCAL și atribuiți-l valorii pe care ați găsit-o când ați făcut calibrarea ceasului

Observați că în funcția buclă există o mulțime de afirmații ca aceasta:

if (results.value == 3405 || results.value == 1357) {// săgeată în sus

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

}

Trebuie să creați propriile declarații, câte una pe buton în telecomandă. În condiția „dacă” trebuie să introduceți rezultatele.valorați valorile pe care le-ați găsit decodând telecomanda și ca argument al metodei UsbKeyboard.sendKeyStroke trebuie să puneți unul dintre codurile cheie deja definite în fișierul UsbKeyboard.h.

Condiția „if (lastStroke! = Results.value)” este necesară deoarece unele telecomenzi trimit același cod de două ori pe accesare, iar acest lucru împiedică al doilea acces. Nu sunt total sigur și poate depinde de protocolul IR care a fost programat în telecomanda dvs. (nu sunt cu adevărat un expert în protocoale IR), dar conform experienței mele cu propriile telecomenzi, fiecare buton poate produce 2 coduri diferite și în timp ce țineți apăsat butonul, acesta trimite același cod, dar dacă apăsați butonul din nou, îl trimite pe celălalt. Deci, se pare că codurile sunt trimise într-un mod alternativ, cred că este un mod standard să știi de câte ori ai apăsat butonul.

Ok, aproape am terminat, doar încărcați schița finală, conectați-o la computer și vedeți cum merge.

Pentru acest pas, este mai bine dacă deconectați atât arduino-ul, cât și USB-ul la adaptorul serial și numai atunci, conectați USB-ul la portul computerului (în cazul în care ceva nu merge bine, circuitul dvs. va fi mai simplu de depanat).

Dacă totul a funcționat bine, atunci când deschideți un terminal și trimiteți comanda dmesg, ar trebui să vedeți ceva similar cu prima imagine din acest pas. Dacă au apărut probleme, ar trebui să aveți erori precum cele găsite în a doua imagine și trebuie să începeți depanarea circuitului și / sau a software-ului. Una dintre sursele erorilor inițiale pe care le-am avut a fost un hub USB care nu ar funcționa cu receptorul meu IR (alții au funcționat totuși) … deci este mai bine pentru acest pas final să conectați receptorul IR direct la portul computerului. Erorile eventuale ar putea fi dificil de găsit, dar la final, ca mine, ai învăța multe și prețul de plătit merită, te asigur.

Asta e tot oamenii, spuneți-mi dacă observați erori în acest instructable și vă bucurați de noul dvs. receptor USB IR!

Recomandat: