Projet IMA3 P2, 2017/2018, TD1 : Différence entre versions
(→Documents) |
|||
Ligne 114 : | Ligne 114 : | ||
= Documents = | = Documents = | ||
− | Fichier Fritzing: [[Fichier: fritzing_tamagotchi.zip]] | + | Fichier Fritzing: [[Fichier: fritzing_tamagotchi.zip]]<br> |
− | Fichier page web: [[Fichier: page_web_tamagotchi.zip]] | + | Fichier page web: [[Fichier: page_web_tamagotchi.zip]]<br> |
Version du 17 juin 2018 à 21:22
Sommaire
Projet IMA3-SC 2017-2018
Interface de gestion à interface tangible
Cahier des charges
Description du système
Nous prévoyons de mettre en forme une interface de gestion de Tamagotchi qui serait en relation avec une carte électronique sur un Arduino qui nous indique l'évolution du Tamagotchi à l'aide d'un écran LCD.
Matériel nécessaire
- SparksFun Inventors Kit
- Arduino Uno
- Raspberry Pi 2
- 4 LEDs
- 5 résistances 330 ohm
- Afficheur LCD 2 par 16 bits
- 2 boutons
- 1 potentiomètre 22k
Séance 1
- Mise en place du projet
- Nous avons tout d'abord décidé le sujet que nous allons réaliser et les étapes de sa réalisation.
- Ensuite nous avons listé le matériel dont nous aurons besoin pour notre projet.
- Nous avons enfin prévu deux équipes de deux personnes : la première équipe va s'occuper de la configuration de la Raspberry Pi tandis que l'autre s'occupera de de créer le shield qui sera appliqué sur l'Arduino.
- Exemple de jeu
- Raspberry Pi
- Nous avons débuté la configuration du Raspberry Pi et sommes parvenu à la configuration en point d'accès;
- Appréhension du logiciel Fritzing
- Découverte du logiciel Fritzing et de l'arduino.
- Mise en place partielle du PCB sur Fritzing.
Séance 2
- Raspberry Pi
- Nous sommes parvenus à mettre en marche l'interface web en relation avec la Raspberry Pi. Insertion d'images et textes sur la page web.
- Quelques problèmes ont été rencontrés lors de la configuration car certaines commandes n'étaient pas indiquées dans le guide. Par exemple
ifup wlan
qu'il fallait écrire pour réussir la configuration IP des clients WIFI.
- Appréhension du logiciel Fritzing et mise en place du PCB
- A partir du SparksFun Inventors Kit fourni, nous avons effectué le montage électronique que nous avions réalisé la séance précédente sur Fritzing.
- Nous avons également programmé l'Arduino pour parcourir différents affichages sur le LCD à partir d'un bouton.
Séance 3
- Raspberry Pi
- Nous avons terminé la réalisation du guide pour configurer la Raspberry Pi et avons continué la réalisation du site web dans l'optique de mettre en relation la Raspberry et l'arduino.
- Mise en place du shield
- Nous avons terminé la réalisation du PCB sur Fritzing et avons lancé sa gravure.
- Nous avons également continué la programmation de l'affichage du jeu de gestion et de l'affichage du PCB.
Travail hors-séance
Configuration SSH
Tout d'abord, pour pouvoir travailler hors de l'école, on a mis en place un moyen de se connecter en SSH à partir de nos ordinateurs Windows ou Linux avec un câble ethernet. Pour cela, sur le raspberry, dans le fichier /etc/network/interfaces
, on écrit la configuration suivante:
auto eth0 iface eth0 inet static address 192.168.0.200 netmask 255.255.255.0
De même pour nos ordinateurs sous Linux, on écrit la configuration suivante:
auto "nom_port_ethernet" iface "nom_port_ethernet" inet static address 192.168.0.11 netmask 255.255.255.0
Puis à partir de la console, on se connecte en SSH avec:
ssh pi@192.168.0.200
Sous Windows, il faut modifier l'IPv4 du port ethernet en question, pour cela, on va dans le panneau de contrôle, puis Network and Sharing Center, puis Change adapter settings, et là on trouve l'adaptateur ethernet. On accède à ses propriétés et on modifie le protocole internet version 4 de cette manière:
Maintenant que notre addresse IP ethernet est statique, à l'aide du logiciel Putty, on se connecte en SSH au RPi, comme on voit ci-dessous:
PCB
Les tests de bon routage ont été effectués et tout fonctionne correctement.
Il était également nécessaire d'ajouter deux fils entre deux des LEDs et le GND, parce que sur Fritzing nous n'étions pas pervnu à les connectés sans faire entrecroiser de fils. Nous n'avions pas de fil gainé sous la main, on a dû utiliser du fil d'acier, et isoler le tout du mieux possible.
Fonctionnalités du système
Le shield simule le Tamagotchi, en ayant un bouton qui permet de changer d'affichage (niveau et timer de progression), et l'autre qui permet d'entraîner son Tamagotchi pour passer au niveau supérieur. La progression est aussi indiqué par les 4 LEDs, 1 LED allumée représente 1/4 du temps écoulé. Egalement, on souhaite pouvoir reinitialiser son niveau en appuyant sur les deux boutons simultanément. Il faut donc que ces fonctionnalités soient utilisables sur l'interface web grâce à la liaison série, et que les informations soient synchronisées.
- Arduino
- Le premier bouton, pour change d'affichage, n'est pas en relation avec la liaison série comme il ne sert qu'à changer l'affichage LCD.
- Le second bouton, pour augmenter le niveau, incrémente le niveau et débute le timer sur l'affichage LCD, et envoye avec la ligne
Serial.write()
l'instruction à la page web d'incrémenter le niveau affiché, et le temps d'entraînement débute également. - Le potentiomètre permet d'ajuster la luminosité de l'affichage LCD.
- L'appuye des deux boutons simultanément reset le niveau à 1 et le timer à 0, et envoye également une instruction spécifique à la page web pour faire de même.
- Le programme Arduino commenté est fourni plus bas.
- Raspberry Pi et interface web
- Avec le websocket, on peut envoyer et recevoir des données de l'interface web sur le Raspberry Pi jusqu'à l'Arduino. On a donc mis en place l'interface ci-contre en HTML et JavaScript en s'inspirant de l'exemple du guide de configuration.
- Le domaine du site est jeudegestion.jeudegestion.org, est il est accessible une fois connecté au SSID WIFI jeudegestion.
- Le bouton entraîner permet d'augmenter d'un niveau le Tamagotchi.
- Le bouton synchroniser permet de récupérer le niveau du Tamagotchi de l'Arduino car le niveau est réinitialisé à 1 lors de l'ouverture de la page web.
- Niveau du Tamagotchi s'incrémente dès que entraîner est appuyé, et également lorsque le bouton niveau du shield est appuyé, parce que le websocket est en constante écoute de la liaison série.
- Temps d'entraînement est le temps nécessaire entre chaque passage au niveau supérieur.
- Le code commenté HTML et JS est fourni plus bas.
Comme nous avons décidé de configurer le timer en fonction du niveau sur l'Arduino et sur la page web, et non pas d'envoyer la donnée timer de l'Arduino vers la page web, il s'est avéré délicat d'ajuster la valeur d'une seconde identique entre les deux dispositifs.
Il est donc possible qu'une fois arrivé à des niveaux élevés et de ce fait des temps d'entraînement élevés, les timers ne soient pas en total synchronisation et peuvent avoir 2 à 3 secondes de décalage.
Bilan
On est ainsi parvenu à mettre en place un projet qui répond aux demandes du sujet, c'est-à-dire mettre en relation le raspberry pi et le micro-contrôlleur Arduino à l'aide d'une communication série à travers un serveur Websocket. Il serait intéressant d'ajouter plus de fonctionnalités au Tamagotchi, et ainsi obtenir une interface de contrôle plus complète. Il est également possible de rentre le dispositif Arduino portable à l'aide d'une batterie, ainsi on peut jouer au jeu lorsqu'on se déplace, puis une fois en présente du raspberry pi, il suffit de le connecter et le synchroniser, et le contrôler sur la page web et non plus sur le shield.
Documents
Fichier Fritzing: Fichier:Fritzing tamagotchi.zip
Fichier page web: Fichier:Page web tamagotchi.zip