DHT Tiny Breakout para Raspberry Pi
HISTÓRIA
Introdução
O DHT11 e o DHT22 são sensores de temperatura e umidade populares devido à sua precisão a um custo muito baixo. Um problema com eles, no entanto, é que funcionam com um protocolo proprietário de um fio que requer temporização precisa. Esses sensores têm se mostrado difíceis de ler em placas com sistemas operacionais em tempo não real.
Há algum tempo, postei um artigo intitulado “ Sensor de temperatura DHT11 / DHT22 ”Demonstrando como usar o código de exemplo Microsoft C ++ de C # para ler esses sensores. A biblioteca conseguiu fazer uma leitura, mas tive que adicionar uma nova lógica de tentativa para torná-la mais confiável. Isso provou ser um sucesso para a maioria, mas algumas pessoas tiveram problemas para fazer isso funcionar de forma consistente.
Dado o nível de interesse em usar esses sensores no Raspberry Pi durante a execução do Windows 10 IoT Core, decidi criar uma segunda opção que fornece um método muito confiável de leitura desses sensores, mantendo um custo baixo.
Visão geral
A abordagem apresentada aqui é conectar o sensor DHT a um ATtiny85 barato e configurá-lo como um dispositivo escravo I2C. Isso é feito usando a biblioteca TinyWireS e criando um conjunto de registros que podem ser lidos e gravados para interagir com o dispositivo.
O dispositivo suporta as seguintes funções:
- Um intervalo de leitura configurável para especificar a freqüência de leitura do sensor DHT. O padrão é ler a cada 2 segundos.
- Um modo manual que desativa o intervalo e faz uma leitura sob demanda.
- Um limite de temperatura superior e inferior configurável que acionará o pino de interrupção quando a leitura da temperatura atual estiver acima ou abaixo do limite.
- Modo de salvamento da configuração que permite que as configurações definidas sejam restauradas na inicialização ou após uma redefinição.
- Redefinição da configuração, permitindo que a configuração salva seja redefinida para os valores padrão.
- Controle de energia do sensor que permite que a energia do sensor seja ativada e desativada para economizar energia.
- Endereço de dispositivo i2c programável. O endereço padrão deste dispositivo é 0x26, mas pode ser alterado por meio de um comando. O dispositivo se lembrará do endereço. Se redefinido, o endereço retornará a 0x26. A biblioteca C # também inclui código para pesquisar o dispositivo no barramento i2c, para que você não precise saber o endereço para se conectar.
- Seleção de modelo DHT programável. O firmware padrão é o DHT22, mas isso pode ser alterado enviando um comando para o dispositivo para usar um modelo diferente. O modelo é salvo para que, após cada reinicialização ou reinicialização, retenha o tipo de modelo a ser usado.
O código-fonte
Existem três conjuntos de código neste projeto. O firmware principal da placa é um esboço mestre do Arduino usado para testar e demonstrar a placa enquanto ela está conectada a um Arduino Uno e ao aplicativo Window 10 IoT Code que demonstra como usar o dispositivo do Raspberry Pi. Todo o código está disponível no repositório GitHub vinculado.
O dispositivo / circuito
O circuito é pequeno e usa apenas alguns componentes baratos. O ATtiny85 pode ser adquirido de vários fornecedores. Eu recomendo escolher alguns deles, pois eles têm muitos propósitos úteis.
O circuito tem um conector de seis pinos que permite que ele seja conectado a outro circuito ou diretamente ao Raspberry Pi. Os pinos são definidos da seguinte forma:
- GND -> Conecte-o ao aterramento em seu circuito ou ao pino de aterramento em seu Raspberry Pi.
- RST -> Este pino é usado para redefinir ou reinicializar o dispositivo. Este pino deve ser conectado a 5 V em operação normal. Para redefinir o dispositivo, acione um pulso BAIXO momentâneo neste pino.
- INT -> Este alfinete tem duas finalidades. Quando os limites são habilitados, este pino será ALTO sempre que um limite for excedido e BAIXO caso contrário. Ao usar o modo de economia de energia, este pino é usado para despertar o dispositivo, disparando um pulso alto momentâneo.
- SDA -> Linha I2C SDA.
- SCL -> Linha I2C SCL.
- 5V -> Fonte de alimentação de 5 V.
Há também um conector de dois pinos onde um jumper pode ser adicionado para habilitar ou removido para desabilitar o LED integrado.
Ao utilizar isso em um projeto maior, o circuito para o DHT Tiny pode ser fundido ou incorporado ao circuito existente do projeto. Nesse caso, os pinos do cabeçalho e o LED são opcionais.
O circuito também pode ser construído em uma placa separada e conectado ao seu Raspberry Pi com alguns fios ou um cabo de conexão.
Programando o ATtiny85
Carregue o esboço chamado DHT_Tiny_Breakout.ino no ATtiny85 usando seu programador AVR. Se você não tiver um programador, pode usar um Arduino Uno (ou placa semelhante). Dê uma olhada em um ou mais dos artigos listados abaixo para obter ajuda.
- Programando ATtiny85 com Arduino Uno no Hackster.io
- Workshop virtual:programe um ATTiny85 com Arduino
- Programando um ATtiny com Arduino 1.6 (ou 1.0)
- Programando um ATtiny com Arduino 0022
Eu uso o SparkFun Tiny AVR Programmer para carregar meu ATtiny85.
Estou executando meu chip a 16 MHz. Veja meu artigo intitulado “ ATtiny @ 16MHz ”Para obter instruções sobre como fazer isso.
Ao usar o ATtiny85, o esboço escravo requer o TinyWireS biblioteca a ser instalada na sua pasta de bibliotecas. Esta biblioteca pode ser baixada de https://github.com/rambo/TinyWire.
Controle o circuito
A primeira etapa é colocar o DHT Tiny instalado e funcionando em uma placa de ensaio. Usando uma placa de ensaio com metade do tamanho, construa o circuito seguindo os diagramas esquemáticos e de placa de ensaio incluídos no projeto.
Aqui estão algumas dicas para ajudar a tornar mais fácil:
- Construa o DHT Tiny em sua placa de ensaio e, em seguida, use outra placa de ensaio para a conexão entre o DHT Tiny e o Uno ou Raspberry Pi.
- O uso de pinos de cabeçalho é recomendado porque torna mais fácil conectar e desconectar o DHT Tiny como uma única unidade.
- Se você planeja usar os conectores macho removíveis padrão na placa de ensaio, será necessário ajustar o aro de plástico preto no centro dos pinos para que se encaixe na placa de ensaio (veja as imagens abaixo). Use um alicate de bico fino para fazer os ajustes.
- Se você tiver cabeçalhos masculinos de 0,1 pol. separáveis extra-longos, use-os em sua placa de ensaio. Fique com os cabeçotes de tamanho normal se você planeja soldar componentes em um PCB. Os extra longos não são recomendados para PCBs.
- Você precisará de fios de jumper fêmea-fêmea se usar os pinos do conector na placa de ensaio. Se você não os tiver, omita os pinos do conector e use fios de jumper macho-macho entre as duas placas.
- Mantenha os fios longe do chip o máximo possível para que seja mais fácil esticar os dedos e puxar o chip para programação.
Abaixo estão algumas imagens da versão breadboard do meu DHT Tiny.
Conectando o Arduino Uno
Se você está interessado em um teste rápido, uma demonstração ou está tendo problemas para fazer isso funcionar com o seu Raspberry Pi, você pode conectar o DHT Tiny a um Arduino Uno (ou dispositivo semelhante).
- Conecte o GND alfinete para o GND no Uno.
- Conecte o 5V pino no 5V no Uno.
- Conecte o RST fixar em D4 no Uno.
- Conecte o SDA fixar em A4 no Uno.
- Conecte o SCL fixar em A5 no Uno.
- Conecte o INT fixar em D3 no Uno e habilite o LED por meio do jumper.
Carregue e execute o esboço denominado DHT_Tiny_Master.ino . Este esboço exibirá a saída no Monitor serial .
Ao conectar o I2C entre as duas placas, é importante ter resistores pull-up nas linhas SDA e SCL. Neste circuito, existem dois 4,7 K Ω conectados entre os pinos e 5V.
Abaixo estão algumas imagens da placa de ensaio DHT Tiny conectada ao Arduino Uno.
Conectando-se ao Raspberry Pi
Se você está interessado em um teste rápido, uma demonstração ou está tendo problemas para fazer isso funcionar com o seu Raspberry Pi, você pode conectar o DHT Tiny a um Arduino Uno (ou dispositivo semelhante).
- Conecte o GND alfinete para o GND (pino 9) no Raspberry Pi 2/3.
- Conecte o 5V pino no 5V (pino 2) no Raspberry Pi 2/3.
- Conecte o RST fixar em GPIO4 (pino 7) no Raspberry Pi 2/3.
- Conecte o SDA fixar em SDA (pino 3) no Raspberry Pi 2/3.
- Conecte o SCL fixar em SCL (pino 5) no Raspberry Pi 2/3.
- Conecte o INT fixar em GPIO17 (pino 11) e ative o LED.
Ao conectar o I2C entre as duas placas, é importante ter resistores pull-up nas linhas SDA e SCL. Neste circuito, há dois 4,7 K Ω conectados entre os pinos e 3V3.
MUITO IMPORTANTE! A placa DHT Tiny será alimentada pelo pino 5V no Raspberry Pi, mas os resistores pull-up devem ser conectados ao pino 3V3 no Raspberry Pi (3V3 está nos pinos 1 e 17).
Abaixo estão algumas imagens da placa de ensaio DHT Tiny conectada ao Raspberry Pi 3.
Executando o aplicativo Windows 10
Obtenha o código do link do repositório GitHub na parte inferior do projeto e descompacte-o em seu computador. Abra o código-fonte do aplicativo universal no Visual Studio 2015 e implante-o no Raspberry Pi e inicie-o no console de administração ou execute-o no modo de depuração no Visual Studio.
Se esta é a primeira vez que você está executando o código do Visual Studio para um aplicativo Windows 10 IoT Core, dê uma olhada nestes artigos da Microsoft:
- Implantando um aplicativo com Visual Studio
- Portal de dispositivos Windows
Dê uma olhada no vídeo de demonstração abaixo para ver o aplicativo em execução em um Raspberry Pi 3 enquanto conectado ao DHT Tiny.
Destaques do aplicativo
O aplicativo UWP do Windows 10 é um aplicativo de demonstração que mostra todos os recursos do DHT Tiny. O código exibirá a temperatura atual, umidade e outros valores de registros do dispositivo. A IU também fornece uma maneira de alterar a configuração do dispositivo, incluindo o endereço do dispositivo.
Biblioteca DHT Tiny
O código de amostra usa uma biblioteca escrita para interagir com o DHT Tiny. Esta biblioteca está pronta para uso e pode ser incluída diretamente em todos os seus aplicativos.
Obtenha a biblioteca do NuGet
Se você não quiser incluir o projeto diretamente em seu aplicativo, basta baixar a biblioteca DHT Tiny do NuGet usando o comando mostrado abaixo. Abra o console do gerenciador de pacotes no Visual Studio e digite o comando.
PM> Pacote de instalação IoT.DhtTiny
Varredura do barramento i2c para o dispositivo
A biblioteca DHT Tiny inclui um método que pesquisa o barramento i2c para qualquer dispositivo DHT Tiny e retorna uma lista de endereços. Esta lista pode ser usada para inicializar um ou mais dos dispositivos encontrados. Isso é especialmente útil quando você altera o endereço do dispositivo, mas não consegue se lembrar de como definiu o endereço. Observe que o método de retorno de chamada é opcional.
// *** // *** Enumere os dispositivos DHT Tiny no barramento i2c.// *** IEnumerable address =await DhtTiny.FindAllDhtTinyAsync (this. FindAllDhtTinyCallback); // *** // *** Método de retorno de chamada // *** private void FindAllDhtTinyCallback (I2cScanEventArgs e) {int percentComplete =(int) ((double) e.CurrentIndex / (double) e.Total * 100,0d); this.Status =string.Format ("Localizando dispositivos [0x {0:X2}] [{1}%] [Found ={2:## 0}] ...", e.CurrentAddress, percentComplete, e.Items .Count ());}
Esquemas de DHT Tiny Breakout para Raspberry Pi
Demonstração de software
Este vídeo demonstra o aplicativo universal em execução em um Raspberry Pi 3 conectado ao DHT Tiny em uma placa de ensaio.
[VÍDEO EM BREVE]
Criação do dispositivo final
A maneira mais fácil e econômica de criar a placa é usar um protótipo de placa PCB, como a placa de pão de tamanho Trimestre Perma-Proto da Adafruit. A imagem abaixo mostra o breakout usando esta placa protótipo. Nota Usei uma dremel para retirar as seções do barramento de alimentação da placa.
Veja mais:DHT Tiny Breakout para Raspberry Pi
Processo de manufatura
- Monitoramento de temperatura no Raspberry Pi
- Estação meteorológica Raspberry Pi 2
- Sensores analógicos sem entradas analógicas no Raspberry Pi
- Sensor de alcance ultrassônico HC-SR04 no Raspberry Pi
- Os melhores acessórios para o seu Raspberry Pi
- Sensores analógicos no Raspberry Pi usando um MCP3008
- VISÃO:Para cegos
- Qwiic HAT para Raspberry Pi Hookup Guide
- Windows 10 IoT Core para Raspberry Pi 3 Modelo B +
- Construindo o Kit do Robô MonkMakes Raspberry Pi