Projet IMA3 P6, 2017/2018, TD1

De Wiki de Projets IMA

Projet IMA3-SC 2017-2018

FOUCAULT Rémi

DECLERCK Guillaume

ANDRIAMBOLISOA Stephen

CHEN Wenjing


Description du système

L'idée de base de notre projet est d'effectuer un tapis roulant trieur accompagné d'un site web qui nous servira à afficher des informations concernant le tri et interagir avec le tapis. Le fonctionnement est le suivant :

  • le tapis roulant roule et on pose un objet dessus
  • en avançant l'objet passe devant un capteur qui détecte si l'objet est métallique ou non
  • si c'est le cas, notre site web incrémente alors un compteur
  • en bout du tapis, un moteur actionne un bras qui réalise le tri en modifiant la trajectoire des objets selon la nature détectée par le capteur
  • finalement les objets arrivent dans le bac correspondant à leur nature

Notre projet s'inspire des industries qui pourraient utiliser ce genre de système pour trier des objets métalliques.

Les deux schémas suivants, bien que très sommaires, expliquent bien le principe de fonctionnement du système.

Une des deux positions de tri
Autre position de tri


Travail à réaliser

Pour gérer la partie électronique, nous utiliserons une carte Arduino Uno et pour la partie informatique nous utiliserons une Raspberry Pi et un dongle wifi "Wi-pi"

Électronique :

  • Faire tourner le tapis avec un moteur
  • Configurer un détecteur de métal
  • Faire tourner le moteur pas à pas du bras de tri

Informatique :

  • Configurer la Raspberry pi en point d'accès wifi
  • Réaliser la liaison série entre la Raspberry et l’Arduino
  • Créer le site web

Matériel nécessaire

1 Arduino Uno

1 Raspberry Pi et un dongle wifi "Wi-Pi"

1 moteur pas à pas et 1 contrôleur moteur

1 moteur à courant continu et 2 axes de rotation

Activité électronique

Pour le tapis roulant nous avons besoin de plusieurs choses : un matériau qui sera le tapis permettant le transport de l’objet, 2 axes pour la rotation du tapis et un moteur fournissant la rotation des axes. Pour les axes de rotation et le moteur, nous les avons obtenus en démontant pièce par pièce une imprimante usagée. C’est pourquoi dans la boîte de notre projet il y a un sachet avec plusieurs axes bien droit ainsi que divers moteurs et composants récupérés sur l'imprimante. Pour la matière constituant le tapis, notre première idée est d'utiliser un morceau de balatum cependant nous doutons de que celui ci ait une adhérence suffisante pour tourner autour d'un axe. Nous avons donc bel et bien les axes et le tapis en lui-même mais pour éviter de perdre trop de temps sur la conception mécanique du projet nous avons décidé de nous occuper d'abord de la gestion du moteur permettant la rotation du bras de tri. Nous reviendrons ensuite sur le moteur permettant la rotation du tapis et finalement le montage du tapis.


Moteur de type NEMA 17


Le bras effectuant le tri devra se déplacer entre deux positions précises. Pour ceci, un moteur pas à pas est le plus adapté. La première étape afin d'approcher le moteur pas à pas qui nous a été fourni est de réaliser des tests sur une platine d'essais. Le moteur de type NEMA 17 a besoin d’une carte de gestion de moteur, on utilisera pour cela le driver moteur A4988 de chez Pololu. Ce composant est adapté à la gestion de ce type de moteur. On peut avoir ci-après un croquis du câblage nécessaire au bon fonctionnement du moteur.


Schéma de câblage du contrôleur de moteur A4988


La partie alimentation de ce contrôleur vient des 4 pins du bas (STEP, DIR, et VCC/GND) qui feront le lien avec l’Arduino. Le moteur par contre à besoin d'une alimentation stable et continu de 9V, c'est pourquoi nous avons utilisé une alimentation à découpage qui nous permet de faire cela. La capacité de 47µF est justement présente pour protéger l'alimentation moteur de pic de courant intempestif qui pourrait griller la carte.

A la vue de notre câblage sur la platine de test, nous nous sommes dit qu'il fallait absolument faire un shield pour Arduino pour avoir quelque chose de plus propre et aussi plus simple pour nous lors de la phase de test. Nous avons dessiné sous fritzing un shield qui viendra donc se placer sur l’Arduino et qui fera le lien entre l’Arduino, le moteur, le contrôleur moteur et l'alimentation.

Le PCB sur Fritzing nous donne ceci :

Conception du PCB sous Fritzing


Après gravure et soudure des composants, voici ce que donne le shield placé sur la carte Arduino.

Shield soudure.jpg Shield arduino2 noalim.jpg Shield arduino.jpg


Nous avons effectué les tests basiques pour les tensions d'alimentation, de moteur. Nous avons aussi regardé les différentes tensions. Nous n'avons détecter aucune erreur. Nous avons réaliser un simple programme sur Arduino pour faire tourner le moteur cependant celui ne fonctionne, nous n'arrivons pas à faire tourner le moteur. Le PCB ainsi que le code nous semble correct, nous ne comprenons donc pas d'où viens l'erreur.


Nous avons décidé à ce moment de nous concentrer sur la partie informatique du projet qui est celle où nous avions tous le plus à apprendre, aucun d'entre nous n'ayant déjà manipulé de Raspberry.

Activité informatique

Après une première connexion à la Raspberry avec un câble USB/Série, nous avons pu obtenir l'adresse IP nous permettant de nous connecter en ssh.

Raspb.jpg

Ainsi pour nous connecter à la Raspberry par le suite nous avons utiliser la commande

ssh pi@172.26.145.173
Utilisateur : pi
Mot de passe : raspberry

Grâce au guide présent sur le wiki, nous avons pu mettre en place un point d'accès wifi avec le paquetage hostapd :

Nom du réseau wifi : WiFiTri
Mot de passe : chenandriambolisoa

La configuration du point d'accès wifi se fait dans le fichier /etc/hostapd/hostapd.conf

Une fois cette étape passée, le réseau wifi est crée. Maintenant il faut que des appareils puisse s'y connecter. Pour cela on utilise le paquetage ics-dhcp-server. On choisi d'affecter à la Raspberry l'adresse 192.168.100.1, et le nom de domaine sera trieur.org

On est maintenant capable de se connecter avec un appareil à notre réseau wifi.

Il nous faut à présent installer un serveur web. Pour cela nous utilisons les paquetages apache2 et php. La page web et les fichiers associés devront se situer dans le dossier /var/www/html

Pour la liaison série, il convient de brancher l’Arduino en USB à la Raspberry pi. Il faut ensuite installer le paquetage libwebsockets-dev Le programme permettant la liaison série est fourni dans le guide. Il suffit de compiler ce programme puis de l’exécuter afin de lancer la liaison série. On peut indiquer à la Raspberry d’exécuter le fichier afin de lancer la liaison série dès son démarrage. Pour cela on ajoute au fichier /etc/rc.local la ligne suivante :

./var/www/html/webserial &

Afin de tester la liaison série, nous avons rédiger un site web assez simple qui contient les fonctionnalités suivantes :

- allumer ou éteindre une LED connectée à l'Arduino
- afficher un compteur qui s'incrémente par appui sur un bouton connecté à l'Arduino
- mettre à zéro le compteur
- arrêter la Raspberry

Le site web contient une partie PHP pour l'arrêt de la Raspberry et une partie JavaScript pour l'utilisation du Websocket. On peut noter l'utilisation de la librairie Jquerry pour simplifier la programmation JavaScript.

Voici les codes du site et de l'arduino ainsi que le montage :

Sitetest.png
Arduinotest.png
Montageledbouton.jpg


Il faut maintenant mettre en place le site du projet. Il reprend les éléments que nous avons testés précédemment. Le site du projet doit nous permettre les fonctionnalités suivantes :

- Contrôler l'allumage ou l'arrêt du tapis
- Afficher son état en temps réel
- Afficher le compteur d'objets métalliques
- Mettre le compteur à zéro
- Contrôler manuellement les positions du bras de tri
- Arrêter la Raspberry

Ce qui nous donne :

Prototype.png


Le fichier du site de test de la liaison série est index.php disponible sous /var/www/html. Vous pouvez y accéder depuis un appareil connecté sur notre réseau wifi sous l'adresse 192.168.100.1

Dans le même dossier se trouve prototype.php, qui correspond au site web du projet. il est accessible sous l'adresse 192.168.100.1/prototype.php


Pour ce qui est de la partie informatique, nous avons à ce niveau réalisé tous nos objectifs.

Il reste cependant à lier la partie informatique à la partie électronique.

Bilan du projet

Lors de la réalisation de la partie informatique, nous nous sommes rendus compte que celle ci nous prendrait beaucoup de temps. Nous avons donc décidé de nous concentrer sur celle ci. Cette décision nous a amené à laissé de côté la partie électronique. En effet, même avec des séances supplémentaires passées à travailler sur la partie informatique, nous n'avons pas eu le temps de travailler suffisamment sur la partie électronique pour obtenir un résultat. Le projet était peut-être trop ambitieux pour nous.

Malgré la partie électronique très peu avancée, nous avons tout de même essayer d'appréhender le moteur pas à pas et nous avons conçu un PCB pour le contrôler.

Voyant que nous ne pourrions pas accomplir complètement le projet, nous avons décidé de nous concentrer sur l'apprentissage des techniques que nous ne connaissions pas : Raspberry pi, point d'accès wifi, liaison série, site web en html, php, javascript.

Pour conclure notre projet n'est pas un succès total puisque la partie électronique n'a pas été finie mais malgré cela la partie informatique est complètement réussie. Ce projet aura permis de nous donner un bon aperçu de la filière SC. Cela a permis à certains de conforter leur choix de choisir une autre filière et aux autres de les motiver dans le choix de la filière SC et d'apercevoir l'étendu de ce qu'ils vont pouvoir y apprendre.