Wykorzystanie pilotów na podczerwień do sterowania komputerami i elektroniką

Piloty do telewizorów i podobnych urządzeń używają diody emitującej światło podczerwone. Odbiornik w telewizorze otrzymuje sygnał i wykonuje określoną czynność. Cała komunikacja to nie tylko świecenie się diody LED, lecz sygnał modulowany - światło pulsuje (PWM) z określoną częstotliwością (zazwyczaj 38KHz). Odbiornik wykrywa tą modulację i dekoduje sygnał w niej zawarty (tj. który przycisk wciśnięto).

Piloty i odbiorniki podczerwone można wykorzystać w projektach z mikrokontrolerami, czy komputerami. Możemy wykorzystać sygnały do zaprogramowania określonych czynności - czy to na naszym komputerze, czy na np. robocie. W tym artykule zaprezentuję zestaw nadajnika i odbiornika działającego z PyMCU.

Nadajniki i odbiorniki

Piloty mogą wykorzystywać różne formaty kodowania sygnału. PyMCU obsługuje tylko format Sony SIRC, który stosowany jest głównie przez piloty Sony. Arduino, czy i inne mikrokontrolery mają biblioteki obsługujące także inne formaty. Na potrzeby pyMCU potrzebować będziemy pilot do np. telewizora Sony. Ja kupiłem najtańszy z zamienników za kilka złotych - PIL0112.

Do odbierania sygnałów będziemy potrzebować odbiornik podczerwieni. Za kilka, kilkanaście złotych możemy kupić samą diodę z wbudowanym demodulatorem, albo diodę zamontowaną na małej płytce PCB z wyprowadzonymi pinami GND, VCC i sygnału. Bez problemu znajdziemy coś w sklepach z elektroniką tego typu dla hobbystów. Ja użyłem płytki Keyes KY-022.

Pilot PIL0112 do telewizorów Sony oraz odbiornik Keyes KY-022 podłączony do PyMCU

Pilot PIL0112 do telewizorów Sony oraz odbiornik Keyes KY-022 podłączony do PyMCU

Odbieranie sygnałów z pyMCU

PyMCU ma gotową metodę do odczytywania zdekodowanych sygnałów z pilota - irDecode:

import pymcu

mb = pymcu.mcuModule()

mb.digitalState(1, 'input')
while True:
    ir = mb.irDecode(1)
    if ir != 255:
        print ir

Ustawiamy pin cyfrowy D1 w tryb odczytu, a następnie w pętli odczytujemy jego wartość. 255 to wartość tła gdy żaden sygnał nie jest odbierany. Po wciśnięciu jakiegoś przycisku na pilocie wypisana zostanie jego numeryczne zdekodowana wartość. Mając mapę wartości dla każdego przycisku można je zmapować na określone akcje wedle potrzeb. Trzeba też uwzględnić efekty takie jak ciągłe odbieranie danego sygnału gdy przez dłuższy czas trzymamy wciśnięty dany przycisk.

RkBlog

Elektronika i Python, 27 April 2014

Comment article
Comment article RkBlog main page Search RSS Contact