Eu já vi muitos exemplos de uso de um sensor de temperatura com o Raspberry Pi; no entanto, como posso multiplexar sensores de temperatura 5-6 em um Raspberry Pi? Eu quero ler a temperatura de várias fontes simultaneamente.
Posso simplesmente atribuir os pinos GPIO no Raspberry Pi para ler cada sensor, replicando essencialmente a mesma configuração para um sensor, ou preciso de algum tipo de multiplexador ao qual todos os sensores se conectariam para enviar dados em paralelo? para o Raspberry Pi?
gpio
sensor
temperature
jc303
fonte
fonte
Respostas:
Dado que o seu sensor é um DS18B20 e é um circuito de 1 fio e esse fio é um protocolo que pode endereçar vários endereços no mesmo barramento e que o módulo do núcleo de temperatura de 1 fio pode ler até 10 sensores de temperatura no mesmo ônibus. (verifique a linha 49 do código fonte do driver ).
Se você conectar apenas 10 dos seus sensores aos mesmos 3 pinos (3v3, GND e o pino IO de 1 fio - que é o número 4 no conector (este é codificado no driver!) E você lerá as saídas em / sys / bus / w1 / devices / 28 * / w1_slave, onde o 28 * é o endereço de um fio único individual. Verifique o excelente tutorial do adafruit . Não esqueça o resistor 4K7 que puxa o pino de dados (número 4 - SOMENTE UM!) , como o pull-up interno do Pi fornece aproximadamente 50K e isso é demais para o sensor, você precisará desse componente extra.
Você só deve ter certeza de que não está tentando usar o poder parasitário. Se você conectar os 3 pinos de todos os dispositivos, tudo bem.
fonte
You should just make sure you are not trying to use parasitic power.
O que você quer dizer com isso? Preciso usar uma fonte de alimentação externa em vez dos 3,3V do pino1 no GPIO do Pi? Ou é poder parasitário se eu usar apenas dados GND + e não o 3V3? - recusou-se a vincular hot-link ao seu nome de usuário :-(this is hardcoded in the driver
isso significa que a conexão de sensores de temperatura a um pino GPIO diferente (ou vários pinos GPIO) não funcionará?Para referência, aqui está um pequeno trecho do Python para bitbang do GPIO de 1 fio e retornar a leitura de temperatura para o primeiro sensor. Deve ser simples o suficiente modificar para retornar os temps para todos os sensores conectados como uma lista ou algo semelhante.
fonte
Conversar sobre um barramento de 1 fio pode ser doloroso. Esteja você falando com 1 sensor ou 100, precisará pensar no tempo. Eu escrevi algum código para o DS18B20 há alguns anos atrás, mas está em Assembly. Se for de alguma utilidade, aqui:
fonte
Se estiver interessado, aqui está um guia que escrevi para o uso de um sensor de temperatura DS18B20 (que, como mencionado acima, pode ser encadeado com quantos você desejar usando o mesmo pino GPIO no Pi) com um Raspberry Pi e algum código Pyhton que o publica em um Serviço RESTful que agrega e exibe as temperaturas em gráficos e diagramas em um site. Todo o código público na conta GitHub especificada. http://macgyverdev.blogspot.se/2014/01/weather-station-using-raspberry-pi.html
fonte
Que tipo de sensor de temperatura você está usando? Se você tem algo como um DS18B20, pode conectar até 18446744073709551615 sensores, se você tiver muitos.
fonte
Para responder:
Existem módulos adicionais que você pode obter com vários barramentos para se conectar ao pi.
Este vídeo compara suas velocidades: https://www.youtube.com/watch?v=YbWidNBycls Ele acaba usando um kernel recompilado para obter vários GPIO se comunicando com vários sensores. Ele não publicou seus resultados sobre como conseguiu. Mas é possível multiplexá-lo em vez de usar apenas um pino.
Atualizar. Ele postou agora. Ele conectou 81 sensores a 9 GPIO separados e conseguiu obter todas as temperaturas em menos de 3 segundos: https://www.youtube.com/watch?v=JW9wzbp35w8
fonte
a maneira ideal de ler vários sensores é usar sensores I2C.
Essa é a única maneira de conectar vários sensores ou usar sensores analógicos, mas eles receberão muitos pinos analógicos, mas o i2c usará apenas 2 linhas. digamos que você esteja usando o Pi2 / 3, então sugiro que você obtenha um chapéu Pi framboesa com porta I2C para que você possa conectar todos os seus dispositivos i2c com o Pi em segundos e garantirá que o seu hardware esteja correto.
agora você tem o Pi com um adaptador I2C e deixe passar a parte do sensor. TI, AD, NXP, freescale e muitas outras empresas fabricam sensores de temperatura com I2C, mas você deseja conectar mais de um sensor para que haja duas opções.
obtenha 6 sensores I2C diferentes com endereço I2C diferente; se você tiver dois sensores com o mesmo endereço, ele não funcionará.
você pode obter sensores com a linha de endereço e apenas alterar o endereço e conectá-los ao Pi sem nenhum conflito de endereço. Eu sugiro usar este sensor TMP 100. Prefiro este porque ele possui 2 linhas de endereço com suporte de linha de endereço flutuante para que você possa conectar 6 sensores a uma linha i2c.
a vantagem de usar os mesmos sensores é que você não precisa ler 6 folhas de dados para escrever seu código, será necessário estudar uma folha de dados e escrever o código da maneira mais fácil. se todos os seus sensores forem iguais, você terá melhores resultados para comparar.
fonte