Como usar um Raspberry Pi para controlar o calor na sua casa
Nas estações mais frias gostamos de chegar a casa e poder sentir o conforto de uma temperatura ideal e constante, e como para muitas famílias não é pratico estar sempre a acender a lareira, usamos os aquecedores, uma fonte de calor relativamente rápida, constante e regulável.
O problema de muitas famílias no mundo é mesmo o consumo deste tipo de equipamentos. Muitas vezes esquecemos-nos de os desligar, ou estes atingem temperaturas mais elevadas do que o estritamente necessário.
Sabia que com apenas um Raspberry Pi, umas tomadas e uns relés, podemos ter um sistema que nos faz poupar imenso tempo e dinheiro?
Se ainda não tem um RPI3, veja aqui a nossa promoção.
Este projeto tem o objetivo de manter a temperatura +/- constante de uma divisão. Utiliza sondas DHT22 e DS18B20 e com intervalos de atualização de 30 em 30 segundos.
Devido à incerteza das sondas DHT22, pois elas nem sempre dão os valores, o código em Python consegue contornar essas situações. Caso uma situação dessas aconteça o Raspberry Pi ficará a recolher valores da DHT22 em ciclos de 3 segundos até obter valores válidos.
Requisitos
Para a elaboração deste projecto, necessitamos dos seguintes equipamentos:
- Raspberry Pi
- [DS18B20]
- [DHT22]
Instalação
Primeiro de tudo certifique-se que o seu Raspberry Pi está atualizado.
sudo apt-get update sudo apt-get upgrade |
Após a atualização devemos proceder ao download dos drives da DHT22.
$ git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git $ cd Adafruit-Raspberry-Pi-Python-Code $ cd Adafruit_DHT_Driver |
Para se certificar que a sonda está 100% instalada execute o seguinte comando
O “2302” é o tipo de sonda e o “4” é o PIN a que a sua DHT22 está ligada na GPIO do seu Raspberry Pi.
sudo ./Adafruit_DHT 2302 4 |
Caso não obtenha valores válidos verifique a ligação dos pinos da sonda.
Tendo a DHT22 a funcionar correctamente, temos agora de verificar se as DS18B20 estão funcionando como esperado.
$ cd /sys/bus/w1/devices/ $ ls |
Deverá ver agora uns “números estranhos”. Calma, isso apenas são os IDs da sondas ligadas ao Raspberry Pi.
Deverá apontar esses valores para editar nos ficheiros “.py”.
Após apontar os ID’s desejados devemos efectuar os seguintes comandos. Ao copiar para a sua janela de SSH retire os “<” e “>”.
$ cd <ID da sonda> $ cat w1_slave |
Deverá obter um valor “t=temperatura”, acha o valor muito grande? Calma, está multiplicado por 1000.
Agora vamos efectuar o download dos ficheiros necessários.
$ cd $ git clone git://github.com/adrianobrum/Aquecimento-Central.git $ cd Aquecimento-Central $ ls |
Poderá verificar que existe dois ficheiros idênticos, o “temp_data.py” e “temp_control.py”. - “temp_data.py” – Ficheiro que será utilizado para obter informações das sondas. - “temp_control.py” – Ficheiro que irá controlar as saídas GPIO do Raspberry Pi. Agora será feita a edição do ficheiro “temp_data.py”. Basta alterar os ID’s entre os “<>”.
$ sudo nano temp_data.py |
Basta alterar os ID’s entre os “<>”.
device_folder_in = glob.glob( base_dir + '<ID da sonda 1>' )[0] device_file_in = device_folder_in + '/w1_slave' device_folder_out = glob.glob( base_dir + '<ID da sonda 2>' )[0] device_file_out = device_folder_out + '/w1_slave' |
Agora temos de editar o ficheiro de controlo, “temp_control.py”. Basta alterar os IDs entre os “<>” e as temperaturas no final do ficheiro.
os.system( 'modprobe w1-gpio' ) os.system( 'modprobe w1-therm' ) base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob( base_dir + '<ID da sonda 1>' )[0] device_file = device_folder + '/w1_slave' |
ledMode( 17, GPIO.HIGH if temp1 < 21 and temp_c1 <= 19 else GPIO.LOW ) ledMode( 18, GPIO.HIGH if temp1 < 21 and temp_c1 <= 20 else GPIO.LOW ) |
Após a edição, caso deseje executar o ficheiro quando o Raspberry Pi iniciar deverá abrir o “cron”.
$ crontab –e |
E adicionar a seguinte linha no final.
@reboot sudo python /home/pi/temp_control.py |
Agora deite-se no sofá e aprecie a temperatura do interior da sua casa. Alguma dúvida, questão ou sugestão podem contactar o autor através da seguinte desta página.
Este artigo tem mais de um ano
Bom tutorial para a parte de SW,
Falta apenas a faltar relativa ao HW. Diria que a maioria dos utilizadores que vêm este tutorial vão procurar o que são estes sensores e agora ficam a pensar: o que faço com isto? ligo onde?
Bom tutorial para a parte de SW,
Falta apenas a parte relativa ao HW. Diria que a maioria dos utilizadores que vêm este tutorial vão procurar o que são estes sensores e agora ficam a pensar: o que faço com isto? ligo onde?
Já pedimos essa informação ao autor. Faz sentido 🙂
Gosto deste tipo de artigos e compreendo que queiram promover o Raspberry PI, mas usar um RPi é demasiado overkill. Bastava um simples microcontrolador ou, no máximo um Arduino.
Tens toda a razão, mas o projeto não está completo. Falta o controlo pela internet e a instalação do LCD. Em breve irei entregar essas instruções aos administradores. 🙂
Se já tinha gostado do artigo, assim ainda vou gostar mais!
Para adquirir estes componentes recomendam algum site?
inMotion
Boxelectronica.com
+1
Com arduino, ficaria mais fácil e interessante.
Para quem percebe bastante de electrónica, o artigo não acrescenta nada.
Para quem não percebe, é muito vago e pouco explícito.
Mas valeu a intenção!
eu nao percebo nada de electronica e achei que o assembly foi feito por magicos
Bom post, mas para quê complicar quando existe um software pode fazer isso tudo.
vejam o DOMOTICZ
Em constante desenvolvimento, com versões beta, e um fórum e WIKI concorrido.
oi,
sabes se posso ter este software instalado e correr Kodi na mesma ?
e que hardware necessito ? o mesmo indicado aqui ?
Eu usaria o HTU21D, temperatura e humidade no mesmo sensor, e I2C, bem mais fácil de manipular no python