You are on page 1of 12

142

Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

Sistema para monitoramento de vibraes utilizando Arduino


Marco Antonio da Silva1
Alessandro Basaglia Carvalho1
Jean Cosme Garrido1
Marcos Antonio Estremote2
Resumo:
Este artigo aborda o uso da plataforma Arduino no desenvolvimento de uma soluo para monitoramento remoto
de vibraes. O Arduino obtm informaes do sensor (acelermetro e giroscpio) de forma remota e acessado
via interface SERIAL (porta USB) atravs de um programa que centraliza o monitoramento e gravao dos
dados obtidos. A comunicao entre Cliente e Servidor ocorre atravs de uma rede sem fio utilizando o rdio
NRF24L01. Para a implementao da soluo foram utilizados as ferramentas: Visual Basic.Net, banco de dados
MySQL e rdio comunicador, 2.4 GHz, modelo NRF24L01.
Palavras-chave: Arduino. Monitoramento. Vibraes. Microcontrolador. Software.

1 Introduo
Com o avano da tecnologia, os aparelhos eletrnicos ficaram mais inteligentes, com
mais recursos, necessitando cada vez mais se comunicarem entre si. Com isso a comunicao
paralela perdeu espao devido dificuldade em se estender barramentos paralelos a grandes
distncias.
Houve ento a necessidade de se utilizar o barramento serial e com isso vrios tipos
diferentes de protocolos foram desenvolvidos.
Segundo Deshmukh (2011), atualmente comum o uso de microcontroladores no
controle de vrios processos. Um microcontrolador um sistema microprocessador
encapsulado em um nico chip, com memrias, clock e perifricos mais limitados que um
computador. O uso desses circuitos integrados no somente reduz custo da automao como
tambm propicia mais flexibilidade. Dentre as plataformas de desenvolvimento que utilizam
microcontroladores, o Arduino tem ganhado um grande destaque.
Arduino uma plataforma de prototipagem aberta baseada em hardware e software
flexveis e de fcil utilizao segundo Banzi, (2011). O ambiente Arduino foi desenvolvido
para ser fcil para iniciantes que no possuem experincia com desenvolvimento de software
ou eletrnica (MARGOLIS, 2011). Neste contexto, este artigo apresenta uma soluo para
monitorar vibraes de estruturas usando a arquitetura Arduino. O prottipo desenvolvido
1

Alunos do curso de Engenharia Civil Faculdades Integradas Rui Barbosa (FIRB) Andradina-SP
Professor do curso de Engenharia Civil Faculdades Integradas Rui Barbosa (FIRB). E-mail:
estremot@gmail.com
2

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

143
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

ser responsvel por controlar as vibraes atravs de um programa desenvolvido pelo grupo.
O prottipo desenvolvido ser responsvel por obter os dados das vibraes, trat-los e
armazen-los.

2 Objetivos
Nesta seo so apresentados os objetivos deste trabalho:
2.1 Objetivo Geral
O objetivo geral do trabalho propor uma soluo com uso de hardware de baixo custo,
para monitorar vibraes em estruturas, de forma remota, armazenando-os em uma base de
dados que possa ser acessada pela web.
2.2 Objetivos Especficos
Os objetivos especficos so apresentar as vantagens da arquitetura Arduino e expor o
funcionamento da soluo proposta.
2.3 Justificativa
O trabalho se justifica por propor uma soluo de baixo custo, flexvel e prtica para o
monitoramento. Segundo Mcroberts (2011) o uso da plataforma Arduino tem como maior
vantagem a facilidade de sua utilizao. Outro aspecto favorvel ao uso do Arduino a
grande comunidade de pessoas que compartilham cdigos e diagramas de seus projetos para
que mais desenvolvedores copiem, modifiquem ou utilizem parte de suas ideias disseminando
ainda mais o uso da plataforma.
3 Soluo proposta
A proposta foi criar um sistema composto de Software e Hardware de baixo custo e
alta flexibilidade de uso para monitoramento e coleta de dados de vibrao em estruturas e
equipamentos (figura 1). O projeto ento foi dividido em duas partes: um mdulo transmissor
composto de sensor, microcontrolador e rdio transmissor com a finalidade de adquirir as
informaes e transmit-la para o segundo mdulo (receptor) composto por radio receptor,
microcontrolador e dispositivo de comunicao serial (USB), que sero detalhados a seguir.

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

