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 étoilereseau_etoile_1wire

En série

reseau_serie_1wire

En parallèle

reseau_parallele_1wire

Et voici le réseau 1wire installé chez moi. c’est donc hybride:

reseau_mixte_1wire

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:

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:
ds9490r_rj11

 

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. imgres-1

 

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 masse1w-ds18b20

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

1w-ds18b20-par

Dans le cas d’un DS1820 (capteur de température) voici le brochage qu’il faut réaliser

sp1010456_2

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 temperaure 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.Comparatif_QubinoFibaro

Références

http://daniel.menesplier.free.fr/Doc/BUS%201%20WIRE.pdf

http://fr.wikipedia.org/wiki/1-Wire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *