Anda di halaman 1dari 4

Projeto Beacon automação da Luz da sala 701

O projeto começou no semestre passado, e a ideia é que ele continue neste semestre.
O projeto quer fazer a automação da tarefa de ligar a luz da sala 701 ao se aproximar com
o beacon, por isso então é proposto que um beacon seja instalado como chaveiro junto da chave
da sala.
A ideia é que o grupo descubra como o fazer para que haja uma comunicação automática
entre o bluetooth hm-10 e o beacon, na hora em que o hm-10 (que teremos que pré configurar)
descobrir o beacon que vai estar no chaveiro, como referencia para o projeto temos o que já
aconteceu no semestre passado, temos matériais já nesse link Grupo Internet das Coisas , é um
grupo no dropbox que tem alguns arquivos que foram utilizados no semestre passado, todos
podem editar colocando ou retirando arquivos de lá.

Possível passo a passo para que a gente consiga chegar até o fim da tarefa:

1 - Fazer com que o HM-10 possa receber comandos AT

>>>>> O grupo descobriu como fazer isso e o código está no Drop Box na pasta Projeto
Automação da Luz e o arquivo é:

IOTFA - MANDAR COMANDOS AT PARA O BLUETOOTH HM-10.txt

2 - Configurar módulo HM-10 no modo master, para que ele consiga descobrir o beacon.

>>>>> O grupo ja descobriu como fazer a configuração do módulo em modo master, esta tarefa
foi realizada através de um programa oficial do módulo que foi baixado em www.jnhuamao.cn, o
nome do programa é Huamao Config Assistant V1.02 está na pasta raíz do Drop Box do grupo
com o nome:

Programa para auxiliar configuração HM 10.exe

Ao abrir o programa as configurações foram setadas da forma que estão na imagem


abaixo:
Então foi apertado no botão Create AT Comands List e o programa gerou os seguintes
comandos que então foram digitados serial monitor da IDE do Arduino:

AT+RENEW

AT+IMME1

AT+SHOW1 (If you doesnt want to get slave device name, forget this command)

AT+COMP1

AT+NOTI1

AT+128B1

AT+IBE00000FFF0

AT+IBE100001000

AT+IBE280000080

AT+IBE35F9B34FB

AT+CHAR0x00FF

AT+ROLE1

Obs.: O texto que o programa gera a seguir abaixo deste é somente uma explicação de
quais comandos se deve fazer para descobrir outros módulos Bluetooth. As instruções são as
seguintes:

Now you can use those AT Commands to discovery or connect a slave device.

=========================================================================

AT+DISC? (Start a scan procedure)

OK+DISCS (Module response, Start scan procedure)

OK+DIS<P1><P2><P3> (Module response, Found device)

<P1>: Device Type

<P2>: Device MAC Address

<P3>: Device Name

OK+DISCE (Module response, Scan procedure finished)

AT+CO<P1><P2> (Try to connect a slave device)

<P1>: Device Type


<P2>: Device MAC address

No entanto este comando não serve para descobrir o beacon mas o seguinte comando
serve:

AT+DISI?

Que retorna a seguinte mensagem:

00000000:00000000000000000000000000000000:0000000000:DC17B0F91DA8:-043OK+DISCE

3 - Descobrir como calcular a distancia entre o beacon e o HM-10

>>>>> Parece estar relacionado com o que vem no fim da mensagem que é recebida de volta
quando se faz o comando AT+DISI?

-043

Este valor sempre varia a cada vez que se faz o comando, a principio parece que
guardando esse resultado dentro de uma string e manipulando esses resultado se pode obter
aquele valor e usa-lo para o calculo da automação e por consequência para a automação da
tarefa.

Usando este código abaixo podemos digitar o comando AT+DISI? e é possível receber
somente a parte que tem o valor final, exemplo relacionado ao valor de cima, o que seria recebido
seria somente o -43 cada vez que se fizesse o comando AT+DISI?

#include "SoftwareSerial.h"

SoftwareSerial bluetooth(2, 3); //TX, RX (Bluetooth)


String str;
char matriz2[20];
int x=0;
int y=0;

void setup() {
Serial.begin(9600);
Serial.println("Digite comandos AT:");
bluetooth.begin(9600);
Serial.write("AT+DISI?");
}

void loop() {

Serial.write("AT+DISI?");
delay(10);
//Checa o byte recebido no hardware Serial
if (Serial.available()) {
char r = Serial.read(); //Le e salva o byte
bluetooth.print(r); //Envia o byte para o bluetooth via software serial
Serial.print(r); //Imprime
}
//Checa o byte recebido do bluetooth por software serial
if (bluetooth.available()) {
char retorno = bluetooth.read(); //Le e salva o byte
x++;
if (x>82 & x<87){
matriz2[y]=retorno;
y++;
}
if (x==94){
str=matriz2;
Serial.print(str);
x=0;
y=0;
}
}
}

ALGORITMO PARA SCANEAR DE 2 EM 2 SEGUNDOS, ELE DETECTA A PRESENÇA DE


BEACONS → DEPOIS VERIFICAR O MAC DESTE BEACON → DEPOIS DETECTAR O SINAL
→ SE DETECTAR SINAL FORTE ENTÃO LIGAR O RELÉ, MESMO QUE SEJA DETECTADO
DE PRIMEIRA --EM CONSTRUÇÃO.

APÓS A DETECÇÃO DO SINAL, SE NÃO DETECTAR O SINAL POR 3 VEZES SEGUIDAS


ENTÃO O RELÉ DEVE SER APAGADO,

OBS.: AS VEZES O BEACON ESTÁ PRESENTE MAS MESMO ASSIM NÃO É DETECTADO
ENTÃO DEVE TER 3 NEGATIVAS PARA ENTÃO ASSIM DESLIGAR A LUZ DA SALA.

4 - Implementar o código que ativa o relé


Esta parte ja pode ser considerada final ja temos dentro da pasta do grupo um código de
exemplo que contém a linha de código que descreve como ativar um pino da placa do arduino
para ele receber energia, na pasta Códigos de testes, e depois em Liga e desliga led externo via
bluetooth:
Codigo-teste-led.ino
Este arquivo é a referencia para ativar um pino como HIGH da placa

5 - BEACON NA CHAVE
Nesta parte nós simplesmente colocamos o beacon no chaveiro.