Satura rādītājs:

ATtiny85 IR USB uztvērējs: 11 soļi (ar attēliem)
ATtiny85 IR USB uztvērējs: 11 soļi (ar attēliem)

Video: ATtiny85 IR USB uztvērējs: 11 soļi (ar attēliem)

Video: ATtiny85 IR USB uztvērējs: 11 soļi (ar attēliem)
Video: ⚡ Construye tu programador USB e ICSP para ATtiny85 y carga de Bootlader 2024, Jūlijs
Anonim
ATtiny85 IR USB uztvērējs
ATtiny85 IR USB uztvērējs

BRĪDINĀJUMS, ŠAIS INSTRUKCIJA IR Kļuvusi NEPĀRTRAUKTA

V-usb bibliotēka ir paredzēta darbam ar USB 1.1 protokolu, kas mūsdienās gandrīz neeksistē. Ierodoties USB3, jums būs vairāk nekā galvassāpes, mēģinot panākt, lai v-usb ierīces darbotos. Pēc multivides centra nomaiņas man ir daudz stabilitātes problēmu, un, lai arī uztvērējs darbojas, pēc kāda laika tas pārstāj darboties. Man neveiksmīgi mēģina to labot. Es izveidoju arī atmega328p versiju, taču šai bija tādas pašas problēmas. Arī sargsuņa taimera izmantošana, lai periodiski atiestatītu dēli, nepalīdzēja, tāpēc es atsakos no v-usb.

Padariet sev labvēlību un nedodieties tālāk ar šo pamācību, ja vien tā nav paredzēta izglītības nolūkiem. Tā vietā es iesaku iegādāties mikroshēmas moduli ATmega 32U4, kas jau ir integrējis USB interfeisu, un izpildiet šo rokasgrāmatu:

www.sparkfun.com/tutorials/337

Tad iemetiet IR sensoru TSOP31238, un jums ir labi iet.

Sveiki veidotāji! tas ir pamācāms izveidot strādājošu USB IR uztvērēju, izmantojot Attiny85 mikrokontrolleru. Es sāku šo projektu, lai pārvarētu atbalsta trūkumu (vismaz pilnīgu atbalstu) dažām IR tālvadības pultīm GNU/Linux OS. Ievērojot šos norādījumus, jūs par dažiem dolāriem varat izveidot programmējamu USB IR uztvērēju, kas darbojas ar jebkuru IR tālvadības pulti.