144
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

Figura 1: Arquitetura do projeto.

Fonte: elaborado pelos autores

3.1 Mdulo transmissor


3.1.1 Hardware
Como funcionamento bsico podemos descrever que o sensor MPU6050 captar as
variaes de acelerao dos 3 eixos (x, y e z) atravs do componente acelermetro e tambm a
variao angular de cada eixo atravs do componente giroscpio.
Essas informaes so ento repassadas ao microcontrolador por comunicao IC, que
as formatar em um pacote e ento o enviar ao rdio transmissor atravs de uma
comunicao SPI, para que este pacote seja transmitido at o mdulo receptor.
Tabela 1 - Mapeamento de pinos entre sensor MPU6050 e Arduino e Radio NRF24L01+.
MPU-6050

ARDUINO

NRF24L01+

Pino

Funo

Pino

Pino

Funo

VCC

+5VCC

GND

GND

SCL

28

DAS

27

XDA

No Conectado

XLC

No Conectado

ADO

No Conectado

INT

No Conectado
GND

GND

+3,3VCC

+3,3VCC

CE

10

CSN

13

SCK

12

MISO

11

MOSI

No Conectado

IRQ

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

145
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

O Arduino (figura 2) possui pinos especficos responsveis


pela comunicao SPI e IC. A tabela 1 mostra como
mapeamos os pinos do sensor MPU6050 (figura 2) e do rdio
transmissor NRF24L01 (figura 3) com os pinos do Arduino.
Para alimentar o circuito utilizamos uma bateria com

Figura 2 - Arduino

duas clulas de 3,6v em srie somando-se 7,2V, que foi


retirada de uma bateria de rdio VHF porttil que
estava sem uso e em perfeitas condies.
Figura 2: NRF24L01

Como pode ser


observado

na

documentao tcnica
o

sensor

MPU6050

Figura 3 - MPU6050

possui uma resoluo


de 16 Bits na leitura. Isto significa que so possveis 65536
representaes de valores. Levando em considerao que ele
mede acelerao e variao angular com valores para mais e
para menos ento se utiliza 32768 representaes para valores
positivos e 32768 para valores negativos.
Nosso sensor foi configurado para medir acelerao de 2 vezes a gravidade (poderia ser
para at 16, conforme documentao tcnica) isso torna o sensor mais sensvel a pequenas
variaes.
A acelerao da gravidade que para nossa cidade (Andradina - SP), segundo o IBGE
Instituto Brasileiro de Geografia e Estatstica atravs do Relatrio de Estao Geodsica na
medio de 2010, de 9,7854862 m/s. Multiplicando por 2 e dividindo por 32768
representaes temos que o sensor pode nos informar variaes com escala de 0,00059 m/s,
ao passo que em 16g essas variaes passariam para 0,0048 m/s.
O relatrio citado pode ser visualizado atravs do site no seguinte link:
http://www.ibge.gov.br/home/geociencias/geodesia/bdgpesq_googlemaps.php

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

146
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

3.1.2 O software
Para comunicarmos com o sensor e obtermos os valores, ns tnhamos duas opes:
desenvolver nossa prpria biblioteca baseada nas regras do protocolo IC e das informaes
dos documentos tcnicos do sensor ou utilizarmos uma biblioteca j pronta, dentre as vrias
disponveis gratuitamente pela internet.
Como o objetivo do projeto no diretamente o estudo dos protocolos envolvidos
optamos por utilizar a biblioteca desenvolvida por Jeff Rowberg e que pode ser baixada
gratuitamente do site: https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050.
Para acessar ento as informaes do sensor utilizando essa biblioteca, foi necessrio
acrescentar as seguintes linhas no cdigo do transmissor:
Na seo de declarao de variveis:
/*-----( Bibliotecas Necessrias )-----*/
/*---(PARA O MPU6050)---*/
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
/*----------------------------------------------*/
MPU6050 sensor;

//Objeto que representa o sensor MPU6050.

