IR Majakat kasutatakse roboti lokaliseerimiseks ruumis. Seda kasutades on võimalik robotil kätte saada mingi teatud objekti suund ning seda kasutades sõita vajaliku objektini. Majakas saadab välja RC5 protokollile vastavaid pakette, mis vastavad telekapuldi kanalitele. Protokollist tulenevalt on IR andmete kandevsageduseks 36kHz, mis tõstab tunduvalt süsteemi häirekindlust kõrvaliste infrapunakiirguste eest (lambid, päike jne).
Majaka trükkplaadil on kaks omavahel seotud skeemi: IR kiirgur ning laadija. Selle ülesande lahendamisel on kasutusel ainult IR kiirguri poolne skeemiosa. Järgnevalt on kirjeldatud majaka kasutamine:
Majakas vajab alalispingelist toidet 5V DC, mis tuleb ühendada kruviklemmi “Power” külge. Kanali valimine toimub jumper'iga, mis ühendatakse piikriba “Channel” külge vastavalt kõrvalolevale tabelile. Nt kanali 2 valimiseks tuleb ühendada jumper viikude 3 ja 5 vahele. Infrapuna LED'ide kiirgustugevust saab vajadusel reguleerida potensiomeetriga RT1, mis asub kanalivaliku viikude kõrval.
Majakaga suhtlemiseks on igal robotil IR vastuvõtja, mis tuleb paigutada roboti esiotsa. Kahe IR vastuvõtja vahele on vajalik paigutada vahesein, et robot suudaks eristada signaali suunda.
IR vastuvõtja tuleb ühendada Kodulabori jadaliidese USART1 sisend viigule (Rx). Samuti vajab IR vastuvõtja 5V toidet ja maa ühendust. Viikude järjestus vaadates plaadi äärest on järgmine: UART, +5V, GND.
Võimalik vastuvõtja paigutuse ja vaheseina näide:
Allolev kood kirjeldab majaka teegi kasutamist. Nagu iga teegi puhul, tuleb kõigepealt lisada programmi vajalik päisefail “majakalib.h” ning projekti tuleks lisada ka majakalib.c fail. Kõigepealt tuleb käivitada majaka lugemiseks vajalik riistvara käsuga IR_Init(), mis käivitab jadaliidese UART1, mille kaudu kuulatakse majaka vastuvõtjalt leitud kanaleid. Et vastuvõtja teaks, millist kanalit püüda, tuleks täpsustada ka otsitav kanal käsuga IR_Channel(kanal,autopiloot), milles esimene muutuja näitab otsitavat kanalit ning teine muutuja käivitab autopiloodi, mis kanalit nähes paneb roboti sõitma majaka suunas. Autopilooti kasutades tuleks jälgida seda, et muu kood ei hakkaks mootoreid samal ajal juhtima. Vastuvõtjast saab nähtavaid kanaleid lugeda ka IR_Read() käsuga, mis tagastab hetkel IR vastuvõtja poolt nähtavad kanalid, mida kasutaja ise koodis kasutada saaks (näiteks ise mõne majaka poole sõitmiseks või tõitmiseks juhul, kui majakat hetkel näha ei ole).
Enne teegi kasutamist tuleks vaadata majakalib.h faili sisse ning seal ära märkida ka korrektsed mootorid ning mootorite üht ja teist pidi liikumise suunad. Vajadusel võib muuta ka UART kanalit juhul, kui UART1 on kasutusel (Nt XBee ühendamisel).
/* Kirjeldus: Katkestuspõhine infrapunamajaka kojusõidu näide * Author: Rain * Kp.: 3.04.2013 */ #include "majakalib.h" int main(void) { // Initsialiseerib majaka IR_Init(); // Majaks 2, autopiloot IR_Channel(2,AUTO); }
Vajalikud teegi failid: