- Materiais requisitados
- Introdução ao sensor de temperatura DS18B20
- Pré-requisitos
- Diagrama de circuito
- Instalando a biblioteca Adafruit LCD no Raspberry P
- Habilitando Interface One-Wire em Pi
- Saída / Trabalho
Raspberry Pi é conhecido por seu poder computacional e sua vasta aplicação no campo de IoT, Domótica, etc. No entanto, para qualquer sistema eletrônico interagir com o mundo real e obter informações sobre ele, o sistema deve usar sensores. Existem muitos tipos de sensores usados para este processo e o sensor necessário é selecionado com base no parâmetro a ser medido e sua aplicação. Neste tutorial, aprendemos a fazer a interface de um sensor de temperatura DS18B20 com o Raspberry Pi.
O DS18B20 é um sensor de temperatura amplamente usado, principalmente em locais onde ambientes operacionais adversos estão envolvidos, como indústrias químicas, fábricas de minas, etc. Este artigo falará sobre o sensor e como ele se destaca de outros sensores de temperatura e, finalmente, conectá-lo com Raspberry Pi e visualizar a temperatura valor no LCD 16x2.
Materiais requisitados
- Sensor de Temperatura DS18B20
- Raspberry Pi
- Visor LCD 16 * 2
- 10k trim pot
- 10k pull up resistor
- Tábua de pão
- Fios de conexão
Introdução ao sensor de temperatura DS18B20
O DS18B20 é um sensor de temperatura de três terminais disponível no pacote TO-92 (tipo transistor). É muito fácil de usar e requer apenas um componente externo para começar a funcionar. Também requer apenas um pino GPIO do MCU / MPU para se comunicar com ele. Um sensor de temperatura DS18B20 típico com seu nome de pino é mostrado abaixo.
Este sensor também está disponível em uma versão à prova d'água em que o sensor é coberto por um tubo cilíndrico de metal. Neste tutorial, usaremos o sensor do tipo transistor normal mostrado acima. O DS18B20 é um sensor de temperatura programável de 1 fio, o que significa que requer apenas o pino de dados para enviar as informações ao microcontrolador ou placas de microprocessador como o Raspberry Pi. Cada sensor possui um endereço exclusivo de 64 bits para ele, portanto, também é possível ter vários sensores conectados ao mesmo MCU / MPU, pois cada sensor pode ser endereçado individualmente no mesmo barramento de dados. A especificação do sensor é mostrada abaixo.
- Tensão de operação: 3-5V
- Faixa de medição: -55 ° C a + 125 ° C
- Precisão: ± 0,5 ° C
- Resolução: 9 a 12 bits
Agora que sabemos o suficiente sobre o sensor, vamos estabelecer uma interface com o Raspberry Pi.
Pré-requisitos
Presume-se que o seu Raspberry Pi já tenha um sistema operacional atualizado e seja capaz de se conectar à Internet. Caso contrário, siga o tutorial Introdução ao Raspberry Pi antes de continuar. Aqui, estamos usando Rasbian Jessie instalado Raspberry Pi 3.
Também presume-se que você tenha acesso ao seu pi por meio de janelas de terminal ou de outro aplicativo por meio do qual você possa escrever e executar programas em Python e usar a janela de terminal.
Diagrama de circuito
Como dissemos anteriormente neste tutorial, faremos a interface do sensor DS18B20 com Pi e exibiremos o valor da temperatura em uma tela LCD 16 * 2. Portanto, o sensor e o LCD devem ser conectados com Raspberry Pi como mostrado abaixo.
Siga o diagrama do circuito e faça a conexão de acordo. Tanto o LCD quanto o sensor DS18B20 funcionam com a ajuda de + 5V que é fornecido pelo pino de 5V do Raspberry pi. O LCD é feito para funcionar no modo de 4 bits com Raspberry pi, os pinos GPIO 18,23,24 e 25 são usados para a linha de dados e os pinos GPIO 7 e 8 são usados para as linhas de controle. Um potenciômetro também é usado para controlar o nível de contraste do LCD. A linha de dados do DS18B20 é conectada ao pino 4 do GPIO. Observe também que um resistor de 10K deve ser usado para puxar os dados como mostrado no diagrama de circuito.
Você pode seguir o diagrama de circuito acima e fazer as conexões ou usar a tabela de pinos para acompanhar os números dos pinos GPIO.
Eu construí o circuito em uma placa de ensaio usando os fios de fio único e fios macho para fêmea para fazer as conexões. Como você pode ver, o sensor requer apenas um fio para fazer a interface e, portanto, ocupa menos espaço e pinos. Meu hardware fica assim abaixo quando todas as conexões são feitas. Agora é hora de ligar o pi e começar a programar.
Instalando a biblioteca Adafruit LCD no Raspberry P
O valor da temperatura será exibido em um display LCD 16 * 2. Adafruit nos fornece uma biblioteca para operar facilmente este LCD no modo de 4 bits, então vamos adicioná-lo ao nosso Raspberry Pi abrindo a janela do terminal Pi e seguindo as etapas abaixo.
Etapa 1: instale o git em seu Raspberry Pi usando a linha abaixo. O Git permite clonar qualquer arquivo de projeto no Github e usá-lo no seu Raspberry pi. Nossa biblioteca está no Github, então temos que instalar o git para baixar essa biblioteca no pi.
apt-get install git
Etapa 2: a linha a seguir leva à página do GitHub onde a biblioteca está presente, basta executar a linha para clonar o arquivo do projeto no diretório inicial do Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Passo 3: Use o comando abaixo para mudar a linha de diretório, para entrar no arquivo de projeto que acabamos de baixar. A linha de comando é fornecida abaixo
cd Adafruit_Python_CharLCD
Passo 4: Dentro do diretório terá um arquivo chamado setup.py , temos que instalá-lo, para instalar a biblioteca. Use o seguinte código para instalar a biblioteca
sudo python setup.py install
É isso que a biblioteca deveria ter sido instalada com sucesso. Agora, da mesma forma, vamos prosseguir com a instalação da biblioteca DHT, que também é da Adafruit.
Habilitando Interface One-Wire em Pi
Uma vez que o sensor DS18B20 se comunica através do método One-Wire, temos que habilitar a comunicação de um fio em Pi seguindo as etapas abaixo.
Etapa 1: - Abra o prompt de comandos e use o comando abaixo para abrir o arquivo de configuração
sudo nano /boot/config.txt
Etapa 2: - Dentro do arquivo de configuração, adicione a linha “ dtoverlay = w1-gpio ” (circulada na imagem abaixo) e salve o arquivo como mostrado abaixo
Passo 3: - Use Ctrl + X para sair do arquivo e salve-o pressionando “Y” e depois a tecla Enter. Finalmente reinicie o Pi usando o comando
sudo reboot
Etapa 4: - Uma vez reiniciado, abra o terminal novamente e digite os seguintes comandos.
sudo modprobe w1– gpio sudo modprobe w1-therm. cd / sys / bus / w1 / devices ls
Suas janelas de terminal exibirão algo assim
Etapa 5: - No final da etapa 4, quando você inserir ls , seu pi exibirá um número exclusivo. Esse número será diferente para cada usuário, com base no sensor, mas sempre começará com 28-. No meu caso, o número é 28-03172337caff .
Etapa 6: - Agora podemos verificar se o sensor está funcionando digitando os seguintes comandos
cd 28-XXXXXXXXXXXX.find ('t =') # encontre o "t =" na linha se trimmed_data! = -1: temp_string = lines # apare o strig apenas para o valor de temperatura temp_c = float (temp_string) / 1000.0 # divida o valor de 1000 para obter o valor real return temp_c #return the value to print on LCD
A variável lines é usada para ler as linhas dentro do arquivo. Em seguida, essas linhas são comparadas, pesquisadas pela letra “t =” e o valor após essa letra é salvo na variável temp_string . Finalmente para obter o valor da temperatura usamos a variável temp_c na qual dividimos o valor da string por 1000. No final retornamos a variável temp_c como resultado da função.
Dentro do loop while infinito, só precisamos chamar a função definida acima para obter o valor da temperatura e exibi-lo na tela LCD. Também limpamos o LCD a cada 1 segundo para exibir o valor atualizado.
enquanto 1: #Infinite Loop lcd.clear () #Limpar a tela LCD lcd .message ('Temp =%.1f C'% get_temp ()) # Exibe o valor da temperatura time.sleep (1) #Aguarde 1 seg então atualize os valores
Saída / Trabalho
Como sempre, o código Python completo é fornecido no final da página, use o código e compile-o em seu Raspberry Pi. Faça a conexão conforme mostrado no diagrama de circuito e, antes de executar o programa, certifique-se de seguir as etapas acima para instalar os arquivos de cabeçalho do LCD e habilitar a comunicação de um fio em pi. Feito isso, basta executar o programa, se tudo estiver funcionando conforme o esperado, você poderá notar o texto de introdução. Se não, ajuste o potenciômetro de contraste até ver algo. O resultado final será mais ou menos assim abaixo.
Espero que você tenha entendido o projeto e não tenha tido problemas em construí-lo. Caso contrário, indique o seu problema na seção de comentários ou use o fórum para obter mais ajuda técnica. Este é apenas um projeto de interface, mas uma vez feito isso, você pode pensar no futuro trabalhando em uma estação meteorológica de Raspberry Pi, notificador de temperatura por e-mail e muito mais.
O funcionamento completo do projeto também é mostrado no vídeo abaixo onde é possível ver o valor da temperatura sendo atualizado em tempo real.