Trackeur GPS pour la cartographie de locaux

Tuteurs: Stéphane BAZEILLE et Nicolas VERRIER

Groupe: Yassine AMIAR et Farès KHALFALLAH

Sommaire :

I) Présentation générale du projet

  • Contexte et principe
  • Liste de matériel et logiciel utilisé
  • Diagramme de bête à cornes
  • Diagramme pieuvre

II) Gestion et réalisation du projet

  • Exploitation et activation des capteurs
    • GPS
    • Caméra
    • Centrale inertielle
  • Programmation
    • Coordonnées GPS
    • Photos
    • Interface
  • Finalisation
  • Difficultés rencontrées

III) Conclusion

  • Remerciements

I) Présentation générale du projet

  • Contexte et principe

Le projet trackeur GPS pour la cartographie de locaux a pour objectifs grâce à un dispositif créées par nos soins d’enregistrer le parcours fait lors de déplacement, dans notre cas nous avons parcouru l’enceinte de l’IUT. Suite à cela les informations du parcours sont enregistré et retranscrites sur un site internet ainsi que sur un fichier dans la mémoire de la Raspberry PI. Pour mettre à bien ce projet nous sommes compose d’un binôme.

Le principe est de retracer le trajet parcouru par l’utilisateur. Pour ce faire, il faut tout d’abord commencer par étudier les comportements des différents capteurs ( GPS, Centrale Inertielle, Caméra), puis de la carte Raspberry PI. Une fois ces tâches achevées, il faut programmer chaque capteur dans un programme différent afin d’arriver à ses fins sans risques de perdre toute la progression sur une petite erreur. Pour finir, il faut créer une interface afin de pouvoir lancer l’application et visualiser quelques données.

  • Liste de matériel et logiciel utilisé:
    • Raspberry PI
    • Batterie externe
    • Caméra
    • Boîtier
    • Ecran
    • Langage Python
    • GPS
  • Diagramme bête à cornes
  • Diagramme pieuvre

A partir du diagramme pieuvre on réalise le tableau des fonctions pieuvre le tout en détaillant chaque fonction principale dite FP dans notre cas seulement FP1 mais également les fonctions contraintes dite FC qui vont de FC1 à FC7 dans notre cas.

II) Gestion et réalisation du projet

  • Exploitation et activation des capteurs
    • GPS

Pour commencer, nous avons tout d’abord pris connaissance du module GPS dont nous disposions.

Après avoir pris connaissance du GPS, il a fallu le configurer sur la Raspberry PI afin de pouvoir récupérer les coordonnées sur la carte.

Pour cela, il a tout d’abord fallu installer le module GPSD grâce à cette ligne de commande:

sudo apt-get install gpsd gpsd-clients python-gps

Puis désactiver le gps:

sudo systemctl stop gpsd.socket

sudo systemctl disable gpsd.socket

Ensuite le réactiver :

sudo systemctl enable gpsd.socket

sudo systemctl start gpsd.socket

Finalement, nous avons pu visualiser les données obtenues grâce au GPS:

gpsmon

Voici ce que nous obtenons:

Nous remarquons que grâce au GPS, nous obtenons la date, l’heure ainsi que les coordonnées longitude, latitude et l’altitude. Nous verrons plus tard comment exploiter ces données pour notre projet.

  • Exploitation et activation des capteurs
    • Caméra

Pour régler la caméra, il faut tout d’abord l’autoriser à communiquer avec la Raspberry Pi en la paramétrant en rentrant la commande:

sudo raspi-config

Puis ensuite paramétrer ainsi:

Une fois ceci fait, nous pouvons brancher la PiCaméra à la Raspberry PI puis redémarrer le système.

Nous verrons plus tard en détail le programme qui permet de photographier avec la PiCaméra.

  • Exploitation et activation des capteurs
    • Centrale inertielle

Afin de nous repérer et pouvoir guider l’utilisateur à l’intérieur d’un bâtiment de l’IUT, nous avons pensé à utiliser une centrale inertielle qui calculerait la trajectoire lorsque l’on perd le signal GPS car il est impossible d’obtenir un signal GPS au sein d’un bâtiment avec un tel module GPS.

Nous avons tout d’abord essayé d’étudier la précision du capteur. Pour ce faire, nous avons placé le capteur sur un banc afin de pouvoir effectuer des trajectoires droites dans une seule direction verticale et horizontale (x ou y). Nous avons donc branché le capteur aux bonnes entrées de la Raspberry PI grâce à des câbles puis créer un petit programme afin de relever les données obtenues avec ce capteur.

Suite à un changement de groupe et donc une baisse d’effectif dans le groupe de ce projet, nous avons été contraints d’abandonner cette partie du projet…

  • Programmation
    • Coordonnées GPS

Dans cette partie, nous verrons les différents programmes utilisés pour ce projet. Commençons par le GPS.

Pour le GPS, nous devions tout d’abord récupérer les données captées par le GPS (Longitude, Latitude) grâce à ce programme trouvé sur internet que nous avons adapté à nos beoins:

port = '/dev/ttyAMA0'  #Sélection du port du GPS
gpsd = gps(mode=WATCH_ENABLE|WATCH_NEWSTYLE)

list_lat = []    #création de listes pour stocker les coordonnées
list_lon = []
x = []           #Coordonnées X
y = []           #Coordonnées Y
D = []           #Distance parcourue

i=1

try:
    while True:
        report = gpsd.next() #
        if report['class'] == 'TPV':
            lat = getattr(report, 'lat', 0.0)  #Récup latitude
            lon = getattr(report, 'lon', 0.0)  #Récup longitude
            Temps = getattr(report, 'time','') #Récup temps

