IOT : connecter l'usine avec un Arduino - Partie 1

Les objets connectés se répandent de plus en plus dans notre monde. On voit ainsi de nombreux produits grand public se vendre, comme les montres connectées, ou les capteurs d’activités. Les entreprises découvrent avec joie ces nouveaux appareils, qui leur permettent de répondre à des besoins spécifiques.

Au sein du pôle IOT de l’agence SQLI Nantes, un client nous remonta un besoin lié à la loi sur la pénibilité, adoptée en France. Cette loi demande aux entreprises de prendre en compte certains facteurs de risques liés à des contraintes physiques, à un environnement de travail agressif ou à des rythmes de travail exigeants. Cela suppose en premier lieu de mesurer l’activité des employés. Les objets connectés interviennent ici, car ils permettent de mesurer des données entre le monde physique (ici l’environnement de travail) et le système d’information de l’entreprise.

La réflexion a abouti à la construction d’un objet, capable d’identifier un employé et de déterminer ses heures de présence sur un poste de travail dit « pénible ». C’est cet objet que nous allons voir plus en détail dans la suite de cet article.

Liste de courses

Afin de réaliser notre boitier nous avons utilisé le matériel suivant :

  • Une boîte tupperware (2 €)
  • Des badges RFID (1,45 € le badge)
  • Une batterie (pour une boîte autonome) (10 €)
  • Une mini board (4 €)
  • Un Arduino Yun (75 €)
  • Un capteur de présence (4 €)
  • Un lecteur RFID (5 €)
  • 15 fils conducteurs
  • 2 résistances de 120 Ohm
  • Cable USB pour la batterie
  • Une plaque de bois
  • 4 vis diamètre 3mm (2,90 € le paquet de 100)
  • 1 LED Rouge
  • 1 LED Verte

Ce qui fait un total de 110 €. Ce prix est surtout dû à l’Arduino yun, qui représente 75% de ce prix. On peut largement réduire en prenant une carte Arduino moins chère. Comme on le voit, les autres composants sont très abordables.

Prototyper son Arduino

Le plus compliqué quand on est développeur et que l’on commence à se frotter au monde de l’IOT, c’est l’apprentissage de l’électronique. En effet, en tant qu’informaticien, on est perpétuellement dans un monde virtuel et là, par définition, l’IOT nous confronte au monde réel. Je ne sais pas pour vous, mais personnellement mes dernières notions d’électronique remontent aux cours d’EMT (Education Manuelle et Technique) de 5ème donc il a fallu se retrousser les manches pour affronter ce nouveau monde.

L’idée ici est de pouvoir mesurer le temps de présence d’une personne sur un emplacement géographique précis. Savoir détecter une présence est plutôt trivial, il suffit de voir un couloir d’immeuble s’allumer automatiquement quand il détecte votre présence. La difficulté sera de déterminer le temps de présence.

Choisir son contrôleur

L’une des premières choses à faire sur votre montage est de déterminer quelle carte vous servira de contrôleur. Les deux cartes les plus connues actuellement sont les l’Arduino et le Raspberry Pi. Bien que souvent citées de concert, ces deux cartes sont fondamentalement différentes et ne répondent pas du tout au même usage. L’Arduino est un microcontrôleur tandis que le Raspberry Pi est un nano-ordinateur monocarte à processeur ARM. En d’autres termes, le Raspberry peut être vu comme un petit ordinateur alors que l’Arduino est beaucoup plus bas niveau et dois être utilisé pour des tâches basiques.

Le choix de ces cartes peut être influencé par la topologie de votre montage et notamment le but de votre montage. Par exemple si vous voulez mesurer la température de la pièce vous pouvez le faire avec les deux cartes mais concernant le Raspberry Pi cela reviendrait à sortir la Ferrari pour aller chercher son pain à la boulangerie située à 500 mètres. Vous l’aurez compris, il faut choisir la carte en fonction de son usage. N’hésitez pas à bien vous renseigner car cette étape est cruciale et conditionne beaucoup de choses. En ce qui nous concerne, nous avons opté pour un Arduino Yun qui possède le gros avantage d’avoir en natif le Wifi d’intégré. Avec le recul ce choix n’est peut-être pas le plus pertinent mais comme nous commençons dans le monde l’IOT, les erreurs vont de pair avec. Cet article est d’ailleurs là pour cela afin que vous ne fassiez pas les mêmes erreurs que nous. Nous vous conseillons peut-être plus la série LaunchPad chez Texas Instrument qui est beaucoup moins chère. Le seul gros bémol concernant cette carte est le manque de communauté (très performante pour l’Arduino). Autre différence entre l’Arduino et la LaunchPad, le code est légèrement différent mais assez facilement portable, ce n’est pas un simple copier-coller mais il y a peu de choses à modifier.

Comment choisir son sensor

Maintenant que le choix de la carte est fait, il est temps de voir quels capteurs utiliser pour arriver à notre but :  mesurer le temps de présence. Commençons par le début : le capteur permettant de savoir si quelqu’un se trouve sur le poste de pénibilité. Pour cela nous avons choisi le SODIAL(R) Module détecteur de Mouvement infrarouge pyroélectrique PIR. Il s’agit d’un détecteur de mouvement et non un capteur de présence. La différence entre ces deux sensors est de taille. En effet un capteur de présence indique si une présence est là ou pas. Le résultat est de type binaire. Alors que le détecteur de mouvement ne réagit qu’aux déplacements de l’acteur. La question peut se poser alors de notre choix d’un détecteur de mouvement qui semble contraire à notre but.

 

Les capteurs de présence que nous avons recensés ne remplissaient pas notre cahier des charges. En effet, le capteur/détecteur doit pouvoir être placé loin de l’acteur, or la portée la plus longue d’un capteur que nous avons pu constater est de 5 mètres. Ceci résout la problématique des plafonds souvent élevés dans les locaux du tertiaire. Nous avons donc dû consentir à utiliser un détecteur de mouvement ce qui ne sera pas sans conséquence sur l’algorithme de l’Arduino. A signaler qu’il existe peut-être un capteur de présence qui détecte à longue distance mais l’une des difficultés récurrentes lors de l’approche du monde des objets connectés est de déterminer si tel ou tel composant technique répond à notre besoin. Pour cela il faut lire les documentations électroniques qui ne sont pas toujours faciles d’accès pour le profane.

Comment identifier un utilisateur

Notre cahier des charges indiquait aussi une identification de l’acteur. Pour cela nous avons opté pour le lecteur RFID RDM6300 de chez Asiawill. Il est composé d’une carte électronique et d’une bobine recevant le signal. Le lecteur utilise wiegand comme protocole de communication. Une des difficultés du code présent sur l’Arduino sera de décoder ce protocole.

Pour le reste du montage, nous avons eu besoin de matériel plus commun. Nous avons utilisé la breadboard du starterkit d’Arduino, 15 fils conducteurs, 2 résistances de 120 Ohms chacune, 4 vis de diamètre 3mm, une LED verte et une LED rouge.

Voici un schéma du montage provisoire :

carte rfid

Le composant bleu est le détecteur de présence, le vert la carte du lecteur RFID et la bobine rouge est justement le lecteur RFID. Le schéma est pas une référence en matière de conception électronique, il est juste là pour illustrer les branchements des différents capteurs sur l’Arduino.

Sur l’Arduino, nous avons donc deux LED branchées, une patte du lecteur RFID et le détecteur de présence. Les résistances sont couplées avec les LED. Elles sont là pour indiquer des états du détecteur de présence. Par exemple quand une session commence au badgage RFID la LED verte se met à clignoter.

Les pièges à éviter

