| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| et:examples:communication:bluetooth:btbee [2014/01/28 08:46] – rellermaa | et:examples:communication:bluetooth:btbee [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| ====== Bluetooth BTBee ====== | ====== Bluetooth BTBee ====== |
| |
| //Vajalikud teadmised: [HW] [[et:hardware:homelab:controller]], [[et:hardware:homelab:combo]], [AVR] [[et:avr:usart]], [LIB] [[et:software:homelab:library:usart]], \\ [LIB] [[et:software:homelab:library:module:lcd_graphic]]// | |
| |
| | //Vajalikud teadmised: |
| | [HW] [[et:hardware:homelab:controller]], [HW] [[et:hardware:homelab:combo]], |
| | [AVR] [[et:avr:usart]], |
| | [LIB] [[et:software:homelab:library:usart]], \\ |
| | [LIB] [[et:software:homelab:library:module:lcd_graphic]] // |
| | |
| | /* |
| **Eunistone mooduli puhul vaata siia:** | **Eunistone mooduli puhul vaata siia:** |
| [[et/examples/communication/bluetooth/eunistone|Eunistone moodul]] \\ | [[et/examples/communication/bluetooth/eunistone|Eunistone moodul]] \\ |
| **Bluetooth Bee mooduli puhul vaata siia:** | **Bluetooth Bee mooduli puhul vaata siia:** |
| | |
| [[et/examples/communication/bluetooth|Bluetooth Bee moodul]] | [[et/examples/communication/bluetooth|Bluetooth Bee moodul]] |
| | */ |
| |
| **Täielik AT käskude nimekiri ja manual (en):** \\ | ===== Teooria ===== |
| {{:examples:communication:hc-05-at_command_set.pdf|AT käsustik ja manual}} | |
| |
| | [{{ ::examples:communication:btbee-pro-bluetooth.jpg?220|BTBee moodul}}] |
| | 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. |
| |
| ===== Teooria ===== | 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. |
| |
| [{{ ::examples:communication:btbee-pro-bluetooth.jpg?220|BT moodul}}] | 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. |
| |
| Bluetooth on tööstusstandard seadmete omavaheliseks traadita ühenduseks. Selle eesmärgiks on juhtmeühenduste asendamine mobiiltelefonide, arvutite jt. suhtlemisel perifeeriaseadmetega. | 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//. |
| |
| ===== Praktika ===== | ===== Praktika ===== |
| | [{{ :examples:communication:bt_terminal.jpg?300|Bluetooth terminal mobiiltelefonis}}] |
| |
| BTBee Pro moodul sobib Kodulabori kombomooduli plaadile „XBee" pesasse. Analoogselt ZigBee mooduliga, toimub suhtlus ka BTBee mooduliga kasutades kontrolleri USART liidest. Moodul läheb toite sisselülitamisel vaikimisi //slave// režiimi. | 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 {{:examples:communication:hc-05-at_command_set.pdf|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 moodul loeb käsu õigeks, 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: |
| | |
| Bloetooth mooduli arvutiga ühendamiseks on kõige lihtsam panna moodul //slave// olekusse. Selleks ei ole vaja moodulit muuta, kuna moodul tuleb kohe //slave// olekus. | |
| | |
| Mooduli vaikimisi seaded: | |
| * Töörežiim: //slave// | * Töörežiim: //slave// |
| * Jadaliides: 38400 b/s, 1 STOP, No Parity | * Jadaliides: 38400 b/s, 1 STOP, No Parity |
| * Parool: 1234 | * Parool: 1234 |
| |
| [{{ :examples:communication:bt_terminal.jpg?200|Bluetooth terminal}}] | 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. |
| |
| Kui ühendus on loodud, muutub moodulil oleva sinise LEDi olek. Kuna ühendus on loodud virtuaalse jadaliidese abil, siis on võimalik arvutist saata Hyper Terminali vms. kaudu andmeid BTBee vahendusel kontrollerile ja vastupidi. | ~~CL~~ |
| | |
| Lisaks arvutile võib ühenduse luua ka mõne mobiiliga ning mobiilirakendusega saata või kuvada infot kodulaborist. Samuti on võimalus kirjutada rakendus telefoni töötama koostöös kodulabori kontrolleriga. Android telefonile sobib näiteks "Bluetooth Terminal/Graphics" programm. | |
| | |
| ~CL~ | |
| <code c> | <code c> |
| #define F_CPU 32000000UL | // Kodulabori juhtmevaba BTBee mooduli näidisprogramm |
| #include <homelab/xmega/clksys_driver.h> | // LCD ekraanil kuvatakse välisest seadmest saadetud tekst |
| #include <homelab/pin.h> | #include <homelab/pin.h> |
| #include <homelab/usart.h> | #include <homelab/usart.h> |
| #include <homelab/module/lcd_gfx.h> | #include <homelab/module/lcd_gfx.h> |
| |
| | // Põhiprogramm |
| int main(void) | int main(void) |
| { | { |
| //Kodulabor III kella seadistamine | |
| Homelab_clock_init(); | |
| |
| // LCD seadistamine | // LCD seadistamine |
| lcd_gfx_init(); | lcd_gfx_init(); |
| |
| // USART liidese seadistamine | // USART liidese seadistamine |
| usart_init_async( 1, | usart_init_async(1, |
| USART_DATABITS_8, | USART_DATABITS_8, |
| USART_STOPBITS_ONE, | USART_STOPBITS_ONE, |
| USART_PARITY_NONE, | USART_PARITY_NONE, |
| USART_BAUDRATE_ASYNC(38400)); | USART_BAUDRATE_ASYNC(38400)); |
| while(1) | // Lõputu tsükkel |
| | while (1) |
| { | { |
| char info[30]; | char info[30]; |
| if(usart_has_data(1)) // Kontrolli, kas on infot tulnud | |
| | // Kas on infot tulnud? |
| | if (usart_has_data(1)) |
| { | { |
| usart_read_string(1,info,20); // Loe info sisse | // Sissetulnud info lugemine |
| lcd_gfx_write_string(info); // Kuva tekst LCD'le | usart_read_string(1,info,20); |
| | // Teksti kuvamine LCD-l |
| | lcd_gfx_write_string(info); |
| } | } |
| |
| if(button_read(S1)) // Kontrolli, kas on nupule vajutatud | // Kas nupule on vajutatud? |
| | if (button_read(S1)) |
| { | { |
| usart_send_string(1,"Bluetooth Message\r\n"); // Saada tekst | // Teksti saatmine |
| while(button_read(S1)); // Oota kuni nupp lahti lastakse | usart_send_string(1,"Bluetooth Message\r\n"); |
| | // Nupu vabastamise ootamine |
| | while(button_read(S1)); |
| } | } |
| } | } |
| } | } |
| </code> | </code> |