He visto muchos ejemplos para usar un sensor de temperatura con la Raspberry Pi, sin embargo, ¿cómo puedo multiplexar 5-6 sensores de temperatura a una Raspberry Pi? Quiero leer la temperatura de varias fuentes simultáneamente.
¿Puedo simplemente asignar los pines GPIO en la Raspberry Pi para leer de cada sensor, esencialmente replicando la misma configuración para un sensor, o necesito algún tipo de multiplexor en el que todos los sensores se enchufarían y luego enviarían datos en paralelo? a la Raspberry Pi?
gpio
sensor
temperature
jc303
fuente
fuente
Respuestas:
Dado que su sensor es un DS18B20, y es un circuito de 1 cable y que 1 cable es un protocolo que puede realizar múltiples direcciones en ese mismo bus y que el módulo del núcleo de temperatura de 1 cable puede leer hasta 10 sensores de temperatura en el mismo bus (verifique la línea 49 del código fuente del controlador ).
Si solo conecta 10 de sus sensores a los mismos 3 pines (3v3, GND y el pin IO de 1 cable, que es el pin número 4 en el conector (¡esto está codificado en el controlador!) Y leerá sus salidas desde / sys / bus / w1 / devices / 28 * / w1_slave donde el 28 * es la dirección individual única de 1 cable. Consulte el excelente tutorial de adafruit . No olvide la resistencia 4K7 que tira del pin de datos (número 4 - ¡SOLO UNO!) , ya que la extracción interna del Pi le da aproximadamente 50K, y eso es demasiado para el sensor, por lo que necesitará este componente adicional.
Solo debes asegurarte de no estar tratando de usar el poder parasitario. Si conecta los 3 pines de todos los dispositivos, debería estar bien.
fuente
You should just make sure you are not trying to use parasitic power.
¿Qué quieres decir con esto? ¿Necesito usar una fuente de alimentación externa en lugar de los 3.3V del pin1 en el GPIO del Pi? ¿O es el poder parasitario si solo uso GND + Data y no el 3V3? - se negó a hacer un enlace activo a su nombre de usuario :-(this is hardcoded in the driver
¿eso significa que conectar sensores de temperatura a un pin GPIO diferente (o múltiples pines GPIO) no funcionará?Como referencia, aquí hay un pequeño fragmento de Python para hacer un bitbang en el GPIO de 1 cable y devolver la lectura de temperatura para el primer sensor. Debe ser lo suficientemente sencillo de modificar para devolver las temperaturas de todos los sensores conectados como una lista o algo similar.
fuente
Hablar por un autobús de 1 cable puede ser doloroso. Ya sea que esté hablando con 1 sensor o 100, deberá pensar en el tiempo. Escribí un código para el DS18B20 hace unos años, pero está en la Asamblea. Si es de alguna utilidad, aquí:
fuente
Si está interesado, aquí hay una guía que escribí para usar un sensor de temperatura DS18B20 (que como se indicó anteriormente se puede encadenar con tantos como desee usando el mismo pin GPIO en el Pi) con un Raspberry Pi y un código Pyhton que lo publica en un Servicio RESTful que agrega y muestra las temperaturas en gráficos y diagramas en un sitio web. Todo el código público en la cuenta de GitHub especificada. http://macgyverdev.blogspot.se/2014/01/weather-station-using-raspberry-pi.html
fuente
¿Qué tipo de sensor de temperatura estás usando? Si tiene algo como un DS18B20, puede encadenar hasta 18446744073709551615 sensores, si tuviera tantos.
fuente
Contestar:
Hay módulos adicionales que puede obtener que tienen varios buses para conectarse al pi.
Este video compara sus velocidades: https://www.youtube.com/watch?v=YbWidNBycls Él termina usando un kernel recompilado para lograr que GPIO se comunique con múltiples sensores. No ha publicado sus resultados sobre cómo lo consiguió. Pero es posible multiplexarlo en lugar de usar solo un pin.
Actualizar. Él ha publicado ahora. Conectó 81 sensores a 9 GPIO separados y pudo obtener todas las temperaturas en menos de 3 segundos: https://www.youtube.com/watch?v=JW9wzbp35w8
fuente
La forma ideal de leer sensores múltiples es usar sensores I2C.
esta es la única forma en que puede encadenar múltiples sensores juntos o puede usar sensores analógicos, pero tomarán muchos pines analógicos, pero i2c usará solo 2 líneas. Digamos que está usando Pi2 / 3, luego le sugiero que obtenga un sombrero de frambuesa Pi que tenga un puerto I2C para que pueda conectar todos sus dispositivos i2c con Pi en cuestión de segundos y se asegurará de que su hardware sea correcto.
ahora tienes el Pi con un adpter I2C, deja que se mueva en la parte del sensor. TI, AD, NXP, freescale y muchas otras compañías fabrican sensores de temperatura con I2C pero desea conectar más de un sensor, por lo que hay dos opciones.
obtenga 6 sensores I2C diferentes con diferentes direcciones I2C, si tiene dos sensores con la misma dirección no funcionará.
puede obtener sensores con línea de dirección y simplemente cambiar la dirección y puede conectarlos con Pi sin ningún conflicto de direcciones. sugeriré usar este sensor TMP 100, prefiero este porque tiene 2 líneas de dirección con soporte de línea de dirección flotante para que pueda conectar 6 sensores con una línea i2c.
La ventaja de usar los mismos sensores es que no tiene que leer 6 hojas de datos para escribir su código, tendrá que estudiar una hoja de datos y escribir el código de manera fácil. Si todos sus sensores son iguales, tendrá mejores resultados para comparar.
fuente