Orodha ya maudhui:

Mpokeaji wa USB wa ATtiny85 IR: Hatua 11 (na Picha)
Mpokeaji wa USB wa ATtiny85 IR: Hatua 11 (na Picha)

Video: Mpokeaji wa USB wa ATtiny85 IR: Hatua 11 (na Picha)

Video: Mpokeaji wa USB wa ATtiny85 IR: Hatua 11 (na Picha)
Video: Lesson 01 Arduino Boards | Robojax Arduino Step By Step Course 2024, Novemba
Anonim
Mpokeaji wa USB wa ATtiny85
Mpokeaji wa USB wa ATtiny85

ONYO, HII INAELEZWA IMEKUWA IMETOLEWA

Maktaba ya v-usb imeundwa kufanya kazi na itifaki ya USB 1.1 ambayo haipo leo. Pamoja na kuwasili kwa USB3 utakuwa na zaidi ya maumivu ya kichwa kujaribu kutengeneza vifaa vya usb kufanya kazi. Baada ya kubadilisha kituo changu cha media titika, nina shida nyingi za utulivu na ingawa mpokeaji anafanya kazi, baada ya muda huacha kufanya kazi. Sijafanikiwa kujaribu kuirekebisha. Nilitengeneza pia toleo la atmega328p lakini hii ilikuwa na maswala sawa. Kutumia kipima muda cha mwangalizi kuweka upya bodi mara kwa mara hakusaidia kitu kwa hivyo naachana na v-usb.

Jitengenezee kibali na usiendelee na hii ya kufundisha isipokuwa ikiwa ni kwa sababu ya kielimu. Ninapendekeza badala yake nunue moduli ya chip ATmega 32U4 ambayo tayari imeunganisha kiolesura cha usb na fuata mwongozo huu:

www.sparkfun.com/tutorials/337

Kisha tupa sensor ya IR TSOP31238 na uko vizuri kwenda.

Habari watunga! hii ni ya kufundisha kujenga kipokezi cha USB IR kinachofanya kazi kwa kutumia microcontroller ya Attiny85. Nilianzisha mradi huu kushinda ukosefu wa msaada (angalau msaada kamili) kwa viboreshaji vya IR katika GNU / Linux OS. Kufuatia maagizo haya unaweza kuunda kipokeaji kinachoweza kusanidiwa cha USB IR kinachofanya kazi na kijijini chochote cha IR kwa pesa chache.

Kwanza kabisa, hii inaweza kufundishwa bila kufanya kazi kwa bidii ya watu ambao waliunda maktaba ambayo ninatumia hapa:

  • David A. Mellis kwa msingi wake wa dhati
  • Programu ya Mbwa ya Rowdy kwa maktaba yao TinyTuner
  • Programu ya Mbwa ya Rowdy kwa bootloader yao ndogo
  • Rancidbacon (https://rancidbacon.com/) kwa bandari yake ya arduino ya maktaba ya v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee kwa maktaba yake ya IR kwa vidonda vidogo vilivyopatikana kwenye maoni ya nambari inayoweza kufundishwa ya https://www.instructables.com/id/Attiny-IR-librar_ code kwenye https://www.instructables.com/id/Attiny-IR -librar…

Wakati mwingine si rahisi kupata mmiliki sahihi wa maktaba, kwa hivyo ikiwa nitakosea, tafadhali acha maoni na ningesuluhisha suala hilo ASAP.

Mwongozo huu upo kwa sababu sikupata mafunzo / mwongozo kamili ukifanya kazi nje ya kisanduku (inaweza kuwepo, lakini sikuweza kuipata) kwa hivyo nikakusanya habari zote zinazopatikana kwenye wavuti na baada ya majaribio mengi na makosa nilikuja na mwongozo kamili wa kuunda kipokea kazi cha USB IR ambacho kwa kweli hufanya kazi vizuri.

Vyanzo vikuu vya habari ambavyo nimefuata:

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

Hatua ya 1: Baadhi ya Mazingatio

  • Sina programu ya AVR ISP na sipendi kununua moja kwa hivyo nimetumia Arduino kupanga attiny85
  • Sijali OS nyingine yoyote isipokuwa GNU / Linux kwa hivyo sijui ikiwa hii itafanya kazi vinginevyo.
  • kuna maktaba mengine ya IR lakini sikuweza kuwafanya wafanye kazi hata na arduino. Fikiria ingawa nilianza na ujuzi mdogo juu ya maktaba za IR. Labda ningeweza kuwafanya wafanye kazi sasa baada ya uzoefu kupata kushughulika na idadi sawa ya maswala. Kwa hivyo, nilikuwa nimepotea na nilikuwa nimekata tamaa kabla ya kupata maktaba ambayo Seejaydee alitoa na nimeitumia tangu wakati huo (shukrani nyingi mtu!).
  • Kuna mipangilio mingine ya vifaa, lakini nimetumia ile tu inayotumia 5V kuwezesha diodi ya attiny85 na mbili 3.6V 0.5W zener kuziba voltage ya laini za data, inafanya kazi nje ya sanduku kwa hivyo sikujichanganya na mazungumzo mengine.
  • Unaweza kutumia kioo cha 16Mhz au unaweza kutumia maktaba ya tinytuner kusawazisha saa ya ndani ya attiny85 yako. Ninashauri sana matumizi ya kioo, ni imara zaidi na labda itakuepusha maumivu ya kichwa mengi.
  • Ninatumia hapa bootloaders mbili tofauti kwa attiny85:

a) Toleo la Programu ya Mbwa ya Mbwa, imeunganisha kiolesura cha serial ambacho ni kizuri sana na ni kidogo sana kwa hivyo una nafasi zaidi ya programu yako na maktaba zingine. Shida ni kwamba kwa sababu zingine ingawa inafanya kazi vizuri, baada ya muda kifaa cha usb kilikatishwa (unaweza kupata maswala na amri dmesg). Sijui ikiwa hii ni shida ya msingi au mchanganyiko mchanganyiko wa msingi pamoja na maktaba iliyochaguliwa kwa hivyo baada ya muda niliamua kutumia msingi huu kuamua tu funguo za mbali na kusawazisha saa (wakati hautumii 16Mhz kioo). Baada ya hapo, mimi huwaka tu Mellis bootloader na kupakia mchoro dhahiri ambao hautumii kiolesura cha serial.

b) Toleo la Mellis, bootloader thabiti, nimetumia hii katika miradi mingi. Ningekuwa nimetumia bootloader hii kila wakati ikiwa imejumuisha kiolesura cha serial. Ninatumia msingi huu katika mchoro wa mwisho baada ya kusimbua funguo zote kwenye kumbukumbu zangu.

Hatua ya 2: Wacha tuanze na vifaa

Wacha tuanze na vifaa
Wacha tuanze na vifaa
Wacha tuanze na vifaa
Wacha tuanze na vifaa
Wacha tuanze na vifaa
Wacha tuanze na vifaa

Zana unahitaji:

  • bodi inayoendana na arduino
  • serial kwa adapta ya usb kuamua funguo zako za mbali (tumia tu FT232RL)
  • PC iliyo na GNU / Linux iliyosanikishwa na IDE ya arduino iliyosanidiwa vizuri, ninatumia arduino IDE 1.8.0
  • kijijini cha IR ili kujaribu kifaa chako (hata kibaya kama kile kinachopatikana katika vifaa vya kuanzia vya arduino vitafanya kazi)
  • multimeter kutatua bodi yako (natumai hautaihitaji, bahati nzuri!)

Orodha ya vifaa:

  • 1 attiny85
  • Vipimo 2 68R
  • Kinga 1 1.5K
  • Kinga 1 4.7K
  • 1 16Mhz kioo
  • 1 22pF capacitor
  • 1 0.1uF capacitor
  • 1 10uF capacitor
  • 2 3.6V 0.5W diode za zener
  • Aina 1 ya USB Kiunganishi cha kiume
  • Pini 1 ya ukanda na pini 6 za kupanga na kumaliza bodi.
  • 1 IR sensor TSOP31238
  • kahawa nyingi ili uwe macho

Kabla ya kuuza bodi dhahiri, labda ungetaka kutengeneza mfano wa ubao wa mkate kwa madhumuni ya upimaji, kufuatia schema iliyoambatanishwa na hii inayoweza kufundishwa inapaswa kuwa ya kutosha kuijenga.

Ili kuunganisha attiny85 na PC, muundo wa mwisho unatumia kontakt aina ya USB ambayo inauzwa ndani ya bodi, lakini kwa mfano utahitaji kutengeneza kebo ya USB ambayo unaweza kuunganisha kwenye ubao wa mkate:

Solder ndani ya kipande kidogo cha ubao 4 wa pini, kisha kata kebo ya zamani ya USB na unganisha pini kwa waya 4 ndani ya kebo ya usb:

  • nyekundu ni VCC (5V)
  • nyeusi ni GND
  • nyeupe ni D-
  • kijani ni D +

Weka kila kitu pamoja na gundi ya moto.

Sasa tunahitaji kuunganisha programu ya ISP (Arduino), USB kwa adapta ya serial (FT232RL) na sensorer ya IR kwa attiny85.

Unaweza kuondoka kushikamana pamoja ili uweze kuchoma bootloaders tofauti, kupakia michoro na uangalie bandari ya serial bila kubadilisha waya, Ili kufanya hivyo, unganisha kila kitu kufuatia maagizo haya:

Programu ya ISP (Arduino): hii inatuwezesha kuchoma bootloaders na michoro za kupakia

  • attiny85 PB0 (pin5) kwa pin11 (MOSI) katika arduino
  • attiny85 PB1 (pin6) hadi pin12 (MISO) katika arduino
  • attiny85 PB2 (pin7) hadi pin13 (SCK) katika arduino
  • attiny85 RESET (pin1) na pullup (4.6k hadi VCC) kubandika10 katika arduino
  • attiny85 VCC kwa 5V katika arduino
  • attiny85 GND kwa GND katika arduino

usb kwa adapta ya serial (FT232RL): hii inatuwezesha kuangalia bandari ya serial

  • attiny85 PB0 (pin5 RX) kwa TX katika FT232RL
  • attiny85 PB2 (pin7 TX) kwa RX katika FT232RL
  • attiny85 GND (pin4) kwa GND kwenye FT232RL
  • kwa kuwa attiny85 tayari imetumiwa na arduino hauitaji kuunganisha 5v kwenye FT232RL, vinginevyo unganisha: attiny85 VCC (pin8) hadi 5V kwenye FT232RL

usb kwa adapta ya serial (FT232RL) tu kwa hesabu ya saa (tu kwa bootloader "ATtiny85 @ 8MHz (oscillator ya ndani; BOD imezimwa)")

  • PB4 (pin3 RX) kwa TX katika FT232RL attiny85
  • PB3 (pin2 TX) hadi RX kwenye FT232RL attiny85
  • GND (pin4) hadi GND kwenye FT232RL
  • kwa kuwa attiny85 tayari imetumiwa na arduino hauitaji kuunganisha 5v kwenye FT232RL, vinginevyo unganisha: attiny85 VCC (pin8) hadi 5V kwenye FT232RL

Ikiwa unatumia kioo cha 16Mhz, kiunganishe na pini za Attiny85 PB3 (pin2) na PB4 (pin3) na unganisha kila pini kwenye GND na pia kupitia kofia ya 22pF kila moja.

Chuja Attiny85 VCC na 0.1uF na 10uF capacitors inayowaunganisha sawa na GND

Unganisha pini ya pato la sensa ya IR kwa attiny85 PB1 (pin6), itie nguvu.

Jenga na unganisha kiolesura cha usb:

  • GND (waya mweusi): unganisha kwa GND ya kawaida (misingi yote imeunganishwa pamoja)
  • D- (waya mweupe) iliyounganishwa na attiny85 PB0 (pin5) kupitia kontena la 68R, inganisha pia chini kupitia zener 3.6V 0.5W na uivute hadi VCC na kontena 1.5K
  • D + (waya kijani) iliyounganishwa na PB2 kupitia kontena la 68R, unganisha chini kupitia zener 3.6V 0.5W
  • 5V, unaweza kuiacha bila kuunganishwa kwani kila kitu kinatumiwa na Arduino katika hatua hii, vinginevyo unganisha kwenye attiny85 VCC

Diode za zener zimeunganishwa ili anode zimefungwa kwa GND na cathode zimeunganishwa na mistari ya data D + na D-.

Hatua ya 3: Ubunifu wa Mwisho

Ubunifu wa Mwisho
Ubunifu wa Mwisho
Ubunifu wa Mwisho
Ubunifu wa Mwisho
Ubunifu wa Mwisho
Ubunifu wa Mwisho

Kwa muundo wa mwisho unaweza kutumia ubao wa kupita kupitia vifaa vya shimo au weka bodi yako mwenyewe na utumie vifaa vya smd. Ili kujifunza jinsi ya kuweka bodi, google tu, kuna mafunzo ya kushangaza yanayopatikana mkondoni.

Nimeweka bodi yangu mwenyewe na ninafurahi sana na matokeo ya mwisho (bodi ndogo, thabiti na imara). Ndio, najua kwamba kata hiyo inavuta, lakini sikuweza kutumia zana yoyote ya umeme usiku sana na mimi kata tu bodi na mkasi wangu wa bati.

Kwa njia, athari kwenye picha sio shaba wazi, wametibiwa na kemikali mbaya ambayo hutengeneza kidogo shaba (inashukiwa kusababisha saratani, kwa hivyo itumie kwa uangalifu mkubwa, globes za mpira na kinyago cha vumbi):

Tumia skimu hapo juu kubuni mpangilio wako au unaweza kutumia tu alama yangu ya pcb kuweka bodi yako.

Hatua ya 4: Kukabiliana na Programu

Mzunguko katika mradi huu ni rahisi sana, programu badala yake inahitaji juhudi kubwa.

Tunahitaji angalau maktaba 2 (moja zaidi ikiwa hutumii kioo) pamoja na 2 bootloaders kufanya kazi hii. Nilipoanza mradi huu nilijaribu maktaba kadhaa, wakati mwingine hazikufanya kazi na mara nyingi hazikusanidiwa kufanya kazi na Attiny85 nje ya sanduku (sikujua bado). Kisha nikapata shida na maktaba / bootloaders zinazoingiliana. Mwishowe ilibidi nishughulike na idadi ya makosa wakati niliunganisha mzunguko wa mwisho na PC yangu. Sikuwa na mwongozo huu, kwa hivyo nadhani utakuwa sawa, fuata tu hatua katika hii inayoweza kufundishwa, ikiwa utafanya hivyo bila kufanya makosa unapaswa kuwa sawa:)

Tunahitaji sasa kusanikisha na kusanidi maktaba kadhaa:

  • v-usb kwa maktaba ya arduino: maktaba hii inaruhusu mdhibiti mdogo kutambuliwa na PC kama Kinanda cha USB kilichofichwa, na tutatumia kutuma viharusi muhimu kwa PC. Maktaba hii inahitaji mabadiliko kadhaa ili kuendana na attiny85
  • maktaba ya tinytuner ikiwa hutatumia kioo cha 16Mhz. Utahitaji basi kusawazisha saa ya ndani ya mdhibiti mdogo. Maktaba hii inafanya kazi nje ya sanduku.
  • Attiny-IR-maktaba kuingiliana na sensorer IR. Maktaba hii inafanya kazi nje ya sanduku.

Tunahitaji pia 2 bootloaders:

  • Toleo la Programu ya Mbwa, na kiolesura cha serial kinapatikana. Bootloader hii inahitaji tweak ndogo ili kufanya kazi na attiny85 kwani inatumia timer1 kwa kazi ya millis () na haitafanya kazi na maktaba ya IR. Tunahitaji kubadilisha kipima muda kuwa timer0.
  • Toleo la Mellis, bootloader thabiti ambayo tutatumia katika hatua ya mwisho. Hii inafanya kazi nje ya sanduku.

Hatua ya 5: Ufungaji na Usanidi wa Maktaba ya V-usb

Pakua maktaba kutoka https://code.google.com/archive/p/vusb-for-arduin ……. Fungua faili na unakili maktaba ya folda / UsbKeyboard kwenye folda yako ya maktaba ya vitabu vya sketchbook.

Sasa unahitaji kuhariri faili kadhaa ili kuendana na ATtiny85 (imeundwa kufanya kazi na arduino):

A) hariri usbconfig.h:

chini ya mabadiliko ya "Hardware Config":

#fafanua USB_CFG_IOPORTNAME Dto ## fafanua USB_CFG_IOPORTNAME B

na

#fafanua USB_CFG_DMINUS_BIT 4to # kufafanua USB_CFG_DMINUS_BIT 0

chini ya mabadiliko ya "Hiari ya Usanidi wa Vifaa":

#fafanua USB_CFG_PULLUP_IOPORTNAME Dto ## fafanua USB_CFG_PULLUP_IOPORTNAME B

Ili kuunda ufafanuzi kamili wa "kujificha kwa boot" (vinginevyo hakuna vitufe vya media titika vitakavyofanya kazi), badili pia:

#fafanua USB_CFG_INTERFACE_SUBCLASS 0 // Bootto # fafanua USB_CFG_INTERFACE_SUBCLASS 0x01 // Boot

na

#fafanua USB_CFG_INTERFACE_PROTOCOL 0 // Kinanda # kufafanua USB_CFG_INTERFACE_PROTOCOL 0x01 // Kinanda

Kwa hiari unaweza pia kubadilisha jina la mtengenezaji na kifaa katika fasili zifuatazo:

#fafanua USB_CFG_VENDOR_NAME

#fafanua USB_CFG_DEVICE_NAME

B) hariri UsbKeyboard.h:

mabadiliko:

PORTD = 0; // TODO: Ni kwa pini za USB tu? DDRD | = ~ USBMASK;

kwa

PORTB = 0; // TODO: Ni kwa pini za USB tu? DDRB | = ~ USBMASK;

Kuruhusu nambari za nambari zaidi ya mabadiliko 101 pia:

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

na

0x29, 0x65, // USAGE_MAXIMUM (Programu ya Kinanda) kwenda: 0x29, 0xE7, // USAGE_MAXIMUM (Programu ya Kibodi)

Unaweza kuhitaji kuhariri pia faili hizi 3:

usbdrv.husbdrv.cUsbKeyboard.h

na kila wakati unapoona PROGMEM ongeza "const" kabla ya jina la aina inayobadilika (mfano: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Ikiwa hii haijulikani tembelea

Unaweza kuepuka mabadiliko haya yote ikiwa utapakua tu maktaba iliyoambatanishwa (nilifanya mabadiliko haya yote mwenyewe) na uiondoe tu ndani ya folda yako ya maktaba ya vitabu vya sketchbook:

UsbKeyboard imesanidiwa kwa attiny85

Hariri: hivi karibuni nimegundua kuwa Alejandro Leiva (https://github.com/gloob) ametunzwa maktaba hii na inaonekana inafanya kazi vizuri pia. Unaweza pia kujaribu toleo lake na mabadiliko muhimu ambayo nimefanya kuifanya ifanye kazi na attiny, kwa hivyo ikiwa unataka kuangalia hii ing'oa tu ndani ya folda yako ya maktaba ya vitabu vya sketchbook.

UsbKeyboard imesanidiwa kwa attiny85 (Toleo la Alejandro Leiva)

Hatua ya 6: Ufungaji wa Maktaba za Attiny-IR na Tinytuner

A) Maktaba ya Attiny-IR:

ipakue kutoka kwa https://drive.google.com/open?id=0B_w9z88wnDtFNHlq …… kisha uifungue kwenye folda yako ya maktaba ya vitabu vya sketchbook.

B) Tinytuner maktaba:

Hii inahitajika tu ikiwa hutumii kioo cha 16Mhz, lakini niamini, ingawa inafanya kazi pia bila kioo, ni thabiti zaidi nayo na inagharimu senti chache, kwa hivyo iwe rahisi, tumia kioo na ruka maktaba hii.

Bado haujaamini? sawa, pakua maktaba kutoka kwa

Tumemaliza na maktaba, sasa tunaendelea kusanikisha bootloaders.

Hatua ya 7: Ufungaji na usanidi wa Bootloaders

Tutafunga bootloaders mbili Mellis moja ni kulingana na uzoefu wangu imara zaidi na tutatumia kwenye mchoro wa mwisho. Nyingine iliyotengenezwa na Programu ya Mbwa ya Rowdy ni msingi wa kutisha, mdogo sana na ina kiunganishi cha serial kinachopatikana, lakini kijijini changu kilianguka baada ya muda fulani nayo kwa hivyo tutatumia bootloader hii tu kurekebisha saa ya ndani ya attiny85 na kuamua kijijini chetu. vifungo.

Ninajua kuwa kuna maktaba zinazopatikana ili kutoa uwezo wa mfululizo wa 85, lakini basi utahitaji kurekebisha maktaba zinazotumia kitu cha serial… napenda utaratibu huu vizuri.

Wacha tuanze na usanidi:

A) Mellis bootloader:

fungua tu mapendeleo ya IDE ya Arduino na ongeza kwenye URL za Meneja wa Bodi za Ziada:

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

Kisha fungua msimamizi wa bodi za Arduino IDE na utafute attiny, weka bodi kutoka Mellis. Sasa unapaswa kuona Kitambulisho cha Arduino ATtiny25 / 45/85 na bodi za ATtiny24 / 44/84.

B) Programu ndogo ya mbwa ya Rowdy:

pakua bootloader kutoka https://storage.googleapis.com/google-code-archive …….

Fungua faili na nakili folda ndogo ndani ya kitabu chako cha sketch / vifaa (tengeneza folda hii ikiwa bado haipo). kisha nenda kwenye kitabu cha sketchbook / vifaa / vidogo / avr / na:

1) nakili faili Boards.txt inayotarajiwa kwenye bodi.txt ya faili

2) hariri jukwaa la faili.txt na ufanye mabadiliko:

Ondoa mkusanyiko wa njia inayobadilika na kuiacha ikielekeza kwenye vifaa vya folda / zana / avr / bin / ndani ya folda yako ya usanikishaji wa arduino:

mkusanyaji.path = {PATH_TO_YOUR_ARDUINO_FOLDER} / vifaa / zana / avr / bin /

badilisha pia mkusanyaji S. mabendera = -c -g -kusanya-na-cpptocompiler S. mabendera = -c -g -x kukusanyika-na-cpp

Kisha badilisha vigezo vifuatavyo uhakikishe kuwa kila kitu kiko mahali pake (faili hizo lazima ziwepo, vinginevyo elekeza vigeuzi kwenye njia sahihi):

zana.avrdude.cmd.path = {runtime.ide.path} / vifaa / zana / avr / bin / avrdude

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

zana.avrdude.cmd.path.linux = {runtime.ide.path} / vifaa / zana / avr / bin / avrdude

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

3) hariri faili za faili / vidogo / msingi_build_options.h na ubadilishe:

#fafanua TIMER_TO_USE_FOR_MILLIS 1 to # define TIMER_TO_USE_FOR_MILLIS 0

Hii ni muhimu sana, vinginevyo mpokeaji wa IR atatoa zero kwa kila kitufe. Taarifa hii inasanidi timer0 kwa kazi ya millis () ikiacha timer1 inapatikana kwa maktaba ya IR. Mchoro wa mwisho utalemaza timer0 hata hivyo hautakuwa na kazi za millis () na kuchelewesha (). Labda unaweza kuwa na kucheleweshaMicroseconds () kazi badala yake.

Bootloader hii ni ndogo, lakini imejumuisha msaada wa kitu cha serial:

Attiny85 PB2 (pin7) ni TX na PB0 (pin5) ni RX

Unaweza kuwa na usanidi na programu ya ISP (arduino) na serial kwa adapta ya usb iliyounganishwa kwa wakati mmoja kwa hivyo hauitaji kubadilisha waya mara nyingi:

Sasa tuna maktaba na bootloaders zilizosanikishwa na kusanidiwa vizuri, kazi ngumu zaidi imekamilika na tunaweza kuanza kujaribu vitu.

Hatua ya 8: Kuchoma Bootloaders na Kupakia Michoro

Ninashauri sana kuamsha pato la verbose chini ya mapendeleo ya Arduino IDE ili uweze kujua shida yoyote ya baadaye.

Ili kuchoma bootloader kwenye Attiny85 unahitaji kupakia mfano wa ISP kwa Arduino na kisha uchague programu ya Arduino kama ISP.

Sasa weka capacitor ya 10uF kati ya pini za kuweka upya na za ardhini kwenye arduino (haihitajiki kwa mchakato wa kuchoma, lakini ni kupakia michoro kwenye attiny85).

Sasa arduino iko tayari kuchoma bootloaders na michoro za kupakia. Unahitaji tu kuchagua bodi inayofaa inayoambatana na uangalifu wako na kuichoma.

Ili kupakia mchoro kwenye Attiny85, ipakia kwenye IDE ya arduino na bonyeza "Pakia ukitumia programu".

MUHIMU: wakati wa kupakia mchoro kuna hatua 3, mkusanyiko, uandishi na uhakiki. Ikiwa mkusanyiko na uandishi vilifanya kazi kwa mafanikio, lakini mchakato wa uthibitishaji unashindwa, inawezekana kwamba mchoro ungefanya kazi hata hivyo.

Hatua ya 9: Sanusha Saa ya Ndani ya Attiny85 (ruka Hii Ukitumia Kioo)

Ikiwa utaamua kutotumia kioo cha 16Mhz unahitaji kurekebisha saa yako ya attiny85, kwa hivyo tutahitaji bootloader na kiwambo cha serial kinachopatikana na tutatumia maktaba ya tinytuner kupata usawa sahihi.

Fuata hatua zifuatazo

  • chagua chini ya zana Arduino kama programu ya ISP
  • chagua bodi "ATtiny85 @ 8MHz (oscillator ya ndani; BOD imezimwa)"
  • Nadhani kuwa una unganisho la ISP tayari kama ilivyoelezewa kabla ya unganisha vinginevyo fanya unganisho
  • kuchoma bootloader
  • bootloader hii imesanidi pini tofauti kwa kiolesura cha serial, tumia usanidi huu tu kwa bootloader ya sasa

- PB4 (pin3 RX) hadi TX katika FT232RL attiny85 - PB3 (pin2 TX) hadi RX katika FT232RL attiny85 - GND (pin4) hadi GND kwenye FT232RL kwani attiny85 tayari imetumiwa na arduino hauitaji kuunganisha 5v kwenye FT232RL, vinginevyo unganisha: attiny85 VCC (pin8) hadi 5V kwenye FT232RL

  • pakia mfano wa vidogo kwenye attiny85
  • fungua programu ya skrini kufuatilia mawasiliano ya serial: skrini / dev / ttyUSB0 9600
  • weka upya attiny85 inayounganisha pini ya RESET (pin1) na GND (kwa muda mfupi tu), Ujumbe wa kukaribisha unapaswa kuonyesha kwenye dirisha la skrini
  • Endelea kutuma herufi 'x' moja (hakuna kurudi-kwa kubeba gari, hakuna-kulisha laini) mpaka usuluhishi ukamilike
  • fafanua mahali pengine thamani ya upimaji (OSCCAL = 0x). Hii ndio thamani ambayo utahitaji kutangaza kwenye michoro za mwisho

Hatua ya 10: Tambua vifungo vyako vya mbali

Sasa ni wakati wa kuamua vifungo vyetu vya mbali na kuwapa viboko maalum kwenye PC, kufanya hivyo kufuata hatua zifuatazo:

  • chagua ubao "ATtiny85 @ 16MHz (ndani ya PLL; 4.3V BOD)" ikiwa hutumii kioo, "ATtiny85 @ 16 MHz (kioo nje; 4.3 V BOD" vinginevyo, kisha ichome
  • pakia mchoro:
  • Ikiwa hutumii kioo, ondoa mstari ambao una tofauti ya OSCCAL na uipe thamani ambayo umepata wakati ulifanya hesabu ya saa
  • Nadhani sensor imeunganishwa kama ilivyoelezwa hapo awali, vinginevyo unganisha
  • Nadhani vile vile kwamba FT232RL serial kwa adapta ya usb imeunganishwa, vinginevyo unganisha
  • weka upya attiny85 inayounganisha pini ya RESET (pin1) na GND (kidogo tu)
  • piga mara kwa mara vifungo vya rimoti yako na uangalie dirisha la skrini, unahitaji kuelezea nambari ya mwisho kwa kila rekodi, kila kitufe kinaweza kutoa nambari 2 tofauti

Mfano:

ILIYOPOKEA D44 3396 ILIPOKELEWA 544 1348

Fafanua 3396 na 1348 kwa kushirikiana na kitufe ulichokigonga tu, basi lazima uamue unataka kufanya nini na kitufe hicho. Kwa mfano naweza kutaka kitufe hicho kutuma kitufe cha media titika "Volume up", basi ninahitaji kupata kitambulisho cha nambari hiyo ya msimbo. Ili kufanya hivyo, pakua PDF:

Angalia sehemu ya "Ukurasa wa Kibodi / Keypad" ukurasa wa 53 na utumie nambari kwenye Kitambulisho cha Matumizi ya safu (Desemba) ili kufunga vifungo vyako vya mbali kwa nambari za kibodi. Katika mfano wetu tunaweza kuona kwamba msimbo wa ufunguo wa "Volume up" ni: 128.

