Site icon Embarcados – Sua fonte de informações sobre Sistemas Embarcados

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

Medições meteorológicas com BeagleBone Black

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:

* 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.

Circuito esquemático

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

Figura 1 – Circuito esquemático

Sendo, no OLED:

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.

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 128×64 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.

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:

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:

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).

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.

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

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

Figura 7 – Montagem
Figura 8 – Montagem

Referências