Pirmkārt, šī pamācība nepastāvētu bez to cilvēku smaga darba, kuri izveidoja šeit izmantotās bibliotēkas:

  • David A. Mellis par viņa attiny kodolu
  • Rowdy Dog programmatūra savai bibliotēkai TinyTuner
  • Rowdy Dog programmatūra mazajam sāknēšanas ielādētājam
  • Rancidbacon (https://rancidbacon.com/) savam v-usb bibliotēkas arduino portam (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee par savu IR bibliotēku sīkiem kodoliem, kas atrodami pamācāmā https://www.instructables.com/id/Attiny-IR-librar… komentāros vietnē https://www.instructables.com/id/Attiny-IR -Bibliotēka…

Dažreiz nav viegli atrast pareizo bibliotēkas īpašnieku, tādēļ, ja esmu pieļāvis kļūdu, lūdzu, atstājiet komentāru, un es atrisināšu problēmu ASAP.

Šī rokasgrāmata pastāv, jo es neatradu pilnīgu pamācību/rokasgrāmatu, kas darbojas ārpus kastes (tā var pastāvēt, bet es nevarēju to atrast), tāpēc es apkopoju visu tīmeklī pieejamo informāciju un pēc daudziem izmēģinājumiem un kļūdas Es izdomāju pilnīgu rokasgrāmatu, lai izveidotu strādājošu USB IR uztvērēju, kas faktiski darbojas diezgan labi.

Galvenie informācijas avoti, kuriem esmu sekojis:

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

1. solis: daži apsvērumi

  • Man nepieder AVR ISP programmētājs, un man nav īsti vēlēšanās tādu iegādāties, tāpēc attiny85 programmēšanai esmu izmantojis Arduino
  • Man nerūp neviena cita OS, izņemot GNU/Linux, tāpēc es nezinu, vai tas darbosies citādi.
  • ir arī citas IR bibliotēkas, bet es nevarēju likt tām strādāt pat ar arduino. Tomēr padomājiet, ka es sāku ar ierobežotām zināšanām par IR bibliotēkām. Varbūt es varētu likt viņiem strādāt tagad pēc pieredzes, kas saistīta ar diezgan daudzu jautājumu risināšanu. Jebkurā gadījumā es biju apmaldījies un izmisis, pirms atradu Seejaydee nodrošināto bibliotēku, un es to izmantoju kopš tā laika (liels paldies cilvēkam!).
  • Ir arī citas aparatūras konfigurācijas, bet es esmu izmantojis tikai to, kas attiny85 barošanai izmanto 5 V, un divas 3,6 V 0,5 W Zener diodes, lai fiksētu datu līniju spriegumu, tas darbojas ārpus kastes, tāpēc es netraucēju citas konfigurācijas.
  • Jūs varat izmantot 16Mhz kristālu vai izmantot tinytuner bibliotēku, lai kalibrētu attiny85 iekšējo pulksteni. Es ļoti iesaku izmantot kristālu, tas ir daudz stabilāks un, iespējams, ietaupīs jums daudz galvassāpju.
  • Šeit es izmantoju divus dažādus sāknēšanas ielādētājus attiny85:

a) Rowdy Dog programmatūras versija, tajā ir integrēts seriāls interfeiss, kas ir ļoti foršs un ļoti mazs, tāpēc jums ir vairāk vietas savai programmai un citām bibliotēkām. Problēma ir tā, ka dažu iemeslu dēļ, kaut arī tā darbojas diezgan labi, pēc kāda laika USB ierīce tika atvienota (problēmas var atrast ar komandu dmesg). Es nezinu, vai tā ir kodola problēma vai kodola kombinācija ar izvēlētajām bibliotēkām, tāpēc pēc kāda laika es nolēmu izmantot šo kodolu tikai, lai atšifrētu tālvadības taustiņus un kalibrētu pulksteni (ja neizmantoju 16 MHz kristāls). Pēc tam es vienkārši sadedzinu Mellis sāknēšanas ielādētāju un augšupielādēju galīgo skici, kurā netiek izmantots seriālais interfeiss.

b) Mellis versija, stabils sāknēšanas ielādētājs, esmu to izmantojis daudzos projektos. Es vienmēr būtu izmantojis šo sāknēšanas programmu, ja tajā būtu iekļauts seriālais interfeiss. Šo kodolu es izmantoju galīgajā skicē pēc visu manu tālvadības pults taustiņu atšifrēšanas.

2. darbība: sāksim ar aparatūru

Sāksim ar aparatūru
Sāksim ar aparatūru
Sāksim ar aparatūru
Sāksim ar aparatūru
Sāksim ar aparatūru
Sāksim ar aparatūru

Nepieciešamie rīki:

  • arduino saderīga tāfele
  • seriālais USB adapteris, lai atšifrētu tālvadības atslēgas (vienkārši izmantojiet FT232RL)
  • dators ar instalētu GNU/Linux un arduino IDE pareizi konfigurēts, es izmantoju arduino IDE 1.8.0
  • IR tālvadības pults, lai pārbaudītu jūsu ierīci (derēs pat tāds traks, kāds ir arduino sākuma komplektos)
  • multimetrs tāfeles atkļūdošanai (es ceru, ka jums tas nebūs vajadzīgs, veiksmi!)

Materiālu saraksts:

  • 1 attiny85
  • 2 68R rezistori
  • 1 1,5K rezistors
  • 1 4,7K rezistors
  • 1 16Mhz kristāls
  • 1 22pF kondensators
  • 1 0,1uF kondensators
  • 1 10uF kondensators
  • 2 3.6V 0.5W zener diodes
  • 1 A tipa USB savienotājs
  • 1 sloksnes tapa ar 6 tapām tāfeles programmēšanai un atkļūdošanai.
  • 1 IR sensors TSOP31238
  • daudz kafijas, lai jūs būtu nomodā

Pirms galīgās plāksnes lodēšanas jūs, iespējams, vēlaties testēšanas nolūkos izveidot maizes dēļa prototipu, lai izveidotu šo shēmu, kas pievienota šai instrukcijai.

Lai pieslēgtu attiny85 datoram, galīgajā dizainā tiek izmantots A tipa USB savienotājs, kas ir pielodēts plāksnē, bet prototipam jums būs jāizveido USB kabelis, kuru var savienot ar maizes dēli:

Lodējiet nelielā perforētā paneļa 4 tapās, pēc tam nogrieziet veco USB kabeli un pielodējiet tapas pie 4 vadiem, kas atrodas USB kabeļa iekšpusē:

  • sarkans ir VCC (5V)
  • melns ir GND
  • balts ir D-
  • zaļš ir D+

Saglabājiet visu kopā ar karstu līmi.

Tagad mums ir jāpievieno attiny85 ISP programmētājs (Arduino), USB ar seriālo adapteri (FT232RL) un IR sensors.

Jūs varat atstāt savienotu visu kopā, lai jūs varētu ierakstīt dažādus sāknēšanas ielādētājus, ielādēt skices un pārbaudīt sērijas portu, nemainot vadus, Lai to izdarītu, savienojiet visu, ievērojot šos norādījumus:

ISP programmētājs (Arduino): tas ļauj mums ierakstīt sāknēšanas ielādētājus un ielādēt skices

  • attiny85 PB0 (pin5) līdz pin11 (MOSI) arduino
  • attiny85 PB1 (pin6) līdz pin12 (MISO) arduino
  • attiny85 PB2 (pin7) līdz pin13 (SCK) arduino
  • attiny85 RESET (pin1) ar pullup (4,6k līdz VCC) uz pin10 in arduino
  • attiny85 VCC līdz 5V arduino
  • attiny85 GND uz GND arduino

usb uz seriālo adapteri (FT232RL): tas ļauj pārbaudīt seriālo portu

  • attiny85 PB0 (pin5 RX) uz TX FT232RL
  • attiny85 PB2 (pin7 TX) uz RX FT232RL
  • attiny85 GND (pin4) uz GND uz FT232RL
  • tā kā attiny85 jau darbina arduino, jums nav jāpievieno 5V uz FT232RL, pretējā gadījumā pievienojiet: attiny85 VCC (pin8) līdz 5V uz FT232RL

USB uz seriālo adapteri (FT232RL) tikai pulksteņa kalibrēšanai (tikai sāknēšanas ielādētājam "ATtiny85 @ 8MHz (iekšējais oscilators; BOD atspējots)")

  • PB4 (pin3 RX) līdz TX FT232RL attiny85
  • PB3 (pin2 TX) līdz RX FT232RL attiny85
  • GND (pin4) līdz GND uz FT232RL
  • tā kā attiny85 jau darbina arduino, jums nav jāpievieno 5V uz FT232RL, pretējā gadījumā pievienojiet: attiny85 VCC (pin8) līdz 5V uz FT232RL

Ja izmantojat 16Mhz kristālu, pievienojiet to Attiny85 tapām PB3 (pin2) un PB4 (pin3) un pievienojiet katru tapu GND, kā arī caur 22pF vāciņu.

Filtrējiet Attiny85 VCC ar 0.1uF un 10uF kondensatoriem, kas savieno tos paralēli GND

Pievienojiet IR sensora izejas tapu attiny85 PB1 (pin6), ieslēdziet to.

Izveidojiet un pievienojiet USB interfeisu:

  • GND (melns vads): pievienojiet to kopējam GND (visi pamati ir savienoti kopā)
  • D- (balts vads), kas savienots ar attiny85 PB0 (pin5) caur 68R rezistoru, pievienojiet to arī zemei, izmantojot 3,6 V 0,5 W zeneru un velciet to līdz VCC ar 1,5 K rezistoru
  • D+ (zaļais vads), kas savienots ar PB2 caur 68R rezistoru, pievienojiet to zemei, izmantojot 3,6 V 0,5 W zener
  • 5 V, jūs varat atstāt to nesavienotu, jo šajā posmā visu ieslēdz Arduino, pretējā gadījumā pievienojiet to attiny85 VCC

Zener diodes ir savienotas tā, ka anodi ir piesaistīti GND, bet katodi-datu līnijām D+ un D-.

3. solis: galīgais dizains

Galīgais dizains
Galīgais dizains
Galīgais dizains
Galīgais dizains
Galīgais dizains
Galīgais dizains

Galīgajā dizainā jūs varētu izmantot perfboard ar caurumu komponentiem vai iegravēt savu dēli un izmantot smd komponentus. Lai uzzinātu, kā kodināt tāfeli, vienkārši google to, tiešsaistē ir pieejamas lieliskas apmācības.

Esmu iegravējis savu dēli, un esmu ļoti apmierināts ar galīgajiem rezultātiem (maza, stabila un izturīga tāfele). Jā, es zinu, ka griezums ir iesūcis, bet tik vēlu vakarā nevarēju izmantot nevienu elektroinstrumentu. vienkārši sagrieziet dēli ar manām skārda šķēres.

Starp citu, pēdas uz attēliem nav kails varš, tās ir apstrādātas ar šķebinošu ķīmisku vielu, kas nedaudz tin alu (ir aizdomas, ka tas izraisa vēzi, tāpēc izmantojiet to ļoti uzmanīgi, lateksa globusi un putekļu maska):

Izmantojiet iepriekš minētās shēmas, lai izstrādātu savu izkārtojumu, vai arī varat vienkārši izmantot manu PCB nospiedumu, lai iegravētu tāfeli.

4. darbība. Darbs ar programmatūru

Ķēde šajā projektā ir ļoti vienkārša, tā vietā programmatūra prasa lielākas pūles.

Lai veiktu šo darbu, mums ir vajadzīgas vismaz 2 bibliotēkas (vēl viena, ja neizmantojat kristālu) un 2 sāknēšanas ielādētāji. Kad es sāku šo projektu, es pārbaudīju dažas bibliotēkas, dažreiz tās nedarbojās un daudzas reizes tās vienkārši nebija konfigurētas darbam ar Attiny85 no kastes (es to vēl nezināju). Tad es atklāju problēmas ar bibliotēku / sāknēšanas ielādētāju pārklāšanos, kas pārklājas. Visbeidzot, man bija jāsaskaras ar diezgan daudzām kļūdām, kad savienoju galīgo ķēdi ar datoru. Tomēr man nebija šīs rokasgrāmatas, tāpēc es domāju, ka jums viss būtu kārtībā, vienkārši izpildiet šajā pamācībā norādītās darbības, ja jūs to darāt bez kļūdām, jums vajadzētu būt labi:)

Tagad mums ir jāinstalē un jākonfigurē dažas bibliotēkas:

  • v-usb arduino bibliotēkai: šī bibliotēka ļauj datoram mikrokontrolleru atpazīt kā HID USB tastatūru, un mēs to izmantosim, lai nosūtītu taustiņu sitienus uz datoru. Šai bibliotēkai ir nepieciešamas dažas izmaiņas, lai tā būtu saderīga ar attiny85
  • tinytuner bibliotēku tikai tad, ja neizmantojat 16Mhz kristālu. Pēc tam jums būs jākalibrē mikrokontrollera iekšējais pulkstenis. Šī bibliotēka darbojas ārpus kastes.
  • Attiny-IR bibliotēka, lai mijiedarbotos ar IR sensoru. Šī bibliotēka darbojas ārpus kastes.

Mums ir nepieciešami arī divi sāknēšanas ielādētāji:

  • Suņa programmatūras versija ar pieejamo sērijas saskarni. Šim sāknēšanas ielādētājam ir nepieciešams neliels pielāgojums, lai tas darbotos ar attiny85, jo tas izmanto taimeri1 milis () funkcijai un nedarbosies ar IS bibliotēku. Mums jāmaina taimeris uz taimeri0.
  • Mellis versija, stabils sāknēšanas ielādētājs, ko izmantosim pēdējā posmā. Tas darbojas ārpus kastes.

5. darbība: V-usb bibliotēkas instalēšana un konfigurēšana

Lejupielādējiet bibliotēku no vietnes https://code.google.com/archive/p/vusb-for-arduin…. Izsaiņojiet failu un nokopējiet mapju bibliotēkas/UsbKeyboard savā skiču grāmatu bibliotēku mapē.

Tagad jums ir jārediģē pāris faili, lai tie būtu saderīgi ar ATtiny85 (tas ir konfigurēts darbam ar arduino):

A) rediģējiet usbconfig.h:

sadaļā "Aparatūras konfigurācija":

#define USB_CFG_IOPORTNAME D, lai ## definētu USB_CFG_IOPORTNAME B

un

#define USB_CFG_DMINUS_BIT 4, lai#definētu USB_CFG_DMINUS_BIT 0

sadaļā “Papildu aparatūras konfigurācija”:

