Medições meteorológicas com BeagleBone Black e display OLED

Figura 8 - Montagem
Figura 8 - Montagem

 

Este artigo mostrará como fazer uma BeagleBone Black interagir com um sensor DHT22 para medir os valores instantâneos de temperatura e umidade relativa. Além disso, as informações lidas do sensor serão exibidas em um display OLED (comunicando com a BeagleBone Black via I2C).

 

 

Materiais necessários

 

Para a reprodução deste projeto, são necessários os seguintes materiais e softwares:

  • Uma placa BeagleBone Black (utilizei a Rev. C)*;
  • Um sensor de temperatura e umidade DHT22;
  • Um display OLED 0.96" (modelo de comunicação I2C);
  • Terminal serial (sugestão: PuTTY)**.

 

* Foi utilizada a distribuição Debian 8.6 (Jessie). A imagem para instalação da distribuição na placa, bem como as outras suportadas na placa, pode ser baixada aqui.

** Para utilizar a BeagleBone Black via SSH pelo terminal serial, consulte este artigo.

 

 

Circuito esquemático

 

O circuito esquemático do projeto é exibido na figura 1.

 

Medições meteorológicas com BeagleBone Black - Circuito esquemático
Figura 1 - Circuito esquemático

 

Sendo, no OLED:

  • Fio lilás: SCL
  • Fio laranja: SDA

 

A alimentação da BeagleBone Black neste projeto pode ser feita tanto via USB quanto pela entrada de fonte DC 5V.

 

 

Considerações: I2C na BeagleBone Black

 

A BeagleBone Black possui três barramentos I2C: 0, 1 e 2. O barramento 0 (I2C-0) é reservado para comunicação do SoC com componentes da própria placa (HDMI e chip de gerenciamento de energia) e o barramento 1, aparentemente, tem uso reservado (pois não vem habilitado de fábrica para uso). Sendo assim, somente o barramento número 2 está completamente livre / disponível para acesso ao desenvolvedor, conforme mostrado na figura 2.

 

Medições meteorológicas com BeagleBone Black - Pinagem da BeagleBoneBlack (destaque para I2C2)
Figura 2 - Pinagem da BeagleBoneBlack (destaque para I2C2)

 

Desta forma, é possível comunicar a placa com dispositivos I2C através do bus 2 (I2C-2), permitindo assim o uso de muitos periféricos e sensores, tais como: acelerômetros, controladores LCD, displays OLED, memórias EEPROM, etc.

 

 

Display OLED 0.96"

 

O display OLED utilizado possui dimensão de 0.96", com resolução 128x64 pixels. Este display utiliza o controlador SSD1306. No mercado, há uma grande variedade de displays (resolução, dimensões e cores distintas, sendo mais comum entre os hobbistas e makers os modelos mostrados na figura 3.

 

Tipos mais comuns de displays OLED 0.96" destinado a hobbistas / makers
Figura 3 - Tipos mais comuns de displays OLED 0.96" destinado a hobbistas / makers

 

Dentre os grandes atrativos no uso destes tipos de displays estão:

  • Baixo consumo energético, uma vez que a tecnologia OLED não exige o uso e um backlight;
  • Boa resolução, permitindo até a exibição de pequenas fotos (binarizadas, devido à limitação de cores do display);
  • Comunicação I2C, o que permite comunicação com o display a 2 fios somente;
  • Independente do ângulo ao qual é olhado o display, sua visualização não é prejudicada ou impossibilitada (como ocorre em displays LCD e sete segmentos).

 

Quanto à comunicação I2C, estes modelos de display OLED 0.96" já contém resistores de pull-up. Portanto, para a comunicação basta ligar o SDA e SCL do display ao SDA e SCL da BeagleBone Black.

 

IMPORTANTE: apesar do endereço do display no barramento I2C vem indicado atrás dos mesmo (seja por uma seleção via jumper ou fixo), é altamente recomendável verificar o real endereço do display no barramento. Isso evita transtornos e perdas de tempo no desenvolvimento de aplicações com estes displays. 

 

Para esta verificação no Linux da BeagleBone Black há o comando i2cdetect. Este comando irá varrer o barramento I2C informado na chamada do comando, permitindo o usuário verificar quais endereços estão sendo usados (e, no caso deste display OLED, descobrir em qual endereço ele está). Para esta varredura no barramento 2 (I2C-2), com o circuito esquemático montado e ligado, utilize o comando da seguinte maneira:

 

 

O comando produzirá a seguinte resposta:

 

Varredura do barramento 2 da I2C. Em destaque, o endereço do display OLED
Figura 4 - Varredura do barramento 2 da I2C. Em destaque, o endereço do display OLED

 

Ou seja, conclui-se que o display OLED está no endereço 0x3c do barramento 2 da I2C.

 

 

Sensor DHT22

 

O sensor DHT22 (também conhecido como AM2302) é capaz de medir temperatura ambiente e umidade relativa do ar. Possui somente 4 terminais, sendo um dedicado à comunicação (que utiliza protocolo proprietário).

 

Sensor de temperatura e umidade relativa do ar DHT22
Figura 5 - Sensor de temperatura e umidade relativa do ar DHT22

 

Este sensor, assim como o display OLED 0.96", é muito popular entre os hobbistas e makers. Inclusive, já foi utilizado neste projeto aqui no portal Embarcados.

 

 

Projeto - Bibliotecas

 

Tanto o display OLED 0.96" (com controlador SSD1306) quanto o sensor DHT22 possuem bibliotecas suportadas pela Adafruit. São ótimas bibliotecas, disponíveis em várias linguagens. Neste projeto, irá ser utilizada a linguagem de programação Python, portanto as bibliotecas utilizadas estão disponíveis em:

 

 

Para maiores informações de como instalar as bibliotecas, consulte os seguintes sites: DHT Humidity Sensing on Raspberry Pi or Beaglebone Black with GDocs Logging e SSD1306 OLED Displays with Raspberry Pi and BeagleBone Black.

 

 

Projeto - Código-fonte e execução

 

O código-fonte do projeto é visto a seguir:

 

 

Salve o arquivo com o nome temp_oled.py e, para executar o programa, utilize o seguinte comando:

 

 

Observação: no Linux da BeagleBone Black, para acessar barramentos (SPI, I2C, etc.) é preciso que se faça como super usuário (por isso a execução é feita com sudo).

 

 

Resultado

 

Como resultado da execução, a tela do terminal irá exibir todas as leituras de temperatura e umidade relativa feitas. Observe a figura 6.

 

Execução do programa (terminal)
Figura 6 - Execução do programa (terminal)

 

E, o projeto montado, ficara conforme mostram as figuras 7 e 8.

 

Montagem
Figura 7 - Montagem
Montagem
Figura 8 - Montagem

 

 

Referências

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Pedro Bertoleti
Sou engenheiro eletricista formado pela Faculdade de Engenharia de Guaratinguetá (FEG - UNESP) e trabalho com desenvolvimento de sistemas embarcados em São Paulo capital. Curioso e viciado em tecnologia, sempre busco me aprimorar na área de eletrônica e programação, em especial em desenvolvimento de firmware (área que mais gosto de trabalhar e estudar).Para mais informações, acesse minha página no Facebook:https://www.facebook.com/pbertoleti

Deixe um comentário

1 Comentário em "Medições meteorológicas com BeagleBone Black e display OLED"

avatar
 
  Notificações  
recentes antigos mais votados
Notificar
Jonathan Gonzaga
Membro
JON9507

Fala Pedro, blz? Excelente artigo, muito bom. Deixa eu te perguntar, tem previsão pra abertura de turmas no e-Stude, no curso de Sistemas Embarcados Profissionais? Mandei e-mail para o Rafael a algum tempo, mas não obtive rerorno.