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