Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO 
 
 
 
 
 
Adriana Duarte Vieira – RA 1831200 
Alexandre Chiavelli – RA 1701316 
Alexandre Gomes Belini – RA 1828483 
Deivis Wesley Furtado - 1831763 
Gedson Machado Dias - RA 1823665 
Marcio Carriel Fernandes – RA 1828913 
Marcus Vinicius Mathias - RA 1822132 
Thiago Jonson dos Santos Lima – RA 1835734 
 
 
 
 
 
 
 
 
 
Sistema wireless de acionamento remoto microcontrolador de bomba 
elevatória de água com supervisão do sistema. 
 
 
 
 
 
 
 
 
 
 
 
 
 
São Paulo - SP 
2023 
 
 
 
UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO 
 
 
 
 
 
 
 
 
 
 
 
 
 
Sistema wireless de acionamento remoto microcontrolador de bomba 
elevatória de água com supervisão do sistema. 
 
 
 
 
 
 
Trabalho de Conclusão de Curso de graduação 
da Universidade Virtual do Estado de São Paulo 
(UNIVESP), como parte dos requisitos para 
obtenção do título de Bacharel em Engenharia 
de Computação. 
 
Orientador: Deymer Yesid Páez Sepúlveda 
 
 
 
 
 
 
 
 
 
 
 
São Paulo - SP 
2023 
 
 
 
 
FOLHA DE APROVAÇÃO 
 
 
Adriana Duarte Vieira – RA 1831200 
Alexandre Chiavelli – RA 1701316 
Alexandre Gomes Belini – RA 1828483 
Deivis Wesley Furtado - 1831763 
Gedson Machado Dias - RA 1823665 
Marcio Carriel Fernandes – RA 1828913 
Marcus Vinicius Mathias - RA 1822132 
Thiago Jonson dos Santos Lima – RA 1835734 
 
 
Sistema wireless de acionamento remoto microcontrolador de 
bomba elevatória de água com supervisão do sistema 
Vídeo da Apresentação oral do TCC: 
https://www.youtube.com/watch?v=RTpgn41KU0s 
 
 
 
 
 
 
Trabalho de Conclusão de Curso de graduação 
da Universidade Virtual do Estado de São Paulo 
(UNIVESP), como parte dos requisitos para 
obtenção do título de Bacharel em Engenharia 
de Computação. 
 
 
 
Avaliação em: 
Conceito: 
BANCA EXAMINADORA 
 
 _________________________________ 
DeymerYesid Páez Sepúlveda 
Presidente da Banca (Orientador) 
Universidade Virtual do Estado de São Paulo. 
 
 
_____________________________________ 
 NomedoAvaliadorExterno 
Membro externo (Avaliador) 
Titulação ou instituição a que pertence. 
 
 
 
 
 
 
VIEIRA, Adriana Duarte; CHIAVELLI, Alexandre; BELINI, Alexandre Gomes; FURTADO, 
Deivis Wesley; DIAS, Gedson Machado; FERNANDES, Márcio Carriel; MATHIAS, Marcus 
Vinicius; LIMA, Thiago Jonson dos Santos. Título: Sistema wireless de acionamento remoto 
microcontrolador de bomba elevatória de água com supervisão do sistema. 2023. Numero 
Folhas f. Trabalho de Conclusão de Curso para o curso de graduação em Engenharia de 
Computação, Universidade Virtual do Estado de São Paulo (UNIVESP), São Paulo – SP. 
Orientador: DeymerYesid Páez Sepúlveda. 
 
RESUMO 
 
Este trabalho apresenta uma solução tecnológica que visa desenvolver, programar e testar um 
sistema wireless para substituição dos cabos de acionamento remoto da bomba de caixa 
d’água do CTMSP - Aramar. Essa substituição busca evitar que incidentes como a ruptura 
do cabo físico ocorra, como os que já aconteceram diversas vezes dentro do CTMSP – 
Aramar, causando vários transtornos, em ocasiões de reformas e aberturas de novas vias 
internas de circulação. Por conta dessa problemática, foi solicitado a elaboração de um 
sistema que possa substituir os cabos. Em pesquisa optou-se em montar um sistema em que 
a manutenção pudesse agir rapidamente e de forma eficaz em seu reparo, além de poder ser 
aproveitado para outros locais. Nesse contexto fez-se a opção pela tecnologia Zigbee, 
juntamente com os módulos Arduino para fazer essa função de substituição do cabo de 
sinal. Acredita-se que a modernização e automação do sistema de abastecimento de 
reservatórios através de um sistema wireless será uma forma estratégica e eficaz de facilitar 
o trabalho de manutenção de abastecimento de água no dentro tecnológico da marinha, bem 
como aumentar a produtividade e interatividade. 
 
 
 
Palavras-chave: Cabos; Bomba de caixa d’água; Wireless; Zigbee; Arduíno. 
 
 
 
 
 
 
 
 
 
 
 
 
VIEIRA, Adriana Duarte; CHIAVELLI, Alexandre; BELINI, Alexandre Gomes; FURTADO, 
Deivis Wesley; DIAS, Gedson Machado; FERNANDES, Márcio Carriel; MATHIAS, Marcus 
Vinicius; LIMA, Thiago Jonson dos Santos.Title: Wireless microcontroller remote drive 
system for water lift pump with system supervision. 2023. Numero Folhas f. Undergraduate 
thesis in Computer Engineering, Virtual University of the State of São Paulo (UNIVESP), 
São Paulo – SP. Supervisor: DeymerYesid Páez Sepúlveda. 
 
 
ABSTRACT 
 
This work presents a technological solution that aims to develop, program and test a wireless 
system to replace the remote activation cables for the CTMSP - Aramar water tank pump. This 
replacement seeks to prevent incidents such as the rupture of the physical cable from occurring, 
such as those that have already occurred several times within the CTMSP – Aramar, causing 
various inconveniences, during renovations and opening of new internal circulation routes. 
Because of this problem, a request was made to develop a system that could replace the cables. 
In research, it was decided to set up a system in which maintenance could act quickly and 
effectively in its repair, in addition to being able to be used in other locations. In this context, 
the option was made for Zigbee technology, together with Arduinos modules to perform this 
function of replacing the signal cable. It is believed that the modernization and automation of 
the reservoir supply system through a wireless system will be a strategic and effective way of 
facilitating water supply maintenance work within the navy's technological framework, as well 
as increasing productivity and interactivity. 
 
Keywords: Cables; Water tank pump; Wireless; Zigbee; Arduino. 
 
 
 
 
 
 
 
 
 
 
 
 
LISTA DE TABELAS 
 
Tabela 1- DATOS TÉCNICOS MÓDULO XBEEPROS3 
Tabela 2 – API Identifiers 
Tabela 3 - Valores em dBm 
 
Tabela 4- Parametrização 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
LISTA DE ILUSTRAÇÕES 
 
Figura 1 - Imagem Complexo de Aramar 
Figura 2 - Imagem boia mecânica 
Figura 3 - Imagem controle por sensores eletrônicos 
Figura 4 - Imagem chave de nível por eletrodos 
Figura 5 - Imagem Sensor ultrassônico 
Figura 6 - Imagem funcionamento sensor ultrassônico 
Figura 7 - Imagem Arduino conectado ao sensor ultrassônico 
Figura 8 - Imagem Microcontrolador ATMEGA328A 
Figura 9 - Imagem Arduino uno 
Figura 10 - Imagem Arduino mega 
Figura 11 - Imagem módulo XBeeS3B 
Figura 12 - Norma IEEE 802.15.4 
Figura 13 - Topologia de rede usada IEEE 802.15. 
Figura 14 - Frames para comunicação de API 
Figura 15 - Alcance Estimado entre as Unidades 
Figura 16 - Pontos de Testes 
Figura 17 - Diagrama de Blocos do Sistema 
Figura 18 - Fluxograma do Módulo da Bomba D'agua 
Figura 19 - Fluxograma do Módulo Monitor 
Figura 20 - XCTU 
Figura 21 - imagem modulo central 
Figura 22 - módulos caixa d’água 
Figuras 23 - módulos caixa d’água 
Figuras 24 - módulos bomba d’água 
Figuras 25 - módulos bomba d’água 
 
 
 
 
 
 
 
 
 
SUMÁRIO 
 
 
1 INTRODUÇÃO ....................................................................................................................... 9 
2 CASO..................................................................................................................................... 10 
3.OBJETIVOS .......................................................................................................................... 11 
3.1 Objetivo geral: .................................................................................................................... 11 
3.2 Objetivos específicos ..........................................................................................................seu 
equivalente em ASCII a palavra DESL 
 
 
• 7E001090007D33A20041A73312FFFEC14C494741B2,da mesma 
forma que o comando liga o numero "90" corresponde a resposta de comando 
ZB_RX_RESPONSE, e o conjunto de números 4C494741, correspondem seu 
equivalente em ASCII a palavra LIGA 
 
 
 
 
52 
 
5.2.2 Módulo Caixa d’água 
 
A codificação do Módulo Caixa D’agua é iniciada definindo o pino de IO10 como 
sensor de nível,que corresponde ao contato do rele do sensor de nível que mandaria o sinal 
elétrico via cabo para a bomba d'água ligar, mas usando o modulo arduino esse contato fará 
com que um sinal de 5V seja enviado para a entrada digital 10. Também são definidas diversas 
variáveis globais para uso do programa e controle de fluxo das rotinas do programa, sendo 
algumas ja atribuído um valor inicial de acordo com a necessidade inicial do programa. 
 
#define Sensor_Nivel_1 
10intsn1,cnt=0; 
byte tr0=0, tr1=2, tr2=0, tr3=2, tr4=0, tr_aux=0, 
tr_in=0;unsignedlongintendereco_h, 
endereco_l,endereco_central_h,endereco_central_l; 
 
Nessa parte do programa é incluída a biblioteca XBee.h, responsável pela comunicação 
entre o modulo zigbee e o modulo arduino. Também é inicializada a biblioteca XBee, e definido 
parâmetros para as variáveis internas da biblioteca :ZBRxResponse(definição para receber 
dados normais), AtCommandResponse(definição para receber resposta de comando), 
RemoteAtCommandResponse (definição para receber resposta de comando remoto). 
 
#include 
XBeexbee=X
Bee(); 
ZBRxResponserx=ZBRxResponse(); 
AtCommandResponseatResponse = 
AtCommandResponse();RemoteAtCommandResponseremoteAtResp
onse= 
RemoteAtCommandResponse(); 
53 
 
 
Na subrotinasetup() é definido o modo de operação da IO como INPUT(entrada), 
Inicializada o canal de comunicação UART (serial) e inicializada a biblioteca Xbee. 
Nessa etapa, algumas variáveis ja são determinadas como a sn1 lendo o valorda entrada 
digital e a tr_in=1 sinalizando que a leitura foi efetuada, assim como a variável tr0=0 
sinaliza que a busca pelo endereço do módulo caixa d'água. 
 
void setup() 
{pinMode(Sensor_Nivel_1, 
INPUT);Serial.begin(9600);xbe
e.begin(Serial);sn1=digitalRead
(Sensor_Nivel_1);tr_in=1; 
tr
0
=
0
;
t
r
2
=
0
; 
} 
 
 
Aqui começa a subrotina principal (loop()). A primeira parte verifica se esta 
liberado para a leitura da entrada digital e se a entrada digital lida é diferente do estado 
anterior lido "tr_in==0 && sn1!=digitalRead(Sensor_Nivel_1)". Depois gera um atraso 
de1seg, faz a leitura da entrada digital atual, efaztr_in=1 para indicar que uma nova leitura 
foi efetuada. Esse controle é feito para que somente entre nessa rotina após o envio do 
comando seja finalizado. 
 
voidloop(){ 
54 
if (tr_in==0 && 
sn1!=digitalRead(Sensor_Nivel_1)){delay(1000); 
sn1=digitalRead(Sensor_Nivel_
1);tr_in=1; 
} 
 
 
Seguindo no código, temos uma verificação de busca do endereço MAC do 
módulo da bomba d'água, para que seja feita o envio do comando de ligar e desligar a 
bomba. Essa verificação foi feita desta forma, pois numa possível troca do módulo da 
bomba d'água por um defeito, teríamos que refazer o código com um novo valorde 
endereço MAC. Assim usando o nome ASCII do modulo zigbee, que pode ser inserido 
quando o modulo for parametrizado. Dessa forma sempre usando o mesmo nome que no 
caso foi definido como BSMETA01, evita a necessidade de reprogramar o módulo 
zigbee. 
Assim é usado o comando"DN"(descobrirnó) para que o zigbee faça a busca pelo 
endereço do modulo, que será usado para envio dos comandos Liga e Desliga da bomba 
d'água. Depois é montado o frame de envio" At Command Request 
(shCmd0,data0,sizeof(data0))", que gera o código HEXADECIMAL 
7E000C0801444E43584147554130314A, e o mesmo é enviado pelo 
comando"xbee.send(atRequest)" e sinalizado pela variável tr0=1 que a pergunta pelo 
endereço do modulo zigbee da bomba d'água foi efetuada, para que o programa não entre 
mais nessa parte do código. 
if(tr0==0){ 
uint8_tshCmd0[]={'D','N'}; 
uint8_tdata0[]={'B','S','M','E','T','A','0','1'}; 
At Command Request at Request = At Command Request (shCmd0, 
data0,sizeof(data0)); 
xbee.send(atReque
st);tr0=1; 
} 
 
Já nessa parte do código, é verificado se houve uma alteração na entrada 
digital(tr_in=1)e se o endereço do módulo zigbee da bomba ja foi encontrado (tr2=1). 
Satisfeita as duas condições, verifica se sn1=1 ou sn1=0. se sn1=1 monta-se o comando 
55 
LIGA (uint8_tdata1[]={'L','I','G','A'}) ou DESL (uint8_tdata2[]={'D','E','S','L'}) e a string 
de endereço (XBeeAddress64addr64=XBeeAddress64(endereco_h,endereco_l)). 
Depois é montado o frame de envio (ZBTxRequestzbTx=ZBTxRequest(addr64, 
data1, sizeof(data1)) ), e enviado via comando xbee.send. Uma vez enviado o comando, 
a variável tr_in é colocada em "0" sinalizando que umanova leitura da saída pode ser feita. 
Os frames enviados pelo arduino para o 
zigbeesão7E00121001xxxxxxxxxxxxxxxxFFFE00004C494741zz para LIGA e 
7E00121001xxxxxxxxxxxxxxxxFFFE00004445534CzzondexxxxxxxxXxxxxxxx representa 
o endereço MAC do módulo da bomba, ezzo checksum da mensagem que depende do 
endereço MAC para calcular o checksum. 
if (tr2==1 
&&tr_in==1 
){if(sn1==1){ 
uint8_tdata1[]={'L','I','G','A'}; 
XBeeAddress64 addr64 = XBeeAddress64(endereco_h, 
endereco_l);ZBTxRequestzbTx = ZBTxRequest(addr64, data1, 
sizeof(data1));xbee.send(zbTx); 
tr_in=0; 
} 
 
 
if(sn1==0){ 
uint8_tdata2[]={'D','E','S','L'}; 
XBeeAddress64 addr64 = XBeeAddress64(endereco_h, 
endereco_l);ZBTxRequestzbTx = ZBTxRequest(addr64, data2, 
sizeof(data2));xbee.send(zbTx); 
tr_in=0; 
} 
} 
 
 
Prosseguindo no código do programa, temos um atraso de 500m seg para ler 
qualquer retorno de mensagem do zigbee. O código lê os pacotes recebidos, e caso exista 
alguma resposta, a verificação começa. Algumas variáveis locais são geradas para 
manipulação dos dados recebidos. Em seguida é verificado se a resposta corresponde se 
é do tipo "AT_COMMAND_RESPONSE", e caso seja, a resposta é requisitada. Feito 
56 
isso, a primeira verificação feita é se o comando de resposta é o"DN" (descobrir nó). Em 
caso positivo, começa a ser feita a aquisição dos dados principais que correspondem ao 
endereço MAC do modulo requisitado. Também é feita a verificação do formato dos 
dados, e convertidos no formato que será usado. Por fim, os dados que foram recebidos 
são colocados nas variáveis endereco_h e endereco_l, que serão usados para o envio do 
comando, e fazendo a variável tr2=1, indicando que a aquisição do endereço MAC foi 
concluída. O frame recebido pelo arduino é 7E000F8801 
444E00FFFExxxxxxxxxxxxxxxxzzondexxxxxxxxXxxxxxxx representa o endereço 
MAC do módulo da bomba, ezzo checksum da mensagem que depende do endereço MAC 
para calcular o checksum. 
delay(500);xbee
.readPacket(); 
if 
(xbee.getResponse().isAvailable()
) {bytesp1; 
String 
sampleh;St
ring 
samplel;ch
ar 
csh[11];ch
arcsl[11]; 
if (xbee.getResponse().getApiId() == AT_COMMAND_RESPONSE) 
{xbee.getResponse().getAtCommandResponse(atResponse);if((char)
atResponse.getCommand()[0]=='D'&& 
(char)atResponse.getCommand()[1]=='N'&&tr2==0){ 
for (int i = 2; ido modulo zigbee local,conectado ao modulo 
arduino da central. Os Led's vd01 a vd04 e vm01 a vm04 representam os módulos zigbee 
remoto, sendo que no programa do protótipo fo considerado apenas o modulo caixa 
d'água, bomba d'água e dois roteadores, que no teste do protótipo não estão sendo usados 
propositalmente para sinalizar falha. O led crté para sinalizar o funcionamento do modulo 
arduino. Também são criadas variáveis globais para controle. 
58 
 
#defineLed_vd002 
#defineLed_vd014 
#defineLed_vd026 
#defineLed_vd038 
#defineLed_vd0410 
#defineLed_vm003 
#defineLed_vm0112 
#defineLed_vm027 
#defineLed_vm039 
#defineLed_vm0411 
#defineLed_crt113 
bytemodulo_id=1,tr0=0,tr0a=0,tr1=0; 
 
 
 
Seguindo no código, é incluído a biblioteca XBee.h, responsável pela 
comunicação entre o modulo Zigbee e o modulo arduino. Também é inicializada a 
biblioteca XBee, e definido parâmetros para as variáveis internas da biblioteca: 
ZBRxResponse(definição para receber dados normais), AtCommandResponse (definição
 para receber resposta de comando), RemoteAtCommandResponse 
(definição para receber resposta de comando remoto). 
 
#include 
XBeexb
ee=XBee(); 
ZBRxResponserx=ZBRxResponse(); 
AtCommandResponseatResponse = 
AtCommandResponse();RemoteAtCommandResponseremote
AtResponse =RemoteAtCommandResponse(); 
 
Na sub rotina setup() temos a definição das saídas dos led's como 
OUTPUT(saída),a inicialização do canalUART(serial) e a inicialização da biblioteca 
xbee. 
 
voidsetup(){pinMode(Led_vd
59 
00, 
OUTPUT);pinMode(Led_vd
01, 
OUTPUT);pinMode(Led_vd
02, 
OUTPUT);pinMode(Led_vd
03, 
OUTPUT);pinMode(Led_vd
04, 
OUTPUT);pinMode(Led_v
m00, 
OUTPUT);pinMode(Led_v
m01, 
OUTPUT);pinMode(Led_v
m02, 
OUTPUT);pinMode(Led_v
m03, 
OUTPUT);pinMode(Led_v
m04, 
OUTPUT);pinMode(Led_crt
1, 
OUTPUT);Serial.begin(9600
);xbee.begin(Serial); 
 
Também é feita a configuração do timer 1, tendo o TCCR1A configurado em 
0eoTCCR1B inicialmente configurado em 0 e depois em 5, como sendo um préscale de 
divisão de 1024. O calculo do timer é feito dividindo a freqüência de clock domodulo 
arduino (16MHz) por 1024. O resultado dessa divisão é 15625, que significaque uma 
contagem de 15625 do timer equivale a 1seg. Como o timer 1 é de 16bits,ou seja 
contagem até 65535, nos daria uma contagem total de aproximadamente4,2seg. Como a 
interrupção desse timer vai ser por overflow, então é configurado o inicio da contagemem 
0, e colocado o valor de contagem na variável interna TCNT1. A variável TIMSK1 é a 
variável de controle de habilitar e desabilitar o timer1. O valor0 desabilita o timer1 e o 
valor 1 habilita o timer1. Em seguida, todas as saídas digitais declaradas são 
60 
desligadas(LOW) 
 
TCCR1
A=0;T
CCR1
B=0;T
CCR1
B=5;T
CNT1 
= 
0;TIM
SK1=0
; 
digitalWrite(Led_vd00,L
OW);digitalWrite(Led_vm0
0,LOW);digitalWrite(Led_
vd01,LOW);digitalWrite(L
ed_vm01,LOW);digitalWrit
e(Led_vd02,LOW);digital
Write(Led_vm02,LOW);di
gitalWrite(Led_vd03,LOW
);digitalWrite(Led_vm03,L
OW);digitalWrite(Led_vd0
4,LOW);digitalWrite(Led_
vm04,LOW);digitalWrite(L
ed_crt1,LOW); 
} 
 
 
A rotina loop() inicia ligando o led de controle e entrando na rotina de pergunta 
para o modulo remoto. Uma estrutura switch case direciona a pergunta para um modulo 
zigbee remoto específico de acordo com a variável modulo_id que varia de 1a 4. Cada 
um dos cases apaga os led's correspondentes desvia o fluxo para as sub rotinas 
correspondentes: modulo_id=1->CXAGUA01(); modulo_id=2-
>BSMETA01();modulo_id=3->ROUTER01;modulo_id=4->ROUTER02. Uma vez 
61 
enviado a pergunta, faz-se tr0=1 para não entrar na estruturas witch case novamente 
enquanto não houver um retorno. 
 
voidloop(){ 
if (tr0==0 && 
tr0a==0){digitalWrite(Le
d_crt1,HIGH);switch(mo
dulo_id){ 
case1: 
digitalWrite(Led_vd01,L
OW);digitalWrite(Led_v
m01,LOW);CXAGUA01(
); 
b
re
ak
;c
as
e 
2: 
digitalWrite(Led_vd02,L
OW);digitalWrite(Led_v
m02,LOW);BSMETA01()
; 
b
re
ak
;c
as
e 
3: 
digitalWrite(Led_vd03,L
OW);digitalWrite(Led_v
m03,LOW);ROUTER01()
62 
; 
b
re
ak
;c
as
e 
4: 
digitalWrite(Led_vd04,L
OW);digitalWrite(Led_v
m04,LOW);ROUTER02()
; 
break; 
} 
tr0=1; 
} 
 
 
Em seguida uma estrutura while é mantida ativa enquanto a variável tr0 a for igual 
a 1. Dentro da estrutura while é monitorado a resposta do zigbee para a pergunta. Como 
a pergunta foi DN(descobrir nó), a resposta esperada é DN também. 
Porem dessa vez a informação relevante é o status da resposta, podendo ser OK 
valor de status 64 ou Não OK valor de status 01. De acordo com a resposta OK ou Não 
OK, uma condicional direcional para duas situações. A primeira desliga o Timer1 que 
foiligado quando foi chamada as rotinas de pergunta, depois faz a variável de controle 
tr0a = 2 e entra na subrotina Leds_ok() ou Leds_fault() conforme a resposta OK ou Não 
OK. Depois faz tr1=0 eu sao comando break para sair do laço while. 
 
while(tr0a==1){x
bee.readPacket
(); 
if (xbee.getResponse().isAvailable()){ 
if (xbee.getResponse().getApiId() == AT_COMMAND_RESPONSE) 
{xbee.getResponse().getAtCommandResponse(atResponse);if((char)
atResponse.getCommand()[0]=='D'&& 
63 
(char)atResponse.getCommand()[1]=='N' && 
tr0a==1){if (atResponse.getStatus()==64){ 
TIMSK1=0; 
tr0a=
2;Led
s_ok(
);tr1=
0;bre
ak; 
} 
if(atResponse.getStatus()==
1){TIMSK1=0; 
tr0a=2;
Leds_fa
ult();tr1
=0; 
break; 
} 
} 
} 
} 
} 
} 
64 
As subrotinas CXAGUA01(), BSMETA01(), ROUTER01(), ROUTER02() 
Envia muma pergunta para descobrir o no(DN)zera e liga o timer1. Faz também a variável de 
controle tr0a=1. 
 
voidCXAGUA01(){ 
uint8_tshCmd0[]={'D','N'}; 
uint8_tdata0[]={'C','X','A','G','U','A','0','1'}; 
AtCommandRequestatRequest = AtCommandRequest(shCmd0, 
data0,sizeof(data0)); 
xbee.send(atRequest);tr0
a=1; 
TCNT1=0;T
IMSK1=1; 
} 
 
 
voidBSMETA01(){//BOMBADAGUA 
uint8_tshCmd0[]={'D','N'}; 
uint8_tdata0[]={'B','S','M','E','T','A','0','1'}; 
AtCommandRequestatRequest = AtCommandRequest(shCmd0, 
data0,sizeof(data0)); 
xbee.send(atRequest);tr0
a=1; 
TCNT1=0;T
IMSK1=1; 
} 
 
 
voidROUTER01(){//ROUTER01 
uint8_tshCmd0[]={'D','N'}; 
uint8_tdata0[]={'R','O','U','T','E','R','0','1'}; 
AtCommandRequestatRequest = AtCommandRequest(shCmd0, 
data0,sizeof(data0)); 
xbee.send(atRequest);tr0
a=1; 
TCNT1=0; 
65 
 
 
 
TIMSK1=1; 
} 
 
 
voidROUTER02(){//ROUTER02 
uint8_tshCmd0[]={'D','N'}; 
uint8_tdata0[]={'R','O','U','T','E','R','0','2'}; 
AtCommandRequestatRequest = AtCommandRequest(shCmd0, 
data0,sizeof(data0)); 
xbee.send(atRequest);tr0
a=1; 
TCNT1=0;
TIMSK1=1; 
} 
 
 
A subrotina Leds_ok() faz com que ligue o led verde e desligue o led vermelho do 
modulo local e segundo a estrutura switch case e de acordo com o valor do modulo _id ligue o 
led verde e desligue o vermelho. Em seguida incremente o valor da variável modulo _id, e zera 
as variáveis de controle tr0 e tr0a. Também verifica se a variável modulo _id é igual a 5 para 
reiniciá-la como valor 1, e por fim desliga o led de controle. 
 
void 
Leds_ok(){digitalWrite(Led_vd
00,HIGH);digitalWrite(Led_vm
00,LOW);switch(modulo_id){ 
case 
1:digitalWrite(Led_vd01,HIGH)
;digitalWrite(Led_vm01,LOW);
break; 
case 
2:digitalWrite(Led_vd02,HIGH)
;digitalWrite(Led_vm02,LOW);
break; 
case 3: 
66 
 
 
 
digitalWrite(Led_vd03,HIGH);d
igitalWrite(Led_vm03,LOW);br
eak; 
case 
4:digitalWrite(Led_vd04,HIGH)
;digitalWrite(Led_vm04,LOW);
break; 
} 
modulo_id=modulo_id+1;tr
0a=0; 
tr0=0; 
if 
(modulo_id==5){
modulo_id=1; 
} 
digitalWrite(Led_crt1,LOW); 
} 
 
 
A subrotina Leds _fault() faz com que ligue o led verde e desligue o led vermelho do 
modulo local e segundo a estrutura switch case e de acordo com o valor do modulo _id ligue 
vermelho o led e desligue o verde. Em seguida incremente o valor da variável modulo _id, e 
zera as variáveis de controle tr0 e tr0a.Também verifica se a variavel modulo _id é iguala 5 
para reiniciá-la como valor 1, e por fim desliga o led de controle. 
 
void 
Leds_fault(){digitalWrite(Led_v
d00,HIGH);digitalWrite(Led_v
m00,LOW);switch(modulo_id){ 
case 
1:digitalWrite(Led_vd01,LOW);
digitalWrite(Led_vm01,HIGH);b
reak; 
case 
2:digitalWrite(Led_vd02,LOW)
; 
67 
 
 
 
digitalWrite(Led_vm02,HIGH);b
reak; 
case 
3:digitalWrite(Led_vd03,LOW);
digitalWrite(Led_vm03,HIGH);b
reak; 
case 
4:digitalWrite(Led_vd04,LOW);
digitalWrite(Led_vm04,HIGH);b
reak; 
} 
modulo_id=modulo_id+1;tr
0a=0; 
tr0=0; 
if 
(modulo_id==5){
modulo_id=1; 
} 
digitalWrite(Led_crt1,LOW); 
} 
 
 
Por fim a subrotina de interrupção de overflow do timer1 desliga o timer1, e verifica 
quantas vezes houve o overflow em cada pergunta. Se esse valor for maiorou igual a 15 que da 
uma contagem de cerca de 63seg, isso indicaria que o modulo local não esta respondendo 
indicando uma falha no modulo zigbee da central, sendo assim desliga o led verde e liga o led 
vermelho do modulo local. e entra em loop atéque o supervisor seja reparado e reiniciado. Em 
testes feitos, uma resposta positiva do modulo remoto leva de menos de 1 seg até 4 seg. Uma 
resposta de falha leva entra 30 a 45 seg para ser recebida. conseqüentemente um valor de 63 
seg é o suficiente para que a resposta de maior tempo seja recebida. Continuando a subrotina, 
se o tr1 não alcançou o valor de 15, otr1 é incrementado de 1, o valor do timer1 é zerado, e o 
timer1 é religado para contar mais 4,2seg. 
 
ISR(TIMER1_OVF_vect){
TIMSK1=0; 
68 
if(tr1>=15){ 
//Serial.print("FALHA");digital
Write(Led_vd00,LOW);digitalW
rite(Led_vm00,HIGH);while(1){
digitalWrite(Led_crt1,LOW); 
} 
} 
else{tr1=tr1+
1;TCNT1=0
;TIMSK1=1
; 
} 
} 
 
5.2.4 Parametrização do Módulos Zigbee 
 
 
A parametrização dos módulos zigbee é feita usando o aplicativo XCTU. Todos os 
módulos usam o firmware "Xbee PRO 900HP 200K" versão 8075, incluso no próprio 
aplicativo. Basicamente é usado a configuração default, alterando apenas alguns parâmetros, 
conforme a tabela 4. 
 
Tabela 4-Parametrização 
Parametro CENTRAL CXAGUA01 BSMETA01 
CE Coordenator StandardRouter StandardRouter 
NI CENTRAL CXAGUA01 BSMETA01 
NO 4 0 0 
AP withoutescape withoutescape withoutescape 
Fonte:Elaboradopelosautores 
 
Segundo descrição no próprio aplicativo XCTU, os parâmetros que são alterados são: 
 CE:DefinequetipodeconfiguraçãoseráusadapelomoduloCoordenador,Roteados,EndPoi
nt. 
NI: Define o nome do modulo zigbee, que será usado para a busca do modulo na rede. 
 
 NO: Define seu envio de comunicação vai ter uma resposta de status (nesse caso o 
valor4) ou não. 
 AP: Define o modo de funcionamento AP, com escape ou sem escape. Isso é usado 
quando o um dos bytes da mensagem é 13 em Hexadecimal, 
usandoumarranjo7D00emHexadecimal. 
69 
Feito essa parametrização básica, os módulos estão prontos para serem usados. O teste 
de conexão entre os módulos, é mostrado na figura 21 no XCTU. 
 
Figura 21- XCTU 
 
 
fonte:Aplicativo XCTU 
 
a. Testes Preliminares 
 
Os testes feitos funcionais nos módulos foram executados ligando inicialmente o 
modulo CENTRAL que é o coordenador, responsável por inicializar a rede. Em seguida os 
módulos CXAGUA01 e BSMETA01 são ligados para logarem na rede. O modulo CENTRAL, 
é mostrado na figura22: 
70 
 
 
 
Figura 22-Imagem modulo central 
 
 
Fonte: Elaborado pelo autor 
 
 
 
Conforme é mostrado na figura 22, o modulo CENTRAL funcionando, de forma que os 
3 primeiros leds verdes representam o modulo CXAGUA01, BSMETA01 e CENTRAL, que 
estão funcionando corretamente. os leds seguintes estão indicando que 2 módulos estão com 
falha. O fato de estar desligado o conjunto de led vermelho e verde, mostra que o modulo 
respetivo esta sendo verificado seu funcionamento. O led amarelo indica o funcionamento da 
varredura do status dos módulos. 
71 
Figura 23-Módulo caixa d’água 
 
Fonte:Elaborado pelo autor 
 
As figura 23 mostram o modulo caixa d’água em duas situações diferentes. O fio 
vermelho representa um contato de rele do sensor de nível. A atuação de ligar e desligar o fio 
acionaria a saída da bomba d’água. 
Já na figura 24 mostram o módulo da bomba d’água com sua saída ativada e desativada 
conforme o acionamento mostrado na figura23. 
 
Figura24-Módulo bomba d’água 
 
Fonte: Elaborado pelo autor
72 
Um led vermelho que representa a saída 13 na placa arduino indica que o modulo 
arduino esta recebendo os comandos de ligar redes ligar a bomba. 
Ostestesforamfeitosembancada,de formacontrolada. 
b. Testes em Campo 
Os testes em campo serão o próximo passo do projeto, porem esses só serão feitos apos 
autorização do diretor da ARAMAR. 
c. Propostas futuras 
Visto a versatilidade do projeto, pode-se apresentar como propostas futuras, incorporar o 
monitoramento de sistemas diversos, como subestações, sistemas de utilidades (chillers e ar 
comprimido), alarmes em geral, etc. Também outra proposta seria incorporar um software 
supervisorio pelo ScadaBR com um monitoramento mais eficaz do sistema como um todo. 
 
 
6. CONCLUSÃO 
 
No decorrer do desenvolvimento da pesquisa, foi possível notar que o sistema wirelless 
desenvolvido foi nota da mente a mais viável financeiramente. Tanto o protocolo Zigbee, como 
o módulo arduino, tem entre suas maiores vantagens o baixo custo para desenvolver o sistema 
proposto. 
Além da vantagem do custo, o que por si só já salvaguarda sua grande aceitação no 
mercado, existe aquestão relacionada a fácil manutenção, que em caso de falhas e problemas, 
bastaria ao responsável substituir o módulo danificado por um novo para que o sistema voltasse 
a normalidade. 
Num sistema wirelless, sempre há novas implementações há serem feitas,nesse caso, 
não há necessidade de grandes reparos, como os dos cabos antigos, basta ao provedor do sistema 
adicionar novos módulos zigbee e arduino para executar em as novas funções desejadas. 
Sendo assim, demonstradas na pesquisa as várias vantagens do futuro sistema a ser 
implantado, o baixo custo para sua realização, sua enorme facilidade de manutenção, sua 
possibilidade de futuras implementações, ganhar eficiência, acelerar a produtividade e satisfazer 
as necessidades do Centro Tecnológico da Marinha em São Paulo (CTMP), onde uma futura 
implementação é o passo seguinte do projeto. 
 
 
 
 
 
73 
7. REFERÊNCIAS BIBLIOGRÁFICAS 
 
AMAZUL, Amazonia Azul Tecnologia de Defesa S.A., 2016, disponível em 
, acessado em 13 agosto 2023 
DIGI, XBee®/XBee-PRO® ZB RF Modules, 05/2010, disponível em , acessado 
em 26 agosto 2023 
XBEE STORE, Módulo DigiXbee-PRO DigiMesh 900HP - Conector RPSMA - Extended-Range, 
2023, disponível em , acessado em 26 agosto 2023 
GAMBOA, E. et al. (2016). "Microcontroller for Portable ECG Monitor." Proceedings of the 
International Conference on Electronics, Communications, and Computers (CONIELECOMP). 
 
OLIVEIRA, R. S., & S, A. SILVA B. (2019). "Desenvolvimento de Sistema de Controle de Acesso 
Residencial Utilizando Microcontrolador ATMEGA328P." Revista de Tecnologia e Inovação, 
6(2), 67-82. 
 
SINGH, A. K., &TYAGIT, S. K. (2015). "Design and Development of a Wireless Temperature 
Monitoring System Using AVR Microcontroller." International Journal of Computer Applications, 
123(8), 35-39. 
 
MAZIDI, M. A., & NAIMI, S. (2015). "AVR Microcontroller and Embedded Systems: Using 
Assembly and C." Pearson Education. 
 
BARBOSA, M. A., & COSTA, A. H. (2017). "Placa de Desenvolvimento Arduino Uno: Aplicação 
na Análise de Sensibilidade à Luz de LDR e Comunicação Serial." Anais do Congresso Brasileiro 
de Automática (CBA). 
 
ATMEL CORPORATION. (2015). "ATmega328/PDatasheet." [Folha de dados do ATmega328/P]. 
 
HANNO, C., &SUHADA, E. (2018). "Development of a Smart Home System Using Arduino Uno 
Microcontroller." Proceedings of the International Conference on Sustainable Information 
Engineering and Technology (SIET). 
 
74 
QURESHI, M. A., &FAROOQUI, S. (2016). "Design of an Advanced Automatic Vehicle Accident 
Detection and Messaging System." International Journal of Engineering Research and Applications, 
6(2), 70-76. 
 
 MOHAPATRA, S., &PATTNAIK, R. (2017). "Implementation of an Intelligent Vehicle Control 
System Using Arduino Uno." International Journal of Electronics and Electrical Engineering, 5(1), 
1-5. 
 
SINGH, P., &DANDAPAT, S. (2016). "Design of an Automatic Railway Gate Control System 
Using AVR Microcontroller." InternationalJournalofEngineeringandInnovative Technology, 5(5), 
10-15. 
 
Arduino Documentation. Arduino, 2022. Disponível em:https://docs.arduino.cc/ (Acessado em 09 
out. 2023) 
 
BOIA DA CAIXA D’ÁGUA: TIRE AQUI TODAS AS SUAS DÚVIDAS. Caixa Forte, 2022. 
Disponível em: . Acesso em: 6 out. 2023. 
 
THOMAZINI, Daniel; ALBUQUERQUE, Pedro Urbano. “Sensores Industriais-Fundamentos e 
aplicações”.4°.ed. São Paulo, Editora Érica, 2011. 
 
Melo, Daniel Antonio de Jesus; Teles, Mateus Costa; Marques, Gabriel Souza. “Uma proposta de 
planta didática com sistema supervisório para 
medição de vazão e controle de nível e temperatura”. Brazilian Journal of 
Development.Disponívelem: 
https://ojs.brazilianjournals.com.br/index.php/BRJD/article/download/24391/19490. Acesso em: 30 
setembro. 2023. 
 
XBee-PRO® 900HP/XBee-PRO® XSC RF Modules. DigiInternational Inc, 2014. Disponível em: 
https://cdn.sparkfun.com/datasheets/Wireless/Zigbee/90002173_N.pdf. Acesso em: 19 set. 2023. 
Zigbee Wireless Networking. Drew Gislason, 2007. Disponível em: 
11 
3.3 Justificativa e questão da pesquisa ..................................................................................... 11 
4 FUNDAMENTAÇÃO TEÓRICA ........................................................................................ 12 
4.1 Controle de nível de caixa d’agua ...................................................................................... 12 
4.2 Controle por boia mecânica ................................................................................................ 12 
4.3 Controle por sensores eletrônicos ...................................................................................... 13 
4.4 Chave de nível por eletrodos .............................................................................................. 14 
4.5 Sensor ultrassônico ............................................................................................................. 15 
4.6 Introdução ao Microcontrolador ATMEGA328A .............................................................. 17 
4.6.1 O papel do ATMEGA328A na Construção de Sistemas Embarcados ..................... 18 
4.6.2 Características do Arduino Uno ............................................................................... 20 
4.6.3 Arquitetura e Componentes Principais ..................................................................... 22 
4.6.4 Programação e Ambiente de Desenvolvimento ....................................................... 23 
4.6.5 Características do Arduino Mega ............................................................................. 23 
4.6.6 Arquitetura e Recursos Principais ............................................................................ 24 
4.6.7 Programação e Ambiente de Desenvolvimento ....................................................... 25 
4.6.8 As principais diferenças entre o Arduino Uno e o Arduino Mega ........................... 25 
4.7 Sketches e programação em C ............................................................................................ 27 
4.7.1 Biblioteca XBEE.h ................................................................................................... 28 
4.8 Zigbee ........................................................................................................................ 33 
4.8.1 Zigbee Aliance ................................................................................................... 33 
4.8.2 Módulos Zigbee ....................................................................................................... 34 
4.8.3 Módulo X-Bee Pro S3 .............................................................................................. 34 
4.8.4 Protocolo Zigbee - Norma IEEE 802.15.4 ............................................................... 35 
4.8.6 Frame de Dados ........................................................................................................ 38 
5 MATERIAIS E MÉTODOS .................................................................................................. 41 
5.1 Testes de Alcance e Determinação dos locais dos módulos zigbee ........................... 42 
 
 
5.2 Programação dos Módulos Arduino ................................................................................... 45 
5.2.1 Módulo Bomba D’água ............................................................................................ 50 
5.2.2 Módulo Caixa d’água ......................................................................................... 52 
5.2.3 Módulo Central de Supervisão ................................................................................. 57 
5.2.4 Parametrização do Módulos Zigbee ......................................................................... 68 
6. CONCLUSÃO ...................................................................................................................... 72 
7. REFERÊNCIAS BIBLIOGRÁFICAS .............................................................................. 73 
 
 
 
 
 
 
9 
1 INTRODUÇÃO 
 
Atualmente, com a modernização de controles e automação de processos, é evidente a 
necessidade de se empregar novas tecnologias afim de aprimorar e tornar mais eficaz esses 
controles. Isso não é diferente quando falamos das Forças Armadas do Brasil, mais 
especificamente da Marinha do Brasil. 
Esse trabalho visa atender uma demanda da Marinha do Brasil, no contexto de aprimorar 
um processo já existente, incorporando novas tecnologias. O local onde essa proposta de 
melhoria vai ser implantada é no Centro Tecnológico da Marinha em São Paulo (CTMSP), 
também conhecido como Aramar, em Iperó - São Paulo. 
Dada a grande dimensão do complexo de Aramar, muitas vezes os sistemas de atuação 
e os sensores encontram-se a centenas de metros ou até a alguns km de distância uns dos outros. 
A figura 1 abaixo mostra o tamanho do complexo. 
 
 Figura 1- Imagem Complexo de Aramar 
 
Fonte: Google Map 
 
Para efeito de referencia a escala mostrada no Google Maps é de 200m. 
A empresa que cuida do CTMSP - Aramar, é a AMAZUL (Amazônia Azul Tecnologia 
de Defesa S.A.), uma empresa pública federal, sob o Comando da Marinha do Brasil. Segundo 
site AMAZUL (2016), a empresa AMAZUL foi fundada em 2013 e criada pela Lei 12.706, de 
10 
8 de agosto de 2012, e tem como objetivo de promover, desenvolver, transferir e manter 
atividades relacionadas ao Programa Nuclear da Marinha (PNM), do Programa de 
Desenvolvimento de Submarinos (PROSUB) e do Programa Nuclear Brasileiro (PNB). 
Tendo em vista o foco de sempre estar inovando, foi solicitado o desenvolvimento de 
um sistema wireless (sem fio) para substituir um cabo de acionamento remoto de bomba de 
caixa d'água distante mais de 1km entre o sensor e a bomba. Para tanto deverá ser usado um 
dispositivo conhecido como ZigBee, que é um protocolo de comunicação sem fio, que em 
conjunto com modulo Arduino, fará a substituição desse cabo. 
Também visando a maleabilidade do sistema e as vantagens que o mesmo pode oferecer, será 
proposto a integração com outros sistemas afim de melhorar a interatividade e monitoração de 
sistemas não críticos. 
2 CASO 
 
Durante reformas ocorridas dentro do CTMSP - Aramar, e a abertura e asfaltamento de 
novas vias internas de circulação de veículos, ocorreu alguns incidentes, onde cabos de 
comandos remotos foram rompidos. Alguns desses cabos interconectava sistemas distantes a 
dezenas de metros, outros a centenas de metros ou a alguns quilômetros. Um desses cabos 
levavam o sinal de um sensor de nível ultrassônico a um comando de bomba d'água distantes a 
aproximadamente 1,05km em linha reta. 
Devido a rota tortuosa, contornando obstáculos naturais e prédios, o comprimento total 
desse cabo é de mais de 2 km. O rompimento ocorrido foi em diversos pontos o que levou a 
necessidade de fazer emendas para esse reparo. Com o tempo, devido ao fato de a capa do cabo 
ter sido cortada, e por conta desse cabo ser enterrado no solo, a umidade e corrosão poderão 
causar um novo rompimento, afetando o acionamento da bomba e consequentemente não 
abastecendo a caixa d'água remota. Essa caixa d'água é de grande volume, mais de 1 milhão de 
litros, localizada num dos pontos mais altos do CTMSP - Aramar, ela abastece a caixa de 
diversos prédios abaixo do nível dela, provendo de água de consumo de banheiros e copas, a 
apoio de limpeza e faxina. 
Por conta dessa problemática que virá a ocorrer com o tempo, foi solicitado a elaboração 
de um sistema que possa substituir esse cabo. Inicialmente foi buscado sistemas já prontos de 
11 
mercado, mas verificou-se que os mesmos eram fechados e não maleável para serem 
aproveitados em outros locais. E em pesquisa chegou a opção de montar um sistema que a 
manutenção pudesse atuar rapidamente e de forma eficaz em seu reparo além de poder ser 
aproveitado para outros locais. Com isso foi escolhido a tecnologia Zigbee, juntamente com os 
módulosArduino para fazer essa função de substituição do cabo de sinal. 
3.OBJETIVOS 
 
3.1 Objetivo geral: 
 
Substituir os cabos por um sistema wireless. 
 
3.2 Objetivos específicos 
 
Os objetivos específicos deste projeto são: 
1- Desenvolver um sistema wireless utilizando o protocolo de comunicação Zigbee e o 
módulo Arduino; 
2- Efetuar testes e determinar os locais onde serão instalados os roteadores; 
3- Implementar um sistema de supervisão para monitorar o status da rede de forma a alertar 
possíveis problemas, como sinalizar o status de acionamento da bomba d’água remota; 
4- Implementar futuramente monitoramento remoto de alarmes e falhas de outros 
dispositivos( CHILLERS), módulos de compressores de ar, sistema de alarme de 
subestações, entre outros. 
 
3.3 Justificativa e questão da pesquisa 
 
Devido ao fato do problema das grandes distancias entre acionamentos de dispositivos, 
e também do fato que muitos sistemas são antigos (instalados a mais de 30 anos), em conjunto 
com os danos causados nos cabeamentos ao longo dos anos e em função de reformas, tornou-
se necessário a substituição dos cabos. Infelizmente por conta da dificuldade de licitação 
pública, onde pode levar mais de 2 anos para a aquisição de material para uma reforma ou 
substituição, e o alto custo para tal serviço, foi proposto um sistema sem fio. 
12 
Foi pesquisado diversas empresas que poderiam fazer o serviço, assim como tecnologias 
onde o próprio corpo técnico possa fazer o serviço, e a conclusão que foi determinada, é que o 
melhor caminho seria desenvolver o sistema pelo próprio departamento de manutenção, para 
que todo o processo fosse amplamente conhecido pelos técnicos, e de rápida manutenção, 
fazendo com que o sistema tivesse o menor tempo de parada possível, usando material que 
teríamos facilmente em estoque. 
Dentre as opções disponíveis, foi escolhido o Zigbee, que se mostrou bastante versátil 
para a aplicação. Como microcontrolador, foi escolhido o Arduino, pois a plataforma de 
programação e o hardware está pronto, não necessitando a confecção de uma PCI (Placa de 
Circuito Impresso) dedicada para o processo. 
Apesar de ser uma solução dedicada a um problema especifico da empresa, a grande 
relevância do trabalho é que pelo fato de termos todo o knowhow do projeto, e por termos o 
material de baixo custo em estoque para substituição imediata. 
 
4 FUNDAMENTAÇÃO TEÓRICA 
Neste capítulo encontra-se uma síntese das teorias de autores de renome nacional e 
internacional que dão embasamento a estrutura do projeto. 
 
4.1 Controle de nível de caixa d’agua 
 
A caixa água é um componente fundamental de sistemas de abastecimento de água, 
atuando como um reservatório intermediário que garante a distribuição contínua. O controle do 
nível da caixa água é necessário para evitar o desperdício, reduzir os custos operacionais e 
manter a pressão adequada. Além disso, novas tecnologias oferecem novos modos de aprimorar 
e tornar mais eficiente o controle do nível das caixas d’agua 
 
4.2 Controle por boia mecânica 
 
Segundo Rico e Morato (2021)Este modelo de boia é constituído por três componentes 
fundamentais: um engate, uma haste e uma esfera de plástico. A esfera de plástico desempenha 
um papel crucial na eficácia do sistema de boia, uma vez que flutua na superfície da água. À 
13 
medida que a esfera sobe e desce, ela regula a abertura e o fechamento da passagem de líquidos 
para o reservatório, desempenhando um papel fundamental na gestão do nível de líquido no 
recipiente. Veja na figura 2 
Figura 2- Imagem boia mecânica 
 
Fonte: https://www.temnatrena.com.br/ 
 
Este tipo de boia de nível é altamente recomendado para reservatórios que recebem 
constantemente um fluxo de água, sendo instalados diretamente na entrada do líquido. A sua 
utilização torna-se particularmente vantajosa em situações em que é necessário manter um nível 
de água constante no reservatório, facilitando assim o controle e a gestão eficaz do sistema de 
abastecimento. 
 
4.3 Controle por sensores eletrônicos 
 
Sensores desempenham um papel fundamental na coleta de informações do ambiente e 
no fornecimento de dados essenciais para sistemas de controle. Dentre os variados tipos de 
sensores disponíveis temos os eletrônicos, ou também conhecidos como digitais. Veja na figura 
3. 
14 
Figura 3- Imagem controle por sensores eletrônicos 
 
Fonte: https://www.mundodaeletrica.com.br/ 
 
Esse tipo de sensor pode assumir apenas dois valores no seu sinal de saída ao longo do 
tempo, que podem ser interpretados como zero ou um. Não existem naturalmente grandezas 
físicas que assumam esses valores, mas eles são assim mostrados aos sistemas de controle após 
serem convertidos pelo circuito eletrônico do tradutor. É utilizado, por exemplo, em detecção 
de passagem de objetos, encoders na determinação de distância ou velocidade, etc. 
(THOMAZINI; ALBUQUERQUE,2011). 
 
4.4 Chave de nível por eletrodos 
 
Segundo Thomazini e Albuquerque (2011), consiste em um ou mais eletrodos inseridos 
no reservatório. Quando o líquido atinge um determinado nível e faz contato com um dos 
eletrodos de nível, ele fecha um circuito elétrico, permitindo que a corrente flua entre os 
eletrodos. Veja na figura 4 a seguir: 
 
15 
Figura 4- Imagem chave de nível por eletrodos 
 
Fonte: https://www.mundodaeletrica.com.br/ 
 
Essas chaves de nível por eletrodos são amplamente utilizadas em diversas aplicações 
industriais e de automação, permitindo o controle preciso do nível de líquidos, acionando ou 
desligando bombas, válvulas ou outros dispositivos, com o objetivo de manter o nível dentro 
de limites específicos e evitar transbordamentos ou funcionamento a seco. 
 
4.5 Sensor ultrassônico 
 
Segundo Thomazini, Albuquerque (2011): “O princípio de funcionamento baseia-se no 
envio e recepção de uma onda ultrassônica”. 
 
Figura 5- Imagem Sensor ultrassônico 
 
Fonte: https://www.fornell.com.br/ 
16 
 
Segundo Sturm (2004 p-66) Os sensores ultrassônicos é uma solução para a detecção da 
presença ou aproximação de algum objeto. Consiste basicamente em um transmissor e um 
receptor que podem estar separados, e os chamados modos opostos ou podem estar no mesmo 
invólucro que neste caso são chamados difusos. Os sensores ultrassônicos para a utilização 
como sensores de nível apresentam certas vantagens como permitir a medição continua do nível 
e não há contato direto com o material a ser medido e principalmente possuir longo alcance, 
como desvantagens são susceptíveis a mudanças de temperatura e sensíveis a corrente de ar e 
movimentos. 
 
O funcionamento: demanda de um gatilho (trigger) de no mínimo 10us de nível alto. O 
módulo encaminha automaticamente 8 pulsos de 40kHz e automaticamente verifica se houve 
retorno de algum pulso. Se houver um sinal de retorno a partir dos disparos, o nível de saída é 
modificado. 
Sensor ultrassônico com esquematização de funcionamento, na figura 5, notamos que é 
emitida uma onda que chega até o objeto e essa onda é refletida, no caso específico da pesquisa, 
o objeto seria o fluido na caixa d’água. 
 
Figura 6 - Imagem funcionamento sensor ultrassônico 
 
Fonte: https://www.sta-eletronica.com.br/ 
 
Arduino com sensor ultrassônico na figura 7 a seguir: 
 
17 
Figura 7- Imagem Arduino conectado ao sensor ultrassônico 
 
Fonte: https://guiarobotica.com/ 
 
Entre as principais vantagens desse tipo de sensor, destacam-se o baixo custo, a ausência 
de contato direto entre o sensor e o líquido em questão, além da versatilidade de poder ser usado 
tanto em ambientes abertos quanto fechados. No entanto, é importante mencionar uma 
desvantagem: em ambientes com temperaturas extremamente elevadas ou sujeitas a variações 
significativas de temperatura, a velocidade de transmissão do som pode ser afetada, já que a 
propagação do som depende das propriedades do meio em que se move.4.6 Introdução ao Microcontrolador ATMEGA328A 
 O microcontrolador ATMEGA328A é um componente fundamental no mundo da 
eletrônica embarcada e automação, amplamente utilizado em uma variedade de aplicações 
devido à sua versatilidade e recursos avançados. Fabricado pela Atmel Corporation, agora parte 
da Microchip Technology Inc., o ATMEGA328A é uma versão aprimorada do popular 
ATMEGA328, que faz parte da família AVR de microcontroladores. Este dispositivo é 
frequentemente escolhido por engenheiros e entusiastas de eletrônica devido à sua eficiência 
energética, facilidade de programação e robustez. 
Neste contexto, esta introdução tem como objetivo fornecer uma visão geral teórica das 
características e funcionalidades essenciais do microcontrolador ATMEGA328A. 
Exploraremos sua arquitetura interna, periféricos integrados, capacidades de programação e 
aplicações típicas. Além disso, destacaremos o impacto significativo que esse microcontrolador 
18 
teve no desenvolvimento de sistemas embarcados e projetos eletrônicos de pequena e média 
escala. 
Segundo Oliveira (2019), os principais aspectos do ATMEGA328A, incluindo sua 
arquitetura de 8 bits, memória Flash programável, comunicação serial, conversores analógico-
digitais, temporizadores e outros recursos, a figura 8 ilustra o microcontrolador. O 
ATMEGA328A pode ser usado para criar soluções eletrônicas personalizadas, desde sistemas 
de controle simples até projetos mais complexos, como robôs, dispositivos de automação 
residencial e sensores inteligentes. 
 
Figura 8- Imagem Microcontrolador ATMEGA328A 
 
 Fonte: HTTPS://www.microchip.com 
 
No decorrer deste estudo, examinaremos o papel do ATMEGA328A na construção de 
sistemas embarcados, bem como sua contribuição para a evolução da eletrônica e da automação. 
Por meio dessa análise teórica, os desenvolvedores podem apreciar o valor desse 
microcontrolador e considerar suas aplicações em projetos futuros, promovendo assim avanços 
contínuos na tecnologia e na automação. 
 
4.6.1 O papel do ATMEGA328A na Construção de Sistemas Embarcados 
 
De acordo com Gamboa (2016), os sistemas embarcados desempenham um papel 
fundamental em uma ampla gama de dispositivos eletrônicos que encontramos em nosso 
cotidiano, desde aparelhos domésticos até dispositivos médicos e automóveis. Esses sistemas, 
19 
que consistem em hardware dedicado e software especializado, são projetados para executar 
tarefas específicas com eficiência e confiabilidade. O microcontrolador ATMEGA328A, parte 
da família AVR da Microchip Technology Inc., tem desempenhado um papel significativo na 
construção de sistemas embarcados devido às suas características e recursos. 
1. Arquitetura Eficiente: O ATMEGA328A possui uma arquitetura de microcontrolador 
de 8 bits altamente eficiente, o que o torna uma escolha popular para sistemas embarcados de 
baixo a médio desempenho. Essa arquitetura é projetada para executar instruções com rapidez 
e eficiência, tornando-o adequado para aplicações em que a otimização do consumo de energia 
e dos recursos de hardware é essencial. 
2. Memória Flash Programável: Uma das características distintivas do ATMEGA328A 
é sua memória Flash programável. Isso permite que os desenvolvedores carreguem e atualizem 
facilmente o firmware do microcontrolador, tornando-o flexível para acomodar alterações e 
melhorias no software ao longo do tempo. 
3. Periféricos Integrados: O ATMEGA328A incorpora uma série de periféricos úteis, 
como conversores analógico-digitais (ADC), timers/counters e interfaces de comunicação 
serial, como UART, SPI e I2C. Esses periféricos integrados simplificam a interação com 
sensores, dispositivos de exibição e outros componentes, economizando tempo e recursos de 
desenvolvimento. 
4. Eficiência Energética: A eficiência energética é crucial em muitas aplicações de 
sistemas embarcados, especialmente em dispositivos alimentados por bateria. O 
ATMEGA328A oferece recursos avançados de gerenciamento de energia, incluindo modos de 
economia de energia e a capacidade de operar em baixas tensões, tornando-o ideal para 
aplicações sensíveis ao consumo de energia. 
5. Facilidade de Programação: O microcontrolador ATMEGA328A é compatível com 
uma ampla variedade de ambientes de desenvolvimento, incluindo a plataforma de código 
aberto Arduino. Isso significa que desenvolvedores de todos os níveis de habilidade podem 
programar o ATMEGA328A de forma acessível e intuitiva, acelerando o processo de 
desenvolvimento. 
6. Aplicações Diversificadas: Devido à sua versatilidade e recursos, o ATMEGA328A 
é utilizado em uma variedade de aplicações de sistemas embarcados. Isso inclui sistemas de 
20 
controle industrial, dispositivos de automação residencial, robótica, instrumentação, sistemas 
de monitoramento ambiental, entre outros. 
O ATMEGA328A desempenha um papel central na construção de sistemas embarcados 
devido à sua arquitetura eficiente, flexibilidade de programação, recursos integrados e 
eficiência energética. Sua presença é notável em uma ampla gama de produtos eletrônicos que 
fazem parte do nosso cotidiano, capacitando inovações contínuas e melhorias na automação e 
na eletrônica embarcada. 
 
4.6.2 Características do Arduino Uno 
 
O Arduino Uno é uma plataforma de prototipagem eletrônica de código aberto que se 
tornou uma ferramenta fundamental para entusiastas, estudantes e profissionais da área de 
eletrônica e programação. Criado para ser acessível, versátil e fácil de usar, o Arduino Uno 
revolucionou a maneira como as pessoas abordam o desenvolvimento de projetos eletrônicos. 
Nesta exploração teórica, serão abordados os principais aspectos do Arduino Uno, desde sua 
arquitetura e funcionalidades até suas aplicações práticas. 
 
Figura 9- Imagem Arduino uno 
 
 Fonte: https://www.arduino.cc/ 
 
21 
De acordo com McRoberts (2011) projeto é uma plataforma de desenvolvimento de 
hardware de código aberto que tem desempenhado um papel significativo na popularização da 
eletrônica e da programação para entusiastas, estudantes e profissionais da área. Ele oferece 
uma abordagem acessível e versátil para criar projetos eletrônicos, combinando hardware e 
software de forma intuitiva. Nesta introdução teórica, serão explorados os conceitos do Arduino 
Uno, citando alguns autores renomados e referências bibliográficas relevantes para 
contextualizar sua importância e aplicação. 
1. Origens e Filosofia do Arduino: 
 O Arduino Uno teve suas raízes no projeto de pesquisa de Banzi (2011) na Interaction 
Design InstituteIvrea, na Itália. Segundo Banzi (2011), "O Arduino é uma plataforma de 
prototipagem eletrônica de código aberto baseada em software e hardware fáceis de usar. É 
usado por artistas, designers, entusiastas e qualquer pessoa interessada em criar objetos ou 
ambientes interativos." Essa filosofia de acessibilidade e abertura tem sido fundamental para a 
sua difusão. 
2. Princípios de Funcionamento: 
 O funcionamento do Arduino Uno é amplamente descrito por Schmidt (2015). No livro 
"Arduino: A Quick-Start Guide" de Schmidt (2015), são explicados os princípios de 
funcionamento do Arduino, desde a programação em linguagem C/C++ até a interação com 
sensores e atuadores. O autor enfatiza que "o Arduino é um excelente ponto de partida para 
quem deseja aprender eletrônica e programação". 
3. Comunidade e Colaboração: 
 A importância da comunidade e da colaboração no desenvolvimento do Arduino é 
destacada por Evans (2011) em seu livro "Beginning Arduino". Ele ressalta que o Arduino é 
uma das poucas tecnologias que realmente encoraja a colaboração e o compartilhamento 
aberto de informações. A comunidade Arduino é uma das mais ativas e amigáveis do mundo 
da eletrônica. 
4. Aplicações Diversificadas: 
 O Arduino Uno é amplamente aplicado em uma variedade de projetos. No estudo 
realizado por Santos et al. (2016), os autores descrevema aplicação do Arduino em sistemas 
22 
de monitoramento agrícola. Eles destacam que "o Arduino oferece uma solução econômica e 
eficaz para monitorar e controlar ambientes de cultivo." 
5.Educação e Aprendizado: 
 O potencial educacional do Arduino Uno é discutido por McRoberts (2011) em seu 
estudo, o mesmo afirma que "o Arduino é uma ferramenta incrivelmente valiosa para 
educadores que desejam ensinar eletrônica e programação de forma prática e envolvente. 
 
4.6.3 Arquitetura e Componentes Principais 
 
O Arduino Uno é baseado em um microcontrolador ATmega328P, fabricado pela Atmel (agora 
parte da Microchip Technology Inc.). Este microcontrolador possui uma arquitetura de 8 bits e 
é o cérebro central do Arduino Uno. Ele opera em uma frequência de 16 MHz, o que o torna 
capaz de executar tarefas em tempo real com eficiência. O Arduino Uno também possui uma 
série de componentes essenciais, incluindo: 
 
1. Portas Digitais: O Arduino Uno possui 14 portas digitais que podem ser configuradas 
como entradas ou saídas, permitindo a conexão a sensores, LEDs, relés e outros dispositivos. 
2. Portas Analógicas: Além das portas digitais, há 6 portas analógicas que podem ser 
usadas para ler sinais analógicos, como tensões de sensores. 
3. Microcontrolador: O ATmega328P inclui memória Flash para armazenar o programa, 
memória RAM para armazenar dados temporários e memória EEPROM para armazenar dados 
não voláteis. 
4. Conversor Analógico-Digital (ADC): O ADC permite que o Arduino Uno converta 
sinais analógicos em valores digitais para processamento. 
5. Interfaces de Comunicação: O Arduino Uno possui interfaces UART, SPI e I2C, que 
facilitam a comunicação com outros dispositivos, como sensores, displays e módulos de 
comunicação. 
23 
4.6.4 Programação e Ambiente de Desenvolvimento 
 
O Arduino Uno é programado usando a linguagem de programação C/C++, tornando-o 
acessível a uma ampla gama de desenvolvedores. Um ambiente de desenvolvimento integrado 
(IDE) gratuito, conhecido como Arduino IDE, está disponível para criar, compilar e enviar 
programas para o Arduino. A simplicidade do Arduino IDE permite que até mesmo iniciantes 
em programação entrem facilmente no mundo da eletrônica e da automação. 
O Arduino Uno encontra aplicações em uma variedade de projetos e domínios, 
incluindo: 
1. Automação Residencial: Controle de luzes, persianas, sistemas de 
aquecimento/refrigeração e segurança em casa. 
2. Robótica: Desenvolvimento de robôs móveis, braços robóticos e sistemas de controle 
de movimento. 
3.IoT (Internet das Coisas): Criação de dispositivos IoT para monitoramento remoto e 
automação. 
4. Educação: Utilização em escolas e cursos para ensinar eletrônica e programação. 
5. Arte Interativa: Criação de instalações de arte interativa que respondem ao ambiente 
ou ao público. 
O Arduino Uno é muito mais do que uma placa de circuito impresso; é uma ferramenta 
que capacita a criatividade e a inovação. Sua abordagem acessível e versátil democratizou o 
acesso à eletrônica e à programação, permitindo que uma ampla gama de pessoas desenvolva 
projetos inovadores. À medida que a tecnologia continua a evoluir, o Arduino Uno permanece 
na vanguarda, inspirando novas gerações de inventores e engenheiros a transformar ideias em 
realidade. 
 
4.6.5 Características do Arduino Mega 
 
O Arduino Mega é uma plataforma de desenvolvimento de hardware amplamente 
reconhecida no mundo da eletrônica e programação. Projetado como uma expansão do Arduino 
24 
Uno, o Arduino Mega oferece maior potência computacional e uma gama mais ampla de 
recursos, tornando-o ideal para projetos complexos e desafiadores. Nesta introdução teórica, 
serão explorados os aspectos fundamentais do Arduino Mega e suas aplicações. 
 
4.6.6 Arquitetura e Recursos Principais 
 
O Arduino Mega é baseado em um microcontrolador ATmega2560, fabricado pela 
Atmel (hoje parte da Microchip Technology Inc.). Este microcontrolador opera a 16 MHz e 
possui uma arquitetura de 8 bits. Sua capacidade de processamento é significativamente maior 
em comparação com o Arduino Uno, graças à sua memória Flash de 256 KB, memória RAM 
de 8 KB e EEPROM de 4 KB. 
Figura 10- Imagem Arduino mega 
 
 Fonte: https://www.arduino.cc/ 
 
Uma característica distintiva do Arduino Mega é sua rica coleção de pinos de 
entrada/saída, com 54 pinos digitais e 16 pinos analógicos. Essa expansão de portas torna-o 
adequado para projetos que requerem numerosas conexões a sensores, displays, motores e 
outros dispositivos. 
 
 
25 
4.6.7 Programação e Ambiente de Desenvolvimento 
 
O Arduino Mega é programado utilizando a linguagem C/C++, tornando-o compatível 
com uma ampla gama de desenvolvedores. O ambiente de desenvolvimento integrado (IDE) do 
Arduino oferece uma plataforma amigável e acessível para escrever, compilar e carregar código 
no Arduino Mega. Embora não haja citações específicas para este tópico, é importante 
mencionar que a comunidade Arduino oferece recursos abundantes, tutoriais e documentação 
para facilitar o desenvolvimento. 
O Arduino Mega é frequentemente escolhido para projetos que exigem recursos 
computacionais mais avançados e maior capacidade de E/S. Suas aplicações abrangem uma 
variedade de domínios, incluindo: 
1. Automação Industrial: Controle de máquinas, sistemas de monitoramento e controle 
de processos industriais. 
2. Robótica Avançada: Desenvolvimento de robôs complexos, incluindo robôs 
autônomos e braços robóticos. 
3. Sistemas de Aquisição de Dados: Utilização em projetos que requerem a coleta de 
grandes volumes de dados, como estações meteorológicas. 
4. Sistemas Embarcados Complexos: Implementação de sistemas de controle, 
processamento de sinais e sistemas embarcados multifuncionais. 
O Arduino Mega, com sua capacidade de processamento avançada e ampla gama de 
portas de entrada/saída, é uma escolha popular para projetos eletrônicos complexos. 
 
4.6.8 As principais diferenças entre o Arduino Uno e o Arduino Mega 
 
1. Microcontrolador: 
 - Arduino Uno: O Arduino Uno é baseado no microcontrolador ATmega328P, que possui 
uma arquitetura de 8 bits e opera a uma frequência de 16 MHz. 
26 
 - Arduino Mega: O Arduino Mega utiliza o microcontrolador ATmega2560, que também é 
de 8 bits, mas opera a 16 MHz, oferecendo maior capacidade de processamento em comparação 
com o ATmega328P do Arduino Uno. 
2. Memória: 
 - Arduino Uno: O Uno possui 32 KB de memória Flash para armazenamento de programas, 
2 KB de memória RAM e 1 KB de memória EEPROM. 
 - Arduino Mega: O Mega possui 256 KB de memória Flash, 8 KB de memória RAM e 4 KB 
de memória EEPROM, proporcionando muito mais espaço para programas e dados. 
 
3. Portas de Entrada/Saída (I/O): 
 - Arduino Uno: O Uno oferece 14 pinos digitais de E/S e 6 pinos analógicos. 
 - Arduino Mega: O Mega possui 54 pinos digitais de E/S e 16 pinos analógicos, tornando-o 
mais adequado para projetos complexos que requerem muitas conexões. 
 
4. Tensão de Alimentação: 
 - Arduino Uno: O Uno pode ser alimentado com uma tensão de 5V. 
 - Arduino Mega: O Mega também pode ser alimentado com 5V, mas oferece uma faixa de 
tensão mais ampla (7-12V) para maior flexibilidade. 
 
5. Dimensões: 
Arduino Uno: O Uno é menor e mais compacto, com dimensões de aproximadamente 68.6 x 
53.4 mm. 
Arduino Mega: O Mega é maior, medindo cerca de 101.6 x 53.4 mm, devido à maior quantidade 
de pinos e componentes. 
 
6. Aplicações: 
 - Arduino Uno: É adequado para projetos simples a intermediários que não exigem muitos 
recursos de processamento ou E/S. 
 - Arduino Mega: É a escolha preferida para projetos mais complexos que envolvem sistemas 
embarcados, automação industrial, robótica avançada e aquisição de dados de alta densidade. 
27 
 
7. Preço: 
Arduino Uno: Geralmente é mais acessível em termos de preço, tornando-o adequado 
para iniciantes e projetos demenor escala. 
Arduino Mega: Tende a ser um pouco mais caro devido aos recursos adicionais, sendo mais 
apropriado para projetos que exigem maior capacidade de processamento e E/S. 
 
Em resumo, o Arduino Uno é ideal para projetos simples e educacionais, enquanto o 
Arduino Mega é mais apropriado para projetos complexos e aplicações que demandam mais 
recursos de processamento e E/S. A escolha entre os dois depende das necessidades específicas 
do projeto e do orçamento disponível. 
 
4.7 Sketches e programação em C 
 
Sketches significa esboço, ou seja, qualquer trabalho ou obra em estado inicial, apenas 
delineada ou esboçada. Também pode ser definido como rudimento ou noção inicial de alguma 
coisa. 
O Sketches é um software fornece todas as ferramentas necessárias para um processo de 
design verdadeiramente colaborativo. De ideias iniciais a arte com pixels, protótipos jogáveis e 
transferência de desenvolvedores. 
A linguagem de programação C é uma linguagem de programação de alto nível 
amplamente utilizada que foi desenvolvida no início dos anos 1970 por Dennis Ritchie na Bell 
Labs, conhecida por sua sintaxe simples e direta, o que torna relativamente fácil de aprender e 
escrever código. 
A linguagem de programação C é conhecida por diversas características que se tornam 
únicas e poderosas. A linguagem de programação C possui diversas características específicas 
que tornam uma escolha popular para uma variedade de aplicações. Aqui estão algumas das 
características mais importantes da linguagem C: **Sintaxe Simples e Estruturada:** A sintaxe 
da linguagem C é clara e concisa, o que se torna relativamente fácil de aprender e ler. Ela segue 
uma estrutura estruturada com blocos de código delimitados por chaves. 
 
28 
1. Sintaxe Simples: A sintaxe da linguagem C é relativamente simples e direta, o que a 
torna fácil de aprender e entender. Isso se torna acessível para programadores iniciantes e 
experientes. 
2. Portabilidade: Os programas em C são altamente portáteis, o que significa que podem 
ser compilados e executados em uma variedade de sistemas operacionais e arquiteturas de 
hardware sem a necessidade de grandes modificações. 
3. Eficiência: A AC é conhecida por sua eficiência e desempenho. Ela permite um controle 
preciso sobre os recursos do sistema, tornando-o ideal para programação de sistemas e 
desenvolvimento de software de baixo nível. 
4. Manipulação de Ponteiros: AC permite o uso de ponteiros, que são variáveis que 
armazenam endereços de memória. Isso oferece maior flexibilidade na manipulação de dados 
e estruturas de dados complexas. 
5. Programação Estruturada: AC suporta programação estruturada, o que significa que 
você pode usar estruturas de controle como loops e condicionais para criar algoritmos bem 
organizados e simples de manter. 
7. Biblioteca Padrão Rica: A o que significa que você pode usar estruturas de controle 
como loops e condicionais para criar algoritmos bem organizados e simples de manter. 
 
4.7.1 Biblioteca XBEE.h 
 
A biblioteca "Xbee.h" é uma biblioteca de software utilizada para interagir com módulos 
XBee, que são dispositivos de comunicação sem fio amplamente utilizados para conectar 
dispositivos em redes sem fio, especialmente em aplicações de IoT (Internet das Coisas) e 
automação. Essa biblioteca geralmente fornece funções e métodos que facilitam a configuração, 
envio e coleta de dados entre os módulos XBee, simplificando o desenvolvimento de projetos 
que envolvem comunicação sem fio. 
A biblioteca "Xbee.h" é uma biblioteca de software específica para a plataforma 
Arduino que permite a comunicação com módulos XBee da DigiInternational. Esses módulos 
XBee são dispositivos de comunicação sem fio amplamente utilizados em projetos de IoT 
(Internet das Coisas), automação e outros sistemas que exigem comunicação sem fio confiável. 
29 
A biblioteca "Xbee.h" simplifica a integração dos módulos XBee em projetos Arduino, 
fornecendo funções e métodos que facilitam a configuração e o uso desses módulos para envio 
e coleta de dados sem fio. Ela permite que os desenvolvedores configurem os parâmetros dos 
módulos XBee, como ID da rede, endereço do destino, taxa de transmissão e outros detalhes de 
comunicação. 
Aqui estão algumas das principais funcionalidades que a biblioteca "Xbee.h" pode 
oferecer: 
1. Configuração de parâmetros dos módulos XBee. 
2. Envio de dados para outros módulos XBee na mesma rede. 
3. Recebimento de dados de outros módulos XBee. 
4. Tratamento de erros de comunicação. 
5. Suporte para diferentes modos de operação dos módulos XBee. 
6. Facilidade de descoberta de dispositivos na rede. 
7. Funções para adicionar e remover dispositivos da rede. 
8. Essa biblioteca é uma ferramenta útil para simplificar o desenvolvimento de projetos 
que envolvem comunicação sem fio usando módulos XBee em conjunto com a plataforma 
Arduino. Ela se torna mais fácil para os programadores configurarem e interagirem com esses 
módulos, permitindo que se concentrem na lógica de seus projetos em vez de lidar diretamente 
com a complexidade da comunicação sem. 
Aqui estão alguns exemplos de comandos e funções que podem ser usados ao programar 
o Arduino para se comunicar com módulos XBee usando a biblioteca "Xbee.h" ou outras 
bibliotecas relevantes: 
Aqui estão alguns exemplos de comando. 
 
Inicialização da Biblioteca: 
cpp 
Copiar código 
#include 
XBeexbee; 
30 
Configuração da Comunicação Serial: 
cpp 
Copiar código 
voidsetup() { 
Serial.begin(9600); // Inicializa a comunicação serial com o Arduino. 
xbee. 
xbee 
begin(Serial); // Inicializa a comunicação com o módulo XBee. 
} 
Envio de Dados: 
cpp 
Copiar código 
voidsendDataToXBee(const char *data) { 
ZBTxRequestzbTx; 
zbTx. 
ZBTxRequestzbTx; 
zbTx.set 
ZBTxRequestzbTx; 
zbTx 
ZBTxRequestzbTx; 
ZBTxRequestzbTx 
 ZBT 
 Z 
setPayload(data); 
XBeeResponse response = xbee.send(zbTx); 
if (response.getStatus() == XBEE_SUCCESS) { 
31 
Serial. 
 Serial 
println("Dados enviados com sucesso!"); 
 } else { 
Serial.println("Erro ao enviar dados para o XBee."); 
 } 
} 
Recebimento de Dados: 
cpp 
Copiar código 
voidloop() { 
xbee. 
xbee 
readPacket(); // Lê um pacote recebido 
if (xbee.getResponse().isAvailable()) { 
 
if (xbee.getResponse().getApiId() == ZB_RX_RESPONSE) { 
ZBRxResponsezbRx; 
xbee. 
ZBRxResponsezbRx; 
 x 
 
ZBRx 
getResponse().getZBRxResponse(zbRx); 
Serial.print("Dados recebidos: "); 
 Serial. 
32 
Serial.println 
 
 Serial 
println(zbRx.getData()); 
 } 
 } 
} 
Configuração do Módulo XBee: 
cpp 
Copiarcódigo 
voidconfigureXBee() { 
AtCommandRequestatRequest = 
AtCommandRequestatRequest 
AtCommandRequest("MY", 0x01); 
AtCommandResponseatResponse; 
xbee.send(atRequest); 
if (xbee.readPacket(5000)) { // Aguarda a resposta por até 5 segundos 
if (xbee.getResponse().getApiId() == AT_COMMAND_RESPONSE) { 
xbee. 
xbee 
getResponse().getAtCommandResponse(atResponse); 
if (atResponse.isOk()) { 
Serial.println("Módulo XBee configurado com sucesso."); 
 } 
 } 
else { 
33 
Serial.println("Erro na configuração do módulo XBee."); 
 } 
 } 
 } 
} 
 } 
 } 
Estes são exemplos básicos para envio. 
4.8 Zigbee 
Zigbee é um protocolo sem fio muito usado em dispositivos, principalmente pela 
facilidade de transmitir pequenos pacotes de dados com baixo consumo de energia.Dessa 
forma,os dispositivos podem ser usados por meses sem a necessidade de recarregar ou troca 
de bateria. 
Para facilitar o entendimento, o Zigbee é como se fosse uma rede Wireless, até porque ele 
opera no mesmo tipo de frequência. A diferença é que o Zigbee fica sendo uma rede exclusiva 
para os dispositivos de automação. 
 
4.8.1 Zigbee Aliance 
 
Zigbee Aliance é uma aliança sem fins lucrativos entre cerca 400 empresas de 
tecnologias formadas em 2002, e sua sede emDavis, Califórnia. A razão por trás dessa aliança 
é a promoção da interoperabilidade de produtos sem fio de baixa potência. 
Até o momento, a Zigbee Aliance lançou três gerações de padrões: Zigbee 1.0 (2004), 
Zigbee2.0 (2007) e Zigbee 3.0 (2014). Zigbee 3.0 é versão padrão mais recente e abrangente, 
oferecendo melhorias significativas em relação às versões anteriores em relação a segurança, 
alcance, taxa de dados e consumo de energia. 
O objetivo da Zigbee Aliance de permitir controle e informações digitais confiáveis, 
acessíveis e energeticamente eficientes para o uso industrial e comercial destaca a 
consideração que foi dada ao seu desenvolvimento. Em outras palavras, a Zigbee Aliance 
desenvolve especificações para tecnologias sem fio que operam em rede. 
34 
4.8.2 Módulos Zigbee 
 
 Um módulo Zigbee é um componente eletrônico que permite a comunicação sem 
fios entre dispositivos através do protocolo Zigbee. Inclui uma antena e um chip de 
comunicação Zigbee, e é geralmente projetado para ser integrado em outros dispositivos 
como sensores, atuadores e dispositivos de automação residencial. Os módulos Zigbee 
permitem esses dispositivos comunicarem entre si e com outros dispositivos fora da 
rede Zigbee, como smartphones e computadores, através de um gateway Zigbee, sua 
capacidade de fornecer comunicação segura, eficiente em termos de energia e confiável o torna 
uma escolha preferencial para muitas aplicações 
 
4.8.3 Módulo X-Bee Pro S3 
 
O módulo XBee S3B é um módulo sem fio que usa a tecnologia ZigBee para se 
comunicar com dispositivos como um microcontrolador através de uma porta serial, o que 
permite que o dispositivo seja conectado a uma rede ZigBee muito rapidamente. 
Os módulos XBee S3B trabalham na frequência de 900MHz e são capazes de realizar 
conexões ponto a ponto e redes ponto a multiponto. Projetado para extensões de longo alcance, 
o XBeeS3B é ideal para soluções onde a penetração de RF e a distância absoluta de transmissão 
são de extrema importância para na aplicação. É um equipamento de fácil instalação, sem 
necessidade de configuração ou desenvolvimento adicional. 
 
Figura 11- Imagem módulo XBeeS3B 
 
Fonte:https://br.mouser.com/ 
 
35 
Com características principais XBee S3B pode receber comandos AT, tem um consumo 
de corrente 20 vezes menor que outros módulos. Sua topologia de redes é multiponto e trabalha 
em 900MHz para operação de faixa estendida. Seu alcance em zona urbana podendo chegar a 
600 metros e em local aberto isso pode estender-se até 20km com antena de alto ganho. Possui 
um baixo consumo de energia e pode trabalhar com vários tipos de antenas. Observe a tabela 1 
abaixo. 
 
Tabela 1- DATOS TÉCNICOSMÓDULOXBEEPROS3 
Característica XBeePROS3 
VoltagemDC 2.1V-3.6V 
Corrente de Transmissão 215/2.4mA(@3.3V) 
Frequência 900/929MHz 
Antena PCB,Integrada,RPSMA 
Firmware ZNet2.5,ZB(ZigBee) 
I/ODigitais 15 
ADC(Entradas Analógicas) 4 de10 bits 
SaídasPWM 2 
Sensibilidade de recepção -110 /101dBm 
Potência de Transmissão Superiora24dBm(250mW) 
Velocidade 10 /200 Kbps 
Alcance da linha de Visão 370m 
Topologia Digimesh, Repetidor, Ponto a Ponto, Ponto a Multiponto 
Fonte:https://br.mouser.com/new/digi-international/digi-xbee-pro-xsc-s3-s3b-modules/ 
 
4.8.4 Protocolo Zigbee - Norma IEEE 802.15.4 
 IEEE (Instituto de Engenheiros Elétricos e Eletrônicos) é uma organização 
profissional sem fins lucrativos, que tem como objetivo promover o desenvolvimento 
tecnológico em benefício da sociedade. Para tal, são realizadas variadíssimas palestras, 
conferências e atividades, para além de serem produzidas normas e publicações, que auxiliam 
na padronização de diversas tecnologias relacionadas. 
O padrão IEEE 802 foi projetado para fornecer especificações para as camadas físicas 
e de controle de acesso de redes sem fio. O padrão se aplica a vários tipos de redes, incluindo 
802.15. observe a figura 12. 
36 
 
Figura 12 - Norma IEEE 802.15.4 
 
Fonte:https://embarcados.com.br/padrao-ieee-802-15-4/ 
 
O padrão de rede definido para a norma WPAN 802.15 é de uma área pessoal sem fios, 
onde se prevê a ligação entre dispositivos distanciados até 300 metros. O padrão 802.15 existe 
para garantir as especificações de redes pessoais com baixa potência e custo reduzido. Esta 
norma define alguns tipos de rede, dentre elas a IEEE 802.15.4 
IEEE 802.15.4 e uma rede de complexidade muito reduzida que funciona com débitos 
binários baixos. Esta característica permite um consumo reduzido permitindo que a bateria dure 
bastantes meses ou anos. As redes 802.15.4 podem ser utilizadas em dispositivos ZigBee com 
alcance máximo de 300 metros. O protocolo IEEE 802.15.4 foi projetado para fornecer rádio e 
MAC protocolos que permitem ao designer se concentrar nas aplicações e nos clientes precisa. 
 
O ZigBee é uma arquitetura desenvolvida sobre o modelo de pilha de referência IEEE 802.15.4 
e aproveita ao máximo seu poderoso rádio físico camada. IEEE 802.15.4 e ZigBee Alliance 
37 
continuam trabalhando em estreita colaboração para garantir uma solução integrada e completa 
para o mercado especialmente para sensores aplicativos baseados em rede. ZigBee fornece 
serviços como segurança, descoberta, criação de perfil e assim por diante para as duas camadas 
especificadas pelo grupo IEEE, camada Física e camada MAC. 
A camada física faz a comunicação com o meio de transmissão físico e ela tem a 
responsabilidade de ativação e desativação do transceptor de rádio, detectar a energia do canal, 
indicar a qualidade do link para pacotes recebido, seleção da frequência do canal, bem como 
transmitir e recepção de dados. 
A camada MAC provê mecanismo para enviar e receber dados da camada superior e 
inferior, a sua responsabilidade é por gerar sinais sinalizadores (Beacon) de rede, isso no caso 
de um dispositivo ser um coordenador. Também permitir a associação e desassociação PAN, 
permite a segurança dos dispositivos, empregar o mecanismo CSMA-CA para o acesso ao canal 
e fornecer um link confiável entre as duas entidades pares MAC 
IEEE 802.15.4 foi projetado para ser simples para dispositivos de baixo consumo de 
energia e redes sem fio leves. Esses dispositivos normalmente dependem de bateria de longa 
duração mensuráveis em anos, mas não reivindicam nenhum alto rendimento e devem não deve 
ser usado neste campo. 
Como já foi dito a rede IEEE 802.15.4 pode ser desenvolvida em topologia estrela, ponto a 
ponto ou malha. 
 
Figura 13 - Topologia de rede usada IEEE 802.15.4 
 
Fonte: https://www.researchgate.net/figure/ 
38 
 
- Estrela: A comunicação se dará entre os dispositivos e o coordenador central; 
- Árvore: Temos os dispositivos de função reduzida (DFR) conectados ou ao coordenador da 
rede ou a outros dispositivos de função completa (DFC), chamado de roteador. 
- Malha: Há uma maior conectividade entre todos os nós, sendo um deles obrigatoriamente o 
coordenador da rede. Os dispositivos estão ligados a DFC que tem a função de rotear os 
tráfegos. A vantagem dessa topologia é a criação de rotas alternativas entre os DFR e o 
coordenador dando maior confiabilidade na entrega dos quadros. Essa topologia é usada quando 
se deseja estender o alcance da rede. O protocolo pode operar em dois modos: com ou sem 
sinais sinalizadores: 
Com Sinais sinalizadores o coordenador manda um trem de sinais sinalizadores que 
permite os outros nós da rede a sincronizar suas comunicações. Um sinal sinalizador também 
contém informações sobre os dados pendentes para os diferentes nós da rede. Dois sinais 
consecutivos marcam o início e o final de um super-quadro, que possuem 16 intervalos de 
tempo (CAP) que podem ser usados pelos nós para se comunicar pela rede. Durante esses 
intervalos os nós podem tentar se comunicar usando CSMA-CA e um tempo de inatividade. 
Sem Sinais sinalizadores o coordenador não transmite sinais sinalizadores em umintervalo regular, a comunicação é assíncrona. Um dispositivo se comunica com o coordenador 
apenas quando ele precisa, isso permite redução do consumo de energia. Para saber quando 
existe dado pendente para um nó, o nó precisa verificar com o coordenador. 
 
 
4.8.6 Frame de Dados 
 
O protocolo ZigBee possui dois tipos de comunicação: a comunicação API e a do tipo 
AT. 
A do tipo AT é o modo transparente de transmissão, ou seja, tudo que é colocado na 
porta Din de um módulo, é transmitido pela sua antena, e recebido pelo Dout do outro 
dispositivo. 
39 
A comunicação do tipo API, é complexa e poderosa, quando comparada com a do tipo 
AT. O Apllication Programming Interface requer que a comunicação com o modulo seja feita 
através de frames estruturados de uma forma especifica (figura 14). 
 
Figura 14 – Frames para comunicação de API 
 
Fonte: ALBACORE, 2010 
 
O frame é formado por um byte de Start, dois de Length, o qual contém o comprimento 
de todos os bytes, ele próprio e o Checksun, o frame date, que é dividido entre API identifier, 
Frame ID, AT command e parameter, e por último Checksun. A tabela 2 mostra os tipos de 
comandos possíveis para os frames de transmissão. 
O primeiro da lista, AT command, é utilizado quando se quer enviar ao módulo local 
conectado no computador um comando do tipo AT, como, por exemplo, a alteração ou leitura 
de algum parâmetro. Para que se faça o mesmo, envio de comandos AT só que para nós remotos, 
utiliza-se o Remote Command Request, o qual envia comandos para o nós especificado através 
dos endereços de 64bits e 16bits que cada um possui na rede. 
Outro comando muito utilizado é o Zigbee Transmit Request, a partir do qual qualquer 
dado pode ser enviado de um nó a outro, como por exemplo, uma mensagem de texto. Os 
comandos podem ser acompanhados ou não por parâmetros. 
 
 
 
 
 
 
40 
Tabela 2 – API Identifiers 
 
Fonte: DIGI, 2010 
 
O checksum é calculado somando todos os bytes, do bloco considerado Frame Data, 
pegando os 8btis menos significativos e os subtraindo de 0xFF. Para conferir o CS, somam-se 
todos os bytes do frame data e caso o resultado seja 0xFF o frame está correto. 
 
4.8.7 Topologia de Rede 
Segundo Streeton e Stanfield (2005), a especificação do ZigBee permite que três 
topologias de rede diferentes possam ser implantadas (figura 13), dependendo da aplicação. 
São elas: Star (Estrela), Cluster tree (Arvore) e Mesh (Malha). 
A Topologia Estrela é um dispositivo que atua como coordenador da PAN, o qual se encarrega 
de toda a comunicação em um dado canal de rádio. O coordenador da PAN deve ser capaz de 
se comunicar com todos os dispositivos da rede. Essa funcionalidade é existente em um 
dispositivo de funções completas (FFD), é implantado usando uma pilha de software de 
aproximadamente 30Kbytes. O coordenador PAN deve estar em modo de recepção quando ele 
não estiver transmitindo. Essa unidade provavelmente irá consumir muita potência para permitir 
operação com bateria, e provavelmente deverá ter uma fonte principal de alimentação. 
41 
A Topologia Arvore é formada apenas com a modificação da topologia estrela, onde um ou 
mais dos RFDs conectados ao coordenador da PAN é substituído por um FFD, e destes FFDs, 
mais RFDs ou FFDs podem ser conectados. Essa alteração pode ser usada para aumentar a 
cobertura geográfica da rede. 
A topologia malha é uma configuração existe muita conectividade de uma das FFDs, 
pois ela está atuando como o coordenador da PAn, com todas as outras FFDs participantes da 
rede. Elas também podem participar da rede, mas estarão conectadas apenas ao seu FFD pai, e 
não participam do roteamento. 
A principal vantagem dessa topologia é a confiança e rendimento da rede provido 
através do amplo número de caminhos. 
O programa X-CTU foi desenvolvido pelo fabricante do rádio XBee, nele os parâmetros 
de configuração são divididos em grupo, como endereçamento, rede, segurança, interface de 
RF, interface serial, comandos de E/S, diagnostico, comandos de dormência e comandos de 
execução, e podem ser configurados tanto pelo modo API quanto pelo modo AT. 
No presente trabalho optamos pelo modo API, baseado no envio e recepção de quadro 
de dados, especificando como comandos, respostas de comandos e mensagens sobre o estado 
de funcionamento do modulo são enviados e recebidos, permitindo um aumento na 
escalabilidade da rede. Comandos AT também podem ser enviados e recebidos através do modo 
API, permitindo a coexistência dos dois modos em uma rede. 
Além das configurações o programa X-CTU inclui ferramentas como Range Test, para 
testar a conexão entre os módulos, Terminal, utilizado para verificar a recepção dos dados na 
porta serial e interagir com o modulo no modo AT e também Modem Configuration, onde são 
realizadas as configurações dos parâmetros do modem, atualização e escolha de firmware, do 
conjunto de funções do modulo (roteador, nó de sensor ou coordenador) e salvar e recuperar 
esses parâmetros em arquivo. 
 
5 MATERIAIS E MÉTODOS 
 
Este capítulo é dedicado ao caminho percorrido para a realização do trabalho, Severino (2002) 
aponta que a metodologia é a preparação metódica e planejada de um trabalho cientifico, 
compreendendo uma sequência de etapas: 
42 
• determinação do tema – problema do trabalho; 
• levantamento da bibliografia referente ao tema proposto; 
• leitura e documentação dessa bibliografia após a seleção; 
• construção lógica do trabalho; 
• redação do texto. 
A construção lógica do trabalho é o arranjo encadeado de raciocínios com embasamento 
teóricos obtidos através de pesquisas e aulas, adicionada à experiência profissional. 
 
5.1 Testes de Alcance e Determinação dos locais dos módulos zigbee 
 
Tendo estudado os módulos Zigbee, verificamos que comercialmente temos diversos 
tipos e modelos, assim como alcances diferentes. Como a distância entre a caixa d’água 
e a bomba é de cerca de 1.05km, conforme mostrado no mapa da figura 15, foi buscado 
um modulo com distancia maior que 1km, ainda que usando uma rede MESH, 
teríamosvárias rotas possíveis, e ainda que algum dos roteadores desse defeito, mais rotas 
tornaria a rede mais robusta. 
 
Figura 15 - Alcance Estimado entre as Unidades 
 
Fonte:GoogleMap
s 
 
Dentre os módulos disponíveis no mercado, através do site XBEE STORE 
(XBEESTORE,2023),encontramos o seguinte modulo que atendia nossas necessidades. 
 
Módulo DigiXbee-PRO DigiMesh 900HP - Conector RPSMA - Extended-Range 
43 
Principaiscaracterísticas: 
Frequência deTransm.:900MHzISM 
Potência de Transm.:250mW(+24 dBm) 
Sensibilidade do receptor: -101dBm 
Throughput:200 Kbps 
Alcance Máximo estimado: até 14 Km (ou até 45 Km com antena de alto ganho) 
Topologias de rede:DigiMesh,P-to-P,P-to-M,Peer-to-Peer 
FHSS(SoftwareSelectableChannels) 
Conector/antena:Wire,U.FLeRPSMSA 
 
Como o alcance máximo estimado é de 14Km, muito superior a 1Km, ele semostrou 
o indicado para o projeto. Algumas unidades foram compradas para fazer testes de 
desempenho e alcance. 
 
Para isso foi feito um teste de intensidade de sinal, deixando um modulo Zigbee, 
alimentado por uma bateria de 9V, na caixa d’água e depois em outros locais para 
medição, e um modulo Zigbee móvel conectado com um modulo arduino e um Display 
de LCD, que ficava monitorando o nível de sinal através do comando AT DB (DIGI, 
2010). 
Como o nível de sinal máximo é de -40dBm, começamos a medir os sinais nos 
posicionando em alguns pontos em Aramar e verificando o nível de sinal. 
A tabela 3 mostra os locais identificados por letras e seus respetivos níveis de sinal em 
dBm, levando em consideração a existência de obstáculos naturais (Mata, Desnível de 
Terreno, Barrancos), e artificiais (Prédios e Construções). 
 
O mapa da figura 16 mostra os pontos escolhidos para teste de nível de sinal. 
 
 
 
 
 
 
 
44 
Figura16 – Pontos de Testes 
 
Fonte:GoogleMap
sTabela3-Valores em dBm 
Pontos A B C D E F G H I 
A xx -40 -70 -70 -65 -40 -90 -- -- 
B -40 xx -80 -60 -40 -40 -- -- -- 
C -70 -80 xx -40 -45 -75 -75 -55 -85 
D -70 -60 -40 xx -40 -40 -70 -65 -- 
E -65 -40 -45 -40 xx -40 -75 -85 -- 
F -40 -40 -75 -40 -40 xx -- -- -- 
G -90 -- -75 -70 -75 -- xx -65 -75 
H -- -- -55 -65 -85 -- -65 xx -55 
I -- -- -85 -- -- -- -75 -55 xx 
Fonte: Elaborado pelo autor 
 
 
Com esses valores, podemos ver que tem alguns pontos com intensidade de sinal 
fraco ou inexistente em relação aos demais pontos, como é o caso do ponto G. Assim 
temos os pontos principais A; F; I que são indispensáveis, onde ficam a caixa d’água, 
bomba d’água e supervisão.A fim deter uma rede on de podemos ter um nível de sinal 
bom, admitimos os pontos B (próximo ao A), C (Intermediário), H (melhor resultado em 
relação ao ponto I), e um ponto redundante E. 
Dessa forma temos os pontos F configurado como coordenador, B, C, E, H 
45 
configurados como roteadores, e os pontos A e I como endpoint. No entanto, para uma 
futura ampliação da rede, os pontos A e I serão configurados como roteadores. Rota 
prevista: 
A para B ->-40dBm 
B para E ->-40dBm 
E para C->-45dBm 
C para H->-55dBm 
H para I->-55dBm 
Rota alternativa entre A e C ->-70bBm, que apesar de mais fraco o sinal, ainda 
tem a rota formada, que pode ser usada caso os módulos B e E fiquem inoperantes. 
A Rota para o ponto F,é somente entre F -> B com-40dB m e ou entre A e F,que 
temos mesmos -40dBm de nível de sinal. 
O fato de ter sido colocado os pontos B e F próximos é que o ponto B ficaria em 
uma sala de monitoramento da manutenção,e o ponto F em um local de visada direta 
para o ponto A, resultando em uma eficiência melhor para a rede. Os demais pontos, B, 
E, C possuem uma visada direta entre eles, facilitando um nível de sinal maior. Já entre 
o ponto C e H possui um obstáculo artificial entre eles e o ponto H e I possui um 
obstáculo natural entre eles. 
Uma vezes colhidos os pontos, podemos seguir para o programa dos pontos A e I. 
 
5.2 Programação dos Módulos Arduino 
 
A programação do arduino deve ser feita na plataforma de programação Scktech do 
próprio arduino, utilizando a linguagem C. 
Basicamente o sistema possui apenas 3 arduinos no sistema e 7 módulos zigbee. 
Um dos módulos arduino deverá receber um sinal digital proveniente de um contato de 
rele do sensor de nível da caixa d’água, que indicara que a bomba d’água deve ser 
acionada. 
O modulo arduino deverá enviar um comando de acionamento para a bomba. já no 
acionamento da bomba d’água, outro arduino receberá o comando e ligará um rele que 
acionara a bomba d’água. 
O diagrama de blocos do sistema é mostra dona figura 17. 
 
 
46 
Figura 17-Diagrama de Blocos do Sistema 
Fonte: Elaborado pelo Autor 
 
 
O programa da caixa d'água, deve iniciar buscando o endereço MAC através do 
comando DN e o nome do modulo da Bomba, que é definido na parametrização do 
modulo zigbee. Uma vez tendo a resposta do endereço MAC do modulo, é possível enviar 
o comando AT para o Arduino da bomba acionar a bomba. Também, através do comando 
DN, é buscado o endereço MAC do modulo Zigbee coordenador para via comando AT 
47 
enviar um aviso de bomba ligada ou bomba desligada. 
O fluxograma do programa do modulo arduino da caixa dagua é apresentado na 
figura 18, e o fluxograma do programa do modulo arduino da bomba é apresentado na 
figura 19. 
 
Figura 18 - Fluxograma do Módulo Caixa D'agua 
Fluxograma do Modulo da Caixa D'água
Inicio
Inicializa 
Bibliotecas
Inicializa 
Variaveis
Configura 
Parametros
Envia 
comando DN 
de busca
Recebeu 
Endereço?
Salva 
Endereço
Entrada 
Digital foi 
Acionada?
Escreve 
Comando de 
Acionamento 
da bomba
A
A
Entrada Digital 
foi desligada?
Envia 
comando para 
o endereço 
salvo
Escreve 
comando de 
Desligamento 
da bomba
Envia 
comando para 
o endereço 
salvo
N
S
S
N
S
N
 
Fonte:Elaborado pelo Autor 
48 
 
Figura 19 - Fluxograma do Módulo da Bomba D'agua 
Fluxograma do Modulo da Bomba D'água
Inicio
Inicializa 
Bibliotecas
Inicializa 
Variaveis
Configura 
Parametros
Recebeu 
Comando?
Liga 
Bomba?
Desliga 
Bomba?
Liga a Bomba
Desliga a 
Bomba
N
S
N
N
S
S
 
Fonte:Elaborado pelo Autor 
 
O arduino do módulo coordenador, tem a função de verificar o status da rede,se 
algum módulo Zigbee está com problema. Assim ele fica em uma rotina de busca dos 
módulos existentes para verificar se há resposta. Em caso de resposta, ele aciona; 
A saída digital correspondente ao módulo ligando um led verde,e se depois de 
alguns segundos, se não ocorrer a resposta ele aciona uma saída digital para ligar um led 
vermelho correspondente ao módulo com problema. 
Uma vez verificado um módulo, independente do retorno, o programa muda para 
o módulo seguinte, e fica fazendo essa varredura de forma cíclica. O fluxograma desse 
modulo arduino é apresentado nafigura 20. 
49 
Figura 20 - Fluxograma do Módulo Monitor 
 
Fonte: Elaborado pelo Autor 
50 
 
 
5.2.1 Módulo Bomba D’água 
 
 
A codificação do modulo começa definido tags para os pinos de IO 8 e 13, declarado 
duas variáveis do tipo Inteira longa sem sinal e incluído a biblioteca XBee.h, responsável pela 
comunicação entre o arduino e o módulo Zigbee. 
#defineRele_18 
#defineLed13 
unsigned long int endereco_central_h, 
endereco_central_l;#include 
 
Na próxima parte do código, é inicializada a biblioteca XBee, e definido parâmetros 
para as variáveis internas da biblioteca: ZBRxResponse (definição para receber dados normais), 
AtCommandResponse (definição para receber resposta decomando), 
RemoteAtCommandResponse (definição para receber resposta de comando remoto) 
 
XBeexbee =XBee(); 
ZBRxResponserx=ZBRxResponse(); 
AtCommandResponseatResponse = 
AtCommandResponse();RemoteAtCommandResponseremoteAtResp
onse= 
RemoteAtCommandResponse(); 
 
 
Prosseguindo no código , a subrotinasetup(), onde é definido o modo de operação dos 
pinos de IO que serão usados como OUTPUT (saída), a inicializaçãoda porta UART (serial por 
hardware), e defino como desligadas as saídas digitais (LOW) que serão usadas. 
 
voidsetup(){ 
pinMode(Rele_1, 
OUTPUT);pinMode(Led, 
OUTPUT);Serial.begin(9600);
xbee.begin(Serial);digitalWrite
(Rele_1,LOW);digitalWrite(Le
d,LOW); 
} 
 
 
 
A subrotinaloop() é a rotina principal do arduino. Nela é iniciada a verificação de 
51 
recebimento de pacote xbee.readPacket(), posteriomente é recebido a resposta e verificado se é 
uma resposta valida ZB_RX_RESPONSE. Em seguida é declarada a variável auxiliar 
recebe_dados e feita a separação das informações de dados do pacote recebido. Uma vez 
recebido os dados,é comparado se o comando recebido é LIGA, fazendo com que a saídas 
digitais sejam ligadasHIGH) ou se o comando recebido é DESL fazendo com que as saídas 
digitais sejam desligadas(LOW). Como a saída Rele_1 vai ser ligada a um módulo rele externo, 
o mesmo pode acionar a contatora ja existente no painel para ligar e desligar a bomba d'água, 
conforme os comandos LIGA e DESL 
 
void loop() 
{xbee.readPacket(); 
if(xbee.getResponse().isAvailable()){ 
if (xbee.getResponse().getApiId() == ZB_RX_RESPONSE) 
{Stringrecebe_dados; 
xbee.getResponse().getZBRxResponse(rx);for(i
nti=0;i

Mais conteúdos dessa disciplina