Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
et:examples:communication:bluetooth:eunistone [2012/10/22 10:25] – tekitatud rellermaaet:examples:communication:bluetooth:eunistone [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Bluetooth ====== ====== Bluetooth ======
  
-//Vajalikud teadmised: \\ +Vajalikud teadmised: \\ 
 [HW] [[et:hardware:homelab:controller]] \\  [HW] [[et:hardware:homelab:controller]] \\ 
 [AVR] [[et:avr:usart]] \\  [AVR] [[et:avr:usart]] \\ 
Line 7: Line 7:
 [LIB] [[et:software:homelab:library:module:lcd_graphic]] \\  [LIB] [[et:software:homelab:library:module:lcd_graphic]] \\ 
  
-===== Teooria =====+**BTBee Pro mooduli puhul vaata siia:** 
 +[[et/examples/communication/bluetooth/btbee|BTBee Pro moodul]] \\ 
 +**Bluetooth Bee mooduli puhul vaata siia:** 
 +[[et/examples/communication/bluetooth|Bluetooth Bee moodul]] 
 + \\ 
 + \\ 
 +**Täielik AT käskude nimekiri (en):** \\  
 +[[http://www.cooking-hacks.com/skin/frontend/default/cooking/pdf/Bluetooth_SPP_AT_SW_description.pdf|AT käsustik]]
  
-[{{  ::examples:communication:bt.jpg?220|BT moodul.}}]+ 
 + ===== Teooria ===== 
 + 
 +{{  ::examples:communication:bluetoothboard.png?220|BT moodul}}
  
 Bluetooth on tööstusstandard seadmete omavaheliseks traadita ühenduseks. Selle eesmärgiks on juhtmeühenduste asendamine mobiiltelefonide, arvutite jt. suhtlemisel perifeeriaseadmetega. Bluetooth on tööstusstandard seadmete omavaheliseks traadita ühenduseks. Selle eesmärgiks on juhtmeühenduste asendamine mobiiltelefonide, arvutite jt. suhtlemisel perifeeriaseadmetega.
  
-===== Praktika =====+ ===== Praktika =====
  
 Bluetooth Bee moodul sobib Kodulabori sidemooduli plaadile „XBee" pesasse. Analoogselt ZigBee mooduliga, toimub suhtlus ka Bluetooth Bee mooduliga kasutades kontrolleri USART liidest. Moodul läheb toite sisselülitamisel vaikimisi käsurežiimi. Bluetooth Bee moodul sobib Kodulabori sidemooduli plaadile „XBee" pesasse. Analoogselt ZigBee mooduliga, toimub suhtlus ka Bluetooth Bee mooduliga kasutades kontrolleri USART liidest. Moodul läheb toite sisselülitamisel vaikimisi käsurežiimi.
  
-Bluetoot Bee moodul loeb käsu õigeks, kui see on alustatud ja 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 (näiteks „+INQ=1“) ja veelkord ENTER. Vale käsu saatmisel vastab moodul „ERROR“, vastasel juhul „OK“. Kontrollerist moodulile käsu saatmisel on vajalik lisada siiski algusesse ja lõppu ka CR ja LF ehk käsk tuleb saata kujul „\r\n+INQ=1\r\n“ ja selleks koostatakse string esimese elemendiga ’\r\’ jne.+Bluetoot Bee 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“.
  
-Kui mooduli saab toite ja on jadaliidese pordi kaudu suhtlemiseks saadaval, siis vilgub roheline LED kiirelt kaks korda sekundisSelles vaikimisi olekus ei ole Bluetooth Bee arvutist leitavkui sealt ümberringi asuvaid Bluetooth seadmeid otsida.+Bloetooth mooduli arvutiga ühendamiseks on kõige lihtsam panna moodul //slave// olekusseSelleks tuleb moodul eelnevalt vastavalt seadistada saates Bluetooth moodulile järgmised AT käsud: 
 +^ Käsk ^ Seletus ^ 
 +| "AT+JSEC=3,1,1,06,123456\r\n" | Seadista turvaline ühendus 6 kohalise parooliga 123456 | 
 +| "AT+JDIS=3\r\n" | Seadista moodul leitavaks | 
 +| "AT+JRLS=1101,11,Serial Port,01,000000\r\n" | Käivita serial pordi teenus | 
 +| "AT+JAAC=1\r\n" | Aksepteeri automaatselt kõik ühendused | 
 +| "AT+JPCR=06,123456\r\n" | Loo turvaline ühendus teise seadmega |
  
-Bluetooth Bee moodulit saab ühendada arvutiga kahel viisilkas seadistada Bluetooth Bee alluvaks seadmeks ja alustada ühendust arvutist või seadistada see ülemaks seadmeks, detekteerida Bluetooth toega arvuti ja ühendada see endaga.+Kui ühendus on loodud, tuleks Bluetooth moodul panna "läbipaistvasse" olekusse kasutades AT käsku"AT+JSCR\r\n"
  
-Esmalt tuleb määrata mooduli pin-kood Bluetooth seadmete paarimiseks. See toimub käsuga „\r\n+STPIN=0000\r\n“kus 0000 on pin-koodina vaikimisi kasutusel. +Kui ühendus on loodud virtuaalse jadaliidese abilsiis on võimalik arvutist saata Hyper Terminali vmskaudu andmeid Bluetooth Bee vahendusel kontrollerile.
-Käsk „\r\n+STWMOD=0\r\n“ seab Bluetooth Bee mooduli alluvaks seadmeks. +
-„\r\n+INQ=1\r\n“ lubab moodulit leida teistest seadmetest (punane ja roheline LED hakkavad vaheldusmisi vilkuma). Arvutist on seade nüüd leitav, selle saab paarida ja luua ühenduse virtuaalse jadaliidese kaudu. Moodul küsib ühenduse loomisel arvutist ka pin-koodi. Aktiivse ühenduse olemasolul vilgub mooduli roheline LED kord kahe sekundi jooksul.+
  
-Teisel juhul viib „\r\n+STWMOD=1\r\n“ Bluetooth Bee ülema seadme režiimi+Järgnev kood näitab lühidalt, kuidas luua ühendus Kodulabori kontrolleri ning arvuti vahel
-„\r\n+INQ=1\r\n“ paneb mooduli teisi seadmeid otsima. +<code c> 
-Leitud Bluetooth seadmete või arvutite aadressid saadab moodul tagasi näiteks kujul „\r\n+RTINQ=0,11,67,AF,95,7E;LAPTOP\r\n“. +#define F_CPU 14745600
-Leitud aadresside abil saab luua ühenduse soovitud seadmega „\r\n+CONN=0,11,67,AF,95,7E\r\n“.+
  
-Kui ühendus on loodud virtuaalse jadaliidese abil, siis on võimalik arvutist saata Hyper Terminali vmskaudu andmeid Bluetooth Bee vahendusel kontrollerileÜhenduse katkestamiseks tuleb seda teha arvutist või tekitada kontrolleriga Bluetooth Bee PIO0 sisendisse tõusev front.+#include <homelab/pin.h> 
 +#include <homelab/delay.h> 
 +#include <homelab/module/lcd_gfx.h> 
 +#include <homelab/usart.h>
  
-Järgnev kood selgitab mooduli kasutamist analoogselt ZigBee näitele. Siin seatakse Bluetooth Bee ülemaks seadmeks (seda on vaja teha ainult esimesel korral, nagu ka pin-koodi, mooduli nime jm. seadete sisestustja luuakse selle abil ühendus mõne muu seadmega.+// 
 +// Select USART channel 
 +usart port = USART(1);
  
-<code c>+// 
 +// Initialize bluetooth module 
 +// 
 +uint8_t Bluetooth_Connect()  
 +
 + char dump; 
 + char str[10]; 
 + _delay_ms(500); 
 + lcd_gfx_clear(); 
 + // Software reset 
 + do 
 +
 + while(usart_has_data(port)) 
 + dump = usart_read_char(port); 
 + usart_send_string(port,"AT+JRES\r\n"); 
 + while(!usart_has_data(port)); 
 + usart_read_string(port,str,5); 
 + lcd_gfx_write_string(str); 
 + } while (strcmp(str,"ROK")); 
 +  
 + // set request password 123456 
 + while(usart_has_data(port)) 
 + dump = usart_read_char(port); 
 + usart_send_string(port,"AT+JSEC=3,1,1,06,123456\r\n"); 
 + while(!usart_has_data(port)); 
 + usart_read_string(port,str,4); 
 + lcd_gfx_write_string(str); 
 + if (strcmp(str,"OK") != 0) 
 + return 0; 
 +  
 + // Set to discoverable 
 + while(usart_has_data(port)) 
 + dump = usart_read_char(port); 
 + usart_send_string(port,"AT+JDIS=3\r\n"); 
 + while(!usart_has_data(port)); 
 + usart_read_string(port,str,4); 
 + lcd_gfx_write_string(str); 
 + if (strcmp(str,"OK") != 0) 
 + return 0; 
 +  
 + // Register local services 
 + while(usart_has_data(port)) 
 + dump = usart_read_char(port); 
 + usart_send_string(port,"AT+JRLS=1101,11,Serial Port,01,000000\r\n"); 
 + while(!usart_has_data(port)); 
 + usart_read_string(port,str,5); 
 + lcd_gfx_write_string(str); 
 + if (strcmp(str,"OK") != 0) 
 + return 0; 
 +  
 + // Auto accept all connection requests 
 + while(usart_has_data(port)) 
 + dump = usart_read_char(port); 
 + usart_send_string(port,"AT+JAAC=1\r\n"); 
 + while(!usart_has_data(port)); 
 + usart_read_string(port,str,5); 
 + lcd_gfx_write_string(str); 
 + if (strcmp(str,"OK") != 0) 
 + return 0; 
 +  
 + // Connect using password 123456 
 + while(usart_has_data(port)) 
 + dump = usart_read_char(port); 
 + usart_send_string(port,"AT+JPCR=06,123456\r\n"); 
 + while(!usart_has_data(port)); 
 + usart_read_string(port,str,5); 
 + lcd_gfx_write_string(str); 
 + if (strcmp(str,"OK") != 0) 
 + return 0; 
 +  
 + while( UCSR1A & (1<<RXC1) ) 
 + dump = UDR1;  
 +  
 + return 1; 
 +
 + 
 +// 
 +// Put bluetooth module in transparent mode 
 +// 
 +uint8_t Bluetooth_transparent()  
 +
 + char str[50]; 
 +  
 + do 
 +
 + usart_has_data(port); 
 + usart_read_string(port,str,50); 
 + }while(!strstr(str,"+RSLE"));  
 + usart_send_string(port,"AT+JSCR\r\n");  
 +}
  
 +//
 +// Main program
 +//
 +int main(void)
 +{
 + char text[15];
 + char dump;
 + char c;
 + int a = 0;
 + int connect = 0;
 +
 + // Initialize LCD
 + lcd_gfx_init();
 + lcd_gfx_clear();
 +
 + // Initialize USART
 + usart_init_async(port, USART_DATABITS_8,
 + USART_STOPBITS_ONE,
 + USART_PARITY_NONE,
 + USART_BAUDRATE_ASYNC(115200));
 +
 + lcd_gfx_write_string("Reset:");
 + //Connect to Bluetooth on PC
 + while(!Bluetooth_Connect());
 +
 + lcd_gfx_clear();
 + lcd_gfx_goto_char_xy(0,1);
 + lcd_gfx_write_string("Connect me...");
 +
 + //Wait for terminal connection from PC
 + Bluetooth_transparent();
 +
 + //Connection established, run rest of program.
 + lcd_gfx_clear();
 + lcd_gfx_goto_char_xy(0,0);
 + lcd_gfx_write_string("Connected");
 + lcd_gfx_goto_char_xy(0,1);
 + lcd_gfx_write_string("Terminal text is mirrored toterminal and  LCD; + sign   clears screen ");
 + while(1)
 + {
 + //Read USART data and mirror it to LCD and back to the terminal
 + while(!(UCSR1A & (1<<RXC1)));
 + dump = UDR1;
 + //If '+' character is sent, clear LCD screen
 + if(dump == '+')
 + lcd_gfx_clear();
 + else
 + {
 + lcd_gfx_write_char(dump);
 + usart_send_char(port,dump);
 + }
 + }
 +}
 </code> </code>
et/examples/communication/bluetooth/eunistone.1350901550.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0