No procedimento Setup:
Wire.begin();

// inicia I2C bus.

sensor.initialize();

// inicia sensor MPU6050

SensorCon = sensor.testConnection(); //Testa a conexo com o sensor MPU6050.

No procedimento Loop:
//Obtm os dados do sensor MPU6050.
sensor.getMotion6(&dados[0], &dados[1], &dados[2], &dados[3], &dados[4], &dados[5]); //

Armazena as leituras do sensor MPU6050


O procedimento getMotion6 faz a leitura dos 3 eixos do acelermetro e dos 3 eixos
do giroscpio. Essas informaes so armazenadas em uma varivel do tipo vetor de 6
posies para que seja possvel envi-las para o rdio transmissor.

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

147
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

Para o uso do radio transmissor tambm utilizamos uma biblioteca pronta que foi
desenvolvida

por

(maniacbug)

que

pode

ser

baixada

gratuitamente

do

site:

https://github.com/maniacbug/RF24.
Para que o rdio funcione como transmissor e envie as leituras feitas pelo sensor foram
acrescentadas as seguintes linhas no cdigo do transmissor.

Na seo de declarao de variveis:


/*-----( Bibliotecas Necessrias )-----*/
/*---------(PARA O NRF24L01+)----------*/
#include "SPI.h"
#include "RF24.h"
#include "nRF24L01.h"
/*-------------------------------------*/
*-----( Declarao de Constantes e definio de Pinos )-----*/
#define CE_PIN 9
#define CSN_PIN 10

// (Chip Enable) Pino de controle Tx/Rx.


// (Chip Select NOT) SPI sinal.

const uint64_t pipe = 0xE8E8F0F0E1LL; // Define o Endereo do transmissor (pipe).


RF24 radio(CE_PIN,CSN_PIN); //Objeto que representa o radio NRF24LF01+.

No procedimento Setup:
radio.begin();

// inicia comunicao via radio

radio.setDataRate(RF24_2MBPS);

// Define a velocidade de comunicao do rdio.

radio.setPALevel(RF24_PA_MAX);

// Define o nvel de potncia da transmisso.

radio.setChannel(70); // Define o canal de comunicao.


radio.enableDynamicPayloads();
radio.openWritingPipe(pipe);

// Habilita o controle de pacotes automtico.

// Define o radio como transmissor

No procedimento Loop:
// Envia os dados via rdio NRF24L01+.
radio.write(dados, sizeof(dados));

3.2 O mdulo receptor


3.2.1 O Hardware
Podemos descrever que os dados envidados pelo mdulo transmissor sero captados
pelo radio NRF24L01+ e lidos pelo Arduino. Essas informaes ento sero repassadas a um

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

148
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

terminal de computador por comunicao serial (RS232) atravs de uma emulao de uma
porta COM pela porta USB.
A velocidade mxima de comunicao entre os dois rdios de 2 mbps e pode atingir
em condies favorveis 10m de distncia.
A Tabela 2 mostra como ligar os pinos do radio receptor com o Arduino.

Tabela 2: Mapeamento de pinos entre rdio NRF24L01+ e Arduino.


ARDUINO

NRF24L01+

Pino

Pino

Funo

GND

GND

+3,3VCC

+3,3VCC

CE

10

CSN

13

SCK

12

MISO

11

MOSI

No Conectado

IRQ

Fonte: elaborado pelos autores

3.2.2 O Software
Assim como no mdulo transmissor usamos a mesma biblioteca para acessar os dados
que chegam pelo rdio receptor.
As linhas de cdigos so praticamente as mesmas com exceo de algumas linhas que
devem ser substitudas, pois um rdio configurado somente como transmissor e outro
somente como receptor.
No procedimento Setup substituir radio.openWritingPipe(pipe); por:
radio.openReadingPipe(1,pipe); // Define o rdio como receptor.

E acrescentar :
radio.startListening(); // Inicia a escuta para aguardar recebimento dos dados.

Para o recebimento dos dados no procedimento Loop deve-se usar um lao de repetio
at que uma varivel de controle seja marcada como verdadeiro quando da recepo total do
pacote enviado for concluda.

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

149
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

// executa enquanto no obter toda a sequncia de dados


while (!concluido)
{
concluido = radio.read( dados, sizeof(dados) ); // obtm os dados
}

Aps montagem dos dois mdulos com a utilizao de dois kits do Arduino e
protoboads e desenvolvidos os softwares do transmissor e receptor, optamos por desenvolver
nossas prprias placas de circuito para eliminarmos alguns problemas que surgiram devido a
mau contato entre os diversos fios de conexo entre os dispositivos e a protoboard.
Pesquisando descobrimos o nmero mnimo de componentes necessrios ao perfeito
funcionamento de um microcontrolador da Atmel o Atmega328pu com o bootloader do
Arduino. Para isso usamos como referncia o projeto da placa BlackBoard da Robocore
que pode ser baixado gratuitamente do site: http://www.embarcados.com.br/placa-arduinoda-robocore-blackboard/
Para desenvolvemos o nosso projeto, com o esquema mostrado na figura 5, utilizamos
como ferramenta gratuita, um programa que auxilia a montagem de projetos em placas de
circuito impresso universais, chamado BlackBoard circuit designer que pode ser baixado
pelo site: http://blackboard.serverpool.org
A figura 6 mostra a placa de circuito vista de cima com os componentes eletrnicos. A
mesma placa foi utilizada para os dois mdulos (transmissor e receptor) o que diferenciou foi
somente o software carregado em cada microcontrolador.
O Esquema de soldagem das trilhas pode ser observado na figura 7 que mostra a vista
de baixo da placa de circuito impresso.

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

150
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

Figura 3 - Esquema da placa Transmissor e Receptor.

Figura 4 - Placa Circuito impresso vista por cima.

Figura 5 - Placa Circuito Impresso vista por baixo.

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

151
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

Para o recebimento e tratamento das informaes recebidas no terminal de computador


atravs da porta USB, fez-se necessrio o desenvolvimento de um programa que ficaria
encarregado de tempos em tempos escutar a porta de comunicao, ler os dados format-los
para m/s (acelermetro) e /s (giroscpio) mostr-los em uma interface amigvel e tambm
grav-los em uma base de dados para que as informaes possam ser acessadas de outro
lugar, Visual Studio Express 2013 for Windows que pode ser baixado gratuitamente do
site:
http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx
Utilizamos a linguagem basic atravs do Visual Basic.net por ser de fcil utilizao.
Para mostrar os dados em forma de grfico utilizamos um componente adicional da
Microsoft chamado MICROSOFT CHART CONTROLS FOR MICROSOFT .NET FRAMEWORK
3.5

que

pode

ser

baixado

do

site:

http://www.microsoft.com/pt-

br/download/details.aspx?id=14422
Ainda para visualizao de cada eixo utilizamos outro componente adicional no Visual
Studio que gera um medidor analgico (gauge), que pode ser baixado gratuitamente pelo
site: http://www.codeproject.com/Articles/17559/A-fast-and-performing-gauge
Os dados ento so gravados em uma base de dados MYSQL para que se possa prover
acesso remoto a eles e manter um backup para posterior estudo.
A tela do programa mostrada na figura 8.
Figura 6 - Tela principal do programa de monitoramento de dados.

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

152
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

Cdigo das principais funes do programa:


Procedimento que ocorre toda vez que chega dados pela porta serial:
Private

Sub

com_DataReceived(sender

As

Object,

As

SerialDataReceivedEventArgs)

Handles

com.DataReceived
Try
If com.IsOpen Then
BUFFER = com.ReadLine().Trim 'l os dados e armazena na varivel
readbuffer = True
End If
Catch ex As Exception
End Try
End Sub

Funo de mapeamento do valor do sensor acelermetro para m/s:


Public Function map(Valor As Long) As Double
Return (Valor - Config.Sensor.Minimo) * (Config.Aceleracao.Maximo - Config.Aceleracao.Minimo) /
(Config.Sensor.Maximo - Config.Sensor.Minimo) + Config.Aceleracao.Minimo
End Function

Funo de mapeamento do valor do sensor giroscpio para /s:


Public Function mapGraus(valor As Long) As Double
Return (valor - Config.Sensor.Minimo) * (Config.Graus.Maximo

- Config.Graus.Minimo) /

(Config.Sensor.Maximo - Config.Sensor.Minimo) + Config.Graus.Minimo


End Function

Aps ler os dados para a varivel BUFFER seu contedo separado em variveis
individuais para cada eixo e sensor e aps o mapeamento dos valores pelas funes de
mapeamento, estes dados so mostrados no grfico e nos mostradores analgicos e quando
solicitado pelo usurio eles so gravados na base de dados.
Consideraes finais
O sistema mostrou-se eficaz ao que foi proposto e as tecnologias utilizadas
possibilitam o desenvolvimento de uma soluo de baixo custo, uma vez que foi utilizado o
microcontrolador Arduno e tecnologia de software gratuito disponvel para uso.
O prottipo tambm se mostrou muito flexvel para anlises vibratrias de diversos
tipos de estruturas e equipamentos.
Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

153
Marco A. da Silva; Alessandro B. Carvalho; Jean C. Garrido; Marcos Antonio Estremote

Referncias
AGUIAR, Ygor Quadros de; MACIEL, Braian Konzgen; SOARES, Luciane Baldassari Universidade Federal de Rio Grande FURG, Barramento Serial IC e SPI, Disponvel em:
<http://www.ebah.com.br/content/ABAAAe7xoAL/barramento-serial-spi-i-c>,Acesso em 25
de junho de 2014.
ARDUINO .cc, nRF24L01. Disponvel em: <http:///playground.arduino.cc/interfacing
WithHardware / Nrf24L01> Acesso em: 28 de abril de 2014.
BANZI, M. Primeiros passos com o Arduino. So Paulo: Novatec, 2011.
DESHMUKH, A. V. Microcontrollers Theory And Applications, 2011.
EVANS, Martin; NOBLE, Joshua; HOCHENBAUM, Jordan: Arduino em Ao. So Paulo:
Novatec, 2013.
INVENSENSE, MPU-6000 and MPU-6050: Product Specification, Revision 3.1 Disponvel
em: <http://invensense.com/mems/gyro/documents/PS-MPU-6000A-00v3.4.pdf> Acesso em:
12 de abril de 2014.
LABORATRIO DE GARAGEM, Breakout MPU-6050 - Acelermetro & Giroscpio.
Disponvel em: <http://www.labdegaragem.org/loja/triple-axis-accelerometer-gyro-breakoutmpu-6050.html> Acesso em: 10 de abril de 2014.
MANIACBURG; Biblioteca RF24 v1. Disponvel em: <http://maniacbug. github.io
/RF24/index.html>. Acesso em: 10 de abril de 2014.
MARGOLIS, M. Arduino Cookbook. Sebastopol, CA, USA: O'RilleyMedia, 2011, p1.
MCROBERTS, M. Arduino Bsico. So Paulo: Novatec, 2011.
PROTOCOLO SPI; Disponvel em: <https://cld.pt/dl/download/03fa4282-3f3f-4231-89072e21bfed8207/N3E%20%20SmartBoost/4%C2%BA%20Ano/1%C2%BA%20semestre/Siste
mas%20Embebidos/Prof.%20Rui%20Rocha/Projectos/protocolo_spi_v2.pdf>, Acesso em: 23
de junho de 2014.
SACCO, Francesco. Comunicao SPI. Disponvel
com.br/spi-parte-1/>. Acesso em: 25 de junho de 2014.

em:

<http://www.embarcados.

WIKIPEDIA
Serial
Peripheral
Interface
Bus,
Disponvel
em:
<http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus>. Acesso em: 23 de junho de
2014.
WIKIPEDIA. Arduino. Disponvel em: <http://pt.wikipedia.org/wiki/Arduino>. Acesso em:
15 de maio de 2014.
WIKISPACES.
Nrf24L01-2.4GHz-HowTo.
Disponvel
em:
<http://arduino-info
.wikispaces.com/Nrf24L01-2.4GHz-HowTo> Acesso em: 28 de abril de 2014.

Revista InterAtividade, Andradina, SP, v.2, n. 2, 2 sem. 2014

You might also like