IoT e Makers

13 mar, 2019

Usando o Swift para exibir a temperatura e a umidade de um módulo DHT11

Publicidade

Para este passo a passo precisaremos de um dos componentes abaixo:

  • Raspberry Pi 2+
  • Raspberry Pi 3 Model B
  • Model DHT11
  • DHT22

Instalando as dependências

Para usar os binários pré-construídos fornecidos, você precisará instalar as seguintes dependências:

sudo apt-get install clang libicu-dev libcurl4-nss-dev

Iniciando

Faça o download da última versão do SwiftyGPIO compatível com sua placa. Veja a tabela “Build Swift on ARM prebuilt-binaries” e baixe.

wget https://github.com/uraimo/buildSwiftOnARM/releases/download/4.2.3/swift-4.2.3-RPi23-RaspbianStretch.tgz

Descompacte os arquivos para uma pasta de sua escolha. Por exemplo: /home/michel/swift-4.2.3/. Após descompactar, execute um export path:

export PATH=/home/michel/swift-4.2.3/usr/bin:"${PATH}" 

Teste se está tudo certo com o comando:

swift --version 

A saída no terminal deve ser algo como isso:

Swift version 4.2.3 (swift-4.2.3-RELEASE) 
Target: armv7-unknown-linux-gnueabihf

Clone e rode o projeto.

$ git clone https://github.com/micheltlutz/DHT-SwiftyGPIO 
$ cd DHT-SwiftyGPIO
$ swift run  Waiting output should be like this: 
Temperatura: 25.0 Umidate: 41.0

Arquivos de referência

O DHT.swift foi baseado no projeto dhtxx, mas com modificações, e a DHT class init permite selecionar o sensor e o tipo de conversão de dados que, por padrão, é Celcius.

Enums Types

swift public enum SupportedSensor { 
    case dht11, dht22 
} 

public enum ConversionType { 
    case Fahrenheit, Celsius 
} 


init(pin: GPIO, for sensor: SupportedSensor, conversion: ConversionType = .Celsius) { } 

... 

Exemplo criando objeto para um módulo DHT11.

let dht = DHT(pin: gpios[.P4]!, for: .dht11) 

Problemas conhecidos

Erros de leitura iniciais ocorrem devido a falha de pulso inicial. Normalmente você terá boa leitura nos 60 segundos após rodar o programa.

Veja o projeto no GitHub:

Espero que este projeto ajude a começar com a criação de projetos de IoT com o Swift.

Até a próxima!