Innehållsförteckning:

ATtiny85 IR USB -mottagare: 11 steg (med bilder)
ATtiny85 IR USB -mottagare: 11 steg (med bilder)

Video: ATtiny85 IR USB -mottagare: 11 steg (med bilder)

Video: ATtiny85 IR USB -mottagare: 11 steg (med bilder)
Video: LDmicro 20: решен вопрос жидкокристаллического дисплея I2C (программирование ПЛК микроконтроллера с помощью LDmicro) 2024, Juli
Anonim
ATtiny85 IR USB -mottagare
ATtiny85 IR USB -mottagare

VARNING, DENNA LÄRBARA HAR BLI OBSOLETE

V-usb-biblioteket är utformat för att fungera med USB 1.1-protokoll som knappast finns idag. Med ankomsten av USB3 har du mer än huvudvärk som försöker få v-usb-enheter att fungera. Efter att ha bytt mitt multimediacenter har jag många stabilitetsproblem och även om mottagaren fungerar, slutar den fungera efter ett tag. Jag har misslyckats med att försöka fixa det. Jag gjorde också en atmega328p-version men den här hade samma problem. Att använda en vakthundstimer för att återställa kortet regelbundet hjälpte inte heller så jag ger upp på v-usb.

Gör dig själv en tjänst och fortsätt inte med detta instruerbara om det inte är för utbildningsändamål. Jag rekommenderar istället att köpa en chipmodul ATmega 32U4 som redan har integrerat usb -gränssnittet och följ den här guiden:

www.sparkfun.com/tutorials/337

Släng sedan in en IR -sensor TSOP31238 och du är klar.

Hej beslutsfattare! detta är en instruktion att bygga en fungerande USB IR -mottagare med hjälp av en Attiny85 mikrokontroller. Jag startade detta projekt för att övervinna bristen på stöd (åtminstone fullständigt stöd) för några IR -fjärrkontroller i GNU/Linux OS. Efter denna instruktion kan du bygga en programmerbar USB IR -mottagare som fungerar med valfri IR -fjärrkontroll för några dollar.

Först och främst skulle denna instruerbara inte existera utan hårt arbete från de människor som skapade biblioteken som jag använder här:

  • David A. Mellis för sin fina kärna
  • Rowdy Dog-programvara för deras bibliotek TinyTuner
  • Rowdy Dog Software för deras lilla bootloader
  • Rancidbacon (https://rancidbacon.com/) för sin arduino-port i v-usb-biblioteket (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee för sitt IR-bibliotek för små kärnor som finns i kommentarerna från den instruerbara https://www.instructables.com/id/Attiny-IR-librar… -koden på https://www.instructables.com/id/Attiny-IR -bibliotek …

Ibland är det inte lätt att hitta rätt ägare till ett bibliotek, så om jag gjorde ett misstag, vänligen lämna en kommentar och jag skulle lösa problemet ASAP.

Den här guiden existerar eftersom jag inte hittade en komplett handledning/guide som fungerade ur lådan (den kan finnas, men jag kunde inte hitta den) så jag samlade all information som finns på webben och efter en hel del försök och fel Jag kom med en komplett guide för att bygga en fungerande USB IR -mottagare som faktiskt fungerar ganska bra.

De viktigaste informationskällorna som jag har följt:

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

Steg 1: Några överväganden

  • Jag äger inte en AVR ISP -programmerare och jag har inte lust att köpa en så jag har använt en Arduino för att programmera attiny85
  • Jag bryr mig inte om något annat operativsystem än GNU/Linux så jag vet inte om detta kommer att fungera annars.
  • det finns andra IR -bibliotek men jag kunde inte få dem att fungera inte ens med en arduino. Tänk dock på att jag började med en begränsad kunskap om IR -bibliotek. Kanske skulle jag kunna få dem att fungera nu efter den erfarenhet jag fått av att hantera en hel del problem. Hur som helst var jag vilsen och desperat innan jag hittade biblioteket som Seejaydee tillhandahållit och jag har använt det sedan dess (många tack!).
  • Det finns andra hårdvarukonfigurationer, men jag har bara använt den som använder 5V för att driva attiny85 och två 3,6V 0,5W zenerdioder för att spänna spänningen på datalinjerna, det fungerar ur lådan så jag krånglade inte med andra konfigurationer.
  • Du kan använda en 16 Mhz kristall eller så kan du använda tinytuner -biblioteket för att kalibrera den interna klockan på din attiny85. Jag rekommenderar starkt att du använder kristallen, den är mycket stabilare och kommer förmodligen att spara mycket huvudvärk.
  • Jag använder här två olika bootloaders för attiny85:

a) Rowdy Dog Software -version, den har integrerat ett seriellt gränssnitt som är väldigt coolt och är väldigt litet så att du har mer plats för ditt program och andra bibliotek. Problemet är att av vissa skäl, även om det fungerar ganska bra, kopplades USB -enheten bort efter en tid (du kan hitta problemen med kommandot dmesg). Jag vet inte om detta är ett problem med kärnan eller en blandad kombination av kärnan plus de valda biblioteken så efter ett tag bestämde jag mig för att använda den här kärnan bara för att avkoda fjärrnycklarna och kalibrera klockan (när jag inte använder en 16Mhz kristall). Efter det bränner jag bara Mellis bootloader och laddar upp den definitiva skissen som inte använder det seriella gränssnittet.

b) Mellis -version, stabil bootloader, jag har använt detta i många projekt. Jag skulle alltid ha använt den här startladdaren om den hade inkluderat ett seriellt gränssnitt. Jag använder denna kärna i den sista skissen efter att ha avkodat alla tangenter på mina fjärrkontroller.

Steg 2: Låt oss börja med hårdvaran

Låt oss börja med hårdvaran
Låt oss börja med hårdvaran
Låt oss börja med hårdvaran
Låt oss börja med hårdvaran
Låt oss börja med hårdvaran
Låt oss börja med hårdvaran

Verktyg du behöver:

  • ett arduino -kompatibelt kort
  • en seriell till usb -adapter för att avkoda dina fjärrnycklar (använd bara en FT232RL)
  • en dator med GNU/Linux installerat och arduino IDE korrekt konfigurerad, jag använder arduino IDE 1.8.0
  • en IR -fjärrkontroll för att testa din enhet (även en galen sådan som de som finns i arduino -startpaket fungerar)
  • en multimeter för att felsöka ditt kort (jag hoppas att du inte kommer att behöva det, lycka till!)

Materiallistan:

  • 1 attiny85
  • 2 68R motstånd
  • 1 1,5K motstånd
  • 1 4,7K motstånd
  • 1 16 Mhz kristall
  • 1 22pF kondensator
  • 1 0.1uF kondensator
  • 1 10uF kondensator
  • 2 3,6V 0,5W zenerdioder
  • 1 USB -typ A hankontakt
  • 1 bandstift med 6 stift för att programmera och felsöka kortet.
  • 1 IR -sensor TSOP31238
  • mycket kaffe för att hålla dig vaken

Innan du lödar den slutgiltiga brädan vill du förmodligen göra en prototyp för brödbräda för teständamål, efter att schemat som bifogas denna instruerbara borde vara tillräckligt för att bygga upp den.

För att ansluta attiny85 till datorn använder den slutliga konstruktionen en USB typ A -kontakt som är lödad i brädet, men för prototypen måste du göra en USB -kabel som du kan ansluta till en brödbräda:

Lödda i en liten bit perfboard 4 stift, skär sedan en gammal USB -kabel och löd stiften till 4 av trådarna inuti usb -kabeln:

  • rött är VCC (5V)
  • svart är GND
  • vitt är D-
  • grönt är D+

Håll allt tillsammans med varmt lim.

Nu måste vi ansluta ISP -programmeraren (Arduino), USB till seriell adapter (FT232RL) och IR -sensorn till attiny85.

Du kan låta alla vara anslutna tillsammans så att du skulle kunna bränna olika startladdare, ladda skisser och kolla in serieporten utan att byta ledningar, För att göra det, anslut allt enligt dessa instruktioner:

ISP -programmerare (Arduino): detta gör att vi kan bränna bootloaders och ladda skisser

  • attiny85 PB0 (pin5) till pin11 (MOSI) i arduino
  • attiny85 PB1 (pin6) till pin12 (MISO) i arduino
  • attiny85 PB2 (pin7) till pin13 (SCK) i arduino
  • attiny85 RESET (pin1) med pullup (4.6k till VCC) till pin10 i arduino
  • attiny85 VCC till 5V i arduino
  • attiny85 GND till GND i arduino

usb to serial adapter (FT232RL): detta gör att vi kan kontrollera den seriella porten

  • attiny85 PB0 (pin5 RX) till TX i FT232RL
  • attiny85 PB2 (pin7 TX) till RX i FT232RL
  • attiny85 GND (pin4) till GND på FT232RL
  • eftersom attiny85 redan drivs av arduino behöver du inte ansluta 5v på FT232RL, annars ansluta: attiny85 VCC (pin8) till 5V på FT232RL

usb till seriell adapter (FT232RL) endast för klockkalibreringen (bara för startladdaren "ATtiny85 @ 8MHz (intern oscillator; BOD inaktiverad)")

  • PB4 (pin3 RX) till TX i FT232RL attiny85
  • PB3 (pin2 TX) till RX i FT232RL attiny85
  • GND (pin4) till GND på FT232RL
  • eftersom attiny85 redan drivs av arduino behöver du inte ansluta 5v på FT232RL, annars ansluta: attiny85 VCC (pin8) till 5V på FT232RL

Om du använder en 16 Mhz -kristall ansluter du den till Attiny85 -stiften PB3 (stift2) och PB4 (stift3) och ansluter varje stift till GND också genom ett 22pF -lock var.

Filtrera Attiny85 VCC med en 0.1uF och 10uF kondensatorer som ansluter dem parallellt med GND

Anslut IR -sensorns utgångsstift till attiny85 PB1 (pin6), slå på den.

Bygg och anslut USB -gränssnittet:

  • GND (svart ledning): anslut den till den vanliga GND (alla grunder är anslutna tillsammans)
  • D- (vit tråd) ansluten till attiny85 PB0 (pin5) via ett 68R-motstånd, anslut den också till jord genom en 3,6V 0,5W zener och dra upp den till VCC med ett 1,5K-motstånd
  • D+ (grön tråd) ansluten till PB2 via ett 68R -motstånd, anslut den till jord genom en 3,6V 0,5W zener
  • 5V, kan du låta den vara ansluten eftersom allt drivs av Arduino i detta skede, annars anslut den till attiny85 VCC

Zenerdioderna är anslutna så att anoderna är bundna till GND och katoderna är anslutna till datalinjerna D+ och D-.

Steg 3: Slutlig design

Slutlig design
Slutlig design
Slutlig design
Slutlig design
Slutlig design
Slutlig design

För den slutliga designen kan du använda perfboard med genomgående hålskomponenter eller etsa ditt eget bräde och använda smd -komponenter. För att lära dig att etsa ett bräde, bara googla det, det finns fantastiska självstudier tillgängliga online.

Jag har etsat min egen bräda och är mycket nöjd med de slutliga resultaten (liten, stabil och robust bräda). Ja, jag vet att snittet suger, men jag kunde inte använda något elverktyg så sent på natten och jag klipp bara brädet med min plåtsax.

Förresten, spåren på bilderna är inte bara koppar, de har behandlats med en otäck kemikalie som lätt tennar koppar (det misstänks framkalla cancer, så använd den med stor försiktighet, latexkulor och en dammmask):

Använd schemat ovan för att designa din layout eller så kan du bara använda mitt PCB -fotavtryck för att etsa ditt bräde.

Steg 4: Hantera programvaran

Kretsen i detta projekt är väldigt lätt, mjukvaran kräver istället en större insats.

Vi behöver minst 2 bibliotek (ett till om du inte använder en kristall) plus 2 bootloaders för att få detta att fungera. När jag startade detta projekt testade jag några bibliotek, ibland fungerade de inte och många gånger var de bara inte konfigurerade för att fungera med en Attiny85 ur lådan (jag visste inte det ännu). Sedan hittade jag problem med att biblioteken / bootloaders överlappade avbrott. Slutligen var jag tvungen att hantera en hel del fel när jag kopplade den slutliga kretsen till min dator. Jag hade dock inte den här guiden, så jag tror att du skulle må bra, följ bara stegen i den här instruktören, om du gör det utan att göra misstag ska du ha det bra:)

Vi behöver nu installera och konfigurera några bibliotek:

  • v-usb för arduino-bibliotek: det här biblioteket gör att mikrokontrollen kan identifieras av datorn som ett HID USB-tangentbord, och vi använder det för att skicka tangenttryckningar till datorn. Detta bibliotek behöver några ändringar för att vara kompatibelt med attiny85
  • tinytuner -biblioteket bara om du inte använder en 16Mhz kristall. Du måste då kalibrera den interna klockan på mikrokontrollern. Detta bibliotek fungerar ur lådan.
  • Attiny-IR-bibliotek för att interagera med IR-sensorn. Detta bibliotek fungerar ur lådan.

Vi behöver också 2 bootloaders:

  • Dog Software -version, med det seriella gränssnittet tillgängligt. Denna bootloader behöver en liten tweak för att fungera med attiny85 eftersom den använder timern1 för millis () -funktionen och fungerar inte med IR -biblioteket. Vi måste ändra timern till timer0.
  • Mellis -version, stabil bootloader som vi kommer att använda i slutskedet. Detta fungerar ur lådan.

Steg 5: Installation och konfiguration av V-usb-biblioteket

Ladda ner biblioteket från https://code.google.com/archive/p/vusb-for-arduin… Packa upp filen och kopiera mappbiblioteken/UsbKeyboard till mappen med skissboksbibliotek.

Nu måste du redigera ett par filer för att vara kompatibla med ATtiny85 (den är konfigurerad för att fungera med arduino):

A) redigera usbconfig.h:

under "Hardware Config" ändra:

#define USB_CFG_IOPORTNAME Dto ## definiera USB_CFG_IOPORTNAME B

och

#define USB_CFG_DMINUS_BIT 4to#definiera USB_CFG_DMINUS_BIT 0

under "Valfri maskinvarukonfiguration":

#define USB_CFG_PULLUP_IOPORTNAME Dto ## definiera USB_CFG_PULLUP_IOPORTNAME B

För att skapa en fullständig "boot -compliant HID" -specifikation (annars fungerar inga multimediaknappar):

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

och

#define USB_CFG_INTERFACE_PROTOCOL 0 // Tangentbord till#definiera USB_CFG_INTERFACE_PROTOCOL 0x01 // Tangentbord

Alternativt kan du också ändra tillverkarens och enhetsnamnet i följande definitioner:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) redigera UsbKeyboard.h:

förändra:

PORTD = 0; // TODO: Endast för USB -nålar? DDRD | = ~ USBMASK;

till

PORTB = 0; // TODO: Endast för USB -nålar? DDRB | = ~ USBMASK;

För att tillåta nyckelkoder ytterligare än 101 ändras också:

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

och

0x29, 0x65, // USAGE_MAXIMUM (tangentbordsprogram) till: 0x29, 0xE7, // USAGE_MAXIMUM (tangentbordsprogram)

Du kan behöva redigera även dessa tre filer:

usbdrv.husbdrv.cUsbKeyboard.h

och varje gång du ser PROGMEM lägger du till "const" före variabelns typnamn (ex: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Om detta inte är klart besök

Du kan undvika alla dessa ändringar om du bara laddar ner det bifogade biblioteket (jag har gjort alla dessa ändringar själv) och bara extraherar det i mappen med skissböcker:

UsbKeyboard konfigurerad för attiny85

Edit: nyligen har jag upptäckt att Alejandro Leiva (https://github.com/gloob) har tagits hand om detta bibliotek och verkar fungera bra också. Du kan också prova hans version med de nödvändiga ändringarna som jag gjorde för att få det att fungera med attiny, så om du vill kolla in det här kan du bara extrahera det i mappen i skissbokens bibliotek.

UsbKeyboard konfigurerad för attiny85 (Alejandro Leiva version)

Steg 6: Installation av Attiny-IR och Tinytuner Libraries

A) Attiny-IR-bibliotek:

ladda ner den från https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… och packa sedan upp den i mappen med skissböcker.

B) Tinytuner -bibliotek:

Detta behövs bara om du inte använder en 16Mhz kristall, men tro mig, även om det fungerar även utan kristallen, är det mycket stabilare med det och de kostar några cent, så håll det enkelt, använd en kristall och hoppa över detta bibliotek.

Inte övertygad än? ok, ladda ner biblioteket frånhttps://storage.googleapis.com/google-code-archive… och packa sedan upp det i mappen med skissböcker.

Vi är klara med biblioteken, nu fortsätter vi med att installera bootloaders.

Steg 7: Installation och konfiguration av Bootloaders

Vi ska installera två bootloaders, Mellis är enligt min erfarenhet mer stabil och vi kommer att använda den i den sista skissen. Den andra som utvecklats av Rowdy Dog Software är en fantastisk kärna, väldigt liten och med ett integrerat seriellt gränssnitt tillgängligt, men min fjärrkontroll kraschade efter en tid med den så vi kommer att använda den här startladdaren bara för att kalibrera attiny85 interna klockan och för att avkoda vår fjärrkontroll knappar.

Jag vet att det finns tillgängliga bibliotek för att ge attiny85 seriell kapacitet, men då måste du justera biblioteken som använder serieobjektet … Jag gillar denna procedur bättre.

Låt oss börja med installationen:

A) Mellis bootloader:

öppna bara Arduino IDE -inställningarna och lägg till Ytterligare Boards Manager -webbadresser:

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

Öppna sedan Arduino IDE boards manager och sök efter attiny, installera korten från Mellis. Nu ska du se Arduino ID ATtiny25/45/85 och ATtiny24/44/84 boards.

B) Rowdy Dog Software liten bootloader:

ladda ner bootloader från

Packa upp filen och kopiera den lilla mappen inuti din skissbok/maskinvara (skapa den här mappen om den inte finns ännu). flytta sedan till mappen skissbok/hardware/tiny/avr/och:

1) kopiera filen Prospective Boards.txt till filtavlorna.txt

2) redigera filen platform.txt och gör några ändringar:

Uncomment the variable compiler.path och låt den peka på mappen hardware/tools/avr/bin/inuti din arduino installationsmapp:

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

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

Ändra sedan följande variabler och se till att allt är på sin plats (dessa filer måste finnas, annars rikta variablerna till rätt vägar):

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) redigera filkärnorna/tiny/core_build_options.h och ändra:

#define TIMER_TO_USE_FOR_MILLIS 1 till#definiera TIMER_TO_USE_FOR_MILLIS 0

Detta är mycket viktigt, annars skickar IR -mottagaren ut nollor för varje knapp. Detta uttalande konfigurerar timer0 för millis () -funktionen och lämnar timern1 tillgänglig för IR -biblioteket. Den sista skissen kommer att inaktivera timern i alla fall så att du inte har tillgängliga varken millis () och delay () funktioner. Du kan ha tillgänglig delayMicroseconds () -funktion istället.

Denna bootloader är minimal, men har inkluderat stöd för seriellt objekt:

Attiny85 PB2 (pin7) är TX och PB0 (pin5) är RX

Du kan ha en konfiguration med ISP -programmeraren (arduino) och seriell till usb -adaptern ansluten samtidigt så att du inte behöver byta ledningar för ofta:

Nu har vi både biblioteken och startladdarna installerade och korrekt konfigurerade, det hårdaste arbetet är klart och vi kan börja testa saker.

Steg 8: Burning Bootloaders och uppladdningsskisser

Jag rekommenderar starkt att du aktiverar den generösa utmatningen under Arduino IDE -inställningarna så att du kan ta reda på eventuella problem.

För att bränna en bootloader i Attiny85 måste du ladda upp ISP -exemplet till Arduino och sedan välja programmeraren Arduino som ISP.

Placera nu en 10uF kondensator mellan återställnings- och jordstiftet på arduino (det behövs inte för bränningsprocessen, men det är att ladda upp skisser till attiny85).

Nu är arduino redo att bränna startladdare och ladda skisser. Du behöver bara välja rätt bräda som är kompatibelt med din klädsel och bränna det.

För att ladda en skiss i Attiny85, ladda den i arduino IDE och klicka på "Ladda upp med programmerare".

VIKTIGT: när du laddar upp skissen finns det tre steg, sammanställning, skrivning och verifiering. Om sammanställningen och skrivningen fungerade framgångsrikt, men verifieringsprocessen misslyckas, är det möjligt att skissen fungerar ändå.

Steg 9: Kalibrera Attiny85 intern klocka (hoppa över detta om du använder en kristall)

Om du bestämmer dig för att inte använda 16Mhz -kristallen behöver du kalibrera din attiny85 -klocka, så vi kommer att behöva en bootloader med ett seriellt gränssnitt tillgängligt och vi kommer att använda tinytuner -biblioteket för att få rätt kalibrering.

Följ nästa steg

  • välj under verktyg Arduino som ISP -programmerare
  • välj kortet "ATtiny85 @ 8MHz (intern oscillator; BOD inaktiverad)"
  • Jag antar att du har ISP -anslutningen redo enligt beskrivningen innan anslutning annars gör anslutningarna
  • bränna bootloader
  • denna bootloader har konfigurerat olika stift för det seriella gränssnittet, använd den här konfigurationen endast för den aktuella bootloader

- PB4 (pin3 RX) till TX i FT232RL attiny85 - PB3 (pin2 TX) till RX i FT232RL attiny85 - GND (pin4) till GND på FT232RL eftersom attiny85 redan drivs av arduino behöver du inte ansluta 5v på FT232RL, anslut annars: attiny85 VCC (pin8) till 5V på FT232RL

  • ladda upp tinytuner -exemplet till attiny85
  • öppna skärmprogrammet för att övervaka den seriella kommunikationen: screen /dev /ttyUSB0 9600
  • återställ attiny85 som ansluter RESET -stiftet (pin1) till GND (bara ett ögonblick). Ett välkomstmeddelande ska visas på skärmen
  • Fortsätt skicka enkla 'x'-tecken (ingen vagn-retur; ingen radmatning) tills kalibreringen är klar
  • anteckna någonstans kalibreringsvärdet (OSCCAL = 0x). Detta är det värde som du måste deklarera på de sista skisserna

Steg 10: Avkoda dina fjärrknappar

Nu är det dags att avkoda våra fjärrknappar och tilldela dem till specifika tangenttryckningar i datorn, för att göra det enligt följande steg:

  • välj kortet "ATtiny85 @ 16MHz (intern PLL; 4.3V BOD)" om du inte använder en kristall, "ATtiny85 @ 16 MHz (extern kristall; 4.3 V BOD" annars, bränn den sedan
  • ladda skissen:
  • Om du inte använder en kristall, avmarkera raden som innehåller OSCCAL -variabeln och tilldela den till det värde som du hittade när du gjorde kalibreringen av klockan
  • Jag antar att sensorn är ansluten enligt beskrivningen tidigare, annars anslut den
  • Jag antar också att FT232RL seriell till usb -adapter är ansluten, annars anslut den
  • återställ attiny85 som ansluter RESET -stiftet (pin1) till GND (bara ett ögonblick)
  • tryck upprepade gånger på knapparna på fjärrkontrollen och kolla skärmfönstret, du måste kommentera det sista numret för varje post, varje knapp kan producera 2 olika nummer

Exempel:

MOTTAGET D44 3396 MOTTAGET 544 1348

Anteckna 3396 och 1348 i anslutning till knappen du just tryckte på, sedan måste du bestämma vad du vill göra med den knappen. Till exempel skulle jag vilja att den knappen skulle skicka multimediakodkoden "Volym upp", då måste jag hitta ID för den nyckelkoden. För att göra det, ladda ner PDF -filen:

Håll utkik efter avsnittet "Tangentbord/knappsats" sidan 53 och använd siffrorna i kolumnen Användnings -ID (dec) för att binda dina fjärrknappar till tangentbordskoder. I vårt exempel kan vi se att nyckelkoden för "Volym upp" är: 128.

Redigera filen filen UsbKeyboard.h inuti UsbKeyboard-biblioteket från v-usb-paketet som vi installerade tidigare och lägg till de befintliga definieringarna om det inte redan finns:

#define KEY_VOL_UP 128

När vi är klara med alla våra fjärrkontrollknappar och alla definieringar i filen UsbKeyboard.h är klara kan vi gå vidare till det sista steget.

Steg 11: Ladda den sista skissen och hoppas på det bästa

Laddar den sista skissen och hoppas på det bästa!
Laddar den sista skissen och hoppas på det bästa!
Laddar den sista skissen och hoppas på det bästa!
Laddar den sista skissen och hoppas på det bästa!

Vi har nu alla fjärrknappar avkodade, filen UsbKeyboard.h är fylld med våra nyckelkoder, så nu kan vi ladda in den arduino IDE den definitiva skissen från:

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

Den här filen är den exakta filen som jag använder för min mottagare, och den fungerar för 2 olika fjärrkontroller, så klart att du måste uppdatera den för att fungera med dina fjärrkontroller.

Om du inte använder en kristall, avmarkera raden som innehåller OSCCAL -variabeln och tilldela den till det värde som du hittade när du gjorde kalibreringen av klockan

Lägg märke till att det i loop -funktionen finns många uttalanden som den här:

if (results.value == 3405 || results.value == 1357) {// pil upp

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

}

Du måste skapa dina egna uttalanden, en per knapp i fjärrkontrollen. I "if" -villkoret måste du sätta in resultaten.value de värden som du har hittat för avkodning av fjärrkontrollen och som argument för UsbKeyboard.sendKeyStroke -metoden måste du placera en av de redan definierade nyckelkoderna i filen UsbKeyboard.h.

Villkoret "if (lastStroke! = Results.value)" behövs eftersom vissa fjärrkontroller skickar samma kod två gånger per träff, och detta förhindrar den andra träffen. Jag är inte helt säker och det kan bero på IR -protokollet som har programmerats in i din fjärrkontroll (jag är egentligen inte expert på IR -protokoll) men enligt min erfarenhet av mina egna fjärrkontroller kan varje knapp producera 2 olika koder och medan du trycker och håller knappen, skickar den samma kod, men om du trycker på knappen igen skickar den den andra. Så det verkar som att koderna skickas på ett annat sätt, jag antar att det är ett standardläge att veta hur många gånger du verkligen trycker på knappen.

Ok, vi är nästan klara, ladda bara upp den sista skissen, anslut den till datorn och se hur det går.

För det här steget är det bättre om du kopplar ur både arduino och usb till seriell adapter och först då ansluter du USB: n till din PC -port (om något skulle gå fel blir din krets enklare att felsöka).

Om allt fungerade bra, när du öppnar en terminal och skickar dmesg -kommandot bör du se något som liknar den första bilden i det här steget. Om det fanns problem bör du ha fel som de som finns i den andra bilden och du måste börja felsöka din krets och/eller programvaran. En av källorna till de första felen som jag hade var en USB -hubb som inte skulle fungera med min IR -mottagare (andra fungerade dock) … så det är bättre för det sista steget att ansluta IR -mottagaren direkt till din PC -port. Eventuella fel kan vara svåra att hitta, men i slutändan, som jag, skulle du lära dig mycket och priset att betala är värt det, jag försäkrar dig.

Det är allt folk, låt mig veta om du märker några fel i denna instruerbara och njuta av din helt nya IR USB -mottagare!

Rekommenderad: