Pulseira Babá
Guilherme Braga Brangioni
Julio Brandão Guimarães
Luiza Fernanda Germano de Oliveira
Matheus Borges Pereira
Nayara Thiandra Mendes Del Solano
Rayssa da Conceição Fernandes
Agosto de 2014
1
Introdução
Os projetos de automação das turmas de 2014 consistem na elaboração de algum projeto escolhido pelos alunos, sob a orientação do professor Ronaldo Trindade, para a conclusão do curso. A "Pulseira Babá"é uma alternativa de monitora-mento a distância de uma criança ou paciente que esteja a ultilizando, podendo assim saber a temperatura do usuário não estando em contato direto com o mesmo. Essa informação será enviada via rádio ou bluetooth como um email ou mensagem de texto para a mãe, enfermeira e etc. que tiver seu celular ou email cadastrado.
2
Descrição
O nosso projeto consiste na confecção de uma pulseira que tem a função de monitorar a temperatura do indivíduo que estiver utilizando-a e enviar para o celular ou email cadastrado. A figura 1 apresenta o mapa conceitual deste projeto.
Figura 1: Mapa Conceitual. F onte : Autor.
3
Objetivo
Tendo como objetivo principal, proposto pelo professor Ronaldo Trindade, a ela-boração e desenvolvimento de um projeto final da área de automação industrial à escolha dos alunos, pode-se então planejar o desenvolvimento da "Pulseira Babá"com o intuito de maior segurança e praticidade na verificação da tempe-ratura de quem a estiver utilizando .
Sensor de temperatura LM-35; Módulo Bluetooth HC 06; Protoboard;
Resistores;
Amplificador Operacional;
5
Desenvolvimento
Para se montar o circuito, utilizaram-se também fios, para fazer as devi-das ligações do Protoboard para o Arduino. Durante a montagem, houve um problema: o HC 06 não ligava e, por isso, os dados não seriam transmitidos. Então, verificou-se que as vias do Protoboard não estavam alimentando o mó-dulo Bluetooth, portanto, o problema foi resolvido apenas trocando alguns fios de posição. Posteriormente, será montada uma placa de metal que irá sobre o Arduino, que será a superfície que entrará em contato com o objeto que se deseja aferir a temperatura. Essa placa também “esconderá” todo o circuito, evitando que ele se danifique. À seguir algumas imagens da montagem do circuito do projeto: As figuras 3, 4 e 5 referem-se à montagem do circuito
Figura 3: Montagem do Circuito-Essa montagem representa a maneira de se ligar o módulo Bluetooth HC 06 à plataforma Arduino. F onte : Autor.
Figura 4: Montagem do Circuito-Essa montagem representa a maneira de se ligar o sensor de temperatura LM-35 à Plataforma Arduino.. F onte : Autor.
Figura 5: Montagem do Circuito Pronta. F onte : Autor.
Ultilizou-se o programa Eagle para projetar o shield para ser ultilizado no Arduino Uno, foi criado o Gerber, que serve para que a impressora realize a impressão da placa de acordo com o estabelecido anteriormente pelo projetista, em seguida esse projeto foi impresso em uma impressora prototipadora de cir-cuito impresso. Realizou-se então uma limpeza, envernização e soldagem dos componentes da placa. À seguir algumas imagens da montagem do circuito do projeto: A figura 6 e 7 refere-se ao cirtuito esquemático da placa.
Inicialmente, para a montagem do aplicativo desktop, utilizou-se o programa Elipse, mas posteriormente foi utilizado o construtor de interface Glade, devido a perca de alguns arquivos e melhor manuseio do programa, mas ambos foram utilizados com a mesma finalidade. Esse aplicativo desktop, basicamente fará conexão com o banco de dados construído. Através desse aplicativo que o usuá-rio da pulseira verá as temperaturas desejadas, medidas pela pulseira que estará em outra pessoa.Temos como exemplo, uma criança que a mãe deseja ter co-nhecimento sua temperatura à distância. Dentro desse aplicativo, podemos ver dois botões, um de conectar e outro de desconectar. Primeiro a pessoa que de-seja ver a temperatura, conectara o aplicativo e depois preencherá o usuário na qual deseja monitorar a temperatura. Assim, aparecerá em tela, a temperatura medida. Depois da informação recebida, basta a pessoa clicar em desconectar e sair para finalizar a operação. À seguir algumas imagens do aplicativo desktop do projeto: A figura 8 refere-se ao aplicativo desktop.
Para a realização do projeto "Pulseira Babá", teve-se como uma das tarefas o desenvolvimento da página web. Dessa maneira para a execução da mesma utilizou-se alguns software’s como o "Geany", para a elaboração do código do site, "Filezila", usado para armazenar o site em um local remoto, "Codgniter", para elaborar o site e o "Phpmyadmin"para fazer o banco de dados do site. Nessa página web pode-se encontrar o objetivos do projeto, nome e função de cada desenvolvedor, fotos do desenvolvimento do projeto e os benefícios desse projeto. No decorrer do desenvolvimento do projeto, ao desenvolver o site, a maior dificuldade encontrada foi fazer a comunicação do banco de dados com o site, mas com as orientações do orientador pode-se eliminar essa difilculdade. À seguir algumas imagens do site e banco de dados: As figuras 9, 10, 11 e 12 referem-se ao desenvolvimento do site do projeto.
Figura 9: Programa ultilizado para fazer o banco de dados- php My Admin. F onte : Autor.
Para o desenvolvimento do código fonte do Projeto "Pulseira Babá", foi ne-cessária a avaliação dos componentes para desenvolver um código compatível com eles. Primeiramente, como no projeto foi usado o Arduino UNO, o código foi desenvolvido na plataforma do Arduino, a Arduino IDE. Então, foi utilizada uma entrada analógica do Arduino como entradaTemperatura, para receber os dados adquiridos pelo sensor LM35, que envia o valor da temperatura corres-pondente em 100mV (1°C = 100mV), e também o led do próprio Arduino para indicar um alerta. Iniciando o código propriamente dito, foi definida a comu-nicação serial a 9600 bps. A temperatura foi lida 10 vezes e então se obteve a média aritmética dessas 10 temperaturas, para assim ter uma temperatura mais exata e com menos erros. Essa temperatura foi armazenada em uma variável e logo depois enviada para a entrada analógica entradaTemperatura. Quando o código executa o seguinte comando: ”temperatura = map (temperatura, 0, 1023, 0, 5000);” ele entrega a temperatura numericamente igual à tensão em volts. Mas, para diminuir possíveis distúrbios externos, foi projetado um ampli-ficador de ganho 10 para que fosse obtida a temperatura em volts, e não mais em miliVolts. Então, feitos os cálculos, o programa verifica se a temperatura é maior que 37°C (3,7V) e caso for, ele envia uma informação ao led, que começa a piscar de um em um segundo, indicando que a temperatura está alta.Uma das vantagens desse projeto com certeza é seu código fonte. É um código simples, de poucas linhas, que possui uma facilidade na sua manutenção e na sua alteração. Também, em uma visão geral, o código tem uma aparência agradável, então o programador não se assustará com tamanho nem complexidade do código, o que torna o projeto bem atrativo e agradável de operar. O código fonte citado anteriormente encontra-se no apêndice.
6
Resultados Obtidos
Após realizar os testes com a placa de circuito impresso, ultilizando o código fonte do projeto, obteve-se alguns erros, como por exemplo, no cálculo de medi-ção, pois o código fonte ultilizado foi projetado sem o uso de amplificador que estava incluso no circuito para a garantia de maior precisão da medição. Além disso com a realização dos testes obteve-se sucesso nos resultados de acordo com o esperado. Não foi realizada a conexão do aplicativo desktop com o banco de dados, o código fonte e com o site, por não ter tempo hábil para todos os testes até a entrega do projeto, não podendo dizer com precisão se pode obter sucesso nesse âmbito.
7
Conclusões
Durante o processo da execução da "Pulseira Babá", incluso na proposta dos "Projetos de Automação 2014"como conclusão do curso, foram encontradas al-gumas dificuldades e dúvidas, como em qualquer projeto. Dificuldades nas re-alizações de tarefas propostas, de comunicação entre o grupo, mas que com diálogo e orientação do professor essas dificuldades foram sanadas. Por ter sido pouco tempo para a realização do projeto foi criado apenas um protótipo do que seria a pulseira, não podendo ter um aprofundamento na projeção com me-lhorias e ideias adicionais as que tivemos no início do projeto. Com a realização do projeto aprofundamos nossos conhecimentos em algumas áreas e obteve-se aprendizado em outras desconhecidas até então, como o próprio "Write Latex", não ultilizado até então. Em um contexto geral obteve-se um bom aproveita-mento na realização desse projeto tendo em vista os objetivoas alcançados e o aprendizado adquirido, servindo de base para melhorias em projetos futuros que possam ser executados.
Referências
[1] http://www.inf.ufpr.br/instrutores/arquivos/latex/latex.pdf - PDF con-tendo instruções para o uso do LaTeX,
[2] http://www.ufpa.br/dicas/htm/htm-cor2.htm - Tabela de cores ,
[3] http://www.tecmundo.com.br/fitbit-flex/59443-analise-pulseira-inteligente-fitbit-flex.htm - Site de onde foi retirada a imagem da pulseira,
[4] PHPMyAdmin - Ultilizado para fazer o banco de dados , [5] Eclipse- Ultilizado para fazer o aplicativo desktop,
8
Apêndices
Editor de fotos Gimp,
8.1
software 1
Código fonte do software do Arduino.
// Montar amplificador com ganho 10 para o LM35 const int entradaTemperatura = A0;
int ledPin = 13;
float temperatura = 0;
void setup() {
// initialize serial communications at 9600 bps: Serial.begin(9600);
pinMode(ledPin,OUTPUT); }
void loop() { temperatura = 0;
for (int i = 0; i<10; i++){
temperatura += analogRead(entradaTemperatura); delay (10);
}
temperatura = temperatura/10;
temperatura = map(temperatura, 0, 1023, 0, 5000);
//Sensor entrega temperatura numericamente igual à tensão em volts temperatura = temperatura/10; Serial.print("T:" ); Serial.print(temperatura); delay(500); if (temperatura >= 37){ digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin,LOW); delay(1000); } }
8.2
software 2
Código fonte do Aplicativo Desktop #! /usr/bin/env python
-*-import time
from threading import Thread
import sys import MySQLdb
from gi.repository import Gtk
porta = ’/dev/ttyACM0’ baud_rate = 9600 Obj_porta = None THRD = None
conSql = MySQLdb.connect(’localhost’, ’aluno’, ’aluno’) # (servidor, usuario, senha) conSql.select_db(’teste’) # seleciona o banco de dados na conexao
curSql = conSql.cursor() # cria o cursor para o BD
’’’
cursor.execute(’ALGUM SQL’) # faz alguma query sql
# aqui você pode usar três maneira para pegar o resultado: rs = cursor.fetchone() # pega uma linha;
rs = cursor.fetchall() # pega todas as linhas;
rs = cursor.dictfetchall() # pega todas as linhas, cada linha tem um dicionário com os nomes dos campos print(rs[0]) # imprime o valor da primeira coluna
’’’
class IGraf(object):
def __init__(self):
builder = Gtk.Builder() #Criamos uma instancia da classe builder do Gtk builder.add_from_file("IGraf.glade") #Carregamos o arquivo do Glade
#Obtemos o widget window1 (nossa janela principal) self.window = builder.get_object("window1")
"on_bt_desconectar_clicked" : self.on_bt_desconectar_clicked, "on_bt_enviar_clicked" : self.on_bt_enviar_clicked,
"on_bt_sair_clicked" : self.on_bt_sair_clicked })
self.verifica_portas()
def on_bt_sair_clicked(self, widget): self.on_bt_desconectar_clicked(self) Gtk.main_quit()
def on_bt_conectar_clicked(self, widget): #print "Conectar" global Obj_porta porta = self.cb_portas.get_active_text() txt = self.txt_recebido.get_buffer() if porta <> None: txt.insert_at_cursor("Conectado!\n")
Obj_porta = serial.Serial(porta, baud_rate) global THRD
THRD = Thread(target=self.thrd_loop) THRD.morta=False
THRD.start() else:
txt.insert_at_cursor("Selecione uma porta!\n")
def on_bt_desconectar_clicked(self, widget): txt = self.txt_recebido.get_buffer()
txt.insert_at_cursor("Desconectado!\n") if THRD != None:
THRD.morta = True
def on_bt_enviar_clicked(self, widget): lin = self.txt_enviar.get_text() txt = self.txt_recebido.get_buffer() if txt.get_line_count() > 15: txt.delete(txt.get_iter_at_line(0),txt.get_iter_at_line(1)) txt.insert_at_cursor("Enviado: ") txt.insert_at_cursor(lin) txt.insert_at_cursor(’\n’) Obj_porta.write(lin) def verifica_portas(self): self.cb_portas.remove_all()
portas = commands.getoutput("ls /dev/ttyACM*") # lista portas do arqduino portas_ativas = portas.split()
txt = self.txt_recebido.get_buffer() txt.insert_at_cursor(valor)
if txt.get_line_count() > 15:
txt.delete(txt.get_iter_at_line(0),txt.get_iter_at_line(1)) self.grava_bd(valor)
def thrd_loop(self): # funcao a ser executada pela thread while not THRD.morta:
self.le_porta() time.sleep(0.5)
def grava_bd(self,linha):
linha = linha[:-2] # para remover \r\n do final da linha qry = "Insert into teste (id,nome,linha) values (0,’python’,’" qry += "".join(linha) qry += "’)" # print qry curSql.execute(qry) conSql.commit() if __name__ == "__main__": app = IGraf() Gtk.main()