Cependant, les coordonnées récupérées de cette manière sont des coordonnées brutes avec lesquelles nous ne pouvons pas nous repérer et tracer le trajet effectué. Pour remédier à cela, nous devons convertir les coordonnées GPS en coordonnées cartésiennes:

calc_lat = (6371*cos(float(lat))*cos(float(lon))) #conversion latitude
calc_lon = (6371*cos(float(lat))*sin(float(lon))) #conversion longitude
list_lat.append(calc_lat) #stock les données converties dans les listes
list_lon.append(calc_lon) 
#Conversion des données converties en points cartésiens X et Y 
x1 = float(list_lat[0]-list_lat[i-1])
y1 = float(list_lon[0]-list_lon[i-1])
x.append(x1)
y.append(y1)
#Calcul de la distance parcourue grâce à un calcul de distance entre deux vecteurs qui calcule la distance entre le point actuel et le point précédent puis qui s'additionne au fil du temps.
calc_dist = sqrt((x[i-1])**2+(y[i-1])**2)
D.append(calc_dist)

Ensuite, nous affichons les valeurs que nous avons calculé:

print "Coordonnees x : ",x[i-1]
print "Coordonnees y : ",y[i-1]
print "Distance parcourue : ",D[0]+D[i-1]," m"

i=i+1  #Incrémentation pour mesure d'un nouveau point de position

Pour avoir le tracé du parcours effectué, nous devons tracer un « graphique » des points x et y et l’afficher ensuite:

plt.plot(x,y)  #Traçage d'un point en fonction de x et y
time.sleep(1)  #Attente d'une seconde pour recommencer la boucle
os.system("clear")  #Actualisation de la fenêtre d'affichage

Nous affichons simplement le tracé final une fois que nous fermons l’application:

plt.show()     #Affichage du tracé

Grâce à ce programme simple, nous pouvons déjà obtenir un tracé du parcours effectué, avec en temps réel la distance parcourue et la position cartésienne x et y. Cependant, les coordonnées obtenues contenaient beaucoup de chiffres après la virgule, pour y remédier nous avons fait ainsi:

xi=str(x[i-1])
yi=str(y[i-1])
di=str(D[0]+D[i-1])
#Ensuite nous affichons seulement les 6 premiers caractères de ces données:
print "...",xi[0:5]
print "...",yi[0:5]
print "...",di[0:5]
  • Programmation
    • Photos

Pour la prise de photos lors du trajet, nous avons fait un programme simple de prise de photos. Ceci est un programme pour prendre 5 photos à une intervalle de 30 secondes entre chaque photos. Il faut ensuite l’adapter à nos besoins, c’est-à-dire, prendre des photos du début du trajet jusqu’à la fin.

from picamer import PiCamera #Importation des librairies nécessaires
from time import sleep

camera = Picamera() #Choix de la caméra

camera.resolution = (1024,768) #Choix de la résolution de la caméra
camera.rotation = 180  #Rotation de la caméra à 180° selon sa position car elle est placée à l'envers

i=0
while i<5:
      #Choix de la direction des photos
    chaine1=('/home/pi/Desktop/Photos_projet/image%d.jpeg')%i
      #Prévisualisation de la photo
    camera.start_preview(fullscreen = False, window = (50,50,640,480))
    sleep(1.5) #Attente de 1,5 seconde pour la visualisation
    camera.capture(chaine1) #Prise de la photo
    camera.stop_preview() #Arret de la visualisation
    print ('photo numero ', i+1, 'prise')
    i=i+1      #Incrémentation du numéro de la photo
    sleep(30)  #Attente de 30s pour la prochaine photos

Une fois ce programme adapté à nos besoins, nous l’ajoutons au programme principal. Pour notre cas, il fallait le rajouter au programme principal, nous avons donc choisi cette solution:

j=0
#Effectuer cette tâche uniquement lorsque i est un multiple de 30 (soit toutes les 30 secondes)
if i%30==0 :  
    chaine1=('/home/pi/Desktop/Photos_projet/image%d.jpeg')%i
    camera.capture(chaine1)
    j = j+1 #Comptage du nombre de photos prises
  • Programmation
    • Interface

Pour une question d’esthétique, nous créons une interface afin de visualiser le tout sur une seule fenêtre. Nous utilisons ici la librairie Tkinter fin de la créer. Voici le programme crée pour l’interface:

from Tkinter import*

fenetre = Tk()
fenetre.title('Trackeur GPS')  #Titre de la fenêtre d'interface

 #Création du label fenetre qui contiendra les objets (frame) 
champ_label = label(fenetre)  
cadre = Frame(fenetre, width=300, height=150, borderwidth=1)
cadre.pack(fill=BOTH)

 #Création du premier 'frame' qui contiendra du texte
pos_x = Frame(fenetre, width=20, height=50, borderwidth=1)
ligne_texte = Label(pos_x, text=("position x = "+str(x[i-1])),width=30
ligne texte.pack(side="left")
pos_x.pack(fill=BOTH)

 #Création du deuxième 'frame' qui contiendra du texte 
pos_y = Frame(fenetre, width=20, height=50, borderwidth=1)
ligne_texte2=Label(pos_y, text=("Position y = "+str(y[i-1])), width=30)
ligne_texte2.pack(side="left")
pos_y.pack(fill=BOTH)

 #Création du troisième 'frame' qui contiendra du texte 
dist = Frame(fenetre, width=20, height=50, borderwidth=1)
ligne_texte3=Label(dist, text=("Distance parcourue = "+str(D[0]+D[i-1])+" m"), width=30)
ligne_texte3.pack(side="left")
dist.pack(fill=BOTH)

#Création du quatrième 'frame' qui contiendra le nombre de photos prises depuis le début du trajet
nb_ph = Frame(fenetre, width=20, height=50, borderwidth=1)
ligne_texte4=Label(dist, text=("Photos prises : "+str(j)), width=30)
ligne_texte4.pack(side="left")
dist.pack(fill=BOTH)

 #Création d'un bouton 'Quitter'
Bouton_Quitter = Button(cadre, fg="red", text = "quitter", command = fenetre.destroy
Bouton_Quitter.pack(side="right")

champ_label.pack()

fenetre.update() #Actualisation de la fenêtre

Une fois tous ces programmes achevés, nous les mettons ensemble sur un seul programme afin d’avoir la totalité de l’application sur un seul programme, ce qui nous permettra de lancer un trajet et de l’arrêter lorsqu’on le souhaite.

  • Finalisation

Le système terminé, il ne fonctionne malheureusement pas comme on le souhaiterait. En effet, l’interface ne fonctionne pas comme prévu car lorsque les positions se mettent à jour, l’interface précédente reste présente et les nouvelles s’accumulent en dessous de celle-ci.

De plus, le module GPS que nous utilisons n’est pas très stable au vu de sa position dans le boîtier car il est « enfermé » ce qui crée des perturbations et donc fausse les données du tracking.

  • Difficultés rencontrées

Nous avons rencontré plusieurs difficultés au cours de ce projet. Premièrement, nous ne connaissions rien à propos de la Raspberry PI, ce fut pour nous une très bonne découverte.

De plus, le changement de groupe nous a contraint à devoir abandonner une partie du projet. Cela nous a aussi quelque peu ralenti.

Le module GPS met beaucoup de temps pour capter des satellites lors de la mise en tension. Ceci est encore plus ralenti lorsque le ciel est couvert.

III) Conclusion

Pour conclure, malgré que le projet ne soit pas fonctionnel à 100% et ne fonctionne pas comme nous le voudrions, nous avons beaucoup avancé et il nous a vraiment plu car il était très agréable à réaliser et il nous a permis de développer des compétences en programmation ainsi que de découvrir ce qu’est le Raspberry PI et toutes ces fonctionnalités. Il nous a aussi permis d’effectuer un agréable travail d’équipe, ce qui est très intéressant.

  • Remerciements

Nous tenons à remercier tout d’abord M.VERRIER Nicolas et M.BAZEILLE Stéphane non seulement pour nous avoir aidé mais également guidé tout au long du projet. Nous tenons à remercier également M.DE SABBATA qui nous a laissé accès à l’IUT LAB sans modération.


Système de vidéosurveillance autonome


  • Présentation du projet
  • Présentation des composants
  • Etude du projet
  • Présentation de l’aspect technique
  • Réalisation du projet
  • Conclusion
  • Remerciements

Présentation du projet

Le projet consiste à mettre en place un système de vidéosurveillance à l’extérieur qui sera autonome. Il faudra placer le système dans un endroit propice au soleil car celui ci sera alimenté grâce à l’énergie solaire. Ce système sera munit d’un boitier comportant le système ainsi que de la caméra et d’un petit panneau solaire. Pour ce projet, nous utiliserons un Raspberry Pi 3, un Witty Pi 2, une caméra, un panneau solaire, des capteurs et un ordinateur portable pour la partie de programmation.

Nous avons donc dans un premier temps, il fallait faire l’étude du sujet en réalisant plusieurs diagrammes, ensuite nous avons pu commencer la programmation en même temps que la création du boitier. Pour la suite, il a fallu se concentrer sur la détection de mouvement. Pour finir, nous avons réalisé une étude énergétique du projet, par rapport à la batterie.


Présentation des composants

En ce qui concerne les composants utilisés : nous utiliserons un Raspberry Pi 3, un Witty Pi 2, une caméra, un panneau solaire, des capteurs et un ordinateur portable pour la partie programmation.


Etude du projet

Au cours de cette étape du projet il était important de savoir sur quoi nous allions travailler, pour cela nous avons réaliser un certains nombre de diagrammes :

Une fois que les différentes tâches ont été déterminé nous nous sommes scindés en 2 groupes pour avancer en parallèle :


Présentation de l’aspect technique

Dans un premier temps nous nous sommes concentré sur l’aspect programmation du Raspberry Pi, notamment en élaborant un programme de redémarrage automatique du Raspberry Pi a l’aide du module Witty Pi, de cette façon nous pouvons contrôler la fréquence des prises de vue. Ensuite nous avons étudier le stockage nécessaire et le poids des photos pour optimiser le stockage des photos, un programme peut être activer pour supprimer les anciennes photos automatiquement (il est possible de stocker 1500 photos en Full HD). Nous avons ajouter les programme crée au démarrage du Raspberry Pi ce qui nous permet de rendre le système entièrement autonome d’un point de vue prise de photo.

Par la suite nous avons ajouté un système de détection de mouvement, ce système est pleinement fonctionnelle mais nécessite cependant une alimentation constante en énergie et cela sort de la quantité d’énergie dont nous disposons avec notre batterie actuelle (2000 mAh). Le flux vidéo peut aussi être accessible via internet si il y a une nécessité de contrôler la zone a distance.

Dans un deuxième temps nous avons étudier la partie énergétique du projet, notamment la consommation du Raspberry Pi et le rendement du panneau solaire. Avec une partie de 2000 mAh tel que la notre nous obtenons une autonomie théorique de 48 minutes, a cela nous devons ajouter l’usure de la batterie, nous avons donc du optimiser la consommation d’énergie pour que le système puisse être autonome le plus longtemps possible notamment la nuit ou en cas d’ensoleillement faible. A propos du temps de charge de la batterie, nous avons calculé un temps de charge de 4 H (Capacité batterie  / Puissance du chargeur = 2000/500 = 4 heures de charge)

Pour finir nous avons réalisé un boitier pour le Rasberry et le matériels électroniques ( batterie … ) afin d’avoir un support et une protection pour cette partie. Ensuite nous avons fixé le panneau solaire puis nous avons ajouté une barre réglable afin de choisir l’angle qui permettra au panneau de recevoir le meilleur rendement énergétique et d’alimenter au mieux la Raspberry.


Réalisation du projet

Au cours de la réalisation le groupe a été scindé en deux, une partie sur la programmation du Raspberry Pi et une autre sur la réalisation du boitier.

Dans la partie programmation nous avons utilisé le langage Python ainsi que l’environnement de travail Thonny Python 3. Les scripts était ensuite exécuter au démarrage avec le fichier rc.local.

En parallèle, le groupe occupé à la création du boitier a utilisé le logiciel CorelDRAW pour la réalisation de celui-ci, puis nous avons utilisé la découpeuse laser pour la créer.

Une fois le boitier réalisé, nous nous sommes attelé à la création d’un support pour le panneau solaire. Celui ci se devait d’être adaptable notamment en ayant pour contrainte la possibilité de changer l’inclinaison du panneau. Pour se faire nous avons opter pour un support en bois en deux parties, une partie sur le panneau solaire et une autre sur le sol, le tour relié par une charnière et avec la présence d’une crémaillère sur la partie basse du support. Ainsi l’angle du panneau peut être changer a tout moment.


Conclusion

Pour conclure, nous avons rencontré quelques problèmes notamment avec la batterie qui ne chargeait plus. Lorsque l’on voulait la charger cela prenait également beaucoup de temps donc nous ne pouvions que réaliser les essais lorsque la Raspberry était alimentée par l’ordinateur.

Nous avons un code python servant à commander la caméra, la prise de photo et ses différents paramètres comme la résolution et la luminosité. Ainsi que pour l’enregistrement de l’image à un endroit spécifique du raspberry, et un autre pour la gestion des photos en effaçant les plus anciennes, de cette façon nous pouvons garder un nombre défini de photos.

Ensuite, nous avons ajouté ces deux fichiers pythons au lancement grâce au fichier rc.local. Ce fichier permet d’exécuter les deux programmes au lancement du raspberry et en arrière-plan, et cela en moins de 30 secondes.

Nous avons géré la fréquence des prises grâce au module Witty Pi2. Grâce à ce module nous pouvons définir quand le raspberry s’allume ou s’éteint et ainsi gérer l’énergie.

Malgré quelques soucis, le but du projet a été atteint et le système fonctionne très bien. Dès que quelqu’un passait devant le capteur, le système prenait une photo. Pour la fiabilité du projet, nous conseillons de choisir une batterie avec une meilleure capacité et un plus grand panneau solaire pour la recharger.

Au final, nous avons un programme autonome et fonctionnel de prise de photos en milieu extérieur ou intérieur avec gestion de stockage d’énergie.


Remerciements

Nous souhaitons remercier nos professeurs :
– M. Verrier Nicolas
– M. Bazeille Stephane

Ainsi que les personnes suivantes pour leur aides :
– M. De Sabatta Christophe

Nous les remercions pour leurs aides et leurs conseils dans ce projet.


Trieuse/compteuse de monnaie

Sommaire 

  • Présentation du projet 
  • Présentation du matériel utilisé 
  • Étude du projet 
  • Déroulement du projet 
  • Résultats 
  • Conclusion 
  • Remerciements 

Présentation du projet 

Notre groupe est constitué de 3 étudiants de deuxième année : 

  • CLERBOUT Romain 
  • DUDENHOEFFER Maxime 
  • ZIMMERMANN Benjamin 

Dans le cadre du cours d’Études et Réalisations de deuxième année du DUT Génie Électrique et Informatique Industrielle, nous avons dû réaliser un projet. 

Le but de notre projet est de créer une machine qui trie et compte les pièces. Il faut également ajouter un afficheur à cette machine afin d’avoir le total des pièces. 

Dans ce projet nous avons dû travailler sur la partie structure et sur la partie programmation. 

Présentation du matériel utilisé 

Pour crée la structure il nous a fallu une imprimante 3D, une découpeuse laser et du plastique. 

Petite Machine De Découpe Laser Pour Acrylique/plastique/papier ...

Pour la partie programmation, il nous a fallu un Arduino, un écran LCD et un capteur de poids. 

Capteur de poids TEM01052B

Étude du projet 

L’attribut alt de cette image est vide, son nom de fichier est image-9.png.
L’attribut alt de cette image est vide, son nom de fichier est image-7.png.
 

 

Pour mener à bien la réalisation de notre projet nous avons séparé le travail en 2 parties : la partie informatique et la structure. 

Romain s’est occupé de la programmation pendant que Benjamin et Maxime se sont occupés de la structure. 

Avant de commencer le projet nous avons dû faire une analyse du capteur de poids ainsi que des pièces. Nous avons dû mesurer et peser chaque pièce afin de faciliter le triage. Par exemple, la pièce de 2 euros est la plus grande et la plus lourde, elle a 25,75 mm de diamètre et 8,5 g. Nous avons relevé ces deux caractéristiques pour chaque pièce. Le capteur a une plage de mesure qui va de 0 à 780 g.  Il a une précision de 4 mg, en effet, le capteur de poids fonctionne grâce à une résistance interne qui varie selon la courbure du matériau qui l’entoure. On récupère alors, en sortie,une tension qui nous permet, après une simple règle de trois, de connaître le poids en grammes de la pesée. On utilise aussi une carte qui permet de faire la liaison entre l’arduino et le module de pesée, celle-ci est utile pour amplifier le signal de sortie du capteur. On utilise d’ailleurs dans le programme, non pas une valeur de poids de la pièce en gramme mais une unité arbitraire. 

Voici l’analyse des pièces que nous avons réalisé : 

La pièce de 2 euros a un diamètre de 25.75 mm et un poids de 8.5g(1850ua). 

La pièce de 1 euro a un diamètre de 23.25 mm et un poids de 7.5g(1615ua). 

La pièce de 50 centimes a un diamètre de 24.25 mm et un poids de 7.80g(1650ua). 

La pièce de 20 centimes a un diamètre de 22.25 mm et un poids de 5.74g(1245ua). 

La pièce de 10 centimes a un diamètre de 19.75 mm et un poids de 4.10g(880ua). 

La pièce de 5 centimes a un diamètre de 21.25 mm et un poids de 3.92g(850ua). 

La pièce de 2 centimes a un diamètre de 18.75 mm et un poids de 3.06g(652ua). 

La pièce de 1 centimes a un diamètre de 16.25 mm et un poids de 2.30g(505ua). 

Ensuite il a fallu choisir comment programmer le comptage des pièces. Nous avons commencé sur une Raspberry pi mais au final nous sommes passé sur Arduino car c’était plus pratique entre autres parce que que celui-ci possède des entrées analogiques et le système d’exploitation de la raspberry pi n’était pas utilisé. 

Déroulement du projet 

Dans un premier temps, nous avons dû réfléchir à une solution pour trier les pièces. Nous avons opté pour une rampe fait à la découpe laser avec des trous à l’intérieur en fonction de la taille de chaque pièces, l’idée était d’incliner cette plaquette pour que les pièces roulent dessus et tombent dans le trou correspondant. Il fallait faire attention car les pièces de 50 cents et de 5 cents étaient plus grandes que les pièces de 1 euro et de 10 cent. Par la suite nous avons créé des tuyaux en dessous de chaque trou pour que la pièce se glissent dedans. 

Ensuite, il a fallu trouver une solution pour peser les pièces précédemment triées. Après avoir essayé de les peser séparément nous avons décidé de les peser toutes ensemble sur un banc de pesage. Celui-ci était équipé du capteur de poids.  

Pour finir, nous avons pu améliorer notre structure qui fonctionnait déjà pour qu’elle soit plus simple d’utilisation. En effet, nous avons rajouté une pièce, faite avec l’imprimante 3D à l’entrée de la rampe de tri pour guider les pièces plus facilement. Nous avons également ajouté des tiroirs à la sortie des tuyaux pour pouvoir récupérer les pièces une fois pesées. 

Pour le déroulement du côté de la programmation, qui a été fait en parallèle de la structure, nous avons fait un programme qui se divise en 2 parties. Une partie gère la pesée, on pèse tout le banc de pesé, on ajoute la pièce et on fait une soustraction de la nouvelle pesée moins l’ancienne, ce qui nous donne le poids de la pièce qui vient de tomber et nous permet de déterminer le type de celle-ci. La deuxième partie gère l’affichage. On affiche soit la cagnotte qui est l’affichage de base, soit le nombre de pièce par type. Cet affichage est géré par un bouton pendant qu’un autre bouton permet la remise à zéro de la cagnotte. 

Après avoir fini la structure et la programmation nous avons fini par améliorer notre projet. Nous avons ajouté une boîte pour ranger l’arduino et poser les deux boutons. Nous avons également re-designer notre projet pour en améliorer l’esthétique. 

Résultats 

La structure marche très bien, on met les pièces sur le trieur elles roulent puis tombent dans différents tuyaux selon leur taille. Ensuite, elle tombe dans des tiroirs posés sur le banc de pesage. Quand on a fini de compter les pièces, on peut retirer les tiroirs et récupérer les pièces. 

Nous avons réussi à afficher sur un écran LCD deux modes. 

Sur le premier mode, on peut voir un jackpot qui s’incrémente à chaque pièce qui arrive sur le banc de pesage. 

Sur le second mode, on peut voir un tableau avec les différentes pièces qui vont de 1 centime à 2 euros et à côté on voit le nombre de pièces posés sur le banc de pesage. 

Conclusion 

Nous avons réussi à terminer le projet dans les temps. 

Le projet étant centré plus sur la partie conception de l’objet et mise en place de nos idées grâce aux outils qui étaient à notre disposition, il nous a permis de développer nos compétences en programmation, mais également en conception 3D avec Tinkecad et en utilisation de programme de dessins vectoriels (CorelDraw) dont nous nous sommes aidés pour la découpe laser. Il a également permis de travailler en équipe, ce qui est la partie la plus intéressante du projet car nous mettons nos connaissances et nos idées en commun pour arriver à nos fins. 

Remerciements 

Finalement, nous tenons à remercier nos professeurs, M.Bazeille et M.Verrier pour leur aide et leurs conseils mais aussi M.de Sabbata qui nous a laissé accès à l’IUT Lab et à ses machines. 


Machine à café connectée

Sommaire

Introduction

Membres du projet et répartition des tâches

Problématiques

Gestion du projet

  1. Bête à cornes
  2. Mindmap
  3. Diagramme de GANTT
  4. Budget initial
  5. Liste des achats

Réalisation du projet

  1. La cafetière à filtre programmable
  2. Composants
    1. Raspberry PI
    2. Capteur de vibration
    3. Photorésistance
    4. Optocoupleur
    5. Ecran LCD tactile
  3. Implantation des capteurs
    1. Capteur de vibration et photorésistance
    2. Optocoupleur
  4. Codage
  5. Support

Bilan

Perspectives d’évolution

Remerciements

Introduction 

Dans le cadre des projets d’étude et réalisation du DUT Génie Electrique et Informatique Industrielle de Mulhouse, nous avions un volume de 96h pour réaliser le projet suivant : équiper une cafetière de capteurs pour monitorer son utilisation. Ce projet a duré pendant les quatre cinquièmes du volume horaire total, arrêté brutalement pour cause de COVID-19, c’est-à-dire d’octobre à mars.

Notre équipe s’est formée autour de ce projet par souci d’affinités et de préférences. Ce projet fut encadré par deux professeurs : M. Bazeille et M. Verrier. En dehors de nos heures de travail nous avons développé le projet en complément dans l’IUT LAB pour nous tenir à jour dans le diagramme prévisionnel. 

Membres du projet et répartition des tâches 

Les 4 membres de ce projet.

Anthony Tort Mathieu Rey Victor Seiler Thibaut Cauvez

Une fois les compétences de chacun découvertes, nous nous sommes réparti les tâches de telle sorte:

Présentation du projet

Le projet qui nous a été attribué est celui de la machine à café connectée. Ce projet consiste à apporter des modifications à une cafetière basique (Cosylife CL-PRG27) en y ajoutant des capteurs pour monitorer son utilisation. 

Les différents buts de ce projet sont :

  • La prise en main d’une raspberry pi
  • L’implantation de capteurs
  • La récolte d’informations à l’aide de ces capteurs
  • La réalisation de statistiques à partir de ces informations
  • L’enregistrement des données sur un site internet

Problématiques 

  1. Quels capteurs seront présents et comment les intégrer à notre cafetière ?
  2. Comment adapter notre système dans un environnement humide et chaud ?
  3. Comment utiliser des informations déjà présentes sur les capteurs de la cafetière ?
  4. Comment traiter et croiser ces informations de manière à avoir le plus de données utiles ?

Gestion du projet

1) Bête à cornes