Hariri faili faili UsbKeyboard.h ndani ya maktaba ya UsbKeyboard kutoka kwa kifurushi cha v-usb ambacho tulisakinisha hapo awali na ongeza kwa ufafanuzi uliopo ikiwa haiko tayari:

#fafanua MUHIMU_VOL_UP 128

Tunapomaliza na vifungo vyetu vyote vya mbali / na vifafanuzi vyote kwenye faili UsbKeyboard.h ziko tayari tunaweza kuelekea hatua ya mwisho.

Hatua ya 11: Kupakia Mchoro wa Mwisho na Tumaini la Bora

Inapakia Mchoro wa Mwisho na Tumaini la Bora!
Inapakia Mchoro wa Mwisho na Tumaini la Bora!
Inapakia Mchoro wa Mwisho na Tumaini la Bora!
Inapakia Mchoro wa Mwisho na Tumaini la Bora!

Sasa tuna vifungo vyote vya mbali vilivyotengwa, faili UsbKeyboard.h imejazwa na nambari zetu kuu, kwa hivyo sasa tunaweza kupakia kwenye IDE ya arduino mchoro dhahiri kutoka:

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

Faili hii ndio faili halisi ninayotumia kwa mpokeaji wangu, na inafanya kazi kwa viboreshaji 2 tofauti, kwa hivyo ni wazi utahitaji kuisasisha ili ufanye kazi na kijijini / s zako.

Ikiwa hutumii kioo, ondoa mstari ambao una tofauti ya OSCCAL na uipe thamani ambayo umepata wakati ulifanya hesabu ya saa

Kumbuka kuwa katika kazi ya kitanzi kuna taarifa nyingi kama hii:

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

ikiwa (mwishoStroke! = matokeo.thamani) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

Lazima uunde taarifa zako mwenyewe, moja kwa kila kitufe katika rimoti yako. Katika hali ya "ikiwa" lazima uweke kwenye matokeo.thamini maadili ambayo umepata kuchambua kijijini chako na kama hoja ya njia ya UsbKeyboard.sendKeyStroke lazima uweke moja ya nambari kuu zilizofafanuliwa tayari kwenye faili UsbKeyboard.h.

Hali ikiwa (mwishoStroke! Sina hakika kabisa na Inaweza kutegemea itifaki ya IR ambayo imewekwa kwenye kijijini chako (mimi sio mtaalam wa itifaki za IR) lakini kulingana na uzoefu wangu na kumbukumbu zangu mwenyewe, kila kitufe kinaweza kutoa nambari 2 tofauti na wakati unabonyeza na kushikilia kitufe, hutuma nambari ileile, lakini ukigonga kitufe tena hutuma ile nyingine. Kwa hivyo inaonekana kwamba nambari zinatumwa kwa njia mbadala, nadhani ni hali ya kawaida kujua ni mara ngapi uligonga kitufe.

Sawa, tumekaribia kumaliza, pakia tu mchoro wa mwisho, unganisha kwenye PC na uone jinsi inavyokwenda.

Kwa hatua hii, ni bora ikiwa utachomoa arduino na usb kwa adapta ya serial na kisha tu, ingiza USB kwenye bandari yako ya PC (ikiwa kuna kitu kitaenda vibaya mzunguko wako utakuwa rahisi kusuluhisha).

Ikiwa kila kitu kilifanya kazi vizuri, unapofungua terminal na kutuma amri ya dmesg unapaswa kuona kitu sawa na picha ya kwanza kwenye hatua hii. Ikiwa kulikuwa na maswala, unapaswa kuwa na makosa kama yale yanayopatikana kwenye picha ya pili na lazima uanze kurekebisha mzunguko wako na / au programu. Moja ya chanzo cha makosa ya awali ambayo nilikuwa nayo ilikuwa kitovu cha USB ambacho hakingefanya kazi na mpokeaji wangu wa IR (wengine walifanya kazi ingawa)… kwa hivyo ni bora kwa hatua hii ya mwisho kuziba mpokeaji wa IR moja kwa moja kwenye bandari yako ya PC. Hitilafu za baadaye zinaweza kuwa ngumu kupata, lakini mwishowe, kama mimi, utajifunza mengi na bei ya kulipa ina thamani yake, nakuhakikishia.

Hayo ni yote jamaa, nijulishe ikiwa utaona makosa yoyote katika hii inayoweza kufundishwa na kufurahiya kipokezi chako kipya cha USB cha IR!

Ilipendekeza: