Med IR-fjärrkontroll med Raspberry Pi utan LIRC (1 / 1 steg)
Steg 1: Komma igång
Installera pySerial
- För att få det seriella (UART) kommunikation arbetet måste installera modulen följetong.
sudo lämplig-få installera python-serial
När detta är installerat kan Python kod använda den genom att göra Importera följetong.
- Sedan behöver tråd GPIO 14 (TX) och GPIO 15 (RX). Eftersom mitt mål är att ta emot IR-signaler jag trådbundna endast GPIO 15 (RX).
- IR-sensorn kräver 5V & GND anslutning. Utsignal för IR-sensorn kopplas sedan till GPIO 15.
Python-koden att läsa IR-signalen fick reda på att vara mycket mycket enkelt. Enligt följande.
importera följetong
ser = följetong. Serial ("/ dev/ttyAMA0")
ser.BaudRate = 2400
för jag i intervall (0,15): # IR-signal för en nyckel är oftast ca 12-16 bytes
data = ser.read(1) # läsa 1 byte i taget
skriva ut ord(data) # data läsa karaktär, ord konverteras till ASCII-värde
Nu läser denna kod IR-signal 1 byte i taget och skriver ut värdet.
Jag försökte överföringshastigheter genom trial and error och bosatte sig för 2400 BPS. Även om seriell kommunikation stöder upp till 115KBPS är det intressant varför IR med en lägre hastighet. Min gissning är att det skulle vara säkrare att använda lägre hastighet, eftersom mindre möjlighet IR signal lösa 1 eller 2 bitar i etern.
Avkoda IR fjärr nycklar
Nästa steg är nu att avkoda nyckelvärdena. Jag använde en standard Samsung TV IR-fjärr för denna insats.
Första viktiga punkten är att räkna ut hur många byte med data för varje tangent. Det kan variera 12-16 byte. (de jag försökte). Vanligt är byte längden samma för alla nycklar. De byte har huvudet bytes, data-byte (för att identifiera nyckeln) och svans byte. Header-byte kommer att ha en signatur för modellen av IR-fjärr. Jag använde ett excel-blad för att samla viktiga datavärdena efter Antzy Carmasaic sida
Djup Dykning i de fångade nyckelvärdena, det visar byte 0-5 består av rubrik, upprepas för alla nycklar. 6 till 11 data bytevärden representerar nyckel värde. Det kan finnas vissa svans värden. Byte 12 är svans för samsung remote.
Mappning av nycklar
Den exakta vägen för denna avlägsna är att lagra byte 6-11 i en matris och jämföra den med en ny inkommande nyckel. Istället gjorde jag en enkel algoritm som följer.
keyidentity = byte [6] + 2 * byte [7] + 3 * byte [8] + 4 * byte [9] + 5 * byte [10] + 6 * byte [11]
Det ger nästan ett unikt värde för varje nyckel. Du kan räkna ut en bättre algoritm än detta.
Jag utökade Python koden för att fånga Samsung remote nyckelinformation. När jag räknat mappade nyckelvärde sedan lagras jag det själva python programmet.
Fil är bifogad. Name - ir_serial3samsung.py. Samsung remote skickar 2 uppsättningar med data. Så jag fånga capture 24 byte för att spola Raspberry Pi seriella data buffert. Men jag använder bara 1: a att avkoda.
När du kör den här koden identifierar det korrekt tangenterna trycks. Du kan avkoda resten av nycklarna i fjärrkontrollen genom att titta på värdet "keyidentity" som programmet skriver ut. Då tillägga att inkludera dem.
Slutsats
Detta är ett mycket enkelt och effektivt sätt att använda en fjärrkontroll med Raspberry Pi med Python. Du måste räkna hur många byte för en nyckel, hur länge header-byte, data-byte och byte som svans. Eftersom du skulle veta från A till ö av denna process kan du enkelt ändra den för att passa din ansökan. Eftersom dessa är små python koder är det väldigt lätt att felsöka om du träffar någon problem.