Vajalikud teadmised:
[HW] Kontrollermoodul, [HW] Kombomoodul,
[AVR] USART,
[LIB] Jadaliides,
[LIB] Graafiline LCD
Bluetooth (eesti keeles sinihammas) on tööstusstandard seadmete juhtmevaba ühenduse loomiseks. Bluetooth on eelkõige mõeldud arvutite ja mobiiltelefonide ühendamiseks erinevate perifeeriaseadmetega, nagu näiteks kõrvaklapid, printerid, GPS vastuvõtjad, jne. Samuti on Bluetooth ühenduse abil võimalik lihtsalt ja turvaliselt vahetada kahe seadme vahel andmeid. Bluetooth on kahetasandiline standard, mis määrab ära füüsilise kihi (raadiosignaalide sageduse) ning samuti protokolli kihi (kuidas andmeid edastatakse). Tegemist on juhtmevaba andmevahetusstandardiga, mis kasutab andmeedastuseks raadiosignaale vahemikus 2,402 - 2,480 GHz. Samal sagedusel töötavad ka paljud teised laiatarbe raadioseadmed. Bluetooth-il on kolm võimsusklassi kuid enamus seadmeid kuulub klassi 2, mis piirab seadmete leviulatuse ca 10 meetrile. Andmevahetuseks ei ole vaja kahe seadme otsenähtavust, kuigi seinad ja muud takistused vähendavad seadmete leviulatust. Korraga võib ühendada kuni 8 Bluetooth seadet ilma, et need omavahel andmevahetust segama hakkaksid. Selle tagab nn. spread-spectrum frequency hopping tehnoloogia, mis tagab, et ühendunud seadmed kasutavad natuke erinevat sagedust ning muudavad seda pidevalt.
Bluetooth ühenduse üheks omaduseks on tema automaatne ühenduvus. Kui Bluetooth seade ilmub teise seadme nähtavuspiirkonda toimub automaatne elektrooniline infovahetus, selgitamaks välja, kas on vaja alustada andmevahetust või peab üks seade võtma üle teise seadme juhtimise. Selline infovahetus toimub automaatselt, ilma et kasutajal oleks vaja selleks eraldi käsklusi anda. Kui infovahetuse käigus selgub, et seadmed on autoriseeritud üksteisega suhtlema, luuakse automaatselt personaalne kohtvõrk (inglise keeles Personal-Area Network, lühend PAN) või nõnda nimetatud Piconet, mis on ülem-alluv stiilis väike võrk - näiteks mobiiltelefon ja kõrvaklapid. Kui võrk on loodud, valivad selle liikmed omale sageduse, et mitte interfereeruda teiste ruumis olevate Bluetooth seadmetega, kes ei kuulu samasse võrku. Olles ühes võrgus, ignoreerivad võrgu liikmeid teisi seadmeid, isegi kui need üritavad alustada andmevahetussessiooni.
Bluetooth protokolli juures on turvalisus oluline tegur ja erinevaid režiimid tagavad andmevahetuse ja ühenduse turvalisuse. Üldjuhul saab kasutaja määrata usaldatud seadmed (inglise keeles trusted devices), millega võib ühendusi luua ilma, et küsitakse eraldi parooli. Kui uus seade üritab luua ühendust on kasutajal võimalus seda lubada või keelata. Turvameetmed sisaldavad endas autoriseerimist ja seadme identifitseerimist enne, kui alustatakse andevahetust.
Tänasel päeval on Bluetooth-ist juba neli põhiversiooni ja hulk alamversioone välja arendatud. Enamus mooduleid, mis on ette nähtud hobiprojektides kasutamiseks baseeruvad veel standardil 2.0. Kolmas versioon tõi Bluetooth-i suurema andmesidekiiruse (kuni 24 Mbit/s) ja neljas madalama voolutarbe võimaluse - millest tuleneb ka inglisekeelne nimetus Bluetooth low energy.
Bluetooth Bee (lühend BTBee) on Bluetooth jadaport (inglise keeles Bluetooth Serial Port Profile, lühend Bluetooth SPP) tüüpi moodul, mis sobib Robootika Kodulabori Kombomooduli „XBee“ pesasse. Samuti nagu teiste XBee moodulitega, toimub mikrokontrolleri ja mooduli suhtlus UART liidese kaudu. Tavaliselt kasutatakse Bluetooth sidet arvuti/mobiiltelefoni ja mikrokontrolleri vahelise side tekitamiseks, kuigi Bluetooth mooduleid või samahästi kasutada ka kahe mikrokontrolleri vaheliseks sideks. Kui moodul on ühendatud XBee pessa ja Kodulabori komplekt pingestatud läheb BTBee toite sisselülitamisel vaikimisi slave režiimi. Seejärel on võimalik hakata moodulile üle UART liidese käske saatma. Suhtluseks kasutatakse AT käsustikku, mis on dokumenteeritud mooduli kasutajajuhendis. BTBee moodul loeb käsu õigeks, kui käsk on lõpetatud ASCII märkidega CR (13 ehk ’\r’) ja LF (10 ehk ’\n’). Moodulit on võimalik testimiseks ühendada ka arvuti jadaliidesesse. Suhtlemiseks näiteks Hyper Terminali abil tuleb seal valida Properties, Settings tab, ASCII Setup… ning märkida linnukesega Send line ends with line feeds ja Echo typed characters locally. Enne käsu kirjutamist vajutada korra ENTER klahvile ja kirjutada ainult käsk ilma muude märkideta ja veelkord ENTER. Vale käsu saatmisel vastab moodul „ERR“, vastasel juhul „OK“. Kontrollerist moodulile käsu saatmisel on vajalik lisada siiski lõppu ka CR ja LF ehk käsk tuleb saata kujul „[SÕNUM]\r\n“.
BTBee mooduli vaikimisi seaded:
Mooduliga suhtlemiseks võib kasutada arvuti (tavaliselt sülearvuti) või mobiiltelefoni Bluetooth liidest. Android mobiiltelefoni puhul võib kasutada rakendust “Bluetooth Terminal/Graphics”. Kui ühendus on loodud, muutub moodulil oleva sinise LED-i olek. Seejärel saab alustada andmevahetust kontrolleriga läbi BTBee mooduli.
// Kodulabori juhtmevaba BTBee mooduli näidisprogramm // LCD ekraanil kuvatakse välisest seadmest saadetud tekst #include <homelab/pin.h> #include <homelab/usart.h> #include <homelab/module/lcd_gfx.h> // Põhiprogramm int main(void) { // LCD seadistamine lcd_gfx_init(); lcd_gfx_goto_char_xy(0,0); lcd_gfx_write_string(" Homelab Bluetooth "); // USART liidese seadistamine usart_init_async(1, USART_DATABITS_8, USART_STOPBITS_ONE, USART_PARITY_NONE, USART_BAUDRATE_ASYNC(38400)); // Lõputu tsükkel while (1) { char info[30]; // Kas on infot tulnud? if (usart_has_data(1)) { // Sissetulnud info lugemine usart_read_string(1,info,20); // Teksti kuvamine LCD-l lcd_gfx_write_string(info); } // Kas nupule on vajutatud? if (button_read(S1)) { // Teksti saatmine usart_send_string(1,"Bluetooth Message\r\n"); // Nupu vabastamise ootamine while(button_read(S1)); } } }