Escolar Documentos
Profissional Documentos
Cultura Documentos
Edson Sebastião Manuel António, 11599 Ivânio Celestino Mateus Gregório, 10696
Edson Sebastião Manuel António, 11599 Ivânio Celestino Mateus Gregório, 10696
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.