#define USB_CFG_PULLUP_IOPORTNAME Lai ## definētu USB_CFG_PULLUP_IOPORTNAME B

Lai izveidotu pilnu "ar sāknēšanu saderīgu HID" specifikāciju (pretējā gadījumā nedarbosies multivides atslēgas), mainiet arī:

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

un

#define USB_CFG_INTERFACE_PROTOCOL 0 // Tastatūra, lai#definētu USB_CFG_INTERFACE_PROTOCOL 0x01 // Tastatūra

Pēc izvēles varat arī mainīt ražotāju un ierīces nosaukumu tālāk norādītajās definīcijās.

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) rediģējiet UsbKeyboard.h:

mainīt:

PORTD = 0; // TODO: Tikai USB tapām? DDRD | = ~ USBMASK;

uz

PORTB = 0; // TODO: Tikai USB tapām? DDRB | = ~ USBMASK;

Lai mainītu atslēgas kodus, kas pārsniedz 101, mainiet arī:

0x25, 0x65, // LOGICAL_MAXIMUM (101) līdz: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

un

0x29, 0x65, // USAGE_MAXIMUM (tastatūras lietojumprogramma) līdz: 0x29, 0xE7, // USAGE_MAXIMUM (tastatūras lietojumprogramma)

Jums var būt nepieciešams rediģēt arī šos 3 failus:

usbdrv.husbdrv.cUsbKeyboard.h

un katru reizi, kad redzat, ka PROGMEM pirms mainīgā tipa nosaukuma pievieno "const" (piemēram: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Ja tas nav skaidrs, apmeklējiet vietni

Jūs varat izvairīties no visām šīm izmaiņām, ja vienkārši lejupielādējat pievienoto bibliotēku (visas šīs izmaiņas veicu pats) un vienkārši izvelk to savā skiču grāmatu bibliotēku mapē:

UsbKeyboard konfigurēta attiny85

Rediģēt: nesen es atklāju, ka Alehandro Leiva (https://github.com/gloob) ir parūpējies par šo bibliotēku un, šķiet, arī darbojas labi. Varat arī izmēģināt viņa versiju ar nepieciešamajām izmaiņām, kuras es veicu, lai tā darbotos ar attiny, tādēļ, ja vēlaties to pārbaudīt, vienkārši izvelciet to savā skiču grāmatu bibliotēku mapē.

UsbKeyboard konfigurēta attiny85 (Alejandro Leiva versija)

6. darbība: Attiny-IR un Tinytuner bibliotēku uzstādīšana

A) Attiny-IR bibliotēka:

lejupielādējiet to no https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… un pēc tam izpakojiet to savā skiču grāmatu bibliotēku mapē.

B) Tinytuner bibliotēka:

Tas ir nepieciešams tikai tad, ja neizmantojat 16Mhz kristālu, bet ticiet man, lai gan tas darbojas arī bez kristāla, tas ar to ir daudz stabilāks un maksā dažus centus, tāpēc saglabājiet to vienkāršu, izmantojiet kristālu un izlaidiet šo bibliotēku.

Vēl neesat pārliecināts? Labi, lejupielādējiet bibliotēku no vietnes https://storage.googleapis.com/google-code-archive… un pēc tam izpakojiet to savā skiču grāmatu bibliotēku mapē.

Mēs esam pabeiguši bibliotēkas, tagad mēs turpinām instalēt sāknēšanas ielādētājus.

7. darbība: sāknēšanas ierīču instalēšana un konfigurēšana

Mēs instalēsim divus sāknēšanas ielādētājus, un Mellis, pēc manas pieredzes, ir stabilāks, un mēs to izmantosim pēdējā skicē. Otrs, ko izstrādājis Rowdy Dog Software, ir lielisks kodols, ļoti mazs un ar pieejamu integrētu seriālo saskarni, taču mana tālvadība pēc kāda laika avarēja, tāpēc mēs izmantosim šo sāknēšanas programmu tikai, lai kalibrētu attiny85 iekšējo pulksteni un atšifrētu tālvadības pulti. pogas.

Es zinu, ka ir pieejamas bibliotēkas, lai sniegtu attiny85 sērijas iespējas, bet tad jums būs jāpielāgo bibliotēkas, kurās tiek izmantots sērijas objekts … Man šī procedūra patīk labāk.

Sāksim ar instalēšanu:

A) Mellis sāknēšanas ielādētājs:

vienkārši atveriet Arduino IDE preferences un sadaļā "Papildu dēļu pārvaldnieka vietrāži URL" pievienojiet:

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

Pēc tam atveriet Arduino IDE dēļu pārvaldnieku un meklējiet attiny, instalējiet dēļus no Mellis. Tagad jums vajadzētu redzēt Arduino ID ATtiny25/45/85 un ATtiny24/44/84 dēļus.

B) Rowdy Dog programmatūras mazais sāknēšanas ielādētājs:

lejupielādējiet sāknēšanas ielādētāju no vietnes

Izsaiņojiet failu un nokopējiet sīko mapi skiču burtnīcā/aparatūrā (izveidojiet šo mapi, ja tā vēl nav). pēc tam pārejiet uz mapi sketchbook/hardware/tiny/avr/un:

1) nokopējiet failu Prospective Boards.txt failā boards.txt

2) rediģējiet failu platform.txt un veiciet dažas izmaiņas:

Noņemiet komentāru par mainīgo kompilators.path un atstājiet to norādītu uz mapi hardware/tools/avr/bin/jūsu arduino instalācijas mapē:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/aparatūra/rīki/avr/bin/

mainīt arī kompilatoru. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

Pēc tam mainiet šādus mainīgos, pārliecinoties, ka viss ir savās vietās (šiem failiem ir jābūt, pretējā gadījumā norādiet mainīgos uz pareizajiem ceļiem):

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) rediģējiet failu kodolus/tiny/core_build_options.h un mainiet:

#define TIMER_TO_USE_FOR_MILLIS 1 to#define TIMER_TO_USE_FOR_MILLIS 0

Tas ir ļoti svarīgi, pretējā gadījumā IR uztvērējs izvadīs nulles par katru pogu. Šis paziņojums konfigurē taimeri0 funkcijai millis (), atstājot taimeri1 pieejamu IS bibliotēkai. Pēdējā skice jebkurā gadījumā atspējos taimeri0, tāpēc jums nebūs pieejamas ne milis (), ne aizkaves () funkcijas. Tā vietā jums var būt pieejama funkcija delayMicroseconds ().

Šis sāknēšanas ielādētājs ir minimāls, taču tajā ir iekļauts seriālo objektu atbalsts:

Attiny85 PB2 (pin7) ir TX un PB0 (pin5) ir RX

Jums var būt konfigurācija, izmantojot ISP programmētāju (arduino) un seriālo USB adapteri, kas pievienots vienlaikus, tāpēc jums nav jāmaina vadi pārāk bieži:

Tagad mums ir instalētas un pareizi konfigurētas gan bibliotēkas, gan sāknēšanas ielādētāji, vissmagākais darbs ir pabeigts, un mēs varam sākt pārbaudīt lietas.

8. solis: sāknēšanas ielādētāju dedzināšana un skicju augšupielāde

Es ļoti iesaku aktivizēt detalizēto izvadi saskaņā ar Arduino IDE preferencēm, lai jūs varētu noskaidrot jebkuru iespējamo problēmu.

Lai ierakstītu sāknēšanas ielādētāju Attiny85, jums jāaugšupielādē ISP piemērs Arduino un pēc tam kā ISP jāizvēlas programmētājs Arduino.

Tagad novietojiet 10uF kondensatoru starp atiestatīšanas un zemes tapām uz arduino (tas nav nepieciešams dedzināšanas procesam, bet tas ir augšupielādēt skices attiny85).

Tagad arduino ir gatavs ierakstīt sāknēšanas ielādētājus un ielādēt skices. Jums vienkārši jāizvēlas pareizais dēlis, kas ir saderīgs ar jūsu attiny, un tas jāsadedzina.

Lai ielādētu skici Attiny85, ielādējiet to arduino IDE un noklikšķiniet uz "Augšupielādēt, izmantojot programmētāju".

SVARĪGI: augšupielādējot skici, ir 3 darbības, apkopošana, rakstīšana un pārbaude. Ja apkopošana un rakstīšana patiešām veiksmīgi darbojās, bet verifikācijas process neizdodas, iespējams, ka skice tik un tā darbosies.

9. solis: kalibrējiet Attiny85 iekšējo pulksteni (izlaidiet šo, ja izmantojat kristālu)

Ja jūs nolemjat neizmantot 16Mhz kristālu, jums ir nepieciešams kalibrēt savu attiny85 pulksteni, tāpēc mums būs nepieciešams sāknēšanas ielādētājs ar pieejamu sērijas saskarni, un mēs izmantosim tinytuner bibliotēku, lai iegūtu pareizu kalibrēšanu.

Veiciet tālāk norādītās darbības

  • zem rīkiem izvēlieties Arduino kā ISP programmētāju
  • izvēlieties dēli "ATtiny85 @ 8MHz (iekšējais oscilators; BOD atspējots)"
  • Es pieņemu, ka jums ir gatavs ISP savienojums, kā aprakstīts pirms savienojuma, pretējā gadījumā veiciet savienojumus
  • ierakstīt sāknēšanas ielādētāju
  • šis sāknēšanas ielādētājs ir konfigurējis dažādas tapas seriālajam interfeisam, izmantojiet šo konfigurāciju tikai pašreizējam sāknēšanas ielādētājam

- PB4 (pin3 RX) līdz TX FT232RL attiny85 - PB3 (pin2 TX) līdz RX FT232RL attiny85 - GND (pin4) līdz GND uz FT232RL, jo attiny85 jau darbina arduino, jums nav nepieciešams izveidot savienojumu 5V uz FT232RL, citādi pievienojiet: attiny85 VCC (pin8) līdz 5V uz FT232RL

  • augšupielādējiet tinytuner piemēru attiny85
  • atveriet ekrāna programmu, lai uzraudzītu sērijas sakarus: screen /dev /ttyUSB0 9600
  • atiestatiet attiny85, savienojot RESET tapu (pin1) ar GND (tikai brīdi), ekrāna logā vajadzētu parādīties sveiciena ziņojums
  • Turpiniet sūtīt atsevišķas “x” rakstzīmes (bez pārvešanas atpakaļ; bez rindas padeves), līdz kalibrēšana ir pabeigta
  • kaut kur atzīmējiet kalibrēšanas vērtību (OSCCAL = 0x). Šī ir vērtība, kas jums būs jādeklarē pēdējās skicēs

10. solis: atšifrējiet tālvadības pogas

Tagad ir pienācis laiks atšifrēt mūsu tālvadības pogas un piešķirt tām noteiktus datora taustiņsitienus, lai to izdarītu, veicot šādas darbības:

  • izvēlieties plati "ATtiny85 @ 16MHz (iekšējais PLL; 4,3 V BOD)", ja neizmantojat kristālu, "ATtiny85 @ 16 MHz (ārējais kristāls; 4,3 V BOD"), pretējā gadījumā sadedziniet to
  • ielādējiet skici:
  • Ja neizmantojat kristālu, noņemiet komentāru rindai, kurā ir mainīgais OSCCAL, un piešķiriet to vērtībai, ko atradāt, veicot pulksteņa kalibrēšanu
  • Es pieņemu, ka sensors ir pievienots, kā aprakstīts iepriekš, pretējā gadījumā pievienojiet to
  • Es arī pieņemu, ka FT232RL seriālais un USB adapteris ir pievienots, pretējā gadījumā pievienojiet to
  • atiestatiet attiny85, savienojot RESET tapu (pin1) ar GND (tikai brīdi)
  • atkārtoti nospiediet tālvadības pults pogas un pārbaudiet ekrāna logu, jums ir nepieciešams anotēt katra ieraksta pēdējo numuru, katra poga var radīt 2 dažādus ciparus

Piemērs:

SAŅEMTS D44 3396 SAŅEMTS 544 1348

Piezīmējiet 3396 un 1348 saistībā ar pogu, kuru tikko nospiedāt, tad jums jāizlemj, ko vēlaties darīt ar šo pogu. Piemēram, es varētu vēlēties, lai šī poga nosūta multivides atslēgas kodu “Skaļuma palielināšana”, tad man jāatrod šī atslēgas koda ID. Lai to izdarītu, lejupielādējiet PDF failu:

Pievērsiet uzmanību sadaļai "Tastatūra/tastatūras lapa" 53. lpp. Un izmantojiet ciparus kolonnā Lietošanas ID (decembris), lai piesaistītu tālvadības pogas tastatūras kodiem. Mūsu piemērā mēs redzam, ka atslēgas kods skaļuma palielināšanai ir: 128.