Afin de ne pas s’égarer sur le sujet, nous avons mis en place une bête à cornes:

2) Mindmap

Ce diagramme a pour objectif de guider les avancées du projet.

3) Diagramme de GANTT

Les diagrammes de GANTT nous permet de comparer la durée d’avancement du projet prévisionnelle et réelle.

4) Budget initial 

Notre budget de départ était de 50 euros avec l’emprunt de la raspberry pi et de son écran tactile. Ce budget étant modulable il pouvait augmenter en cas d’achat de fournitures nécessaires au développement du projet qui dépasserait le plafond initial.

5) Liste des achats 

Article(s)Prix unitaire (TTC)QuantitéTotal (TTC)
Cafetière filtre programmable COSYLIFE CL-PRG2719.81 €119.81€
Capteur de vibrations ST0405.60€15.60€
Capteur De Lumière Photosensible3.97€13.97€
Optocoupleur Traversant (RS : 395-6344)0.238€102.38€
Prix Final(TTC) 31.76€

Les prix des résistances, des câbles  et de la carte électronique pour l’optocoupleur ne sont pas pris en compte car sont insignifiants ou récupérés sur d’anciens systèmes.

Réalisation du projet

1) La cafetière à filtre programmable

Ce projet consiste à agir sur la cafetière programmable de la marque Cosylife, il s’agit d’une cafetière basique avec un système d’horloge programmable pour l’allumer et l’éteindre de manière automatique à l’horaire que l’on souhaite.

MarqueCOSYLIFE
Type cafetièreCafetière programmable
ColorisNoir et inox
Puissance (W)900 W
ProgrammableOui
Capacité du réservoir (L)1,5 L
IsothermeNon
Nombre de tasses max15 tasses
Maintien au chaudOui
Porte filtreAmovible et lavable
Niveau d’eau visibleOui
Système anti-gouttesNon
Type de verseuseVerseuse Thermo-résistante
Veille automatiqueOui
Descriptif complémentaireverre plus résistant aux chocs thermiques
Informations complémentairesDécouvrir notre Marque et nos Produits Cosylife
Dimensions produitH 34,5 cm x L 19,9 cm x P 26,5 cm
Poids net1,55 kg
Poids brut2,4 kg
Code article960086

2) Composants

2.1) Raspberry pi

La raspberry pi est un nano-ordinateur nous permettant de faire le lien avec nos capteurs. En effet, les informations sont directement envoyées sur celle-ci afin d’être traitées et utilisées. Elles sont ensuite envoyées sur un écran LCD afin de les afficher.

Fiche technique:

ProcesseurARM v8, Quad-core 1.2 GHz, Broadcom2837 64bit CPU
Mémoire1 GB
Connectique4 x USB 2.0, 1 x CSI, 1 x micro SD, 1 x GPIO, Sortie vidéo et stéréo, 1x DSI
CommunicationBCM43143 Wifi WLAN, Bluetooth BLE
AlimentationMicro USB, jusqu’à 2,5A

