10 marca 2020

Sterowanie za pomocą pilota IR receiver

Pilot IR receiver

Komunikacja w podczerwieni (IR) jest szeroko stosowaną i łatwą do wdrożenia technologią bezprzewodową, która ma wiele przydatnych zastosowań. Najbardziej znanymi przykładami w codziennym życiu są piloty do TV / wideo, czujniki ruchu i termometry na podczerwień.

Istnieje wiele interesujących projektów Arduino, które również wykorzystują komunikację w podczerwieni. Za pomocą prostego nadajnika i odbiornika podczerwieni możesz tworzyć zdalnie sterowane roboty, czujniki odległości, monitory pracy serca, piloty do telewizora i wiele innych.

W tym wpisie dowiesz się, jak skonfigurować odbiornik podczerwieni i pilota na Arduino z pomocą programu Code Designer. Pokażę też, jak używać praktycznie dowolnego pilota na podczerwień (takiego jak ten do telewizora) do sterowania urządzeniami podłączonymi do Arduino.

JAK DZIAŁAJĄ PILOTY I ODBIORNIKI IR

Typowy system komunikacji w podczerwieni wymaga nadajnika i odbiornika IR. Nadajnik wygląda jak standardowa dioda LED, tyle że wytwarza światło w widmie IR zamiast w widmie widzialnym. Jeśli spojrzysz na przód pilota telewizora, zobaczysz diodę LED nadajnika podczerwieni:
pilot ir z dioda
Ten sam typ diod LED jest stosowany w płytkach sterujących przekaźnika podczerwieni w Arduino. Możesz to zobaczyć np. w takim układzie:
Odbiornik podczerwieni natomiast to fotodioda i przedwzmacniacz, który przekształca światło podczerwone w sygnał elektryczny. Diody odbiornika IR zwykle wyglądają tak:
Mogą być też zamocowane do większego układu, poniżej widać odbiornik diody podczerwieni IR Receiver podłączony na pinie 6 na rozszerzeniu do arduino, Education board v1

Przykład kodu do odbioru danych

Najprostszy fragment kodu który umozliwia odczytanie kodu z pilota i wyświetlenia go na konsoli w arduino (serial port) może wyglądać jak poniżej. Dioda IR umieszczona została na pinie 6 naszego arduino.
#include <IRremote.h>

int RECV_PIN = 6;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}
Kod wstępnie nie jest zbyt trudny, ale w połączeniu w zaawansowanym układzie może robić wiele problemów.
Przyjmijmy, że chcemy zbudować prosty układ świateł (diod led) który będzie zapalał i gasił się w zależności od wciśniętego przycisku na naszym pilocie. Odczytanie każdego interesującego klawisza jest konieczne, to bez wątpienia, ale rodzi się pytanie jak i gdzie go umieścić, i złączyć ten kod? Sprawia to dużo problemów początkującym w tworzeniu swoich projektów za pomocą arduino.

Popularny układ pilota tzw. "car mp3"

Przykłady kodów które ten pilot przesyła.
 Key Code
 CH- 0xFFA25D
 CH 0xFF629D
 CH+ 0xFFE21D
 << 0xFF22DD
 >> 0xFF02FD
 >|| 0xFFC23D
 – 0xFFE01F
 + 0xFFA857
 EQ 0xFF906F
 100+ 0xFF9867
 200+ 0xFFB04F
 0 0XFF6897
 1 0xFF30CF
 2 0xFF18E7
 3 0xFF7A85
 4 0xFF10EF
 5 0xFF38C7
 6 0xFF5AA5
 7 0xFF42BD
 8 0xFF4AB5
 9 0xFF52AD
Pisząc program od podstaw musimy każdy z tych kodów odczytać i wpisać odpowiednio w programie, aby można było na jego podstawie wykonać interesujące nas działanie.

Program Code Designer umożliwa dużo prostszą interakcje, która nie przytłoczy nikogo kto zaczyna pracę z kontrolerami. Przykład kodu który wykorzystuje wspomniany wcześniej pilot IR (mp3 car) będzie wyglądał tak:
Program zapala i gasi diodę umieszczoną na pinie 13 w zależności od klikniętego klawisza na pilocie CH+ lub CH-.

Blok kontroli programu

Blok kontroli analizujący wartość odnajdziesz w menu:
W celu skonfigurowania go aby działał na kilka w naszym przypadku przycisków, należy wykonać odpowiednio 2 kroki, zaprezentowane poniżej na zrzutach ekranu:
Program w bardzo prosty sposób umożliwia rozbudowanie programu o kolejne opcje.
 
Załóżmy że chcemy wykonać projekt, który składa się z 2 diod i chcemy sterować nimi za pomocą kliknięcia w klawisze 1 i 2 na pilocie. Dodatkowo po ponownym kliknięciu klawisza chcemy aby dioda zmieniła swój stan na przeciwny (jeśli była zapalona to zgaś, jeśli była zgaszona to zapal). 

Taki program może wyglądać następująco:

Dodaj komentarz

Copyright © 
Code Designer 2024