Projet IMA3 P6, 2017/2018, TD1

De Wiki de Projets IMA
Révision datée du 18 juin 2018 à 15:22 par Rfoucaul (discussion | contributions) (Activité informatique)

Projet IMA3-SC 2017-2018

-- WIKI EN COURS DE RÉDACTION --

-- Nous avons encore besoin de finaliser notre travail sur la raspberry lundi --

-- Le travail sera fini lundi soir --


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.

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"

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


https://howtomechatronics.com/tutorials/arduino/how-to-control-stepper-motor-with-a4988-driver-and-arduino/

https://www.pololu.com/product/1182

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 cablage 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 connection à la raspberry avec un cable 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 :

Sitetest.png
Arduinotest.png



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

Bilan du projet