Les difficultés que nous avons rencontrées lors de la réalisation de ce montage sont nombreuses. A commencer par notre méconnaissance de l’électricité/électronique. Le sens de branchement des LED, la connections des différents capteurs ainsi que la compréhension du fonctionnement des capteurs et de l’Arduino ne sont que des exemples parmi d’autres. Le gros avantage à prendre un Arduino est la communauté qui se trouve derrière et du coup l’énorme documentation disponible. Il n’est pas rare de trouver un blog qui traite déjà du branchement que vous voulez réaliser. Par exemple pour le branchement du RFID nous nous sommes basés sur le travail suivant  (http://tronixstuff.com/2013/11/19/Arduino-tutorials-chapter-15-rfid/). C’est la somme importante de documentations qui fait que l’apprentissage des branchements sur Arduino ne relève pas de mission impossible.

En revanche nous avons été étonnés par la plupart des montages Arduino : en général les blogs s’arrêtent à cette étape, à savoir que le montage est fonctionnel et que le code fait bien ce que l’on veut. Ce qui est intéressant si l’on réalise un projet juste pour soi ou pour un petit comité. Mais qu’en est-il si vous voulez proposer votre montage en tant que vrai objet connecté finalisé ? A savoir un objet sans fils qui sortent de partout, avec une finition parfaite. Par exemple, imaginez les Google Glass avec les composants électroniques à nu et des câbles dans tous les sens : c’est moins professionnel. Cela va donc être notre nouvelle étape : rendre ce montage plus pratique à utiliser.

connecter arduino

Industrialiser l’Arduino

 

La première idée quand nous avons voulu rendre ce montage plus ergonomique, a été de mettre l’ensemble dans une boîte. Dans ce contexte, le plus simple a été de modéliser une impression 3D pour créer une boîte sur mesure, collant parfaitement à notre usage.

Pour cela nous avons utilisé le logiciel OpenSCAD qui offre le très grand avantage de pouvoir “coder” sa modélisation. L’inconvénient de ce logiciel de modélisation est qu’il est très insuffisant dans le cas de modélisations complexes, par exemple pour modéliser des visages ou des structures fines. Mais concernant notre besoin, à savoir modéliser une boîte, OpenSCAD y répond parfaitement.

Malgré nos maigres connaissances dans ce domaine, la prise en main a été assez rapide grâce à la possibilité de coder la modélisation.

 

Voici un court extrait de code. Celui-ci permet d’obtenir la modélisation du trou qui accueillera une LED ainsi que la partie RFID :

 

module trou_led(){

hauteur_cube = epaisseur+3;

hauteur_cylindre = epaisseur – 1 +2;

damietre_led = 9;

 

union(){

translate([0,0,0])

cylinder(r=(damietre_led/2)+1, h=hauteur_cylindre, $fn=100, center=true);

translate([0,0,-hauteur_cylindre/2-hauteur_cube/2])

cube(size=[damietre_led, 3, hauteur_cube], center=true);

}

}

module rfid(){

difference(){

cube(size=[largeur_rfid+2, profondeur_rfid+2, hauteur_rfid], center = true);

translate([0,2,1])

cube(size=[largeur_rfid, profondeur_rfid, hauteur_rfid], center = true);

}

}

boite modélisée

Le cahier des charges pour constituer une boîte efficace en tant que capteur de présence est le suivant :

  • Pouvoir ouvrir la boîte
  • La boîte doit contenir une breadboard ainsi que l’Arduino
  • Une ouverture doit permettre de passer le capteur IR
  • Une ou plusieurs ouvertures doivent être présentes à l’arrière pour laisser passer les branchements Arduino (RJ45, USB…)
  • Une encoche doit être présente sur la boîte pour signifier aux utilisateurs l’endroit où ils doivent badger
  • Deux encoches sur le couvercle doivent être présentes pour accueillir les deux diodes

De plus, pour des raisons de coûts, la boîte doit être assez courte. Nous avons ainsi opté pour la solution de superposer la breadboard et l’Arduino. En effet, lors d’une modélisation 3D, il faut essayer de s’arranger pour “consommer” le moins de matière possible et il faut parfois réarranger sa modélisation.

Par exemple, la première version de la modélisation aboutissait à un devis d’environ 400€ pour une impression. Une fois le modèle modifié et retouché, le dernier devis tombe à 130€ soit une baisse de 67,5%. Malgré cela, le coût reste encore trop prohibitif pour un tel objet, 130€ pour une simple boîte cela reste un sacré investissement. La piste modélisation 3D a donc été abandonnée pour des raisons financières.

Nous avons donc opté pour une solution plus manuelle et après une courte réflexion, quoi de mieux que la Rolls des boîtes pour arriver à nos fins : à savoir une boîte Tupperware.

Elle présente aussi de nombreux avantages :

  • Elle n’est pas chère
  • Elle est pratique
  • Elle est facile à trafiquer

La première étape concernant cette boîte est la fixation des deux éléments clés que sont la breadboard et l’Arduino. Pour la breadboard, le fond est autocollant. A noter que nous avons choisi volontairement de garder une breadboard afin de ne pas multiplier les soudures (car ce n’est pas notre fort) et surtout nous n’avons pas de prérogative particulière concernant la taille de la boîte. Donc en version optimisée le détecteur de présence connecté pourrait faire simplement la taille d’un Arduino. Mais ce souci de miniaturisation a été écarté de notre POC.

Fixer l'arduino boite

Afin de fixer l’Arduino, nous avons utilisé le système suivant : une double planche de bois a été découpée, puis fixée dans le fond de la boîte, ceci afin que l’Arduino soit un peu surélevé. Puis l’Arduino a été fixé sur la planche de bois, grâce à ses pas de vis. La boîte étant assez longue la breadboard peut être fixée sur l’autre bout de la planche en bois.

A partir de là, il reste 2 étapes pour la finalisation du montage : la soudure des diodes et le découpage de l’emplacement du capteur. Passons rapidement sur la soudure qui après quelques essais se révèle satisfaisante. Il a fallu ensuite creuser un peu le plastique à l’aide d’un foret fin pour fixer les diodes.

Le découpage de la boîte fut assez laborieux mais avec un bon cutter cela se fait plutôt aisément. Il ne resta plus qu’à scotcher le capteur RFID sur la boîte et voilà notre premier détecteur de présence connecté achevé.

boite 1 boite 2 boite 3 boite 4

 

0 commentaires

votre commentaire

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

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

Inscription newsletter

Ne manquez plus nos derniers articles !