esp8266GeralProgramação

BMP180 com ESP8266 usando Sming e Wemos D1 Mini

Vou começar exclarecendo algo que poucas pessoas ainda tem dúvida, mas tem. Existe a board Wemos D1 Mini que vem com o firmware X. Mas o firmware pode tranquilamente ser trocado por qualquer outro. Particularmente, não gosto de programar em Lua, apesar de já ter escrito uns 2 artigos com exemplos, mas atualmente dei uma pausa no firmware MicroPython e estou voltando a utilizar Sming. O Sming é um framework para C++ que oferece uma interface de programação muito semelhante à programação na IDE de programação do Arduino, mas tem suas vantagens, uma vez que ele foi construido especificamente para ESP8266 e é otimizado. Se desejar experimentar esse firmware, e fácil. Você pode seguir esses tutoriais:



Sming framework para ESP8266

Acionando relé com Sming

Conectar NetBeans ao container Sming

Dicas rápidas com Sming e ESP8266

Primeiros passos com Sming dentro de um container

ESP8266 a lá Arduino dentro de um container Sming

O fato de eu estar utilizando o Wemos D1 Mini não influi em nada em relação a qualquer outro módulo ESP8266, desde o ESP-01, todos devem funcionar.

A maior vantagem que vejo em utilizar o Sming é a simplicidade de programa e os recursos disponibilizados. Para ter uma ideia, o Sming é compatível com a grande maioria das bibliotecas desenvolvidas para Arduino, de modo que você apenas precisa incluir a biblioteca em seu projeto para utilizá-la. É o caso do BMP180, que sou franco em dizer; é terrívelmente complicado escrever from scratch o código para esse sensor. Para não dizer que é mentira, aqui está o meu código em Python para utilização do BMP180 com Raspberry Pi.

Estou escrevendo esse artigo porque estou com um projeto muito, mas muito interessante, só que não posso dar detalhes porque assim como o projeto desse outro artigo, está na linha de visada para um produto comercial que estou desenvolvendo em parceria com a Ye Vesta Home Brewing. Mas vamos colocar pra funcionar aqui o BMP180 de maneira fácil.

Onde comprar

O módulo é bem baratinho e recomendo a compra na AutoCore Robótica, através desse link.

Primeiro passo





Eu utilizo o NetBeans (no link supracitado você encontrará o modo de utilizá-lo para programar o ESP8266) e é por uma razão que conquista qualquer programador; o auto-complete. É um verdadeiro pé na popa ter que escrever cada byte da chamada de uma função de um objeto. Eu gosto de iniciar a escrita e usar Ctrl+Space para escolher entre os recursos. E em algumas vezes, ver o que mais o objeto oferece de recursos, que muitas vezes nos passam despercebidos porque só utilizamos o essencial. Então, considerando que você está tomando o mesmo caminho que eu, inicie fazendo uma cópia completa do diretório do BMP180 que está dentro do container,utilizando SCP para isso:

Wiring

É fundamental que você saiba quais são os pinos de qualquer board com ESP8266. No caso do Wemos D1 Mini, esse é o pinout:

WeMos D1 mini
WeMos D1 mini

Siga então os passos descritos no artigo lá mais em cima, iniciando um novo projeto a partir dos fontes existentes. Feito isso, abra o diretório app na coluna esquerda da IDE NetBeans e clique duas vezes sobre application.cpp. Pronto, agora basta fazer o upload, mas se quiser converter a saida de Pascal para PSI, adicione essas duas linhas logo após a linha de include do header BMP180:

E lá no código, Após o print da variável currentPressure, adicione essa linha:

Agora você pode utilizar essa variável como desejar. O último passo; repare que quando você executar esse código, serão impressos os valores apenas uma vez, porque o código está disposto para funcionar dentro da função loop() tradicionalmente utilizado no Arduino. Porém, se você fizer um loop infinito dentro da função init, certamente receberá reset por WDT devido ao travamento das tarefas de background. Para evitar esse problema, mude o nome da função init para, por exemplo, bmp180CB. Logo abaixo dessa função, crie um novo init e inclua apenas isso (copiando e apagando do init antigo):

E na primeira linha antes da função bmp180CB, crie o timer:

Agora copie o código para o container (clicando com o botão direito sobre o projeto e “Upload to Sming docker”) e mande gravar o firmware clicando na seta verde. Agora abra um terminal serial (eu utilizo o GTKterm, use o de sua preferência) à 115200 na ttyUSB0. Você verá uma atualização a cada 2 segundos. Simples ou não?

Porque a conversão para PSI?

PSI é utilizado normalmente para equipamentos pneumáticos e incomum para medir pressão atmosférica. Mas no caso do meu projeto, a pressão que pretendo medir é de um recipiente X, por isso preciso que seja em PSI.

Um “detalhe” importante é que a medição é feita em Pascal, resultando algo como 91975 aqui em São Paulo. Para facilitar, a medição pode ser feita em hPa, que é o hectoPascal, resultando em um valor menor, uma vez que esse valor é divido por 10². A partir de então a pressão em PSI passa a fazer sentido. Nesse caso, troque a linha da variável currentPressure para:

Adicionando aquela conversão para PSI, coloque um print mais abaixo:

E se for pra converter hPa para bar?

Bem, isso é mais fácil ainda. 1 bar é igual 1Pa/10^5. Como já mudamos Pascal para hectoPascal, agora é só fazer hPa/10^3. Coloque isso no código:

E o resultado deverá parecer com isso:

hPa, PSI, bar
hPa, PSI, bar

Rápido e simples, agora é só transformar em projeto! O código final ficou assim:

 

Vá até o final da página e veja se os artigos relacionados lhe interessam.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do bit Ao Byte – https://www.facebook.com/groups/dobitaobyte/

Projetos Arduino e Eletrônica – https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 BR – https://www.facebook.com/groups/ESP8266BR/

Próximo post a caminho!

 

One comment

Comments are closed.

%d blogueiros gostam disto: