Vous êtes sur la page 1sur 22

Université de Paris-Est Créteil

Lincece 3 Informatique

Développeur full stack


Python/JavaScript

Rapport de stage

Sentences le 15/06/2021

par

Ghiles BERREFAS

Encadrant entreprise : Philippe BOURCIER

Encadrant universitaire : Benoit BARBOT


i

Remerciements
Avant de commencer le développement de cette expérience professionnelle, il me parait
tout naturel de commencer par remercier les personnes qui m’ont permis d’effectuer ce
travail ainsi que ceux qui m’ont permis d’en faire un moment agréable et profitable.
En premier lieu, je tiens à exprimer ma profonde gratitude à mon encadreur Monsieur
Philippe BOURCIER, Directeur Technique et à Monsieur Guillaume LHERMITE, PDG,
Fondateur de Primadiag pour leurs disponibilités, leurs gentillesses, leurs volontés de
m’apprendre de façon panoramique le plus de leurs expériences et compétences et tout
le savoir qu’ils m’ont permis d’acquérir. Je tiens aussi à leur remercier pour la confiance
qu’ils mettent accordés et m’avoir fait bénéficier de leurs précieux conseils.
Je voudrais aussi remercier tous les travailleurs au sein de l’entreprise pour leurs cha-
leureux accueils et leurs hospitalités durant ce stage.
Je saisis cette occasion pour adresser mes profonds remerciements aux responsables et
au personnel de l’UPEC pour la qualité de l’enseignement, sans lesquelles ce stage et ce
rapport n’aurait pas lieu.
Table des matières

La liste des abréviations, sigles et acronymes 1

Introduction 2

Chapitre 1 Développement 3
1.1 Fonctionnement de la Debouchoneuse . . . . . . . . . . . . . . . . . . . . . 3
1.2 Description et fonctionnement du matériel . . . . . . . . . . . . . . . . . . 5
1.2.1 Raspberry Pi 3 Model B . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Raspberry HQ Camera . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.3 Moteur pas à pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.4 Contrôleur de moteur pas à pas SMCI33 . . . . . . . . . . . . . . 6
1.2.5 Dynamixel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.6 Gimatic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.7 Capteurs optiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.8 Datalogic DSM0400 . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.9 Anneau NeoPixel 16 leds RGB . . . . . . . . . . . . . . . . . . . . 10
1.2.10 Holder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.11 Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 Diagramme de Gantt des Tâches confiées . . . . . . . . . . . . . . . . . . . 11
1.4 Description des réalisations . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.1 Insertion de figures . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.2 Insertion d’équations . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.3 Insertion de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Analyse de l’expérience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Conclusion 16

ii
iii

Bibliographie 17

Annexe A Annexe 1 18
La liste des abréviations, sigles et
acronymes

ADN : Acide DésoxyriboNucléique


ARN : Acide ribonucléique
CAO : Conception assistée par ordinateur
GPIO : Entrée-sortie à usage général
HDMI : Interface Multimédia Haute Définition
GNU : GNU’s Not UNIX
NGS : Séquençage de nouvelle génération
PCR : Réaction en chaı̂ne par polymérase
qPCR : Réaction en chaı̂ne par polymérase quantitative
SMC : Stepper motor control
USB : Universal Serial Bus

1
Introduction

Ce rapport décrit le travail effectué dans le cadre de mon stage de fin de licence.
Cette expérience professionnelle a débuté le 08 avril 2021 au sein de l’entreprise française
Primadiag.
La société Primadiag fut créée en octobre 2007 en tant que bureau d’étude. Son objec-
tif premier était de fournir des solutions pour le développement de machines robotiques
compactes pour l’automatisation rapide d’une grande variété de protocoles dans le do-
maine de la biologie moléculaire.
À partir de l’année 2014, l’entreprise connaı̂t un tournant dans son développement
suite à la sortie de la nouvelle gamme de produits « ACSIA » qui permet de fournir des
solutions clés en main pour la plupart des protocoles biologiques.
Les machines de la gamme ACSIA permettent d’effectuer la préparation des plaques
PCR/QPCR, les purifications d’acides nucléiques, la préparation de banques ADN et ARN
et l’étape de capture des protocoles NGS ainsi que tout autre protocole de manipulation
de liquides.
Ma principale mission consiste à participer au développement de la machine ACSIA
modèle Aliquoter 96 dans le but est d’automatiser le débouchonnage des flacons, puis le
prélèvement du liquide qui se trouve à l’intérieur avec une pipette afin de faciliter les tests
Covid-19 ou papillomavirus dans les laboratoires.
Dans ce projet de la Debouchoneuse, il y a au total six personnes qui travaillent à
temps plein ou à temps partagé dessus. Philippe BOURCIER, l’instructeur en charge du
projet, l’ingénieur en robotique en charge de la fabrication des machines avec deux autres
stagiaires, et le stagiaire en charge de la CAO. Ma responsabilité est de développer au
niveau logiciel les différentes fonctions et tâches du robot, et d’implémenter l’interface de
production.
Tout au long de ce rapport, je présenterai en détail les éléments techniques ( matériel
et logiciel ) retenues afin de répondre aux besoins de nos clients.

2
1

Développement

1.1 Fonctionnement de la Debouchoneuse


L’objectif est de créer une machine avec un système qui permettra d’automatiser le
debouchonnage des flacons, que l’on pourra piloter à travers une interface web sur laquelle
un bouton ”start” et ”stop” seront à disposition des utilisateurs.
Une fois que l’utilisateur appuis sur le bouton ”start”, çà affichera sur l’écran l’état de
la plaque des 96 puits et celle des 96 cônes. Au même instant, ça lancera la machine pour
un cycle.
Le principe est d’effectuer un parcours au-dessus d’une surface où se trouvent des
flacons avec une caméra et une pince. La caméra détecte un flacon à l’aide d’un algorithme
de détection de cercle. La pipette récupère un nouveau cône ce qui mettra à jour l’interface
et colorie le cône pris parmi les 96 cônes. Ensuite, La pince saisit le flacon et emporte
celui-ci sur un support qui va le serrer et effectuer des rotations pour retirer le bouchon.
Au même moment que la rotation, ce fait, un lecteur de code barre scan le code barre sur
le flacon pour que les laborantins puissent identifier à quel patient il appartient.
Après avoir retiré le bouchon, la pipette commence à aspirer une certaine quantité
de liquide pour la stocker dans un puits vide de la plaque 96 puits ce qui colorie le puits
sur l’interface graphique. Une fois l’opération terminée, la pince rebouchera le flacon, et
le déplacera vers le support d’extrémité. La pipette qu’on a elle se déplacera pour rejeter
le cône utiliser. La machine tournera en boucle jusqu’à ce que tous les flacons soient ter-
minés. L’utilisateur pourra par la suite télécharger un fichier Excel qui répertorie tout les
identifient des puits associer au code barre des patient.

3
1.1. Fonctionnement de la Debouchoneuse 4

14 7
6
12 5
3
13

1
4

15
2

8
11
10

Figure 1.1 – Photo 3D de la machine pour mieux illustrer

1 Holder 10 Capteur Optique


2 Protection 11 Dynamixel 1
3 Support Caméra 12 Gimatic 2
4 Gimatic 1 13 Dynamixel 2
5 Pont 14 Datalogic Scanner
6 Conrôleurs de moteur pas à pas 15 Support pipette
7 moteur pas à pas
8 Raspberry Pi HQ Camera
9 Anneau NeoPixel 16 leds
1.2. Description et fonctionnement du matériel 5

1.2 Description et fonctionnement du matériel

1.2.1 Raspberry Pi 3 Model B


C’est un nano-ordinateur mono-carte [1] avec connexion LAN sans fil et Bluetooth. Il
permet l’exécution du système d’exploitation libre GNU/Linux.

Figure 1.2 – Raspberry Pi 3 Model B.

Le programme et toute la logique pour faire fonctionner normalement la machine


ACSIA modèle Aliquoter 96 sont définis sur le Raspberry Pi. L’avantage est que nous
pouvons brancher et contrôler d’autres matériaux. Soit à partir de :
— 4 ports USB2 pour les moteurs pas à pas SMCI33 et les servos moteurs Dynamixel.
— GPIO étendu 40 broches pour les deux pinces et l’anneau NeoPixel 16 leds.
— HDMI pour la configuration du wifi.
— Port de caméra CSI pour connecter une caméra.

1.2.2 Raspberry HQ Camera


C’est la caméra officiel de haut qualité pour Raspberry Pi [2] avec un objectif grand
angle, distance focale 6 mm avec mise au point manuelle et ouverture réglable. On l’utilise
pour détecter les bouchons des flacons à l’aide de la bibliothèque graphique OpenCV.

Figure 1.3 – Raspberry HQ Camera


1.2. Description et fonctionnement du matériel 6

1.2.3 Moteur pas à pas


les moteurs pas à pas permet de transformer une impulsion électrique en un mouve-
ment angulaire [3]. Nous utilisons 5 moteurs au total. Et chaque moteur correspond soit
à l’axe des x, y, z1, z2 ou zPipette.
x

z1
z2

Figure 1.4 – Moteur pas à pas avec vis


infinie Figure 1.5 – Photo 3D de la machine
illustrent les axes

1.2.4 Contrôleur de moteur pas à pas SMCI33


Il est utilisé pour commander des moteurs pas à pas [4] standard ou des moteurs avec
encodeurs ou freins intégrés. Il est possible de mettre en réseau jusqu’à 254 moteurs.

Figure 1.6 – Contrôleur de moteur pas à pas SMCI33


1.2. Description et fonctionnement du matériel 7

Structure de commande du contrôleur :

Une commande commence par le caractère de départ ’#’ et se termine par un retour
chariot ’\r’. Le caractère suivant le ’#’ correspond à l’adresse du moteur sous la forme d’un
nombre décimal ASCII. La valeur est comprise entre 1 et 254. la suite de la commande
est compose d’un caractère ASCII et d’un nombre ASCII facultatif. Ce nombre doit être
écrit en notation décimale avec un préfixe (’+’ et ’-’). le signe ’+’ n’est pas obligatoire
pour les nombres positifs. Si le contrôleur reconnaı̂t la commande écrite, il en confirme la
réception en renvoyant la commande sous forme d’écho, mais sans le caractère de début
’#’. Sinon il répond en renvoyant la commande suivie d’un point d’interrogation ’ ?’

Exemple de commande :

Commande envoyer Repense Signification


#1d0\r 1d0\r Définit la direction 0 : gauche 1 : droite
#1p1\r 1p1\r Définit le mode positionnement relatif
#1s100\r 1s100\r Définit la distance de déplacement à 100 pas
#1A\r A\r Démarre l’exécution du moteur 1 avec les paramètres actuels
#1I\r 1I+100\r Renvoie la position courant du moteur selon l’encodeur
#s-100\r #s-100 ?\r Commande invalide car l’adresse du moteur n’est pas définit

Adresse et moteur :

La configuration des adresses des axes est réalisée à l’aide du logiciel de nanotec.

Adresse Moteur Description


1 axe des x Permet de déplacer le support qui maintien les axes des z1,z2
et zPipette de la machine de gauche à droit
2 axe des y Permet de déplacer le pond (bridge en anglais) de la machine
de gauche à droit
3 axe des z1 Permet de déplacer la pipette de la machine de haut au bas
4 axe des z2 Permet de déplacer la pince (gripper en anglais) de haut au bas
5 axe des zPipette Correspend à l’axe de la pipette qui permet d’aspirer ou d’éjecter
du liquide
1.2. Description et fonctionnement du matériel 8

1.2.5 Dynamixel
Le dynamixel [5] est une gamme de servomoteurs programmables pour robots avec
un concept intégrant un réducteur de vitesse, contrôleur, pilote et fonction réseau. Il est
capable d’atteindre des positions prédéterminées, puis de les maintenir. La position est
dans le cas d’un moteur rotatif une valeur d’angle.

Figure 1.7 – Dynamixel

Nous utilisons deux dynamixel. le premier fait partie du mécanisme que l’on a appelé
holder qui sert à maintenir en place et à faire tourner sur lui-même le flacon pour ouvrir
ou fermer le bouchon. Le deuxième qu’on t’a lui fait partie du mécanisme qui protège la
plaque des 96 puits.

1.2.6 Gimatic
Le gimatic [6] est une pince électrique parallèle avec 3 mâchoires, elle saisit automa-
tiquement un objet et le garde en main. Un relais de 24V permet le fonctionnement de
cette pince (fermeture / ouverture).

Figure 1.8 – Gimatic

Nous utilisons aussi deux pinces. La première est installé sur une base rotative dans le
1.2. Description et fonctionnement du matériel 9

holder pour serrer le bas d’un flacon tout en tournant pour ouvrir ou fermer son bouchon.
La seconde est accrochée à proximité de la caméra pour prendre un flacon.

1.2.7 Capteurs optiques


Les capteurs optiques [7] sont des dispositifs capables de détecter la présence d’un
obstacle, en coupant le rayon lumineux émit entre la fourche. Nous les utilisons pour
définir le point d’origine (appelé home) des différents moteurs dont nous devons connaı̂tre
le positionnement précis.

Figure 1.9 – Capteur à fourche Optek

1.2.8 Datalogic DSM0400


C’est un lecteur de code-barres [8] électronique servant à lire les informations stockées
sous la forme de code-barres. Il est également installé au niveau du holder pour lire le
code barre d’un flacon au même moment que la rotation ce fait afin d’identifier à quel
puits parmi les 96 puits le code bar fait référence.

Figure 1.10 – Lecteur de code bar Datalogic DSM0400


1.2. Description et fonctionnement du matériel 10

1.2.9 Anneau NeoPixel 16 leds RGB


Les 16 leds [9] sont raccordés en série et communiquent via une sortie série 1 broche du
Raspberry pi. Nous l’utilisons pour allumer les leds lorsque la caméra effectue la détection
de cercle.

Figure 1.11 – Anneau NeoPixel 16 leds RGB

1.2.10 Holder
Le holder est le mécanisme qui permet de retirer et remettre le bouchon d’un flacon
ainsi que la lecture du code bar avec le lecteur de code-barres au moment de la rotation.

Figure 1.12 – Holder

1.2.11 Protection
La plaque de protection est le mécanisme qui permet de protéger le rack des 96 cônes
et la plaque des 96 puits lorsque la pipette est déplacée pour éviter qu’une goutte de liquide
ne tombe dessus, afin de ne pas compromettre les résultats des analyses d’un flacon.
1.3. Diagramme de Gantt des Tâches confiées 11

Figure 1.13 – Rack 96 cônes

Figure 1.14 – Plaque 96 puits

Figure 1.15 – Mécanisme de protection

1.3 Diagramme de Gantt des Tâches confiées


La première tâche qui m’a été confiée, c’est de rédiger une spécification technique
et fonctionnelle détailler du projet. En effet, en collaboration avec mon tuteur Philippe
BOURCIER, nous avons passé une journée pour réfléchir aux différents modules et à leurs
fonctions que j’ai implémenter tout au long du stage. Au bout de cette journée, nous avons
listé les principales fonctions de chaque module. Ce qui m’a permis de définir une bonne
liste de tâches bien complète.
1.3. Diagramme de Gantt des Tâches confiées 12

Figure 1.16 – Diagramme Gantt


1.4. Description des réalisations 13

L’architecture logiciel mise en œuvre est le style architectural des microservices c’est
une approche qui permet de développer une application sous la forme de petits services
web autonomes. Ces services communiquent entre eux par des requêtes HTTP.

Figure 1.17 – Code architecture

1.4 Description des réalisations

1.4.1 Insertion de figures

1.4.2 Insertion d’équations


Les équations (et autres formules) sont un des points forts de LATEX, utile si vous
devez formaliser votre travail. Quelques exemples ci-dessous. . .
Pour une fonction f (x) continue et croissante sur l’intervalle [a..b], l’équation 1.1 sert
à . . .

b−1
X Z b b
X
f (i) ≤ f (t) dt ≤ f (i) (1.1)
i=a a i=a+1
1.4. Description des réalisations 14

ou alors la matrice Vandermonde 1.2 sert à . . .


 
 1 α1 α12 . . . α1n−1 
α22 . . . α2n−1 

 1 α2

 
α32 . . . α3n−1
 
 1 α3
V = (1.2)


 . .. .. .. ..
 .

 . . . . . 

 
2 n−1
1 αm αm . . . αm
ou encore un définition récursive 1.3 qui peut servir dans certains cas à . . .

 1 si x ≤ 1;
f act(n) =  (1.3)
n × f act(n − 1) autrement.
Un document qui peut vous être utile est le suivant [10]. La documentation The Not
So Short Introduction to LATEX [11] présente également des examples mathématique assez
détaillés.
1.5. Analyse de l’expérience 15

1.4.3 Insertion de code


Pour plus d’infos sur le package listings, consulter cette note de bas de page 1
#i n c l u d e <i o s t r e a m >

i n t main ( ) {
s t d : : c o u t << ”H e l l o , world ! \ n ” ;
}

1.5 Analyse de l’expérience


Faire des recherches sur Google ou consulter ce livre très complet [12]. La documen-
tation The Not So Short Introduction to LATEX [11] est également un très bon point de
départ ; elle est disponible en ligne.

1. ftp://tug.ctan.org/pub/tex-archive/macros/latex/contrib/listings/listings.pdf
Conclusion

16
Bibliographie

[1] Raspberry Pi 3, https://www.raspberrypi.org/products/raspberry-pi-3-model-b/.


[2] Caméra Arducam, https://www.arducam.com/product/arducam-lens-for-raspberry-
pi-hq-camera-wide-angle-cs-mount-lens-6mm-focal-length-with-mf/.
[3] Moteur pas à pas, https://sitelec.org/cours/abati/motpas.htm.
[4] Contrôleur Moteur pas à pas, https://en.nanotec.com/products/1036-smci33-1.
[5] Dynamixel, https://emanual.robotis.com/docs/en/dxl/x/xh430-v210/.
[6] Gimatic, https://shop.gimatic.com/fr/mptm.
[7] Capteur optique, https://fr.rs-online.com/web/p/capteurs-optiques-a-
fourche/1700776/.
[8] Lecteur de bar code, https://www.datalogic.com/fra/oem-barcode-reader/dsm04xx-
pd-863.html.
[9] Anneau NeoPixel, https://www.gotronic.fr/art-anneau-neopixel-16-leds-rgb-
ada1463-22876.htm.
[10] Short Math Guide for LATEX, ftp://ftp.ams.org/pub/tex/doc/amsmath/short-math-
guide.pdf.
[11] The Not So Short Introduction to LATEX, http://www.ctan.org/tex-
archive/info/lshort/.
[12] Franck Mittelbach and Michel Goosens. Latex Compagnion. Pearson Education, 2004.

17
A

Annexe 1

18

Vous aimerez peut-être aussi