• Nenhum resultado encontrado

2.3 Microcontroladores e Computadores

2.3.4 Módulo ESP

Com o aumento da demanda por sistemas para Internet das Coisas (IoT), diversas empresas desenvolveram módulos para explorar mais esta demanda. O módulo de maior destaque é o ESP8266, originalmente fabricado pela Espressif, que possui baixíssimo custo e um tamanho muito reduzido.

Figura 2.12: ESP8266 Modelo ESP-01 fabricado pela Espressif.

O ESP8266 pode ser utilizado em diversas aplicações, como domótica, redes mesh, controle sem fio industrial, câmeras IP, redes de sensores, dispositivos vestíveis etc. O modelo ESP-01 é ilustrado na Figura 2.12.

2.3 Microcontroladores e Computadores 24 Além disso, por sua facilidade de uso, tamanho reduzido e preço baixo pode ser utilizado em ADAS para oferecer uma interface Wi-Fi, permitindo inclusive a conexão com dispositivos do condutor e passageiros, desta forma, até realizando uma combinação de IoT com o ADAS.

Esse módulo foi originalmente criado pela Espressif, é um conjunto de alto desempenho, alta interação wireless, projetado para espaços pequenos com restrição de consumo de energia para plataformas móveis. Ele fornece a capacidade de incorporar Wi-Fi dentro de outros siste- mas, podendo funcionar como aplicativo independente, com menor custo e com um mínimo de espaço. O diagrama de blocos do ESP8266 é ilustrado na Figura 2.13.

Figura 2.13: Diagrama de bloco do ESP8266.

O módulo possui uma grande facilidade para se integrar a outras soluções, podendo utilizar comunicação serial UART e, até, Wi-Fi (Espressif Systems IOT Team, 2015). O ESP8266 foi criado

em diversas variantes por sua fabricante. Oficialmente são 11 ESP, todos muito pequenos com o objetivo principal de serem pontes Serial-Wi-Fi, recebendo dados serial (UART) e interagindo com a rede Wi-Fi, podendo ter mais funcionalidades, como operarem em modo standalone, assim funcionando como microcontroladores Wi-Fi. Os módulos são numerados de ESP-01 a ESP-11, como ilustrado na Figura 2.14.

Algumas características desse módulo são mostradas na Tabela 2.4.

A Figura 2.15 ilustra o modelo ESP8266 Thing, fabricado pela SparkFun. O Thing foi desenvolvido para suprir algumas necessidades que o ESP8266 original carecia, assim ele vem equipado com carregador LiPo (Lithium-ion Polymer), fonte de alimentação e outros circuitos de apoio necessários (SPARKFUN, 2015).

2.3 Microcontroladores e Computadores 25

Figura 2.14: Variantes do ESP8266 fabricado pela Espressif.

2.3 Microcontroladores e Computadores 26 Tabela 2.4: Especificações técnicas do módulo ESP8266 (Fonte: Espressif Systems (2013)). Característica

Protocolo 802.11 b/g/n Wi-Fi Direct (P2P), soft-AP

Pilha de protocolo TCP/IP integrada

TR switch, balun, LNA e amplificador de potência integrados

PLL, reguladores, e unidades de gerenciamento de energia integrados Potência de saída de +19.5dBm no modo 802.11b

Sensor de temperatura integrado Suporte a diversas antenas

CPU de 32-bit de baixo consumo integrada que pode ser usada como processador de aplicações SDIO 2.0, SPI, UART

STBC, 1x1 MIMO, 2x1 MIMO A-MPDU e A-MSDU

Transmissão de pacotes em <2ms

Consumo em standby de <1.0mW (DTIM 3) 2.3.4.1 Hardware

O ESP8266 Thing é uma placa relativamente simples. Seus pinos são divididos em duas linhas paralelas. Os conectores USB e LiPo ficam no topo da placa para prover energia, tendo também um controle ON/OFF. Logo abaixo ficam vários leds para indicar, energia, carga e estado do circuito integrado. A visão geral dos principais componentes é ilustrada na Figura 2.16.

Figura 2.16: Visão geral dos principais componentes do módulo ESP8266 Thing (Fonte: SparkFun (2015)).

O módulo pode utilizar uma bateria de ion-lítio para o seu fornecimento energético (MUL- TILOGICASHOP, 2015), uma bateria é ilustrada na Figura 2.17.

2.3 Microcontroladores e Computadores 27

Figura 2.17: Exemplo de bateria para ESP8266.

isso pode-se utilizar um carregador USB LiPo (Lítio Polímero), como ilustrado na Figura 2.18.

Figura 2.18: Carregador de bateria para ESP8266 (Fonte: (SPARKFUN, 2016)).

Esse carregador também pode ser alimentado por uma fonte de 5v, com pino barrel jack. Mais detalhes sobre as especificações, entradas e saídas desse carregador podem ser visualiza- dos na Figura 2.19.

Figura 2.19: Especificações do carregador para ESP8266 (Fonte: (SPARKFUN, 2016)). Além disso, esse carregador pode ser customizado quanto à corrente de saída, essa e outras informações podem ser encontradas no site do fabricante4.

2.3 Microcontroladores e Computadores 28 2.3.4.2 Ambiente de Desenvolvimento

Para ligar o módulo é necessário o uso de uma bateria ou via USB e o desenvolvimento para o módulo ESP8266 pode ser feito utilizando a IDE do Arduíno, disponibilizada no website do Arduíno (http://arduino.cc), com o gerenciador de placa especifico para a ESP8266, disponível em https://github.com/esp8266/Arduino. Esse gerenciador funciona Windows, Mac OS, and Linux (32 and 64 bit).

A instalação do gerenciador é simples e segue os seguintes passos: • Instalar a IDE Arduíno.

• Iniciar a IDE Arduíno e abrir a opção Preferences window.

• Digite http://arduino.esp8266.com/stable/package_esp8266com_index.json no campo Ad- ditional Board Manager URLs. Caso tenha alguma url, apenas separe-as por vírgula. • Abra Boards Manager no menu Tools >Board e instale e marque esp8266.

Com o gerenciador instalado, torna-se possível o desenvolvimento utilizando a IDE do Arduíno. Necessitando marcar a opção SparkFun ESP8266 Thing, para desenvolver para o modelo da SparkFun, em Board no menu Tools.

Códigos de exemplo podem ser encontrados em https://github.com/esp8266/Arduino. Esses códigos podem ser compilados e enviados a ESP8266 com o uso de um conversor serial USB, como o Conversor FTDI Serial USB RS232.

2.3.4.3 Criação de Servidor Web e Webservice

Devida a possibilidade de incluir implementações no ESP8266 e de possuir Wi-Fi, podemos criar um Servidor Web e, assim, um Webservice. Um Web service é uma solução utilizada para integrar sistemas permitindo uma melhor comunicação entre aplicações diferentes. Com essa tecnologia é possível que novas aplicações podem interagir com aplicações já existentes, permitindo que sistemas de plataformas diferentes possam ser, de certa forma, compatíveis. Os Web services permitem o envio e recebimento de dados em diversos de formatos interoperáveis, como XML (eXtensible Markup Language)5, JSON (JavaScript Object Notation)6etc.

5XML é uma recomendação da W3C (World Wide Web Consortium) para gerar linguagens de marcação para

necessidades especiais.

6JSON (JavaScript Object Notation - Notação de Objetos JavaScript) é uma formatação leve de troca de dados.

2.3 Microcontroladores e Computadores 29 Antes de iniciar a criação do Web service, alguns componentes devem ser instalados. Pri- meiramente o ambiente Arduíno deve ser preparado para o desenvolvimento com o ESP8266, como mostrado anteriormente. Em seguida, para a leitura dos sensores que serão utilizados, al- gumas bibliotecas devem ser instaladas, na IDE do Arduíno, no diretório library, abaixo exem- plos de bibliotecas para os sensores do MinIMU-9 v3:

• Para a leitura dos dados do acelerômetro e magnetômetro utiliza-se a biblioteca disponível em https://github.com/ArthurAssuncao/lsm303-arduino, originalmente em https://github. com/pololu/lsm303-arduino.

• Para a leitura dos dados do giroscópio utiliza-se a biblioteca disponível em https://github. com/ArthurAssuncao/l3g-arduino, originalmente em https://github.com/pololu/l3g-arduino. Para a codificação do Web service, devemos primeiro criar um servidor web utilizando a classe WiFiServer com o uso do header ESP8266WiFi.h. O código do Algoritmo 2.1 ilustra um servidor web simples ouvindo na porta 80. Por padrão, o gerenciador de rede Wi-Fi do ESP8266 da SparkFUn cria a rede 192.168.4.0/255 e, assim, o módulo recebe o endereço IP 192.168.4.1.

Algoritmo 2.1: Exemplo de código de um servidor web para ESP8266 # include <ESP8266WiFi . h>

const char* s s i d = "seu -ssid";

const char* p a s s w o r d = "sua -senha";

// define a porta do servidor web

W i F i S e r v e r s e r v e r ( 8 0 ) ;

void s e t u p ( ) {

S e r i a l . b e g i n ( 1 1 5 2 0 0 ) ; d e l a y ( 1 0 ) ;

WiFi . b e g i n ( s s i d , p a s s w o r d ) ;

while ( WiFi . s t a t u s ( ) != WL_CONNECTED) {

d e l a y ( 5 0 0 ) ; } // Inicia o servidor s e r v e r . b e g i n ( ) ; } void l o o p ( ) {

// Checa se algum cliente conectou

W i F i C l i e n t c l i e n t = s e r v e r . a v a i l a b l e ( ) ;

if ( ! c l i e n t ) {

d e l a y ( 1 0 0 ) ;

2.3 Microcontroladores e Computadores 30

}

// Le a primeira linha da requisicao

S t r i n g r e q = c l i e n t . r e a d S t r i n g U n t i l (’\r’) ; c l i e n t . f l u s h ( ) ;

// Envia uma resposta ao cliente

c l i e n t . p r i n t ("HTTP /1.1␣200␣OK\r\nContent -Type:␣text/html\r\n

␣␣ ␣␣␣␣␣␣ \r\n<! DOCTYPE ␣HTML >\r\n<html >\r\ nMensagem ␣de␣resposta </html >\n") ; d e l a y ( 1 ) ;

// O cliente eh desconectado

// quando a funcao retornar e o objeto ’client ’ for destruido

}

Em seguida, com o servidor web funcionando, precisamos fornecer dados utilizando uma linguagem interoperável, como XML ou JSON. Dessa forma, basta alterarmos a string de res- posta do servidor web para uma resposta em notação JSON para que nosso servidor web passe a funcionar como um Web service simples. Dessa forma, o código do Algoritmo 2.2 ilustra um exemplo de Web service simples que retorna o objeto "{’webservice’: ’ok’}".

Algoritmo 2.2: Exemplo de código de um Web service para ESP8266 # include <ESP8266WiFi . h>

const char* s s i d = "seu -ssid";

const char* p a s s w o r d = "sua -senha";

// define a porta do servidor web

W i F i S e r v e r s e r v e r ( 8 0 ) ;

void s e t u p ( ) {

S e r i a l . b e g i n ( 1 1 5 2 0 0 ) ; d e l a y ( 1 0 ) ;

WiFi . b e g i n ( s s i d , p a s s w o r d ) ;

while ( WiFi . s t a t u s ( ) != WL_CONNECTED) {

d e l a y ( 5 0 0 ) ; } // Inicia o servidor s e r v e r . b e g i n ( ) ; } void l o o p ( ) {

// Checa se algum cliente conectou

W i F i C l i e n t c l i e n t = s e r v e r . a v a i l a b l e ( ) ;

if ( ! c l i e n t ) { d e l a y ( 1 0 0 ) ;

return;

}

// Le a primeira linha da requisicao

S t r i n g r e q = c l i e n t . r e a d S t r i n g U n t i l (’\r’) ; c l i e n t . f l u s h ( ) ;

// Cria a string de resposta em JSON

S t r i n g s = "HTTP /1.1␣200␣OK\r\n";

2.4 Sensores 31

s += "Content -Type:␣ application /json; charset =utf -8\r\n\r\n"; s += "{";

s += "’webservice ’:␣’ok’"; s += "}";

// Envia uma resposta ao cliente

c l i e n t . p r i n t ( s ) ; d e l a y ( 1 ) ;

// O cliente eh desconectado

// quando a funcao retornar e o objeto ’client ’ for destruido

}

Com o código do Web service implementado, resta apenas adequar o retorno ao que a aplicação necessita, como retornar a leitura de um acelerômetro. Para essas leituras, como em sistemas de auxílio à condução, precisamos obter os dados de algum domínio, como do volante, dos pedais ou de outros componentes da condução. Essa obtenção de dados é feita por meio de sensores, onde todos os dados necessários podem ser lidos e retornados à aplicação, permitindo, assim, que o sistema realize suas análises. Os sensores são apresentados de forma mais detalhada na próxima seção.

2.4 Sensores

Sensores são dispositivos que respondem a estímulos físicos/químicos de maneira especí- fica e mensurável analogicamente. Em uma definição mais ampla, sua finalidade é detectar eventos ou mudanças em seu ambiente e fornecer uma saída correspondente.

Essa saída pode ser de vários tipos, mas normalmente são sinais elétricos ou ópticos. Por exemplo, um termopar gera uma tensão conhecida, que é a saída, em resposta à temperatura am- biente. Enquanto termômetro de mercúrio, de vidro, converte temperatura medida na expansão e contração do líquido.

Os sensores são utilizados em objetos cotidianos, como botões sensíveis a toque em eleva- dores, pedais de carros, lâmpadas que mudam a luminosidade com base na luz ambiente, além de inúmeras aplicações que a maioria das pessoas não estão conscientes. Com o advento dos microcontroladores, o uso de sensores tem aumentado, além disso sensores analógicos como potenciômetros são ainda muito utilizados, como em aviões, carros, robôs.

Nas subseções a seguir, são apresentados os sensores inerciais, como acelerômetro e gi- roscópio, sensores analógicos, como o potenciômetro, a calibragem e filtragem de dados para alguns sensores e, por fim, o sensoriamento por visão computacional, com o uso de câmera de vídeo. E, após esta seção, é apresentado o Controle Estatístico de Processos, sendo o principal método aplicado aos dados gerados para o desenvolvimento dos métodos e sistemas propostos.

2.4 Sensores 32

Documentos relacionados