Rediģējiet failu UsbKeyboard.h, kas atrodas UsbKeyboard bibliotēkā, no iepriekš instalētās v-usb paketes un pievienojiet esošajai definīcijai, ja tā vēl nav:

#define KEY_VOL_UP 128

Kad visas mūsu tālvadības pults pogas un visas definīcijas failā UsbKeyboard.h ir gatavas, mēs varam pāriet uz pēdējo darbību.

11. solis: ielādējiet galīgo skici un ceriet uz labāko

Notiek beigu skices ielāde un ceram uz labāko!
Notiek beigu skices ielāde un ceram uz labāko!
Notiek beigu skices ielāde un ceram uz labāko!
Notiek beigu skices ielāde un ceram uz labāko!

Tagad mums ir atšifrētas visas tālvadības pogas, fails UsbKeyboard.h ir piepildīts ar mūsu atslēgas kodiem, tāpēc tagad mēs varam ielādēt arduino IDE galīgo skici no:

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

Šis fails ir precīzs fails, ko izmantoju savam uztvērējam, un tas darbojas 2 dažādām tālvadības pultīm, tāpēc jums, protams, tas ir jāatjaunina, lai varētu strādāt ar tālvadības pulti.

Ja neizmantojat kristālu, noņemiet komentāru rindai, kurā ir mainīgais OSCCAL, un piešķiriet to vērtībai, ko atradāt, veicot pulksteņa kalibrēšanu

Ņemiet vērā, ka cilpas funkcijā ir daudz šādu paziņojumu:

if (results.value == 3405 || results.value == 1357) {// bultiņa uz augšu

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

}

Jums ir jāizveido savi paziņojumi, viens uz katras tālvadības pults pogas. Nosacījumā "ja" jāievada rezultāti.vērtējiet vērtības, kuras esat atradis, atkodējot tālvadības pulti, un kā UsbKeyboard.sendKeyStroke metodes argumentu failā UsbKeyboard.h jāievieto viens no jau definētajiem atslēgas kodiem.

Nosacījums "if (lastStroke! = Results.value)" ir nepieciešams, jo dažas tālvadības pultis vienu reizi trijos gadījumos nosūta vienu un to pašu kodu, un tas novērš otro trāpījumu. Es neesmu pilnīgi pārliecināts, un tas var būt atkarīgs no IR protokola, kas ir ieprogrammēts jūsu tālvadības pultī (es neesmu īsti IR protokolu eksperts), bet saskaņā ar manu pieredzi ar savām tālvadības pultīm katra poga var radīt 2 dažādus kodus un nospiežot un turot pogu, tā nosūta to pašu kodu, bet, nospiežot pogu vēlreiz, tā nosūta otru. Tāpēc šķiet, ka kodi tiek nosūtīti citā veidā, es domāju, ka tas ir standarta režīms, lai uzzinātu, cik reižu jūs nospiežat pogu.

Labi, mēs esam gandrīz pabeiguši, vienkārši augšupielādējiet pēdējo skici, pievienojiet to datoram un redziet, kā tas notiek.

Šim solim labāk ir atvienot gan arduino, gan USB seriālo adapteri un tikai pēc tam pievienojiet USB datora portam (ja kaut kas noiet greizi, ķēdi būs vieglāk atkļūdot).

Ja viss strādāja labi, atverot termināli un nosūtot komandu dmesg, jums vajadzētu redzēt kaut ko līdzīgu pirmajam attēlam šajā solī. Ja radās problēmas, jums vajadzētu būt tādām kļūdām kā otrajā attēlā, un jums jāsāk ķēdes un/vai programmatūras atkļūdošana. Viens no sākotnējo kļūdu avotiem, kas man bija, bija USB centrmezgls, kas nedarbotos ar manu IR uztvērēju (citi tomēr strādāja) … tāpēc pēdējam solim labāk ir pievienot IR uztvērēju tieši datora portam. Iespējamās kļūdas varētu būt grūti atrast, bet galu galā, tāpat kā es, jūs daudz uzzinātu, un cena, kas jāmaksā, ir tā vērta, es jums apliecinu.

Tas ir viss, ļaudis, dariet man zināmu, ja pamanāt kļūdas šajā pamācībā, un izbaudiet savu pavisam jauno IR USB uztvērēju!

Ieteicams: