Le protocole et le bus 1wire
“1-Wire (aussi connu sous le nom de bus Dallas ou OneWire) est un bus conçu par Dallas Semiconductor qui permet de connecter (en série, parallèle ou en étoile) des composants avec seulement deux fils (un fil de données et un fil de masse). De nature similaire à I2C, il présente cependant des vitesses de transmission et un coût inférieurs. Il est généralement utilisé en domotique pour des thermomètres ou autres instruments de mesure météorologiques. Il est également très utilisé dans les circuits de gestion de l’énergie dans les batteries d’équipements électroniques et les chaînes d’onduleurs (circuits DS2438 principalement)”
Source: wikipedia
En bref
Type | Protocole filaire (2 fils: 1 fil de masse et un fil de données / alimentation – 5V TTL) |
Architecture réseau | Quelconque |
Portée | Plusieurs dizaines de mètres si pas de répéteur |
Type de connection avec un box domotique | Soit sur le GPIO soit via un dongle dédié USB |
Caractéristiques principales
Les réseau 1wire utilisent 2 fils pour communiquer:
- 1 fil de masse
- 1 fil d’alimentation 5V TTL qui sert aussi à transmettre les données. Ce mode est appelé mode “parasite”
Le principe global de ce bus repose sur une communication maitre-esclaves. Le maitre étant le controller 1wire (Un RaspberryPi servant de maitre avec un réseau connecté sur le GPIO ou un dongle USB comme maitre) et les esclaves sont l’ensemble des modules connectés à ce maitre quelque soit la topologie de ce réseau.
Architecture du bus
L’un des gros avantage des bus 1wire est que son architecture peut être quelconque: en Série, en Etoile, en Parallèle ou même en mélangeant le tout. En effet de nombreux protocoles demandent une architecture particulière pour bien fonctionner.
1Wire est un protocole filaire donc il faudra cabler les zones où disposer des équipements.
Pour information voici des exemples de réseau
En étoile
En série
En parallèle
Et voici le réseau 1wire installé chez moi. c’est donc hybride:
Méthode de communication sur le bus
Le bus 1Wire est par défaut à 5V permettant ainsi l’alimenter les esclaves. Pour initialiser une communication, le master positionne le bus à 0V pendant 480us, cela aura pour effet de provoquer un reset de tous les esclaves qui enverront par la suite leurs identifiants au master. Le master pourra alors envoyer l’adresse de l’esclave avec lequel il voudra communiquer et lui envoyer ou lire des données.
Pour plus de détail sur ce protocole je vous conseille ce document. Il est un peu technique mais décrit parfaitement le protocole 1Wire : http://daniel.menesplier.free.fr/Doc/BUS%201%20WIRE.pdf
Les contrôleurs maitres 1 wire
Il existe plusieurs type de contrôleurs 1wire, du contrôleur fait soi même sur le GPIO d’un Raspberry au contrôleur USB officiel de Maxim Integrated. Nous n’allons pas nous étendre ici sur la façon de faire soit même un contrôleur sur le GPIO d’un Raspberry mais vous pouvez lire cet article très bien fait : http://www.framboise314.fr/mesure-de-temperature-1-wire-ds18b20-avec-le-raspberry-pi/. Cet article explique comment mesurer la température avec un Raspberry Pi mais le principe est le même pour un bus complet 1wire.
Passons donc un peut de temps sur le contrôleur officiel USB DS9490R:
Ce dongle USB permet de communiquer avec le bus 1wire en se positionnant comme master. Sa connectique est en fait du Rj11 dont voici la description des broches:
Dans mon cas j’utilise le bus 1Wire en mode parasite, on reviendra dessus un peu plus loin, nous pouvons donc n’utiliser que les broches 3 et 4 – OW (les données sur du 5V ) et GND_OW.
Mode parasite et mode normal
Il existe 2 façons de connecter des périphériques sur le bus. En mode normal et donc en utilisant 3 fils:
- Vdd (1) pour l’alimentation
- OW (3) pour les données
- GND_OW (4) pour la masse
Cependant cette méthode demande 3 fils. J’avoue que je préfère largement la solution à 2 fils. C’est plus simple pour le câblage.
Ce mode parasite utilise uniquement 2 fils:
- OW (3) pour les données et pour l’alimentation
- GND_OW (4) pour la masse
Dans le cas d’un DS1820 (capteur de température) voici le brochage qu’il faut réaliser
Notons que la broche 5v peut aussi être laissée “en l’air”.
Les périphériques 1wire les plus utiles/connus
Je ne vais pas rentrer ici dans le détail de tous les composants 1wire – mais la liste complète peut être trouvée sur Wikipedia: http://fr.wikipedia.org/wiki/1-Wire
Voici à mon avis la liste des composants les plus utiles / connus :
DS18S20 / DS1820 | Sonde de température – résolution 9 bits |
DS18B20 | Sonde de température – résolution ajustable de 9 à 12 bits |
DS2438 | Capteur de température plus 1 convertisseur Analogique Numérique. Cela permet par exemple d’ajouter une mesure d’humidité. |
DS2405 | Bascule 1 canal. Permet soit de lire un état binaire soit le de positionner un état sur une broche du composant |
DS2406 | Bascule 2 canaux. Idem mais sur 2 broches |
DS2408 | Bascule 8 canal. Idem mais sur 8 broches |
Concrètement, que faire avec le 1wire.
1wire peut être utilisé dans de nombreuses applications en domotique. Bien que principalement utilisé pour faire des relevés de température, le réseau 1wire peut aussi servir d’actionneur et de capteur de tout type avec par exemple les DS240[5|6|8].
Les sondes 1wire peuvent également être utilisées avec de nombreux modules z-wave: par exemple les modules Fibaro ou Qubino comme les micro modules pour interrupteur, permettant d’ajouter la mesure de température à ce type de module.
une erreur de frappe, manque le t et l’accent de température : Capteur de temperaure plus 1 convertisseur Analogique Numérique
Merci! c’est corrigé