2.2) Capteur de vibrations

Le capteur de vibrations permet de détecter l’utilisation de la machine à café. La cafetière tremblant un peu lorsqu’elle fait couler le café, son but ici est de capter ce tremblement. Un potentiomètre nous permet de calibrer le seuil de détection du capteur, ce dernier pouvant être utilisé avec une entrée analogique ou numérique.

Fiche technique:

Alimentation3 à 5 VCC
Sorties4 Sorties: VCC, GND, D0,A0
Dimensions42 x 17 x 9 mm

2.3) Photorésistance

La photorésistance est disposée contre le pichet de la cafetière, nous informant si le réservoir de café est présent ou non. Cette information nous permet de savoir si un café est servi et de savoir combien de fois le réservoir a été retiré.

Fiche technique:

Alimentation3,3 à 5 VCC
Sorties4 Sorties: VCC, GND, D0,A0
Dimensions3,2 x 1,4 cm

2.4) Optocoupleur

Nous utilisons des optocoupleurs afin de récupérer une information là où circule du courant. Ces optocoupleurs sont reliés directement à la cafetière afin de connaître si elle est branchée à un réseau électrique et aussi pour savoir si le bouton ON est activé.

Fiche technique:

Type de montageTraversant
Type de sortieTransistor
Tension directe maximum1,4 V
Nombre de broches4
Type de boîtierDIP
Temps de croissance5µs
Courant d’entrée maximum50 mA
Tension d’isolement5 kVrms
Taux de transfert de courant maximum260%
Rapport de transfert de courant minimum60%
Temps de chute4µs

2.5) Ecran LCD tactile

L’utilisation d’un écran LCD tactile nous permet de faire l’affichage de toute les informations récoltées grâce au capteur. L’utilisation d’un écran LCD tactile permet de faciliter l’utilisation de la cafetière car utiliser un écran d’ordinateur serait beaucoup moins ergonomique.

Fiche technique:

VersionLCD
Couleur16-bit
Affichageab 7.0 Zoll
Résolution physique800 x 400 Pixel
Diagonale17.78 cm
ModèleRaspberry Pi
ParticularitéTouch kapazitiv

3) Implantation des capteurs

3.1) Capteur de vibrations et photorésistance

Capteur de vibrations 

Pour intégrer le capteur de vibrations à notre cafetière, nous avons eu comme idée de le placer contre celle-ci. L’objectif a été de détecter les vibrations lorsque l’eau, présente dans le réservoir s’écoule dans le filtre. Cela nous a permis de savoir quand la cafetière passe du mode chauffage et remplissage au chauffage de la cafetière seul, et ainsi de connaître la consommation exacte en énergie car la cafetière consomme plus quand elle chauffe et écoule de l’eau. Nous savions aussi que lorsque l’eau s’écoule à un temps T (le débit d’écoulement étant constamment le même) il déverse un certain volume d’eau correspondant à un nombre de tasses à café moyen. Cela nous permis de connaître le volume de ces cafés servis. 

Photorésistance 

La photorésistance placée contre la verseuse en verre nous permet de détecter un changement d’état correspondant à la prise en main de cette même verseuse. Cela permet de savoir que quelqu’un est en train de se servir un café, et ainsi de connaître le nombre moyen de cafés servis à chaque utilisation.

Le branchement des ces deux capteurs, chacun composés de quatre broches, fut assez simple à réaliser :

  • VCC = alimentation du capteur (5V)
  • GND = masse du capteur
  • D0 = information de sortie logique du capteur 
  • A0 = information de sortie analogique du capteur

Nous avions uniquement utilisé la sortie D0 des deux capteurs de manière à détecter les changements d’état pour détecter les cas cités précédemment.  

3.2) Optocoupleur

 

L’optocoupleur est un composant électronique capable de transmettre un signal d’un circuit électrique à un autre, sans qu’il y ait de contact galvanique entre eux.

Dans le cas présent, il permet de récupérer des informations dans la cafetière elle-même et de l’envoyer dans la raspberry tout en séparant les deux circuits car la carte électronique d’où nous tirons les signaux est alimentée en 5V continu mais en 230V  alternatif ce qui est à la fois dangereux pour la raspberry et pour l’homme. Les signaux électriques que nous avons récupérés de la cafetière étant l’alimentation globale de la cafetière pour savoir si elle est branchée à une source de courant et l’appui sur le bouton de mise en marche de la cafetière pour savoir si elle est en veille ou en train de chauffer et faire du café. Nous avons donc deux circuits de l’optocoupleur, séparés mais branchés de la même façon c’est pour cela que l’image décrivant le branchement de l’optocoupleur ci-dessous correspond aux deux circuits de l’optocoupleur. 

Le branchement d’un optocoupleur consiste à récupérer le signal sur la pin 1 sortant par la pin 2  et d’alimenter la pin 3, s’il y a présence de signaux entre la pin 1 et 2 le transistor serra passant et et laissera passer le courant de la pin 4 à 3 pour ainsi récupérer un signal ou non sur la pin 3. En sortie de pin 3 nous avons intégré une diode au pont diviseur de tension pour savoir visuellement si le l’optocoupleur est passant ou bloquant.

Afin d’intégrer l’optocoupleur nous sommes passés par une phase test sur une breadboard puis nous avons dû créer la plaque électronique:

Néanmoins, afin de passer à l’étape de la création, des mesures de protection sont nécessaires à cause du contact avec des produits dangereux. Il faut donc se munir:                                                                                                                                         

De gants en latex

D’une blouse de travail

De lunette de protection

Après la création de la carte virtuellement, l’étape suivante consiste à créer la carte électronique qui est réalisée en plusieurs étapes:

  1. Imprimer, découper et passer aux rayons UV

Après avoir imprimé le schéma des pistes KiCad sur une feuille de calque, il faut découper la plaque qui va accueillir la piste avec les dimensions nécessaires. Ensuite, il faut placer la plaque découpée sur la feuille de calque dans les rayons UV afin de créer une réaction chimique sur la résine présente sur la plaque n’étant pas protégée par les pistes de la feuille de calque.

  1. Passage au révélateur et nettoyeur

La plaque passant dans le révélateur va afficher les pistes qui n’étaient pas exposées aux rayons UV. Elle va ensuite passer dans une nettoyeuse au perchlorure afin d’enlever les résidus de résine pour ainsi afficher les pistes cuivrées. La plaque sera encore passée aux UV afin d’enlever toute trace de résine.

  1. Étamage

La plaque va être ensuite plongée dans de l’étain chimique à froid pour y déposer une couche d’étain sur le cuivre afin de le protéger de l’oxydation.

  1. Perçage des pistes

Perçage des pistes avec différentes tailles de foret suivant les différentes pattes des composants. Le trou ne doit être ni trop petit ni trop grand.

Nous avons ensuite intégré l’optocoupleur en utilisant le logiciel kicad puis en réalisant toute les étapes de la création d’une plaque pour enfin l’intégrer dans un boite créé à la découpeuse laser pour nous permettre de le mettre en place et de manipuler le système en toute sécurité.

Voici une vidéo montrant les phases de test de l’optocoupleur ou l’on peut distinguer un changement d’état de l’information récupérée prouvant que le système fonctionne

Une fois tous les capteurs mis en place voici une image montrant comment ils sont disposés dans la boîte (ce n’est pas la disposition finale)

4) Codage 

La partie la plus importante de ce projet consiste à faire le codage de la raspberry pi. En effet il faut tout d’abord faire l’acquisition des différentes informations prises par les capteurs, il faut ensuite traiter ces informations et les croiser afin d’en tirer des statistiques et des informations sur l’état de la machine à café. Enfin il faut afficher ces informations sur un écran LCD. 

En raison de l’épidémie de Covid-19 nous n’avons pas de capture d’écran de notre code.

Tout d’abord nous utilisons nos capteurs en numérique, dans le but de savoir si la machine tremble ou non et si le pichet est présent ou non. Nous n’avons pas besoin de savoir la quantité de lumière et de vibrations, c’est pourquoi notre code fait de la détection de changement d’état.
Nous croisons nos données des différents capteurs afin de connaître l’état de la cafetière comme indiqué sur le schéma ci-dessous:

L’utilisation de la librairie “time” nous permet de savoir la date et l’heure réelle. Nous l’utilisons aussi pour compter la durée d’allumage de la cafetière et pour savoir depuis combien de temps la cafetière est branchée au réseau électrique. Ces valeurs multipliées aux valeurs mesurées de consommation dans ses différents états nous permet de connaître sa consommation en temps réel.

A l’aide d’un appareil permettant de mesurer les Watts par seconde, nous avons fait des tests et des courbes afin d’évaluer la consommation de la machine à café:

La programmation d’un compteur à chaque fois que quelqu’un retire le pichet nous permet de connaître le nombre de cafés servis et de créer des petites alertes (par exemple « changez filtre ») à partir d’un certain seuil dépassé.

On affiche puis on retire très rapidement notre code afin de faire le rafraîchissement des valeurs.

Voici une représentation de ce qu’affiche  l’écran après le lancement de notre programme:

5) Support

Afin de protéger les composants, nous avons dû créer un support. Pour cela, nous avons d’abord imaginé un boîtier qui suit la forme de la cafetière. Ainsi commence la modélisation de la cafetière.

Nous avons pris les mesures de la cafetière et modulé celle-ci. Par souci de moyens, nous avons décidé de changer notre fusil d’épaule et utiliser la découpeuse laser. Nous avons du refaire des plans et penser aux orifices afin de faire passer les fils et les composants et de placer l’écran de la raspberry PI sans que celui-ci ne tombe. Ci-dessous, les plans de la boîte.

Les parties noires signifient l’enlèvement de matière.

Ensuite, nous avons dû choisir la couleur de notre boîtier. Étant donné que nous avons besoin de mettre la photorésistance dans la pénombre, nous avons opté pour un noir uni sans transparence.  

Voici la face avant vue de l’intérieur de la boîte :

Pour fixer l’écran nous avons utilisé un ruban adhésif d’électricien.

Ci-dessous une image de la construction du boîtier:

Nous n’avons guerre pu finir sa construction car il nous faut encore ajuster différents capteurs. 

Bilan

Pour conclure sur notre projet, nous n’avons pas atteint tous nos objectifs principaux. En effet, il reste encore à finir l’intégration du support dans la cafetière puis régler la sensibilité des capteurs en situation réelle et enfin créer et récupérer les informations déjà acquises sur un site web. Malgré cela, la cafetière a reçu beaucoup d’améliorations depuis son état initial.  Nous avons découvert que le fait de modifier un système déjà fini en y ajoutant des améliorations est très intéressant. Nous avons réussi à tenir la plupart de nos prévisions malgré un certain retard pour cause de mauvais branchement de capteur, de programme, support ou encore dû au contexte actuel. Tout en avançant dans le projet nous avons continué à penser à de nouvelles améliorations car le projet nous a beaucoup plu et nous a permis d’apprendre et développer des connaissances portant sur notre formation GEII.

Perspectives d’évolution

Notre projet n’a pas atteint son maximum:

  • Nous pourrions piloter la cafetière à distance en enlevant la carte électronique qui pilote la cafetière et en intégrant un système de transistor piloté par la raspberry pi, elle-même pouvant être pilotée par une interface web
  • Intégrer un capteur de vibration adapté au système serait un grand avancement pour l’acquisition de nouvelles données et la précision de valeurs mesurées actuelles telles que la consommation électrique et le volume de café créé sur un temps donné.
  • La prise en compte de la consommation électrique de la raspberry pi  est intéressante car, à présent intégré au système, il fait partie de la cafetière.
  • Fixer un objectif de consommation de la cafetière sur l’interface pourrait sensibiliser ses utilisateurs et faire des économies d’énergie de manière à pouvoir exploiter ce projet dans un but d’économiser l’énergie.
  • L’ajout de nouveaux capteurs permettrait de créer plus d’informations, par exemple un capteur de niveau d’eau pourrait informer la quantité de cafés servis.
  • Une autre idée serait d’ajouter une information lorsque le pichet est retiré de la cafetière.

En utilisant un autre type de cafetière, nous pourrions pallier au problème de vibrations.

 Remerciements

Nous tenons à remercier l’IUT de Mulhouse ainsi que l’IUT LAB pour le budget et l’apport de matériels.

Également un grand merci à nos professeurs encadrants M. Bazeille et M. Verrier.