Table of Contents

Bluetooth

Vajalikud teadmised:
[HW] Kontrollermoodul
[AVR] USART
[LIB] Jadaliides,
[LIB] Graafiline LCD

BTBee Pro mooduli puhul vaata siia: BTBee Pro moodul
Bluetooth Bee mooduli puhul vaata siia: Bluetooth Bee moodul

Täielik AT käskude nimekiri (en):
AT käsustik

Teooria

BT moodul

Bluetooth on tööstusstandard seadmete omavaheliseks traadita ühenduseks. Selle eesmärgiks on juhtmeühenduste asendamine mobiiltelefonide, arvutite jt. suhtlemisel perifeeriaseadmetega.

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.

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“.

Bloetooth mooduli arvutiga ühendamiseks on kõige lihtsam panna moodul slave olekusse. Selleks 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

Kui ühendus on loodud, tuleks Bluetooth moodul panna “läbipaistvasse” olekusse kasutades AT käsku: “AT+JSCR\r\n”

Kui ühendus on loodud virtuaalse jadaliidese abil, siis on võimalik arvutist saata Hyper Terminali vms. kaudu andmeid Bluetooth Bee vahendusel kontrollerile.

Järgnev kood näitab lühidalt, kuidas luua ühendus Kodulabori kontrolleri ning arvuti vahel.

#define F_CPU 14745600
 
#include <homelab/pin.h>
#include <homelab/delay.h>
#include <homelab/module/lcd_gfx.h>
#include <homelab/usart.h>
 
//
// Select USART channel
usart port = USART(1);
 
//
// 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);
		}		
	}
}
et/examples/communication/bluetooth/eunistone.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
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