Comunicação Bluetooth Usando Intel Galileo

On 18 de agosto de 2016 by Carlos Mion

Neste post iremos mostrar como usar o Bluetooth em dispositivos embarcados. O desenvolvimento usará uma placa Intel Galileo Gen2, o módulo de comunicaçao bluetooth HC-06 e a IDE Intel System Studio IOT Edition. Esta é a parte 2 de um tutorial já postado no blog, que ensina como fazer esta comunicação, do ponto de vista do Android

Configuração do Ambiente para usar o Bluetooth

Para começar, caso você ainda não tenha um ambiente Intel System Studio preparado em sua máquina, basta seguir este tutorial aqui do blog.

Criação do projeto

Para criar um novo projeto, vá em “File” e depois em “New Intel Iot Project”, em seguida escolha a linguagem em que se deseja desenvolver.

Escolha da linguagem

Escolha da linguagem

Clique em Next e em seguida escolha se deseja começar um projeto em branco ou se deseja utilizar um dos modelos disponibilizados, para este tutorial, escolha um projeto em branco – a segunda opção -.

Ao fazer o tutorial citado anteriormente, você deve ter configurado uma placa para desenvolvimento, escolha esta mesma placa novamente:

Escolha da placa

Escolha da placa

Será solicitador agora o login e o password da Galileo.

Login na Galileo

Login na Galileo

Logo após, caso o seguinte Dialog Box apareça :

Dialog box

Dialog box

Basta clicar em Yes na próxima tela para adicionar a chave RSA e possibilitar a conexão.

Projeto recém criado:

Projeto recem criado

Projeto recem criado

Circuito

Agora que o projeto está criado e a placa configurada, basta fazer a conexão física em uma breadboard da forma como mostrada nas fotos:

Circuito

Circuito

Circuito

Circuito

Circuito

Circuito

App Android

Para Estabelecer a conexão e a comunicação, você pode usar um app Android, chamado Bluetooth Terminal, que pode ser baixado na PlayStore, basta clicar neste link.

Código fonte

Classe Bluetooth

Estes códigos em c++ devem ser adicionados ao seu projeto e executados na Galileo através do Intel System Studio

.H

#include "mraa.hpp"
#include <string>
#include <fstream>
#ifndef BLUETOOTHMODULE_H_
#define BLUETOOTHMODULE_H_

class BluetoothModule : public mraa::Uart{
	int styleOfConection;
public: 
	BluetoothModule(int style); // aqui o construtor da classe
	virtual ~BluetoothModule(); // destrutor da classe
	void sendString(std::string str); // envia dados
	char readChar(); // le dados
};

#endif /* BLUETOOTHMODULE_H_ */

.CPP

#include "BluetoothModule.h"
#include "mraa.hpp"
#include <string>
#include<iostream>
#include <fstream>

BluetoothModule::BluetoothModule(int style):  mraa::Uart(style){ // construtor
	this->styleOfConection=style;

}

BluetoothModule::~BluetoothModule() { // destrutor
	delete this;
}
void BluetoothModule::sendString(std::string str){ // método que envia mensagens
    std::string s= "echo "+str+" >/dev/ttyS0";
    this->flush();
	system(s.c_str());
	this->flush();
}
char BluetoothModule::readChar(){ // método que recebe mensagens
	std::string c;
	if(this->dataAvailable()){
		c=this->readStr(1);
		return (c.c_str())[0];
	}else{
		return ' ';
	}
}

Serão apresentados aqui as funções e métodos que podem ser utilizados, pois dessa forma, você pode inserí-los no seu código da maneira como preferir.

Para adicionar as classes ao seu código principal, basta inserir :

 
#include "BluetoothModule.h" 

Para instanciar um novo objeto Bluetooth, basta inserir:
BluetoothModule *hc06 = new BluetoothModule(0); // este parâmetro 0 é para indicar que os pinos 0 e 1 da Intel Galileo Gen2 serão utilizados.

msg = hc06->readStr(num); // num é quantos caracteres você deseja receber - Geralmente em comunicações do tipo, nao desejamos receber frases ou textos, apenas um número de indicação, ou algo do tipo, por isso esta função foi construída assim. -

Para conferir se há alguma mensagem à ser tratada – Se não, quer dizer que o módulo esta pronto para receber novos dados. –

hc06->dataAvailable() // retorna True ou False

Para enviar:

hc06->sendString(codeToSend); // codeToSend é a String que você determinar

Funcionamento

Codigo exemplo

#include <iostream>
#include <BluetoothModule.h>
using namespace std;

int main() {
  BluetoothModule *hc06 = new BluetoothModule(0);
  hc06->sendString("Tutorial"); // envia a String para o celular
  String msg = hc06->readStr(15); // recebe a String enviada pelo celular
  cout<< msg; // printa no terminal que foi aberto ao executar o código
  return 0;
} 

Execução

Ao conectar o módulo bluetooth no celular utilizando o app ja citado acima, utilizando este código exemplo, sera enviada uma mensagem escrito “Tutorial” e receberá o que for escrito no app. Como mostrado nas fotos a seguir:

Terminal mostrando a comunicação

Terminal mostrando a comunicação

App Bluetooth terminal

App Bluetooth terminal

Obs: neste app, vermelho é o que o celular enviou e azul o que ele recebeu da galileo

Duvidas? Entre em contato comigo no E-mail: moc.liamtohnull@32noimsolrac

Summary
Review Date
Reviewed Item
Intel Galileo Bluetooth
Author Rating
51star1star1star1star1star

One Response to “Comunicação Bluetooth Usando Intel Galileo”

  • Olá estou tentando rodar esse mesmo codigo na minha galileo gen 2, mas ao executar me vem a seguinte msg de erro: Invalid preprocessor directive: #include
    Na classe BluetoothModule.h

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *