Escolar Documentos
Profissional Documentos
Cultura Documentos
MINISTÉRIO DA EDUCAÇÃO
INSTITUTO DE TELECOMUNICAÇÕES
Luanda
OUTUBRO 2019
I
EDSON SEBASTIÃO MANUEL ANTÓNIO, 11599
Orientador:
___________________________
Luanda
OUTUBRO 2019
II
FOLHA DE APROVAÇÃO
Presidente do Júri:
__________________________________________________________
1ºPresidente. Vogal:
__________________________________________________________
2ºPresidente. Vogal:
__________________________________________________________
III
Agradecimentos
IV
Resumo
O sistema de gestão de gás de cozinha consiste na implementação de um sistema que
permite ao utilizador saber com exactidão o nível de gás na sua botija e ser alertado em casos
de vazamento de gás, desta forma, o utilizador tem a possibilidade de fazer uma melhor gestão
do seu gás de cozinha.
O sistema faz a leitura do estado da botija e o apresenta numa tela em percentagem, detecta
vazamento de gás e alerta o utilizador sobre o mesmo, determina se o nível de gás é baixo e
alerta o utilizador sobre o previsto término de gás.
V
Lista de Abreviaturas e Siglas
VI
Índice de Figuras e tabelas
VII
Sumário
1. Introdução ................................................................................................................................. 1
2. Definições e conceitos............................................................................................................... 3
6. Anexos ....................................................................................................................................... 1
VIII
1. Introdução
O SGGC é apresentado como uma forma de gerência e protecção que visam o bem-estar e
a segurança das pessoas. Com conhecimentos em Matemática, Electrónica, Programação, entre
outras disciplinas, foi possível criar um sistema que permite ao utilizador fazer a gestão do seu
gás de cozinha.
Este projecto tem um funcionamento simples que é detalhado neste relatório, permitindo o
leitor ter conhecimento pleno do projecto desde o seu estado físico, de todos os materiais que
foram utilizados até a razão da sua utilização no sistema.
1.1.Problemática
Desde a implementação das botijas de gás dentro de casas para a confecção de alimentos
nunca houve um método preciso para o utilizador examinar a quantidade de gás no seu
vasilhame. A falta de informação precisa sobre o nível de gás na botija resultou muitas vezes
em término inesperado do gás durante a confecção dos alimentos, e muitas vezes esse término
ocorrem em horas tardias e impossíveis de aplicar qualquer solução, como as madrugadas,
causando assim um constrangimento. Constrangimento este, por não se ter a mínima ideia de
que o gás terminaria naquele preciso momento.
1.2.Justificativa
De um modo geral, o objectivo do SGGC é administrar o gás afim de que se prolongue seu
tempo útil e diminuir o índice de acidentes causados por vazamento de gás.
Especificamente:
2
2. Definições e conceitos
Células de carga (Strain gauge): É um sensor que é colocado na superfície de uma peça,
geralmente utilizadas em balanças, é responsável por medir a deformação diante da aplicação
de um carregamento. Essa técnica é muito utilizada para a verificação dos níveis de tensão
actuante diante da condição de operação de um equipamento ou máquina.
Módulo HX711: Este módulo é um conversor analógico digital de 24 bits que também
funciona como um amplificador. Como amplificador, é utilizado para amplificar o sinal de
dispositivos como as células de carga, fazendo a interligação entre essas células e o micro-
controlador.
O módulo também possui uma saída analógica (A0), que permite medir a variação na
concentração dos gases no ar com mais precisão. Para usar a saída analógica é preciso um
conversor A/D, como o que o próprio arduino disponibiliza em seus canais analógicos.
3
energia e através dela emite uma frequência sonora. Buzzer está presente em diversos tipos de
aparelhos, como despertador, Carros e até em computadores, que quando ligado emite um
Beep informando que a memória foi reconhecida.
O buzzer do tipo activo, o que nós utilizamos, contém um circuito oscilador embutido,
assim, basta alimentar o componente para que o mesmo comece a emitir um beep contínuo.
Este é um componente indicado para adicionar efeitos sonoros em projectos electrónicos
como alarmes, sistemas de sinalização, jogos, brinquedos, etc.
Arduino: É uma plataforma open source; seu projecto foi criado na Itália em 2005, possui
um hardware e software de fácil utilização, onde sua programação é feita por entradas e saídas,
e componentes externos chamados de Shields conectados a placa que criam extensões
possibilitando diversas aplicações desde a movimentação de um motor servo utilizado na
robótica até os sensores de temperatura, sua conexão é feita pela porta USB que permiti interagir
com o computador.
4
3. Estudo de caso
3.1.Diagrama de blocos
3.2.Funcionamento do diagrama
A balança é responsável por recolher e enviar dados da balança digital para o arduino. Esses
dados, por sua vez, são sinais eléctricos obtidos a partir de 4 células de carga associadas entre
si. As células de carga actuam fazendo a conversão da energia mecânica para energia eléctrica,
ou seja, transformam Kg em Volts e isso permite que o processador compare esses dados para
ter uma visão do nível de gás na botija para posteriormente apresentá-la em percentagem ao
utilizador. Está acção ocorre da seguinte forma:
Existe uma botija de gás sobre uma balança digital, esta balança, apresenta um determinado
valor de peso (em kg). Durante o tempo que o gás é consumido, o peso da botija diminui
gradualmente (Consequência do fluido de gás) e cada variação de peso que ocorre na balança,
um sinal eléctrico é enviado para o arduino para serem processados e posteriormente
apresentados ao utilizador.
Nota-se que, a cada variação de peso na balança varia também a intensidade do sinal
eléctrico gerado pelas células de carga, portanto, quanto maior o peso da botija maior é a
5
intensidade do sinal eléctrico gerado pelas células de carga, do mesmo modo, quanto menor o
peso da botija menor é a intensidade do sinal.
É importante realçar a necessidade de conhecer o peso da botija porque é a partir dele que
se determina o nível de gás na botija.
O sensor tem a função de detectar a existência de algum vazamento de gás. Para a detecção
de gás é usado um sensor MQ-2 que ao detectar a presença ou a concentração do mesmo envia
sinais eléctricos ao processador que é o responsável por encaminhar esses sinais para alerta.
A primeira tarefa do referente bloco é determinar o actual nível de gás na botija. Tendo em
conta que é a partir do peso que se determina o nível de gás na botija, é necessário o processador
conhecer com antecedência as seguintes informações de peso de uma botija:
Depois de conhecer esses dados (informações de peso de uma botija), estes são gravados na
memória do processador, quando a botija é posta sobre a Balança esta envia sinais eléctricos ao
processador, que ao receber estes sinais faz a conversão dos mesmo e os compara com dados
gravados na sua memória. A partir disso, determina o actual nível de gás na botija e envia esta
informação para o bloco de visualização que apresenta estes dados ao utilizador.
A segunda tarefa do mesmo bloco, é enviar dados ao bloco de alerta quando existirem dois
tipos de ocorrência:
6
mensagem, o bloco de alerta é responsável por informar ao utilizador sobre a actual
ocorrência.
A primeira ocorrência é a alerta sobre o término ou nível baixo de gás. Quando o nível
de gás está abaixo de uma faixa predefinida no sistema, por exemplo 15%, uma
mensagem é enviada ao utente informando o actual estado da sua botija, o mesmo
acontoce quando o gás termina. Para notificar o utilizador, é necessário um módulo
GSM que é responsável por enviar uma mensagem de texto ao utilizador.
A segunda ocorrência é a alerta de vazamento de gás. Em caso de vazamento de gás,
uma mensagem é enviada ao utente informando-o sobre o corrente acontecimento para
que o mesmo possa intervir. Existem também três LED’S de sinalização que indicam a
existência ou não de vazamento de gás.
Quando as células de carga entram em operação, ou seja, quando um peso (botija) é aplicado
sobre elas, estas enviam a partir dos fios “Brancos” (figura 3.3) uma tensão de saída ao
amplificador.
Cada célula de carga tem a capacidade de medir até 50kg, para maior eficiência as 4 células
de carga estão ligadas entre si afim de somar as tensões de saída. É importante ressaltar que a
tensão de saída é tão baixa que é necessário utilizar um amplificador de sinal para a
comunicação com o arduino.
Como as células de carga instaladas na balança não oferecem dados com grande precisão é
necessário o uso do módulo HX711. Este módulo recebe os sinais vindo das células de carga e
amplifica-os. Na figura 3.4 é apresentado o módulo HX711 e os seus pinos.
Para amplificar os sinais desejados as células de carga são ligadas nos pinos E+ e E- para
alimentação, e nos pinos A+ e A- são ligados as saídas das células de carga. Depois de
amplificado o sinal tem sua saída pelo pino DT, que é ligado na porta analógica do arduino
8
“A1”, e no pino SKC ligado na porta analógica do arduino“A0” dá-se a entrada dos pulsos de
clock que sincroniza o módulo HX711 ao arduino.
O módulo HX711 é como uma bóia salva vidas para este projecto. A princípio as células de
carga eram ligadas directamente às portas analógicas do arduino, devido a fraca tensão de saída
nas células de carga não obtinha-se nenhuma valor nas portas do arduino. Usando o módulo
HX711 permitiu-nos além de amplificar, converter em digitais os sinais das células de carga. O
HX711 possui uma precisão de dados, de até 24 bits, já a leitura analógica do Arduino é de 10
bits, deste modo, pode dividir-se a precisão de carga por apenas 1024 valores (0 à 1023). Em
1Kg isso é bastante, mas em 50Kg a precisão cai e essa curva deve ser considerada.
Este componente é usado para alertar o arduino quando é detectado a presença de GLP. A
partir do pino OUT é enviado um sinal de alerta ao arduino na porta analógica “A2” como
apresentado na figura 3.5.
No pino Vcc o sensor MQ-2 é alimentado com uma tensão de 5V e aterrado no pino GND.
3.3.4. Arduino
É utilizado para receber, processar ou enviar informações e reagir de diferentes formas com
cada um dos componente de acordo a programação. Os componentes estão ligados nas portas
do arduino (figura 3.6) onde foram configuradas como entradas e saídas.
9
Nos pinos 5V e GND são alimentados todos os componentes do circuito excepto o GSM.
Nas portas analógicas “A0” e “A1” do arduino são ligados os pinos SCK e DT definidos
como saída e entrada, respectivamente.
Na porta “A0” o arduino envia pulsos de clock para o pino SCK do HX711 para
sincronização entre os dois.
Na porta “A1” o arduino recebe a tensão de saída do HX711 e converte em sinal digital. O
arduino está programado para comparar o valor de entrada da porta “A1” com um determinado
valor no código e posteriormente fazer cálculos que determinam em percentagem o nível de gás
na botija.
Na porta analógica “A2” definido como entrada é ligado o pino OUT do sensor MQ-2, este
envia informações de estado do sensor, e quando o sensor detecta a presença de GLP, libera um
sinal acima do limite registado no arduino, fazendo com que o arduino alerte o utilizador.
Nas portas digitais “4”, “5”, “6” e “7” estão ligados respectivamente os pinos de
configuração do LCD “RS”, “R/W”, “E” e “RST”. Estes pinos permitem que o arduino escreva
no LCD a informação do nível de gás na botija .
No pino digital “2” definido como saída, é ligado um Buzzer que recebe do arduino nível
lógico alto sempre que o arduino determina que existe vazamento de gás.
Nos pinos digitais “8” e “9” estão ligados respectivamente os pinos “TX” e “RX” do
GSM que permitem a comunicação serial entre o arduino e o GSM. O arduino é programado
para comunicar-se com GSM sempre que determina que o nível de gás é baixo, ou seja, a
partir da porta “8” o arduino envia uma informação ao GSM que repassa para o utilizador.
3.3.5. Buzzer
É utilizado como alarme de vazamento de gás para o utilizador. Ligado na porta digital “2”
(figura 3.7), este é accionado por um nível lógico alto recebido do arduino sempre que haver
uma concentração de GLP no sensor MQ-2.
É utilizado para parar o alarme de vazamento de gás accionado pelo buzzer. É ligado em
serie com uma resistência que é ligada na porta digital “3” do arduino e o segundo pino é
ligado ao GND Figura(3.8).
Este componente (figura3.9) serve para exibir ao utilizador a informação do nível de gás
determinado pelo arduino.
Nos pinos Vcc e GND alimentam-se o Display e no pino “Vo” é ligado a um potenciómetro
para o ajuste de contraste.
Os pinos “RS”, “R/W” e “E”, são os pinos de controle ligados respectivamente nas portas
digitais “4”, “5” e “6” do arduino. A partir destas portas o arduino envia níveis lógicos altos
ou baixos que capacitam escrever no Display a informação do nível de gás.
O pino RESET ligado na porta digital “7”, é pino que serve para reiniciar o display. Este
recebe um nível lógico baixo do arduino sempre que for necessário reiniciar o display.
Com o Display gráfico LCD 128x64 além de obter-se a simples apresentação dos número
em percentagem indicando o nível de gás, espera-se obter também efeitos gráficos como
desenhar uma botija de gás, rotação de tela, transições de tela, etc.
11
3.3.8. LED’S
São utilizados para sinalização quando é ou não detectado vazamento de gás. Existem três
Leds (figura 3.9) de sinalização diferenciados por cores: verde, amarelo e vermelho.
O Led verde indica a pureza do ar, ou seja, que não existe presença de GLP. O Led
Vermelho indica a presença de GLP e é accionado sempre que existe algum vazamento. O
Led laranja serve para indicar a quantidade de gás detectada, para tal, o Led pisca em
frequências diferentes consoante a quantidade de gás detectada.
Os LED’S verde, laranja e vermelho estão ligados respectivamente nas portas digitais do
arduino “10”, “11” e “12”, e são aterrados no GND do arduino.
3.3.9. Módulo GSM
É componente que alerta o utilizador sempre que ocorre um vazamento de gás e sempre que
o gás na botija termina ou atinge um nível considerado baixo.
Para que o GSM alerte o utilizador são conectado nas portas digitais “8” e “9” do arduino,
respectivamente os pinos “TX” e “RX” que são responsáveis pela comunicação serial com o
arduino. Desta forma, sempre que o arduino determina que o nível de gás é baixo, envia uma
mensagem programada a partir dos pinos serias “TX” e “RX” que encaminham essa informação
ao número de telefone do utilizador.
O módulo GSM requer uma tensão de alimentação de 5V e uma corrente de 2A. A princípio
era alimentado com menos de 2A, o que fazia com que o dispositivo não iniciasse, apresentando
assim, um resultado inesperado. Foi necessário utilizar uma fonte externa para alimentá-lo,
funcionando assim de forma correta.
12
4. Conclusões
Com os dados obtidos da medição da botija e com os cálculos feitos, foi possível
alcançar o segundo objectivo que é a implementação de uma tela de visualização para
informar ao utilizador o nível de gás em percentagem.
O terceiro objectivo também foi alcançado com sucesso apesar das dificuldades que
tivemos ao lidar com o GSM que tem a responsabilidade de alertar ao utilizador sempre que o
nível de gás é baixo ou igual a zero.
O quarto e último objectivo foi atingido com sucesso, onde constou a implementação de
um sistema de alerta contra vazamento de gás que tem como objectivo detectar e informar ao
utilizador sempre que existir algum vazamento de gás.
4.1.Vantagens e desvantagens
Vantagem B: A nível social a implementação deste projecto pode atingir todas as casas que
utilizem botijas de gás para a confecção dos alimentos, actuando como um suporte de gestão
de gás e de segurança nas cozinhas domésticas.
Desvantagem: O sensor MQ-2 além de detectar GLP e fumaça, indica também a presença
de Propano, Metano, Hidrogénio e outros tipos de gases. Esta característica do sensor pode
resultar em alarmes falsos durante o funcionamento do circuito, pois, o ideal é detectar apenas
a presença de GLP.
4.2.Caderno de encargo
13
Tabela 4.1 preço dos materiais
1 Arduino 7 200
1 HX711 5 500
1 Buzzer 650
1 Potenciómetro 455
1 Maquete 1 500
1 Botão de pressão 65
Total 48.595
14
5. Referências bibliográficas
[2] Aprendendo aduino uma abordagem prática, Cláudio Luís Vieira Oliveira, Humberto
Augusto Piovesana Zanetti, Cristina Becker Matos Nabarro e Júlio Alberto Vansan
Gonçalves.
[5] Display Gráfico 128x64 com Arduino disponível no Portal Vida de Silício:
<https://www.vidadesilicio.com.br>
[7] Primeiros passos com o SIM800L enviando SMS • Do bit Ao Byte, disponível em:
<https://www.dobitaobyte.com.br>
[8] Balança com celula de carga, HX711 e uma MCU • Do bit Ao Byte, disponível em:
<https://www.dobitaobyte.com.br>
[9] Balança com célula de carga, módulo conversor HX711 e arduino – Hobby Hacker
[11] Detector de Gás - Sensor de Gás MQ-5 - GLP (Gás de Cozinha) e Gás Natural –
Usinainfo, disponível em: <https://www.usinainfo.com.br>
[12] Tipos de gás _ GLP ou GN - Qual o mais adequado para meu uso_ - Aquecenorte,
disponível em: <https://aquecenorte.com.br › blog › tipos-de-gas>
[13] Você sabe o que é gás GLP_ _ Ultradicas, disponível em: <https://www.ultragaz.com.br
› residencial › ultradicas ›>
15
6. Anexos
1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0x3f,
0x00, 0x00, 0x00, 0x00, 0xfe, 0x8f, 0xf9, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
0xff, 0x0f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x86,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0xde, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x8f, 0xef, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xf7, 0x3f, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0xce, 0xdf, 0x3f,
0x00, 0x00, 0x00, 0xfe, 0x0f, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
0x00, 0x80, 0xbf, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7f, 0xee, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f,
0x01, 0x00, 0x00, 0x00, 0x0f, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x86, 0xff, 0xff, 0xff, 0x3f,
0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00,
0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x06,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x86, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00,
0xfc, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x8e, 0xff, 0x3f,
0x00, 0x00, 0x00, 0xfe, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
0x00, 0xfe, 0xff, 0x05, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f,
0x1f, 0x00, 0x00, 0x00, 0x07, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x86, 0xff, 0xff, 0xff, 0x3f,
0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfe, 0x03, 0xfc, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x8e, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00,
0xfe, 0x8f, 0xfd, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xbf, 0x07,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x87, 0x74, 0x3f,
2
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, void draw() //Função
0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, de desenho da tela 1{
0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x8f, 0xff, 0x3f, 0x00, 0x00, u8g_prepare();
u8g_Tela1(); }
0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, void u8g_Tela2()
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, //Tela 1 "O nível da
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, botija"{
u8g.setFont(u8g_font_
0xfe, 0xbf, 0x8f, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, unifont);
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 };
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, u8g.drawStr( 1, 14,
0x00, 0x00, 0x00, 0x00, /****************** "Estado da botija: ");
****Criação das u8g.setFont(u8g_font_
0x00, 0x00, 0x00, 0xfe, 0xff, 0xe7, 0xff, funções unifont);
0x00, 0xfe, 0xff, 0x8f, 0xf8, 0xff, 0xff, 0x3f, secundárias********* u8g.setPrintPos(54,
0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, ******************/ 40); u8g.print(
0x3f, 0x00, Valor_Percentual );
void bitmap();
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //função para gerar o u8g.drawStr( 78, 40,
0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0xff, bitmap "%" );
0x00, 0x00, 0xfc, 0xff, 0x3f, 0xff, 0xff, 0xff,
0x8f, 0xff, 0x3f, void bitmap() // Função } void draw1() //
Bitmap{ Função de desenho da
0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, tela 2
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, u8g.drawXBMP( 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x9f, 128, 64, img_bitmap); { u8g_prepare();
0x00, 0x00, 0xff, 0xff,
} //end bitmap u8g_Tela2(); }
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
void u8g_prepare() // void u8g_Tela3()
0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
Define a fonte, a cor e //Tela 3{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
o background do LCD{ u8g.setFont(u8g_font_
0x00, 0x00, 0x00,
u8g.setFont(u8g_font_ unifont);
0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 6x10); u8g.drawStr( 30, 14,
0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, u8g.setFontRefHeightE "Bem-Vindo");
0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, xtendedText();
u8g.setDefaultForegrou u8g.drawStr( 55, 35,
0x0f, 0x00,
ndColor(); "ao"); u8g.drawStr(
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, u8g.setFontPosTop(); 48, 60, "SGGC"); }
0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
} void u8g_Tela1() // void draw3() // Função
0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
Tela 1 "Botija vazia" de desenho da tela 2{
0xff, 0xff, 0x07,
u8g_prepare();
0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, { u8g_Tela3(); }
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, u8g.setFont(u8g_font_
unifont); void u8g_Tela4() //
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
Tela 4 "Vazamento" {
0x00, 0x00, 0xff, 0xff,
u8g.drawStr( 1, u8g.setFont(u8g_font_
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 14,"Estado da botija: unifont);
0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, "); u8g.drawStr( 54,
40,"0%"); } u8g.drawStr( 1,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
14,"Atenção: Existe
0x00, 0x00, 0x00, 0x00,
Vazamento de Gas");}
3
void draw4() // Função else if ( u8g.getMode() sim800.write("AT+CM , HIGH);
de desenho da tela 2{ == U8G_MODE_BW ) GF=1\r\n"); delay(1000);
u8g.setColorIndex(1); delay(200); digitalWrite(buzzer,
u8g_prepare(); // pixel on sim800.write("AT+CM LOW);
u8g_Tela4(); } u8g.firstPage(); GS=\"+244928962331\ digitalWrite(ledOrange
"\r\n"); delay(200); , LOW);
/****************** do { draw3(); } sim800.write("Atencao delay(1000);
****Criação das
! O estado da sua botija for(A; A<1; A++){
funções while( u8g.nextPage()
e inferior a 15%."); sim800.begin(9600);
secundárias********* ); delay(5000);
delay(200); delay(200);
******************/ //Pausa de 5 segundos e
sim800.write((char)26)
void setup() reinicia o processo
;
{ Serial.begin(9600);
delay(200);
// Inicializa a Serial.println("Enviand
u8g.firstPage(); do { Serial.println("Feito");
comunicação serial o SMS, um
bitmap(); } while( }
Balanca.begin(DT, momento...");
u8g.nextPage() ); }/*****************
SKC); // sim800.write("AT+CM
delay(5000);}void **Medição do nível de
Inicializa a balança GF=1\r\n");
loop() { gás****************
******************* delay(200);
Balanca.set_scale(fator /******************
********/ sim800.write("AT+CM
_calibracao); // ajusta *Medição do nível de
/****************** GS=\"+244928962331\
fator de calibração gás****************
*Detector de Gás MQ- "\r\n");
Balanca.tare(); *******************
2****************** delay(200);
// Zera a Balança ********/ if
******************* sim800.write("Atencao
Serial.println("******* (Balanca.get_units() <
*********/valor = ! Existe vazamento de
*************Estado 7) {
analogRead(pinSensor) gas na sua cozinha.");
da u8g.firstPage(); do
; valor = map(valor, 0, delay(200);
Botija************** { draw (); }
1023, 0, 100); sim800.write((char)26)
******"); while( u8g.nextPage()
if(valor<ValDesarm){ ; delay(200);
Serial.println(""); ); delay(200);
digitalWrite(ledGreen, Serial.println("Feito");
pinMode(buzzer,OUTP //Pausa de 0,2 segundos
HIGH); A = 2;}} else{
UT); e reinicia o processo
digitalWrite(ledRed, A = 0;
pinMode(button, } else {
LOW); } else{ digitalWrite(buzzer,
INPUT); Valor_Obtido =
digitalWrite(ledRed, HIGH);
pinMode(ledGreen, (Balanca.get_units() -
HIGH); digitalWrite(ledOrange
OUTPUT); 7);
digitalWrite(ledGreen, , HIGH);
pinMode(ledOrange, Valor_Percentual =
LOW); } delay(400);
OUTPUT); (100*Valor_Obtido)/5;
controlButton = digitalWrite(buzzer,
pinMode(ledRed, u8g.firstPage();
digitalRead(3); f LOW);
OUTPUT); do { draw1(); }
(controlButton == digitalWrite(ledOrange
while( u8g.nextPage()
if ( u8g.getMode() == HIGH){ , LOW);
); delay(200); //Pausa
U8G_MODE_R3G3B2 digitalWrite(buzzer, delay(400);
de 0,2 segundos e
) LOW); } } else{
reinicia o processo
u8g.setColorIndex(255 delay(60000); digitalWrite(buzzer,
if(Valor_Percentual >=
); // white else if ( Serial.print(valor);} LOW);
12 && alor_Percentual
u8g.getMode() == else{ if delay(1000); }}
<= 15){
U8G_MODE_GRAY2 sim800.begin(9600); (valor>=ValDesarm){
/******************
BIT ) Serial.print(valor);
*Detector de Gás MQ-
u8g.setColorIndex(1); delay(200); if( valor>=65){
2******************
// max intensity Serial.println("Enviand digitalWrite(buzzer,
*******************
o SMS, um HIGH);
******/}
momento..."); digitalWrite(ledOrange
4
6.2. Fotos do ilustrativas
5
Na figura 6.12 é apresentado a visão geral da maquete onde constam o dispositivo de
visualização na parte superior, o sensor MQ-2 no centro da maquete e a balança na parte
inferior.
Na figura 6.13 é apresentado o dispositivo de vizualização onde é exibido ao utilizador
o estado da botija em percentagem. Nesta figuram constam também os LED’s de sinalização
que indicam ou não a presença de GLP.
Na figura 6.14 Temos a parte posterior da maquete onde são apresentados alguns dos
componentes usados no projecto como o GSM e a sua antena, o módulo HX711, o Buzzer e
o sensor MQ-2.
Na figura 6.15 é apresentado a balança que faz a leitura do peso da botija que permite
determinar o nível de gás na botija.