J'ai vu de nombreux exemples d'utilisation d'un capteur de température avec le Raspberry Pi, cependant, comment puis-je multiplexer des capteurs de température 5-6 sur un Raspberry Pi? Je veux lire la température de plusieurs sources simultanément.
Puis-je simplement assigner les broches GPIO du Raspberry Pi pour lire à partir de chaque capteur, reproduisant essentiellement la même configuration pour un capteur, ou ai-je besoin d'une sorte de multiplexeur auquel tous les capteurs se connecteraient à leur tour qui enverrait des données en parallèle au Raspberry Pi?
gpio
sensor
temperature
jc303
la source
la source
Réponses:
Étant donné que votre capteur est un DS18B20 et qu'il s'agit d'un circuit à 1 fil et que 1 fil est un protocole qui peut effectuer plusieurs adressages sur ce même bus et que le module de noyau de température à 1 fil peut lire jusqu'à 10 capteurs de température sur le même bus. (vérifiez la ligne 49 du code source du pilote ).
Si vous connectez simplement 10 de vos capteurs aux mêmes 3 broches (3v3, GND et la broche IO à 1 fil - qui est la broche numéro 4 sur le connecteur (elle est codée en dur dans le pilote!)) Et vous lirez leurs sorties à partir de / sys / bus / w1 / devices / 28 * / w1_slave où le 28 * est l'adresse individuelle unique à 1 fil. Consultez l' excellent tutoriel d' adafruit . N'oubliez pas la résistance 4K7 tirant la broche de données (numéro 4 - UNE SEULE!) , car le pull up interne du Pi vous donne environ 50K, et c'est trop pour le capteur, vous aurez donc besoin de ce composant supplémentaire.
Vous devez simplement vous assurer que vous n'essayez pas d'utiliser la puissance parasite. Si vous connectez les 3 broches de tous les appareils, ça devrait aller.
la source
You should just make sure you are not trying to use parasitic power.
que voulez-vous dire par là? Dois-je utiliser une alimentation externe au lieu du 3,3 V de la broche 1 sur le GPIO du Pi? Ou est-ce une puissance parasite si j'utilise uniquement des données GND + et non le 3V3? - il a refusé de créer un lien direct vers votre nom d'utilisateur :-(this is hardcoded in the driver
cela signifie-t-il que la connexion de capteurs de température à une broche GPIO différente (ou à plusieurs broches GPIO) ne fonctionnera pas?Pour référence, voici un court extrait de Python pour bitbang le GPIO 1 fil et renvoyer la lecture de température pour le premier capteur. Il devrait être assez simple à modifier pour renvoyer les températures de tous les capteurs connectés sous forme de liste ou quelque chose de similaire.
la source
Parler sur un bus à 1 fil peut être douloureux. Que vous parliez à 1 capteur ou à 100, vous devrez penser au timing. J'ai écrit du code pour le DS18B20 il y a quelques années, mais il est dans Assembly. Si c'est utile, ici:
la source
Si vous êtes intéressé, voici un guide que j'ai écrit pour utiliser un capteur de température DS18B20 (qui, comme indiqué ci-dessus, peut être enchaîné avec autant que vous le souhaitez en utilisant la même broche GPIO sur le Pi) avec un Raspberry Pi et du code Pyhton qui le publie sur un Service RESTful qui agrège et affiche les températures dans des graphiques et des diagrammes sur un site Web. Tout code public sur le compte GitHub spécifié. http://macgyverdev.blogspot.se/2014/01/weather-station-using-raspberry-pi.html
la source
Quel type de capteur de température utilisez-vous? Si vous avez quelque chose comme un DS18B20, vous pouvez chaîner jusqu'à 18446744073709551615 capteurs, si vous en aviez autant.
la source
Répondre:
Il existe des modules supplémentaires que vous pouvez obtenir qui ont plusieurs bus pour se connecter au pi.
Cette vidéo compare leurs vitesses: https://www.youtube.com/watch?v=YbWidNBycls Il finit par utiliser un noyau recompilé pour réaliser plusieurs GPIO communiquant avec plusieurs capteurs. Il n'a pas publié ses résultats sur la façon dont il l'a obtenu. Mais il est possible de le multiplexer au lieu d'utiliser une seule broche.
Mise à jour. Il a posté maintenant. Il a connecté 81 capteurs à 9 GPIO distincts et a pu obtenir toutes les températures en moins de 3 secondes: https://www.youtube.com/watch?v=JW9wzbp35w8
la source
la façon idéale de lire plusieurs capteurs est d'utiliser des capteurs I2C.
c'est la seule façon de chaîner plusieurs capteurs ensemble ou d'utiliser des capteurs analogiques, mais ils prendront beaucoup de broches analogiques mais i2c n'utilisera que 2 lignes. disons que vous utilisez Pi2 / 3, alors je vous proposerai d'obtenir un chapeau Raspberry Pi qui a un port I2C afin que vous puissiez connecter tous vos appareils i2c avec Pi en quelques secondes et il s'assurera que votre matériel est correct.
vous avez maintenant le Pi avec un adaptateur I2C laissez bouger la partie capteur. TI, AD, NXP, freescale et beaucoup d'autres sociétés fabriquent des capteurs de température avec I2C mais vous voulez connecter plus d'un capteur, il y a donc deux options.
obtenez 6 différents capteurs I2C différents avec différentes adresses I2C différentes, si vous avez deux capteurs avec la même adresse, cela ne fonctionnera pas.
vous pouvez obtenir des capteurs avec une ligne d'adresse et simplement changer d'adresse et vous pouvez les connecter avec Pi sans aucun conflit d'adresse. je vais suggérer d'utiliser ce capteur TMP 100, je préfère celui-ci car il a 2 lignes d'adresse avec un support de ligne d'adresse flottante afin que vous puissiez brancher 6 capteurs avec une ligne i2c.
il y a un avantage à utiliser les mêmes capteurs, car vous n'avez pas à lire 6 fiches techniques pour écrire votre code, vous devrez étudier une fiche technique et écrire le code à sa manière. si tous vos capteurs sont identiques, vous aurez de meilleurs résultats à comparer.
la source