A primeira experiência no âmbito da leitura de valores para o Raspberry Pi, é feita com base no tutorial proposto por Matthew Kirk aqui.
0. Material necessário
- Raspberry Pi
- Sensor Digital de temperatura DS18B20
- Resistência 4,7 kΩ
1. Esquema para sensor de temperatura
O sensor de temperatura utilizado é um DS18B20, que permite efetuar leituras digitais (9-bits a 12-bist) do valor da temperatura (em Celsius).
Esquema do sensor de temperatura DS18B20 |
Esquema de ligações dos componentes |
2. Implementação do circuito
Novamente, muito cuidado ao ligar o circuito para não danificar o Raspberry Pi.
Breadboard com o circuito implementado e conectado ao Rpi |
3. Carregar módulos necessários
A leitura da temperatura deste sensor pressupõe alguns passos iniciais de configuração, pois por defeito o Raspberry Pi não carrega os módulos que permitem a "conversa" com outros componentes.
Assim, é necessário ativar estes dois módulos:
Assim, é necessário ativar estes dois módulos:
$ sudo modprobe w1-gpio
$ sudo modprobe w1_therm
Após este passo é necessário verificar qual o número de série carregado para o sensor de temperatura.
$ ls /sys/bus/w1/devices/
28-0000025d1522 w1_bus_master1
É através deste número de série (único para cada sensor) que será possível obter a informação da temperatura do sensor.
4. Obter a temperatura
Para obter a temperatura atual basta ver o conteúdo do ficheiro:
$ cat /sys/bus/w1/devices/28-0000025d1522/w1_slave
5c 01 4b 46 7f ff 04 10 a1 : crc=a1 YES
5c 01 4b 46 7f ff 04 10 a1 t=21750
Para ficar apenas com o valor é possível:
$ tail -n 1 /sys/bus/w1/devices/28-0000025d1522/w1_slave | tail -c 6
21875
5. Integração com PHP
Em PHP é muito fácil aceder ao ficheiro anterior e obter valor pretendido:
if (isset($_GET['temp'])&&$_GET['temp']!=''){
exec("sudo gpio -g mode 4 in"); // Iniciar GPIO04 = pin 7
if ($_GET['temp']=='on'){
// Ler do ficheiro
$filename = '/sys/bus/w1/devices/28-0000025d1522/w1_slave';
$mode = "r";
$file = fopen($filename, $mode);
if ($file){
fgets($file); // Ler primeira linha e descartar
$buffer = fgets($file); // Ler linha da temperatura
fclose($file);
$temp = substr($buffer, -6); // Obter os últimos 6 caracteres com a temperatura
echo ""+$temp/1000+"ºC
"; // Converter para as unidades corretas
"; // Converter para as unidades corretas
}
}
}
Para executar basta aceder ao URL do ficheiro PHP e adicionar a variável temp com o valor on:
http://rpi/temp.php?temp=on
Ja agora, imaginamos que tem uma pagina complexa com botoes em imagem trabalhando com codigo css, com java, como consegue-se inserir este codigo que escreveu sobre ds18b20, ao pé do tema do site?
ResponderEliminarmeu email: dbk921@gmail.com
Viva,
ResponderEliminarSe o objetivo for apresentar apenas a temperatura atual numa página PHP, bastaria :
Remover a linha echo ""+$temp/1000+"ºC"; // Converter para as unidades corretas
E colocar no local pretendido da página
echo ($temp/10000)