Përmbajtje:

Marrësi ATtiny85 IR USB: 11 hapa (me fotografi)
Marrësi ATtiny85 IR USB: 11 hapa (me fotografi)

Video: Marrësi ATtiny85 IR USB: 11 hapa (me fotografi)

Video: Marrësi ATtiny85 IR USB: 11 hapa (me fotografi)
Video: Zbulohet marrësi i fotografisë së Shpëtim Gjikës 2024, Korrik
Anonim
Marrësi ATtiny85 IR USB
Marrësi ATtiny85 IR USB

PARALAJMRIM, KJO UDHUCTZUES SHT MBROJTUR

Biblioteka v-usb është krijuar për të punuar me protokollin USB 1.1 që vështirë se ekziston në ditët e sotme. Me ardhjen e USB3 do të keni më shumë se një dhimbje koke duke u përpjekur që pajisjet v-usb të funksionojnë. Pas ndryshimit të qendrës sime multimediale, kam shumë probleme stabiliteti dhe edhe pse marrësi punon, pas një kohe ai ndalon së punuari. Unë kam qenë i pasuksesshëm duke u përpjekur për ta rregulluar atë. Unë gjithashtu bëra një version atmega328p, por ky kishte të njëjtat çështje. Përdorimi i një kohëmatësi mbikëqyrës për të rivendosur bordin në mënyrë periodike nuk më ndihmoi as kështu që unë heq dorë nga v-usb.

Bëjini një nder vetes dhe mos vazhdoni me këtë udhëzues nëse nuk është për qëllime edukative. Në vend të kësaj, unë rekomandoj të blini një modul çipi ATmega 32U4 i cili tashmë ka integruar ndërfaqen usb dhe ndiqni këtë udhëzues:

www.sparkfun.com/tutorials/337

Pastaj hidhni një sensor IR TSOP31238 dhe jeni mirë të shkoni.

Përshëndetje krijues! ky është një udhëzues për të ndërtuar një marrës IR IR USB duke përdorur një mikrokontrollues Attiny85. Unë e fillova këtë projekt për të kapërcyer mungesën e mbështetjes (të paktën mbështetje të plotë) për disa telekomandë IR në GNU/Linux OS. Duke ndjekur këto udhëzime, ju mund të krijoni një marrës IR të programueshëm që punon me ndonjë telekomandë IR për disa dollarë.

Para së gjithash, ky udhëzues nuk do të ekzistonte pa punën e palodhur të njerëzve që krijuan bibliotekat që unë përdor këtu:

  • David A. Mellis për thelbin e tij të dukshëm
  • Softuerë Rowdy Dog për bibliotekën e tyre TinyTuner
  • Softueri Rowdy Dog për ngarkuesin e tyre të vegjël
  • Rancidbacon (https://rancidbacon.com/) për portin e tij arduino të bibliotekës v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee për bibliotekën e tij IR për bërthamat e vogla të gjetura në komentet e kodit https://www.instructables.com/id/Attiny-IR-librar… në https://www.instructables.com/id/Attiny-IR -biblioteka…

Ndonjëherë nuk është e lehtë të gjesh pronarin e duhur të një biblioteke, kështu që në rast se kam bërë një gabim, ju lutemi lini një koment dhe unë do ta zgjidhja çështjen sa më shpejt.

Ky udhëzues ekziston sepse nuk gjeta një udhëzues/udhëzues të plotë që punon jashtë kutisë (mund të ekzistojë, por nuk mund ta gjej) kështu që mblodha të gjitha informacionet e disponueshme në internet dhe pas një sasie të mirë provash dhe gabime Unë kam dalë me një udhëzues të plotë për të ndërtuar një marrës IR IR USB që punon në të vërtetë mjaft mirë.

Burimet kryesore të informacionit që kam ndjekur:

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

Hapi 1: Disa konsiderata

  • Unë nuk kam një programues AVR ISP dhe nuk dua të blej një të tillë, kështu që kam përdorur një Arduino për të programuar attiny85
  • Nuk më intereson ndonjë OS tjetër përveç GNU/Linux kështu që nuk e di nëse do të funksionojë ndryshe.
  • ka biblioteka të tjera IR, por unë nuk mund t'i bëj ato të punojnë as me një arduino. Merrni parasysh që fillova me një njohuri të kufizuar në lidhje me bibliotekat IR. Ndoshta mund t'i bëj ata të punojnë tani pas përvojës së fituar në trajtimin e një sasie të drejtë çështjesh. Gjithsesi, unë isha i humbur dhe i dëshpëruar para se të gjeja bibliotekën që siguroi Seejaydee dhe e kam përdorur që atëherë (shumë faleminderit njeri!).
  • Ka konfigurime të tjera harduerike, por unë kam përdorur vetëm atë që përdor 5V për të fuqizuar attiny85 dhe dy dioda zener 3.6V 0.5W për të fikur tensionin e linjave të të dhënave, funksionon jashtë kutisë kështu që nuk u ngatërrova konfigurime të tjera.
  • Ju mund të përdorni një kristal 16Mhz ose mund të përdorni bibliotekën tinytuner për të kalibruar orën e brendshme të veshjes suaj85. Unë këshilloj me forcë përdorimin e kristalit, është shumë më i qëndrueshëm dhe ndoshta do t'ju kursejë shumë dhimbje koke.
  • Unë jam duke përdorur këtu dy bootloaders të ndryshëm për attiny85:

a) Versioni i Rowdy Dog Software, ai ka integruar një ndërfaqe serike që është shumë e lezetshme dhe është shumë e vogël kështu që ju keni më shumë hapësirë për programin tuaj dhe bibliotekat e tjera. Problemi është se për disa arsye edhe pse funksionon mjaft mirë, pas ca kohësh pajisja usb u shkëput (mund t'i gjeni çështjet me komandën dmesg). Unë nuk e di nëse ky është një problem i bërthamës ose një kombinim i përzier i bërthamës plus bibliotekat e zgjedhura, kështu që pas një kohe vendosa ta përdor këtë bërthamë vetëm për të deshifruar çelësat e largët dhe për të kalibruar orën (kur nuk përdor një 16Mhz Kristal). Pas kësaj, unë thjesht djeg bootloader Mellis dhe ngarkoj skicën përfundimtare që nuk përdor ndërfaqen serike.

b) Versioni Mellis, ngarkues i qëndrueshëm, e kam përdorur këtë në shumë projekte. Unë do ta kisha përdorur këtë ngarkues gjithmonë nëse do të kishte përfshirë një ndërfaqe serike. Unë e përdor këtë bërthamë në skicën përfundimtare pasi deshifroj të gjithë çelësat në telekomandën time.

Hapi 2: Le të Fillojmë Me Harduerin

Le të Fillojmë Me Harduerin
Le të Fillojmë Me Harduerin
Le të Fillojmë Me Harduerin
Le të Fillojmë Me Harduerin
Le të Fillojmë Me Harduerin
Le të Fillojmë Me Harduerin

Mjetet që ju nevojiten:

  • një bord i pajtueshëm me arduino
  • një përshtatës serial në usb për të deshifruar çelësat tuaj të largët (thjesht përdorni një FT232RL)
  • një kompjuter me GNU/Linux të instaluar dhe arduino IDE të konfiguruar siç duhet, unë jam duke përdorur arduino IDE 1.8.0
  • një telekomandë IR për të testuar pajisjen tuaj (madje edhe një e keqe si ato që gjenden në pajisjet startuese të arduino do të funksionojë)
  • një multimetër për të korrigjuar tabelën tuaj (shpresoj se nuk do t'ju duhet, fat i mirë!)

Lista e materialeve:

  • 1 attiny85
  • 2 rezistencë 68R
  • 1 rezistencë 1.5K
  • 1 rezistencë 4.7K
  • 1 kristal 16 MHz
  • 1 kondensator 22pF
  • 1 kondensator 0.1uF
  • 1 kondensator 10uF
  • 2 dioda zener 3.6V 0.5W
  • 1 lidhës mashkull i tipit USB A
  • 1 kunj shiriti me 6 kunja për të programuar dhe korrigjuar tabelën.
  • 1 sensor IR TSOP31238
  • shumë kafe për t'ju mbajtur zgjuar

Para se të bashkoni tabelën përfundimtare, me siguri do të dëshironi të bëni një prototip të bordit të bukës për qëllime testimi, ndjekja e skemës së bashkangjitur me këtë udhëzues duhet të jetë e mjaftueshme për ta ndërtuar atë.

Për të lidhur attiny85 me PC, dizajni përfundimtar përdor një lidhës USB të tipit A që është ngjitur në tabelë, por për prototipin do t'ju duhet të bëni një kabllo USB që mund ta lidhni me një pjatë:

Ngjiteni në një copë të vogël të pllakës së dërrasës me 4 kunja, pastaj prerë një kabllo të vjetër USB dhe lidhni kunjat në 4 tela brenda kabllit usb:

  • e kuqja është VCC (5V)
  • e zeza është GND
  • e bardha eshte D-
  • jeshile është D+

Mbani gjithçka së bashku me zam të nxehtë.

Tani duhet të lidhim programuesin ISP (Arduino), përshtatësin USB në serial (FT232RL) dhe sensorin IR me attiny85.

Mund të lini të lidhur të gjithë së bashku në mënyrë që të jeni në gjendje të digjni ngarkues të ndryshëm, të ngarkoni skica dhe të shikoni portin serik pa ndryshuar telat, Për ta bërë këtë, lidhni gjithçka duke ndjekur këto udhëzime:

Programues ISP (Arduino): kjo na lejon të djegim ngarkuesit e ngarkuesve dhe të ngarkojmë skica

  • attiny85 PB0 (pin5) në pin11 (MOSI) në arduino
  • attiny85 PB1 (pin6) në pin12 (MISO) në arduino
  • attiny85 PB2 (pin7) në pin13 (SCK) në arduino
  • attiny85 RESET (pin1) me tërheqje (4.6k në VCC) në pin10 në arduino
  • attiny85 VCC në 5V në arduino
  • attiny85 GND në GND në arduino

usb në serial përshtatës (FT232RL): kjo na lejon të kontrollojmë portin serik

  • attiny85 PB0 (pin5 RX) në TX në FT232RL
  • attiny85 PB2 (pin7 TX) në RX në FT232RL
  • attiny85 GND (pin4) në GND në FT232RL
  • meqenëse attiny85 është mundësuar tashmë nga arduino nuk keni nevojë të lidhni 5v në FT232RL, përndryshe lidheni: attiny85 VCC (pin8) me 5V në FT232RL

usb në përshtatësin serik (FT232RL) vetëm për kalibrimin e orës (vetëm për ngarkuesin e ngarkimit "ATtiny85 @ 8MHz (oshilator i brendshëm; BOD me aftësi të kufizuara)")

  • PB4 (pin3 RX) në TX në FT232RL attiny85
  • PB3 (pin2 TX) në RX në FT232RL attiny85
  • GND (pin4) në GND në FT232RL
  • meqenëse attiny85 është mundësuar tashmë nga arduino nuk keni nevojë të lidhni 5v në FT232RL, përndryshe lidheni: attiny85 VCC (pin8) me 5V në FT232RL

Nëse përdorni një kristal 16Mhz, lidheni atë me kunjat Attiny85 PB3 (pin2) dhe PB4 (pin3) dhe lidhni secilën kunj me GND, gjithashtu përmes një kapaku 22pF secila.

Filtroni Attiny85 VCC me një kondensator 0.1uF dhe 10uF që i lidh ato paralelisht me GND

Lidhni pinin e daljes së sensorit IR me attiny85 PB1 (pin6), ndizeni atë.

Ndërtoni dhe lidhni ndërfaqen usb:

  • GND (tela e zezë): lidheni atë me GND -në e zakonshme (të gjitha bazat lidhen së bashku)
  • D- (tela e bardhë) e lidhur me attiny85 PB0 (pin5) përmes një rezistence 68R, lidheni atë gjithashtu në tokë përmes një zeneri 3.6V 0.5W dhe tërhiqeni atë deri në VCC me një rezistencë 1.5K
  • D+ (teli jeshil) i lidhur me PB2 përmes një rezistence 68R, lidheni atë me tokën përmes një zeneri 3.6V 0.5W
  • 5V, mund ta lini të palidhur pasi që gjithçka është mundësuar nga Arduino në këtë fazë, përndryshe lidheni atë me attiny85 VCC

Diodat zener janë të lidhura ashtu që anodat janë të lidhura me GND dhe katodat janë të lidhura me linjat e të dhënave D+ dhe D-.

Hapi 3: Dizajni përfundimtar

Dizajni përfundimtar
Dizajni përfundimtar
Dizajni përfundimtar
Dizajni përfundimtar
Dizajni përfundimtar
Dizajni përfundimtar

Për modelin përfundimtar, ju mund të përdorni tabelën me komponentët përmes vrimës ose të gdhendni tabelën tuaj dhe të përdorni përbërës smd. Për të mësuar se si të gdhendësh një dërrasë, mjafton të kërkosh në google, ka mësime të mrekullueshme në dispozicion në internet.

Unë kam gdhendur tabelën time dhe jam shumë i kënaqur me rezultatet përfundimtare (tabelë e vogël, e qëndrueshme dhe e fortë). Po, e di që prerja është e keqe, por nuk mund të përdor asnjë mjet elektrik aq vonë natën dhe unë thjesht prerë dërrasën me gërshërët e mia të kallajit.

Nga rruga, gjurmët në imazhe nuk janë bakër të zhveshur, ato janë trajtuar me një kimikat të keq që kallajon pak bakrin (dyshohet se shkakton kancer, kështu që përdorni atë me shumë kujdes, globe latex dhe një maskë pluhuri):

Përdorni skemat e mësipërme për të hartuar paraqitjen tuaj ose thjesht mund të përdorni gjurmën time të PCB për të gdhendur tabelën tuaj.

Hapi 4: Ballafaqimi me Softuerin

Qarku në këtë projekt është shumë i lehtë, në vend të kësaj softueri kërkon një përpjekje më të madhe.

Ne kemi nevojë për të paktën 2 biblioteka (një tjetër nëse nuk jeni duke përdorur një kristal) plus 2 bootloaders për ta bërë këtë punë. Kur fillova këtë projekt, testova disa biblioteka, ndonjëherë ato nuk funksionuan dhe shumë herë thjesht nuk ishin konfiguruar të punonin me një Attiny85 jashtë kutisë (nuk e dija akoma). Pastaj gjeta probleme me bibliotekat / ngarkuesit që mbivendosen me ndërprerjet. Më në fund më duhej të merresha me një sasi të madhe gabimesh kur lidha qarkun përfundimtar me kompjuterin tim. Unë nuk e kisha këtë udhëzues, prandaj mendoj se do të ishit mirë, thjesht ndiqni hapat në këtë udhëzues, nëse e bëni këtë pa bërë gabime, duhet të jeni mirë:)

Tani na duhet të instalojmë dhe konfigurojmë disa biblioteka:

  • v-usb për bibliotekën arduino: kjo bibliotekë lejon që mikrokontrolluesi të njihet nga kompjuteri si një Tastierë HID USB dhe ne do ta përdorim atë për të dërguar goditje kryesore në PC. Kjo bibliotekë ka nevojë për disa ndryshime që të jetë në përputhje me attiny85
  • biblioteka tinytuner vetëm nëse nuk do të përdorni një kristal 16Mhz. Atëherë do t'ju duhet të kalibroni orën e brendshme të mikrokontrolluesit. Kjo bibliotekë funksionon jashtë kutisë.
  • Biblioteka Attiny-IR për të bashkëvepruar me sensorin IR. Kjo bibliotekë funksionon jashtë kutisë.

Ne gjithashtu kemi nevojë për 2 bootloaders:

  • Versioni i Softuerit të Qenit, me ndërfaqen serike të disponueshme. Ky bootloader ka nevojë për një ndryshim të vogël për të punuar me attiny85 pasi përdor timer1 për funksionin millis () dhe nuk do të funksionojë me bibliotekën IR. Duhet të ndryshojmë kohëmatësin në timer0.
  • Versioni Mellis, ngarkues i qëndrueshëm i boot që do të përdorim në fazën përfundimtare. Kjo funksionon jashtë kutisë.

Hapi 5: Instalimi dhe Konfigurimi i Bibliotekës V-usb

Shkarkoni bibliotekën nga https://code.google.com/archive/p/vusb-for-arduin… Zbërtheni skedarin dhe kopjoni bibliotekat e dosjeve/UsbKeyboard në dosjen tuaj të bibliotekave të skicave.

Tani ju duhet të redaktoni disa skedarë që të jenë në përputhje me ATtiny85 (është konfiguruar të punojë me arduino):

A) redaktoni usbconfig.h:

nën "Hardware Config" ndryshoni:

#përcakto USB_CFG_IOPORTNAME D##përcakto USB_CFG_IOPORTNAME B

dhe

#përcakto USB_CFG_DMINUS_BIT 4për të#përcaktuar USB_CFG_DMINUS_BIT 0

nën ndryshimin "Konfigurimi opsional i pajisjeve":

#përcakto USB_CFG_PULLUP_IOPORTNAME D##përcakto USB_CFG_PULLUP_IOPORTNAME B

Për të krijuar një specifikim të plotë "HID në përputhje me nisjen" (përndryshe asnjë çelës multimedial nuk do të funksionojë), ndryshoni gjithashtu:

#përcakto USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#përcakto USB_CFG_INTERFACE_SUBCLASS 0x01 // Boot

dhe

#përcakto USB_CFG_INTERFACE_PROTOCOL 0 // Tastiera për të#përcaktuar USB_CFG_INTERFACE_PROTOCOL 0x01 // Tastiera

Opsionale ju gjithashtu mund të ndryshoni prodhuesin dhe emrin e pajisjes në përkufizimet e mëposhtme:

#përcakto USB_CFG_VENDOR_NAME

#përcakto USB_CFG_DEVICE_NAME

B) redaktoni UsbKeyboard.h:

ndryshim:

PORTD = 0; // TODO: Vetëm për kunjat USB? DDRD | = ~ USBMASK;

te

PORTB = 0; // TODO: Vetëm për kunjat USB? DDRB | = ~ USBMASKA;

Për të lejuar që kodet kryesore të ndryshojnë më shumë se 101 gjithashtu:

0x25, 0x65, // LOGICAL_MAXIMUM (101) deri në: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

dhe

0x29, 0x65, // USAGE_MAXIMUM (Aplikimi i tastierës) në: 0x29, 0xE7, // USAGE_MAXIMUM (Aplikimi i tastierës)

Mund t'ju duhet të modifikoni edhe këto 3 skedarë:

usbdrv.husbdrv.cUsbKeyboard.h

dhe sa herë që shihni PROGMEM të shtojë "const" para emrit të llojit të ndryshores (p.sh.: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Nëse kjo nuk është e qartë vizitoni

Ju mund t'i shmangni të gjitha këto ndryshime nëse thjesht shkarkoni bibliotekën e bashkangjitur (unë i bëra të gjitha këto ndryshime vetë) dhe thjesht e nxirrni brenda dosjes tuaj të bibliotekave të skicave:

UsbKeyboard i konfiguruar për attiny85

Edit: kohët e fundit kam zbuluar se Alejandro Leiva (https://github.com/gloob) është kujdesur për këtë bibliotekë dhe duket se funksionon mirë gjithashtu. Ju gjithashtu mund të provoni versionin e tij me ndryshimet e nevojshme që kam bërë për ta bërë atë të funksionojë me veshjen, kështu që nëse doni ta kontrolloni këtë, thjesht nxirrni atë brenda dosjes tuaj të bibliotekave të skicave.

UsbKeyboard i konfiguruar për attiny85 (versioni Alejandro Leiva)

Hapi 6: Instalimi i Bibliotekave Attiny-IR dhe Tinytuner

A) Biblioteka Attiny-IR:

shkarkojeni nga https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… pastaj zbërtheni në dosjen tuaj të bibliotekave të skicave.

B) Biblioteka Tinytuner:

Kjo është e nevojshme vetëm nëse nuk përdorni një kristal 16Mhz, por më besoni, edhe pse funksionon edhe pa kristal, është shumë më i qëndrueshëm me të dhe kushtojnë disa cent, kështu që mbajeni të thjeshtë, përdorni një kristal dhe kaloni kjo bibliotekë.

Nuk jeni bindur akoma? ok, shkarkoni bibliotekën ngahttps://storage.googleapis.com/google-code-archive…. pastaj e hapni atë në dosjen tuaj të bibliotekave të skicave.

Ne kemi mbaruar me bibliotekat, tani ne vazhdojmë të instalojmë bootloaders.

Hapi 7: Instalimi dhe Konfigurimi i Bootloaders

Ne do të instalojmë dy bootloaders, ai Mellis sipas përvojës sime më i qëndrueshëm dhe ne do ta përdorim atë në skicën përfundimtare. Tjetri i zhvilluar nga Rowdy Dog Software është një bërthamë e mrekullueshme, shumë e vogël dhe me një ndërfaqe serike të integruar në dispozicion, por telekomanda ime u rrëzua pas ca kohësh me të, kështu që ne do ta përdorim këtë bootloader vetëm për të kalibruar orën e brendshme attiny85 dhe për të deshifruar telekomandën tonë butona.

Unë e di se ka biblioteka në dispozicion për të dhënë aftësitë serike attiny85, por atëherë do t'ju duhet të ndryshoni bibliotekat që përdorin objektin serik … Më pëlqen më shumë kjo procedurë.

Le të fillojmë me instalimin:

A) Ngarkuesi Mellis:

thjesht hapni preferencat Arduino IDE dhe shtoni URL -të e Menaxherit të Bordeve shtesë:

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

Pastaj hapni menaxherin e bordeve Arduino IDE dhe kërkoni për veshje, instaloni tabelat nga Mellis. Tani duhet të shihni Arduino ID kartat ATtiny25/45/85 dhe ATtiny24/44/84.

B) Ngarkuesi i vogël Rowdy Dog Software:

shkarkoni ngarkuesin nga

Zbërtheni skedarin dhe kopjoni dosjen e vogël brenda skicës/pajisjes suaj (krijoni këtë dosje nëse nuk ekziston akoma). pastaj kaloni te dosja sketchbook/hardware/tiny/avr/dhe:

1) kopjoni skedarin Prospective Boards.txt në dosjet e skedarëve.txt

2) redaktoni skedarin platform.txt dhe bëni disa ndryshime:

Hiqni komentin ndryshues compiler.path dhe lëreni atë duke treguar dosjen hardware/tools/avr/bin/brenda dosjes tuaj të instalimit arduino:

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

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

Pastaj ndryshoni variablat e mëposhtëm duke u siguruar që gjithçka është në vendin e vet (ato skedarë duhet të ekzistojnë, përndryshe drejtojini ndryshoret në rrugët e duhura):

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) redaktoni bërthamat e skedarëve/tiny/core_build_options.h dhe ndryshoni:

#përcakto TIMER_TO_USE_FOR_MILLIS 1 për të#përcaktuar TIMER_TO_USE_FOR_MILLIS 0

Kjo është shumë e rëndësishme, përndryshe marrësi IR do të nxjerrë zero për çdo buton. Kjo deklaratë konfiguron timer0 për funksionin millis () duke e lënë timerin1 të disponueshëm për bibliotekën IR. Skica përfundimtare do të çaktivizojë timer0 gjithsesi kështu që ju nuk do të keni në dispozicion as funksionet millis () dhe delay (). Ju mund të keni funksionin delayMicroseconds () në dispozicion në vend.

Ky bootloader është minimal, por ka përfshirë mbështetjen e objektit Serial:

Attiny85 PB2 (pin7) është TX dhe PB0 (pin5) është RX

Mund të keni një konfigurim me programuesin ISP (arduino) dhe përshtatësin serial në usb të lidhur në të njëjtën kohë, kështu që nuk keni nevojë të ndryshoni telat shumë shpesh:

Tani kemi bibliotekat dhe ngarkuesit e ngarkuar të instaluar dhe konfiguruar siç duhet, puna më e vështirë është përfunduar dhe mund të fillojmë të testojmë gjërat.

Hapi 8: Djegia e ngarkuesve dhe ngarkimi i skicave

Unë ju këshilloj fuqimisht të aktivizoni daljen e folur sipas preferencave të Arduino IDE, në mënyrë që të kuptoni çdo çështje eventuale.

Për të djegur një bootloader në Attiny85 ju duhet të ngarkoni shembullin e ISP -së në Arduino dhe më pas të zgjidhni programuesin Arduino si ISP.

Tani vendosni një kondensator 10uF midis kunjave të rivendosur dhe tokëzues në arduino (nuk është e nevojshme për procesin e djegies, por është për të ngarkuar skica në attiny85).

Tani arduino është gati të djegë ngarkuesit dhe të ngarkojë skica. Thjesht duhet të zgjidhni tabelën e duhur të pajtueshme me veshjen tuaj dhe ta digjni atë.

Për të ngarkuar një skicë në Attiny85, ngarkojeni në arduino IDE dhe klikoni në "Ngarko duke përdorur programuesin".

E RORTNDSISHME: kur ngarkoni skicën ka 3 hapa, përpilimi, shkrimi dhe verifikimi. Nëse përpilimi dhe shkrimi funksionuan me sukses, por procesi i verifikimit dështon, është e mundur që skica të funksionojë gjithsesi.

Hapi 9: Kalibroni orën e brendshme Attiny85 (kaloni këtë nëse përdorni një kristal)

Në rast se vendosni të mos përdorni kristalin 16Mhz, ju duhet të kalibroni orën tuaj attiny85, kështu që do të kemi nevojë për një bootloader me një ndërfaqe serike në dispozicion dhe ne do të përdorim bibliotekën tinytuner për të marrë kalibrimin e duhur.

Ndiqni hapat e ardhshëm

  • zgjidhni nën mjete Arduino si programues ISP
  • zgjidhni tabelën "ATtiny85 @ 8MHz (oshilator i brendshëm; BOD i çaktivizuar)"
  • Unë supozoj se keni lidhjen ISP gati siç përshkruhet më parë lidhni përndryshe bëni lidhjet
  • djeg bootloader
  • ky ngarkues ka konfiguruar kunja të ndryshëm për ndërfaqen serike, përdorni këtë konfigurim vetëm për ngarkuesin aktual të ngarkimit

- PB4 (pin3 RX) në TX në FT232RL attiny85 - PB3 (pin2 TX) në RX në FT232RL attiny85 - GND (pin4) në GND në FT232RL pasi attiny85 tashmë është mundësuar nga arduino që nuk keni nevojë të lidheni 5v në FT232RL, përndryshe lidheni: attiny85 VCC (pin8) me 5V në FT232RL

  • ngarkoni shembullin tinytuner në attiny85
  • hapni programin e ekranit për të monitoruar komunikimin serik: screen /dev /ttyUSB0 9600
  • rivendosni attiny85 që lidh pinin RESET (pin1) me GND (vetëm një moment), Një mesazh mirëseardhjeje duhet të shfaqet në dritaren e ekranit
  • Vazhdoni të dërgoni karaktere të vetme 'x' (pa transport-kthim; pa furnizim me rreshta) derisa të përfundojë kalibrimi
  • shënoni diku vlerën e kalibrimit (OSCCAL = 0x). Kjo është vlera që do t'ju duhet të deklaroni në skicat përfundimtare

Hapi 10: Dekodoni butonat tuaj në distancë

Tani është koha për të deshifruar butonat tanë të telekomandës dhe për t'i caktuar ato në goditje të veçanta kryesore në PC, për ta bërë këtë ndiqni hapat e mëposhtëm:

  • zgjidhni tabelën "ATtiny85 @ 16MHz (PLL e brendshme; 4.3V BOD)" nëse nuk përdorni një kristal, "ATtiny85 @ 16 MHz (kristal i jashtëm; 4.3 V BOD" ndryshe, pastaj digjeni atë
  • ngarkoni skicën:
  • Nëse nuk përdorni një kristal, mos komentoni rreshtin që përmban ndryshoren OSCCAL dhe caktojeni atë vlerës që keni gjetur kur keni bërë kalibrimin e orës
  • Supozoj se sensori është i lidhur siç përshkruhet më parë, përndryshe lidheni atë
  • Supozoj gjithashtu se përshtatësi serik FT232RL në usb është i lidhur, përndryshe lidheni atë
  • rivendosni attiny85 që lidh pinin RESET (pin1) në GND (vetëm një moment)
  • goditni në mënyrë të përsëritur butonat e telekomandës tuaj dhe kontrolloni dritaren e ekranit, ju duhet të shënoni numrin e fundit për secilën regjistrim, çdo buton mund të prodhojë 2 numra të ndryshëm

Shembull:

PRANUAR D44 3396 PRANUAR 544 1348

Shënoni 3396 dhe 1348 në lidhje me butonin që sapo keni goditur, atëherë duhet të vendosni se çfarë doni të bëni me atë buton. Për shembull, mund të dëshiroj që ai buton të dërgojë kodin multimedial "Volume up", atëherë duhet të gjej ID për atë kod. Për ta bërë këtë, shkarkoni PDF:

Shikoni për seksionin "Faqja e tastierës/tastierës" faqe 53 dhe përdorni numrat në kolonën ID e përdorimit (Dhjetor) për të lidhur butonat e telekomandës me kodet e tastierës. Në shembullin tonë ne mund të shohim se kodi kryesor për "Volume up" është: 128.

Ndryshoni skedarin skedarin UsbKeyboard.h brenda bibliotekës UsbKeyboard nga paketa v-usb që kemi instaluar më parë dhe shtoni në përcaktimet ekzistuese nëse nuk është tashmë atje:

#përcaktoni KRYESIN_VOL_UP 128

Kur të kemi mbaruar me të gjithë butonat tanë të telekomandës dhe të gjitha përcaktimet në skedar UsbKeyboard.h janë gati mund të kalojmë në hapin e fundit.

Hapi 11: Ngarkimi i Skicës Finale dhe Shpresoj për më të mirën

Ngarkimi i Skicës Finale dhe Shpresoj për më të mirën!
Ngarkimi i Skicës Finale dhe Shpresoj për më të mirën!
Ngarkimi i Skicës Finale dhe Shpresoj për më të mirën!
Ngarkimi i Skicës Finale dhe Shpresoj për më të mirën!

Tani kemi të gjithë butonat e largët të deshifruar, skedari UsbKeyboard.h është i mbushur me kodet tanë, kështu që tani mund të ngarkojmë në arduino IDE skicën përfundimtare nga:

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

Ky skedar është skedari i saktë që po përdor për marrësin tim, dhe po punon për 2 telekomandë të ndryshëm, kështu që është e qartë që do t'ju duhet ta përditësoni në mënyrë që të punoni me telekomandën tuaj.

Nëse nuk përdorni një kristal, mos komentoni rreshtin që përmban ndryshoren OSCCAL dhe caktojeni atë vlerës që keni gjetur kur keni bërë kalibrimin e orës

Vini re se në funksionin e lakut ka shumë deklarata si kjo:

nëse (results.value == 3405 || results.value == 1357) {// shigjeta lart

nëse (goditja e fundit! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

Ju duhet të krijoni deklaratat tuaja, një për butonin në telekomandën tuaj. Në gjendjen "nëse" ju duhet të vendosni në results.vlerësoni vlerat që keni gjetur duke deshifruar telekomandën tuaj dhe si argument i metodës UsbKeyboard.sendKeyStroke duhet të vendosni një nga kodet kyç të përcaktuar tashmë në skedarin UsbKeyboard.h.

Kushti "if (lastStroke! = Results.value)" është i nevojshëm sepse disa telekomandë dërgojnë të njëjtin kod dy herë për goditje, dhe kjo parandalon goditjen e dytë. Nuk jam plotësisht i sigurt dhe mund të varet nga protokolli IR që është programuar në telekomandën tuaj (nuk jam vërtet ekspert në protokollet IR), por sipas përvojës sime me telekomandat e mia, çdo buton mund të prodhojë 2 kode të ndryshme dhe ndërsa shtypni dhe mbani butonin, ai dërgon të njëjtin kod, por nëse e godisni përsëri butonin ai dërgon tjetrin. Pra, duket se kodet dërgohen në një mënyrë alternative, mendoj se është një mënyrë standarde të dini se sa herë keni goditur vërtet butonin.

Ok, ne jemi pothuajse gati, thjesht ngarkoni skicën përfundimtare, lidheni atë me PC dhe shihni se si shkon.

Për këtë hap, është më mirë nëse shkëputni nga priza arduino dhe USB në serial dhe vetëm atëherë, lidhni USB -në në portën e kompjuterit tuaj (në rast se diçka nuk shkon mirë qarku juaj do të jetë më i thjeshtë për tu korrigjuar).

Nëse gjithçka funksionoi mirë, kur hapni një terminal dhe dërgoni komandën dmesg duhet të shihni diçka të ngjashme me imazhin e parë në këtë hap. Nëse do të kishte probleme, duhet të keni gabime si ato që gjenden në imazhin e dytë dhe duhet të filloni të korrigjoni qarkun tuaj dhe/ose softuerin. Një nga burimet e gabimeve fillestare që kisha ishte një shpërndarës USB që nuk do të punonte me marrësin tim IR (të tjerët megjithatë punuan) … kështu që është më mirë për këtë hap të fundit të lidhni marrësin IR drejtpërdrejt në portën tuaj të kompjuterit. Gabimet eventuale mund të jenë të vështira për tu gjetur, por në fund, si unë, do të mësonit shumë dhe çmimi për të paguar ia vlen, ju siguroj.

Kjo është e gjitha njerëz, më njoftoni nëse vëreni ndonjë gabim në këtë udhëzues dhe shijoni marrësin tuaj të ri IR USB!

Recommended: