ESP8266 WiFi kontrollerade aircon remote (2 / 15 steg)
Steg 2: Registrera IR-kommandon används för att kontrollera kulturintresserade
ESP8266 simulerar fjärrkontrollen för att växla på/av aircon och välja olika funktioner. För att kunna göra så vi måste spela in olika IR skicka signaler från fjärrkontrollen.
Först behövs en enhet kan registrera IR-signaler. Jag har en Arduino Uno som jag alltid använder för att göra snabba tester. Jag ansluten IR-mottagaren till Arduino som visas ovan i schematiska och skärbräda skiss. Jag bifogade filerna Fritzing (DumpIR.fzz). Jag hade en kontrollpanel från en gammal kabel-TV-mottagare liggandes. Jag använde IR-mottagaren monterad på denna Kontrollpanelen för inspelning. (Jag kommer senare att dela en instructable om användningen av denna Kontrollpanelen också).
För inspelningen använde jag Flera protokoll IR Remote bibliotek för Arduino. Detta bibliotek innehåller ett exempel program (IRrecvDumpV2.ino) att registrera IR-signaler. Jag använde IRrecvDumpV2 för att få en första uppfattning om hur IR-kommandon ser likadana ut. Utdata från programmet ser ut:
Kodning: NEC < br > kod: 8E76897 (32 bitar)
Timing [67]:
+8900,-4450 + 600, - 450 + 600, - 550 + 550, -550
+ 550, - 550 + 550,-1700 + 550, - 550 + 550, -600
+ 500, -550 + 550,-1700 + 500,-1700 + 550,-1700
+ 600, -500 + 550, - 600 + 550,-1600 + 650,-1600
+ 550,-1650 + 600,-500 + 550,-1700 + 600,-1600
+ 650, - 450 + 650,-1600 + 550, - 550 + 600, -500
+ 650, - 450 + 650,-1600 + 550, - 550 + 650, -450
+ 650,-1550 + 600,-550 + 600,-1600 + 650,-1600
+ 600,-1600 + 600
unsigned int \Data [67] = {8900,4450, 600,450, 600,550, 550,550, 550,550, 550,1700, 550,550, 550,600, 500,550, 550,1700, 500,1700, 550,1700, 600,500, 550,600, 550,1600, 650,1600, 550,1650, 600,500, 550,1700, 600,1600, 650,450, 650,1600, 550,550, 600,500, 650,450, 650,1600, 550,550, 650,450, 650,1550, 600,550, 600,1600, 650,1600, 600,1600, 600}; NEC 8E76897
unsigned int data = 0x8E76897;
Denna utgång är lite kryptiska, så jag bestämde mig att "förbättra" den produktion och användning av detta program för min personliga inspelningar. Nya programmet heter DumpIR och förbättringarna är
- Kortare utgång med ytterligare information vilken funktion spelades
- Kommentera utgång med testade knappen och formatera som Byte array så att det kan användas direkt i programmet ESP8266
- Spela in varje knapp 3 gånger för att se till att registreringen är korrekt.
- Tala för användaren vilken knapp att trycka på spela in
Produktionen av DumpIR ser ut:
Börja testa, nu tryck H-FAN
====================
H-FAN
Kodning: NEC
Kod: B1000111001110110100010010111 (32 bitar)
unsigned int data = 0x8E76897
unsigned int \Data [67] = {8950,4350, 650,450, 650,500, 600,500, 650,450, 600,1600, 650,500, 600,500, 600,500, 650,1600, 600,1600, 600,1600, 650,450, 650,500, 600,1600, 650,1550, 650,1600, 600,500, 650,1600, 600,1600, 600,500, 650,1550, 650,500, 600,500, 650,450, 650,1550, 650,500, 600,500, 650,1550, 650,500, 600,1600, 600,1600, 650,1600, 600}; NEC B1000111001110110100010010111
unsigned int data = 0x8E76897;
{B00001000, B11100111, B01101000, B10010111}
Kodning: NEC
Kod: B1000111001110110100010010111 (32 bitar)
unsigned int data = 0x8E76897
unsigned int \Data [67] = {8950,4400, 600,500, 650,450, 650,450, 650,500, 600,1600, 600,500, 650,450, 650,500, 600,1600, 650,1550, 650,1600, 600,500, 650,450, 650,1600, 600,1600, 600,1600, 650,500, 600,1600, 650,1600, 600,450, 650,1600, 650,450, 650,450, 650,500, 600,1600, 600,500, 650,450, 650,1600, 600,500, 650,1600, 600,1600, 600,1600, 650}; NEC B1000111001110110100010010111
unsigned int data = 0x8E76897;
{B00001000, B11100111, B01101000, B10010111}
Kodning: NEC
Kod: B1000111001110110100010010111 (32 bitar)
unsigned int data = 0x8E76897
unsigned int \Data [67] = {9000,4350, 650,450, 650,450, 650,450, 650,500, 600,1600, 650,450, 650,500, 600,500, 650,1550, 650,1550, 650,1600, 650,450, 650,450, 650,1600, 600,1600, 650,1600, 600,500, 600,1600, 650,1550, 650,500, 600,1600, 650,450, 650,450, 650,500, 600,1600, 550,550, 650,500, 600,1600, 600,500, 650,1600, 600,1600, 650,1550, 650}; NEC B1000111001110110100010010111
unsigned int data = 0x8E76897;
{B00001000, B11100111, B01101000, B10010111}
====================
Kommandot klar nu tryck på M-FAN
Bytematrisen {B00001000, B11100111, B01101000, B10010111} används direkt i programmet ESP8266 för att skicka kommandot "switch till hög fläkt läge" till aircon.
DumpIR.ino anpassade behöver några för olika aircon fjärrkontroller. T.ex. min FujiDenzo aircon remote har 10 knappar, bärare aircon har 14 knappar. När du tittar in i DumpIR.ino kan du hitta definitionen för 2 aircons:
//------------------------------------------------------------------------------//
Denna exempelkod är för 2 olika aircons
1) tillverkare FujiDenzo
2) tillverkaren bärare
Dessa aircons har olika kommandot anger att
Använda #define FUJIDENZO för inspelning av kommandona FujiDenzo
Använda #define bärare för inspelning av kommandona bärare
#define FUJIDENZO
#define bärare
Om jag vill registrera signaler från FujiDenzo fjärrkontrollen, #define FUJIDENZO används, om transportören fjärrkontrollen registreras #define bärare används.
De olika kommandon och antalet tillgängliga kommandon för de båda fjärrkontrollerna definieras i cmdList [] och endCmdIndex:
#ifdef FUJIDENZO < br > / / FujiDenzo fjärrkontrollen har 10 knappar
int endCmdIndex = 10;
Sekvens av kommandon på FujiDenzo fjärrkontrollen
Sträng cmdList [] = {"H-FAN", "M-FAN", "L-FAN", "TIMER", "TEMP +", "TEMP-", "COOL", "Torr", "FAN", "POWER"};
#endif
#ifdef transportör
Carrier remote har 14 knappar
int endCmdIndex = 14.
Sekvens av kommandon på fjärrkontrollen bärare
Sträng cmdList [] = {"POWER", "SWEEP", "TEMP +", "TEMP-", "FANSPEED", "TURBO", "TIMER", "DRY", "Sover", "ION", "Värme", "COOL", "FAN", "AUTO"};
#endif
Som ni kan se definitionerna FUJIDENZO och bärare används för att välja rätt lista och antalet kommandon.
Med DumpIR jag spelade in alla kommandon för de två aircons från FujiDenzo och bärare och sparas resultaten i textfiler.
Du kommer att behöva anpassa DumpIR att arbeta med din specifika aircon tillverkare.
UPPMÄRKSAMHET:
Jag spela in varje knapp (minst) 3 gånger eftersom under projektet lärde jag mig att vissa fjärrkontroll enheter inte skicka samma IR-signalen för ett kommando varje gång. Jag var tvungen att lära sig genom försök och misslyckande att transportören aircon faktiskt har 3 olika IR-signaler för samma kommando. Om du upprepa ett kommando på fjärrkontrollen (som temperaturen upp) fjärrkontrollen loopar igenom 3 IR-signaler och skickar varje gång en annan. Cykeln är återställa om en annan knapp trycktes. Exempel:
- Tryck temperatur upp knappen = > IR signal #1 för temperatur upp skickas.
- Tryck temperatur upp knappen igen = > IR signal #2 för temperatur upp skickas
- Tryck temperatur ner knappen = > IR signal #1 för temperatur ner skickas
- Tryck temperatur upp knappen igen = > IR signal #1 för temperatur upp skickas
Jag var tvungen att genomföra detta beteende i koden för ESP8266 kod, men mer om detta i ett senare steg.
Ytterligare en kommentar:
I de bifogade bilderna ser du att jag inte använder en enda IR-mottagare för att registrera IR-signaler. Jag hade en gammal instrumentbräda för kabel-TV liggandes. Som denna instrumentbräda hade en IR-mottagare monterade, beslöt jag att använda det istället för att köpa en IR-mottagare. Jag kommer att senare publicera en annan Instructable hur jag anslutit denna instrumentbräda till Arduino Uno.
All programvara och alla scheman finns tillgängliga i min Github repository