IMA4 2017/2018 P35 : Différence entre versions
(→Réalisation du Projet) |
|||
Ligne 283 : | Ligne 283 : | ||
| 4 | | 4 | ||
| 4 | | 4 | ||
− | | | + | | 2 |
| | | | ||
| | | | ||
Ligne 297 : | Ligne 297 : | ||
| 1 | | 1 | ||
| 1 | | 1 | ||
− | | | + | | |
| | | | ||
| | | | ||
Ligne 311 : | Ligne 311 : | ||
| | | | ||
| | | | ||
− | | | + | | 3 |
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | Cartes électroniques | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | Application | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
| | | | ||
| | | | ||
Ligne 319 : | Ligne 347 : | ||
| | | | ||
| | | | ||
+ | |- | ||
|- | |- | ||
| Total Semaine | | Total Semaine | ||
Ligne 433 : | Ligne 462 : | ||
'''IMPORTANT:''' Nous avons étudié à nouveau la datasheet de notre module bluetooth nrf de Nordik. Le module bluetooth comporte déjà un microprocesseur ! | '''IMPORTANT:''' Nous avons étudié à nouveau la datasheet de notre module bluetooth nrf de Nordik. Le module bluetooth comporte déjà un microprocesseur ! | ||
− | Un module plutôt peut donc jouer le rôle de notre atmega328p. Il n'y a alors pas besoin de réaliser des cartes | + | Un module plutôt peut donc jouer le rôle de notre atmega328p. Il n'y a alors pas besoin de réaliser des cartes électroniques de type arduino standalone. Nos PCB regrouperont alors uniquement l'alimentation, un actionneur (bouton, joystick), le module bluetooth et les broches de connexion si besoin... |
Cette séance nous a alors permise de revoir entièrement le matériel nécessaire. Notre liste de matériel nous semble alors plus réfléchie et limitée au nécessaire. | Cette séance nous a alors permise de revoir entièrement le matériel nécessaire. Notre liste de matériel nous semble alors plus réfléchie et limitée au nécessaire. | ||
Ligne 440 : | Ligne 469 : | ||
Le site qui détaille le protocole Bluetooth PS4 n'est pas complet et de plus n'ayant pas accès à une PS4 (pour le moment) nous avons décidé de commencer par une connexion USB (pour laquelle on dispose de toutes les informations) et qu'on pourra tester plus facilement. | Le site qui détaille le protocole Bluetooth PS4 n'est pas complet et de plus n'ayant pas accès à une PS4 (pour le moment) nous avons décidé de commencer par une connexion USB (pour laquelle on dispose de toutes les informations) et qu'on pourra tester plus facilement. | ||
− | |||
− | |||
Ligne 448 : | Ligne 475 : | ||
*'''Connexion SPI RPi3-Arduino''' | *'''Connexion SPI RPi3-Arduino''' | ||
− | *''' | + | Comme vu durant les semaines précédentes, nous souhaitons réaliser une connexion Multi-esclaves en SPI entre la Raspberry pi et plusieurs modules. |
+ | Cette semaine nous avons vu que la réalisation de notre premier prototype doit aller vite. Il ne nous est pas nécessaire d’attendre les modules bluetooth si il nous faut dans cette partie uniquement utiliser son microprocesseur. Ainsi pour chaque module nous utilisons une arduino UNO. Nous réaliserons les programmes en C afin de pouvoir les réutiliser avec les modules bluetooth par la suite. | ||
+ | Une fois la connexion réalisable nous adapterons les programmes aux modules bluetooth Nordik. En effet, ceux-ci comporte déjà un microprocesseur, le module peut jouer le rôle de notre atmega328p. Il n'y a aurait alors pas besoin de réaliser des cartes électroniques arduino standalone sur PCB, mais directement des cartes électronique avec le module et le module voulu (bouton, joystick...) et l'alimentation. | ||
+ | Durant la séance nous avons alors revu la liste de matériel nécessaire. | ||
+ | |||
+ | [[Fichier: prototype1.jpeg||center|600px|connexion filaire prototype 1 filaire arduino]] | ||
+ | |||
+ | Durant la séance, nous avons recherches des exemples de codes et de librairies pour Arduino SPI et RaspberryPI SPI. | ||
+ | |||
+ | Nous avons également commencé le programme de la connexion SPI pour l'arduino et récupéré les bibliothéques SPI.h avec SPI.c. Nous nous sommes alors concentrer à les comprendre, pour pouvoir l'utiliser. | ||
+ | |||
+ | *'''Réalisation du projet Git''' | ||
+ | |||
+ | Création du projet IMA4_Projet35_ManetteModulable sur Git et partage de celui-ci. | ||
+ | Les premiers dossier crées durant la séance : | ||
+ | -Arduino (connexion SPI arduino) : ProtoSpi.c + dossier librairie SPI + Makefile | ||
+ | -RPI (dossier codes pour Rpi) | ||
+ | -Readme.md | ||
− | |||
==<span style="color: Black">Semaine 4</span>== | ==<span style="color: Black">Semaine 4</span>== | ||
+ | |||
+ | Pour le prototype 1 FILAIRE nous réaliserons les étapes suivantes : | ||
+ | |||
+ | #Réalisation du programme SPI pour arduino | ||
+ | #Réalisation du programme SPI pour la RPi | ||
+ | #Connexion USB avec la PS4 ou ordinateur | ||
+ | #Réalisation de cartes électroniques atmega328p-pu standalone (remplacer les Arduinos) | ||
+ | #Remplacer les "PCB arduino" par le module bluetooth et adapter la connexion | ||
+ | #Conception 3D de la délimitation 1 axe pour le joystick "gâchette" | ||
+ | #Réalisation de l'application Androïde. | ||
+ | |||
+ | Une fois ces étapes réalisées nous auront alors une preuve de concept filaire et nous pourrons alors passer à une connexion bluetooth. | ||
+ | Le passage à la connexion bluetooth sera le deuxième prototype et le cas idéal de la réalisation de la manette modulable. | ||
+ | |||
+ | *'''Matériel''' | ||
+ | |||
+ | - Modéliser les boutons gâchettes L1/2 R1/2 de la manette PS4 (boutons sensibles à la pression) --> un joystick dont nous bloquerons un axe (imprimante 3D) | ||
+ | - Remplacer la RPi 3 par une Rpi zero W qui nous permettrait de réaliser plus facilement une connexion USB tout en gardant l'avantage du bluetooth. | ||
+ | - Choix de l’alimentation pour les 5 modules Bluetooth: nécessitent 3V --> utiliser des piles rechargeables 1,2V AAA plutôt que piles rondes 3V. | ||
+ | |||
+ | Nous avons également besoin du matériel cité en semaine 1 pour réaliser des cartes électroniques atmega328p-pu standalone. ( nous revenons alors sur les décisions de la semaine 3) | ||
*'''Connexion SPI RPi3-Arduino''' | *'''Connexion SPI RPi3-Arduino''' | ||
+ | |||
+ | Montage Raspberrypi et 1 arduino en PSI + 1 bouton + 1 led. | ||
+ | Voici le choix des branchements : | ||
+ | |||
+ | MASTER = RPi | ||
+ | SLAVE= Arduino | ||
+ | |||
+ | '''SPI sur Arduino:''' | ||
+ | MOSI -> GPIO11 //PB3 //master OUT to the slave IN | ||
+ | MISO -> GPIO12 //PB4 //slave OUT to the master IN | ||
+ | SCLK -> GPIO13 //PB5 //serial clock | ||
+ | SS -> GPIO10 //PB2 //slave select | ||
+ | '''Led, bouton et autre...''' | ||
+ | LED --> GPIO6 //PD6 | ||
+ | GND | ||
+ | +5V (if required) | ||
+ | '''SPI sur la Raspberry Pi''' | ||
+ | SPIO MOSI -> PIN19 | ||
+ | SPIO MISO -> PIN21 | ||
+ | SCLK -> PIN23 | ||
+ | SPIO CS0 -> PIN24 | ||
+ | |||
+ | Continuation du code pour faire clignoter Led branchée à une arduino depuis la Rpi, en connexion SPI. | ||
*'''Connexion USB PS4-RPi3''' | *'''Connexion USB PS4-RPi3''' | ||
− | + | Durant la séance, nous avons regardé comment utiliser le port série sur la RPi3, soit utiliser les UART. | |
+ | |||
+ | 0x12, // bLength | ||
+ | 0x01, // bDescriptorType (Device) | ||
+ | 0x00, 0x02, // bcdUSB 2.00 | ||
+ | 0x00, // bDeviceClass (Use class information in the Interface Descriptors) | ||
+ | 0x00, // bDeviceSubClass | ||
+ | 0x00, // bDeviceProtocol | ||
+ | 0x40, // bMaxPacketSize0 64 | ||
+ | 0x4C, 0x05, // idVendor 0x054C | ||
+ | 0xC4, 0x05, // idProduct 0x05C4 | ||
+ | 0x00, 0x01, // bcdDevice 1.00 | ||
+ | 0x01, // iManufacturer (String Index) | ||
+ | 0x02, // iProduct (String Index) | ||
+ | 0x00, // iSerialNumber (String Index) | ||
+ | 0x01, // bNumConfigurations 1 | ||
+ | |||
+ | Nous avons réaliser qu'il n'était pas aussi simple d'utiliser le port serie USB de la Raspberry Pi 3, en effet le SoC est un BCM2837 . | ||
+ | De plus nous ne pouvons pas utiliser le même port pour l'alimentation et la connexion. | ||
+ | |||
+ | Une des solutions à cette difficulté serait d'utiliser une RPi ZERO W à défaut d'une RPi 3. On pourrait alors avoir un port d'alimentation avec connexion USB mais également retrouver la connexion bluetooth dont nous avons besoin. | ||
=Documents Rendus= | =Documents Rendus= |
Version du 9 février 2018 à 23:45
Sommaire
Présentation générale: Manette modulable
Description
Tout le monde joue aux jeux vidéo cependant, les manettes ne sont pas adaptées aux personnes ayant un handicap pouvant toucher les bras ou les mains. C’est le cas, de plusieurs patients dans les centres de soins et de rééducation.
Pour ce projet IMA4, nous travaillerons avec le centre SSR (soin de suite et de réadaptation) Marc Sautelet de Villeneuve d’Ascq. Un adolescent, patient de Marc Sautelet, est passionné par les jeux vidéo. En effet, ayant perdu la motricité d’une partie de son corps, il ne peut pas jouer à deux mains. Pour cela, il bloque la manette entre son épaule et son coude, usant de la mâchoire et des doigts pour contrôler les joysticks et les boutons. Cet exercice peut s’avérer fatiguant et pénible.
Ainsi, nous chercherons à concevoir une manette PS4 adaptée au handicap de l’adolescent. Cette manette devra aussi être adaptée pour d’autres patients présentant également des handicaps moteurs. Ainsi nous prendrons pour cibles: tous les patients du centre voulant jouer; et non pas que les enfants et adolescents.
Membre du projet |
Transley Gracias et Camille Saad |
Cible |
Patient présentant un handicap moteur |
Période du projet |
janvier 2018 - mai 2018 |
Partenaire/Client |
Centre SSR Marc Sautelet à Villeneuve d'Ascq |
Objectifs
Ce projet a pour objectif de créer un prototype de manette qui puisse interagir avec la console PS4 et dont le paramétrage se fait à l’aide d’une application mobile et/ou web. Cette manette devra suivre les demandes du patient ainsi que des aides-soignantes du centre, dans la mesure du possible.
Plus précisément, pour le premier prototype, nous mettrons en œuvre l'utilisation de quelques boutons spécifiques:
- Un joystick (type L/R)
- Quelques boutons poussoirs (type Croix/Triangle/Carré/Rond/R1/L1/Start/...)
- Des boutons gâchettes progressives (type L2/R2).
Le but serait donc dans un premier temps de rendre fonctionnel un bouton de chaque type, puis de les multiplier une fois cela fait. Tous ces boutons réunis constituent une manette fonctionnelle.Ainsi, la manette sera ajustable, c’est à dire qu’elle devra s’adapter aux différents handicaps moteurs possibles.
Analyse du projet
Positionnement par rapport à l'existant
Notre prototype aura une présentation unique par rapport à l’existant. En effet, les concurrents et produits existants ciblent pour la majorité un seul handicap. Cela engendre une solution fermée à beaucoup de patients. Notre projet propose une mobilité des mouvements et également un choix large dans la composition et le design de notre manette. Le patient n’est pas retreint à jouer à une seule main, à utiliser beaucoup de force...Il y a moins de technique dans la manipulation et on ne joue pas avec une manette adaptée uniquement pour un droitier ou un gaucher. Cependant, cela nous limitera peut-être dans le choix possible des types de jeux. Tout comme les autres manettes adapté, l’utilisateur nécessitera un peu d’entrainement.
Analyse du premier concurrent
Jouer aux jeux vidéo à une main n’est pas une idée d’aujourd’hui. En 1990, Nintendo propose le Power Glove. Mais il tombe très rapidement aux oubliettes suite à des problèmes techniques.
Un autre gant a fait son apparition quelques années plus tard. Celui-ci, plus technique, il faut office de manette Play Station: le Reality Quest Power Glove.Cette idée de manette-gant, permet de jouer à la PS avec une seule main, elle a était conçue et présentée pour les E3, un salon d’exposition de gaming.Le gant est conçu pour contrôler l’équivalent des 14 boutons et 2 joysticks à l’aide d’une seule main. La « manette » est fixée dans la pomme de la main. L’utilisateur contrôle les mouvements verticaux et horizontaux en pivotant le poignet, et utilisent les 4 boutons d’action principaux et L1/R1 avec les doigts. Les autres boutons sont accessibles par un seul bouton rond contrôlé par le pouce. La manette est adaptée pour beaucoup de jeux vidéo, dont les plus simples sont les jeux de voitures et de combats (arcade).
- Problèmes
- Besoin de toute la motricité de la main, c’est-à-dire que si le patient à un doigt paralysé ou manquant, il ne pourra pas jouer avec ce gant
- Design obligatoirement droitier
- Les boutons de contrôle sont peu sensibles et peuvent nécessiter de la force
- Design compliqué et nécessitant beaucoup d’entrainement.
Analyse du second concurrent
Ben Heck, de son vrai nom Benjamin J.Heckendorn, est un concepteur de mods de consoles (mods pour modification, soit « manettes modifiées ») et une star du net grâce à ses vidéos tutoriels.Il propose alors énormément de produits adaptés ou dérivés en guise de manettes. Parmi les mods qu’il a réalisé, il a modifié une manette de PS4 afin de la rendre accessible à une personne ne pouvant jouer qu’à une main. Pour cela, il a déplacé les boutons en respectant l’ergonomie de la main valide et modifie les connexions. Il peut lui arriver de rajouter des boutons pour en remplacer un autre. Il réalise également le même système avec la Xbox. Sur la photo ci-dessous, il a adapté la manette pour un droitier.
- Problèmes
- Besoin de toute la motricité de la main, c’est-à-dire que si le patient à un doigt paralysé ou manquant, il ne pourra pas jouer avec cette ma
- Design obligatoirement droitier ou gaucher, une modification = une manette= une personne
- Besoin obligé du pouce et de l’index, même si avantage : 3 doigts nécessaire.
Scénario d'usage du produit ou du concept envisagé
La technologie est ,aujourd’hui, omniprésente dans notre vie. Les consoles de jeux ont envahies les maisons avec plus de 7 personnes sur 10 jouant aux jeux vidéos sur consoles en France (chiffre de l’Express). 0,18% des français sont handicapés cela représente 12 millions de français. Dans ce chiffre, 13,4% des personnes ont un handicap moteur. En 2017, les grands groupes comme Sony ou Microsoft avec respectivement PlayStation et Xbox ne permettent pas à tout le monde de jouer avec une manette. Les manettes sont prévues pour des personnes ayant leurs membres valides, plus précisément les mains et les bras.
Après un accident de voiture, un jeune garçon a perdu la motricité d’un côté du corps. Passionné de jeux vidéo, il se retrouve avec des difficultés à jouer sur sa console PS4. Ingénieux, il utilise la manette en la coinçant entre son épaule et le creux du cou. Usant de la mâchoire et de sa main valide pour contrôler les joysticks et les boutons. L'exercice étant inconfortable et fatiguant il eu l’idée de proposer à des futurs ingénieurs de lui proposer une manette adaptée à son handicap.
Les deux pré-ingénieurs ,avec leur tuteur, ont une idée révolutionnaire : La manette modulable ! Elle permettrait au jeune garçon, ainsi que d’autres joueurs, de pouvoir continuer de s’amuser ou même de commencer à jouer au jeux sur console. Cette manette aidera fortement dans les centre de rééducation pour faire passer le temps et donner du plaisir à des personnes qui ne peuvent plus s’amuser avec leur console traditionnelle. Elle pourra aussi ouvrir de nouvelles possibilités pour certaines personnes qui n’auraient jamais essayé jusqu'à présent. Comme son nom l'indique, elle sera modulaire et s'adaptera à différents handicaps. Accompagnée de son application d’initialisation, elle sera accessible aussi bien aux enfants, patients, parents et aides soignantes.
Quelques mois plus tard...Le jeune patient fan de Need For Speed, peut maintenant piloter sa voiture comme un vrai professionnel grâce à l'un des joysticks qu'il utilisera avec sa main valide et il pourra accélérer à des vitesses folles à l'aide de boutons poussoirs au niveau de son pied valide et gagner la partie. Son ami venu lui rendre visite, pourra en lieu et place des aides soignantes configurer à l'aide de la tablette (portable) la manette du patient. Si le patient change de jeu pour Tekken et que la configuration des modules ne lui convient plus, il peut interchanger les éléments de la manette selon son envie et son confort. Ainsi il peut faire sauter son personnage, il utilisera un module bouton supplémentaire, qu'il actionnera avec le poing.
Fonctionnement
Suite à une analyse fonctionnelle et à la formulation de notre projet, nous avons pu définir le fonctionnement de notre système. Notre produit, la manette, doit être accessible d’après nos objectifs à différents types de handicaps moteurs. Ainsi, l’idéal serait de concevoir une manette modulable afin qu’elle puisse s’adapter à toutes les situations. Ce n’est plus au patient de s’adapter à la manette mais à la manette de s’adapter au patient. Cela signifie que la manette sera, dans la limite du possible et de la sensibilité du corps du patient, composée de plusieurs parties dites « modules » comportant un ou plusieurs actionneurs (boutons, joysticks, gâchettes...). Ces modules seront déplaçables afin d’être utilisé avec différents membres du corps : un doigt, une main, une jambe ou même un pied. Il suffira de les connectés entre eux suivant l’organisation souhaitée, le Gameplay du jeu ou en fonction du handicap. Le tout sera relié à une application. L’application sera alors mise en place pour connecter les différentes parties du point de vue software pour prérégler la manette en fonction du patient. Il pourra alors choisir les boutons en fonction du jeu, de ses mouvements mais aussi choisir la sensibilité.
L’application et les modules devront être intuitifs et faciles d’utilisation. De cette manière des utilisateurs non avertis dans le domaine informatique ou jeunes pourront eux-mêmes gérer les connexions.
Réponse à la question difficile
Question : Comment interconnecter les différents modules de la manette ?
Il nous faut pour ce projet interconnecter les modules modélisant la manette qui seront connectés à la consoles PS4 via une Raspberry Pi 3. Le choix de la Raspberry Pi 3 nous permet d'utiliser son module Bluetooth pour communiquer avec la PS4, ce choix est plus adaptée au projet que du filaire. Concernant l'interconnexion des modules, nous travaillerons en deux étapes "preuves concept" : filaire et sans fils (Bluetooth).
Objectif 1 : Preuve concept filaire
Dans cette première partie de projet, nous souhaitons avoir une 1ère preuve de prototype rapidement. Nous nous concentrerons alors sur la communication entre la RPi3 et la PS4 ainsi que sur la conception des modules. Pour les modules, nous réaliserons des cartes électronique pour chaque module avec un micro-contrôleur. La communication filaire nous permettra d'interconnecter les modules à la RPi3 avec un bus SPI.
Objectif 2: preuve concept sans fils
Une deuxième étape du projet est la réalisation de la solution idéale sans fils. Celle-ci pourra commencer à être développée petit à petit en parallèle avec l'objectif 1. Le but ici, est d'interconnecter les modules en Bluetooth. Nous avons choisi le Bluetooth pour garder une connexion commune sur toute la chaîne. Nous rajouterons alors un module bluetooth à chaque module de la manette.
Objectif 3: possibilité d'adapter les boutons (capuchon en 3D)
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
Liste de matériel :
3x Push buttons :
- O X Y Carré R3 L3
- Guide PS
- start/back
--> 0,45€/unité TTC [1]
1x Thumbsticks originaux:
Joystick analogique 4 directions --> 4,25€/unité TTC [2]
1x buttons trigger L1 L2: --> 1,49€/unité TTC [3]
1x Led RGB neopixel [4]
1x Raspberry Pi 3
--> ~36,23€/unité TTC [5]
3x Arduino UNO
6x Alimentation 5V
par exemple, 12 piles de type CR2016 3V rechargeables ou 24 piles AAA 1,5 V rechargeables
5 modules Bluetooth nrf de Nordic : nRF52810-QFAA-R
--> 3,17€/unité + frais expédition [6]
5 2x Lignes broches mâles et femelles
Logiciels:
- IDE arduino - Altium - FreeCAD ou Inkscape
Liste des tâches à effectuer
Etape 1 : Gestion du projet
- Définition des cahiers des charges fonctionnel et technique, choix d'orientation...
- Recherche techniques sur les différentes connexions possibles entre les modules, la RPi 3 et la console PS4
- Recherche connexion SPI entre les modules et la RPi3
- Recherche connexion bluetooth entre la RPi3 et la PS4
- Recherche connexion bluetooth pour les modules
- Recherche carte avec montage Atmega328P-PU et anticipation module bluetooth
- Détermination du matériel nécessaire
- Réflexion sur l'application
Etape 2: Réalisation du projet
Partie 1: Preuve concept manette en filaire
- Conception de cartes électroniques pour 2 modules (/!\ prévoir modules bluetooth)
- Réalisation connexion SPI avec 2 modules : programmation des Atmega328p en liaison série.
- Si tests concluant, ajouter des modules jusqu'à en avoir 5 (1 pour chaque type de boutons)
- Connexion bluetooth entre la PS4 et la RPi3
- Réalisation du support des modules avec fixations possibles (imprimante 3D)
Partie 2: Preuve concept manette en bluetooth
- Ajout des modules bluetooth aux cartes électroniques
- Connexion bluetooth entre les modules
Partie 3: Application Android : paramétrage de la manette
- Créer une application sur tablette ou smartphone (Android) afin de configurer la manette aux besoins (inter-connexion des modules et console)
Calendrier prévisionnel
Date |
Tache à réaliser |
17/01/18-24/01/18 |
Faire des recherches sur les différentes interconnexions du système : Bluetooth, RPi-Atmega328 (SPI), RPi-PS4 Continuer liste des taches, matériel, Début recherches + réflexion fixation support des modules |
31/01/18 |
Recherche technique connexion PS4-RPi3 et connexion SPI RPi3-Module + code |
31/01/18-07/03/18 |
Réalisation 1er prototype (+ début prototype 2) |
07/03/18 |
Seance 7 : Test prototype filaire |
07/03/18-09/05/18 |
Réalisation 2eme prototype + application Android |
09/05/18 |
Seance 14 : Test prototype Bluetooth |
16/05/18-17/05/18 |
Soutenances Projet |
Réalisation du Projet
Feuille d'heures
Tâche | Prélude | Heures S1 | Heures S2 | Heures S3 | Heures S4 | Heures S5 | Heures S6 | Heures S7 | Heures S8 | Heures S9 | Heures S10 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Analyse du projet | 10 | 2 | 1 | 1 | 1 | |||||||
Cherches techniques | 3 | 4 | 4 | 2 | ||||||||
Rédaction du wiki et rapport de projet | 1 | 1 | 1 | |||||||||
Programmation | 3 | |||||||||||
Cartes électroniques | ||||||||||||
Application | ||||||||||||
Total Semaine | 10 | 6 | 6 | 6 |
Prologue
Avant la réalisation et conception d'un projet, il est important d'analyser celui-ci. Nous avons allons consacré le prologue à l'analyse fonctionnelle de la manette. Nous avons également eu une réflexion sur l'analyse technique, cela nous a permis de réaliser une liste de matériel. Il est important de définir les objectifs ainsi que les besoins afin de ne rien oublier. (Voir ci-dessus Analyse projet) Nous avons également organisé notre travail, pour le partage de documents de recherches et la rédaction de compte-rendu final nous avons réalisé un google drive. Par la suite, nous créerons un projet Git.
Durant ce temps, nous avons décidé de réaliser 5 modules. Les modules sont les différents boutons de la manettes qui nous pourrons placer selon nos choix (boutons modulaires) pour notre prototype projet pour chaque type des boutons d'une manette PS4. Ces modules devrons être connectés à la console et interconnectés. Le tout sera lié à une application Android. Suite à quelques recherches et nos analyses, nous avons décidé les points suivants :
- On commencera avec 2 modules et on les multipliera par la suite. - Les premiers tests sont réalisés avec des boutons petits pour assurer leur caractéristique "modulaires", par la suite nous pourrons ajouter des capuchons de taille plus importante (imprimante 3D ou achat) - Conception modules : réalisation de carte avec un microcontrôleur atmega328 programmable pour chaque module (anticiper le module Bluetooth) - Projet en 2 parties : prototype filaire et prototype Bluetooth
- Prototype filaire : connexions entre les modules et la RPi3 en SPI, connexion Rpi3-PS4 en Bluetooth, avec l'application en filaire à la RPi3
- Prototype Bluetooth: connexion Bluetooth entre modules-RPi3-PS4-apllication
Semaine 1
Durant la séance, nous nous sommes concentrés sur des recherches techniques afin de définir clairement les inter-connexions que nous devrons réaliser au cours de notre projet. Ainsi, nous avons fait des recherches sur :
- Connexion SPI entre les modules (Atmega328p) et la RPi3
SPI: Serial périphérique interface BUS
Comme indiqué sur l'image ci-dessus, la Raspberry pi 3 peut communiquer en SPI avec ses broches CS0 (24), CS1 (26), SCLK (23), MISO (21), MOSI (19). Celles-ci permettent de communiquer avec un ou plusieurs esclaves (dans notre cas, des Atmega328p) en reliant directement les broches concernées de la RPi3 à celles des composants esclaves. Chaque broche CS0 (24) ou CS1 (26) ne peut être connectée qu'à l'entrée SS (aussi appelé CS) d'un seul esclave. C'est a dire que chaque CS est lié à un esclave afin de choisir avec lequel la communication est établie à un moment donné, et les MISO sont reliées entre elles en cascade, de même pour les SCLK et les MOSI. On peut noter que le maître impose la fréquence d’horloge et sélectionne l’esclave auquel les données sont envoyées. 8 MHz est le plus rapide supportable a 3,3V
Voici un schéma du fonctionnement souhaité :
Comme nous souhaitons avoir 5 modules environ il nous faudra rajouter un composant en plus afin d'augmenter les possibilités de sélection, par exemple des démultiplexeurs. Dans un premier temps nous esterons avex 2 esclaves, puis on augmentera le nombre.
- Connexion Bluetooth PS4-RPi3
Caracteristique pour la PS4: Bluetooth®v4.0, Qualcomm Atheros AR3002 Buetooth LE: 2,4-2,5 GHz
Caracteristique de la connexion :
Vitesse de transmission >> 3 Mbit/s 8N1
Relevé tous les 1.3 millisecond (peut-être)
Chaque manette à une adresse unique BD_ADDR qui correspond à l’adresse MAC de la carte Réseau
Protocole de détection est le SDP basé sur une emission reception PDU
l’Attribut ID est representer en TLV Type Length Value
Communication HCI ACL Data Packet
- Rélisation des cartes électroniques
matériel nécessaire pour un PCB :
-breadboard -cables -1 x 10k Ohm resistance -Quartz 16Mhz clock crystal -2 x 22 pF capaciteurs -Atmega328P-PU
Semaine 2
Durant la semaine deux et durant la séance, nous avons continué et approfondie nos recherches sur le projet. Nous avons pu ainsi affiner nos taches de réalisation et donc notre cahier des charges.
- Bluetooth sur la Raspberry Pi 3
(sudo apt-get install pi-bluetooth)
connexion sur la raspberry par ssh:
su update-rc.d ssh enable invoke-rc.d ssh start ssh pi@172.26.79.1XX
bluetooth
bluetoothctl agent on default-agent scan on pair [device Bluetooth address] (exemple: pair XX:XX:XX:XX:XX:XX )
- NOUVELLE REFLEXION : Connexion SPI entre les modules (Atmega328p) et la RPi3 --> MODULES BLUETOOTH
Si multi-esclaves= plusieurs modules : Il faut ajouter des sélections pour les SPI → démultiplexeurs OU ne pas utiliser les CS0 et CS1, et plutôt des pins entrée/sortie de la RPi3 lié au SS comme ça on choisit direct le module esclave voulu.
IMPORTANT: Nous avons étudié à nouveau la datasheet de notre module bluetooth nrf de Nordik. Le module bluetooth comporte déjà un microprocesseur ! Un module plutôt peut donc jouer le rôle de notre atmega328p. Il n'y a alors pas besoin de réaliser des cartes électroniques de type arduino standalone. Nos PCB regrouperont alors uniquement l'alimentation, un actionneur (bouton, joystick), le module bluetooth et les broches de connexion si besoin...
Cette séance nous a alors permise de revoir entièrement le matériel nécessaire. Notre liste de matériel nous semble alors plus réfléchie et limitée au nécessaire.
- Connexion Bluetooth PS4-RPi3
Le site qui détaille le protocole Bluetooth PS4 n'est pas complet et de plus n'ayant pas accès à une PS4 (pour le moment) nous avons décidé de commencer par une connexion USB (pour laquelle on dispose de toutes les informations) et qu'on pourra tester plus facilement.
Semaine 3 : Début premier prototype
- Connexion SPI RPi3-Arduino
Comme vu durant les semaines précédentes, nous souhaitons réaliser une connexion Multi-esclaves en SPI entre la Raspberry pi et plusieurs modules. Cette semaine nous avons vu que la réalisation de notre premier prototype doit aller vite. Il ne nous est pas nécessaire d’attendre les modules bluetooth si il nous faut dans cette partie uniquement utiliser son microprocesseur. Ainsi pour chaque module nous utilisons une arduino UNO. Nous réaliserons les programmes en C afin de pouvoir les réutiliser avec les modules bluetooth par la suite. Une fois la connexion réalisable nous adapterons les programmes aux modules bluetooth Nordik. En effet, ceux-ci comporte déjà un microprocesseur, le module peut jouer le rôle de notre atmega328p. Il n'y a aurait alors pas besoin de réaliser des cartes électroniques arduino standalone sur PCB, mais directement des cartes électronique avec le module et le module voulu (bouton, joystick...) et l'alimentation. Durant la séance nous avons alors revu la liste de matériel nécessaire.
Durant la séance, nous avons recherches des exemples de codes et de librairies pour Arduino SPI et RaspberryPI SPI.
Nous avons également commencé le programme de la connexion SPI pour l'arduino et récupéré les bibliothéques SPI.h avec SPI.c. Nous nous sommes alors concentrer à les comprendre, pour pouvoir l'utiliser.
- Réalisation du projet Git
Création du projet IMA4_Projet35_ManetteModulable sur Git et partage de celui-ci. Les premiers dossier crées durant la séance : -Arduino (connexion SPI arduino) : ProtoSpi.c + dossier librairie SPI + Makefile -RPI (dossier codes pour Rpi) -Readme.md
Semaine 4
Pour le prototype 1 FILAIRE nous réaliserons les étapes suivantes :
- Réalisation du programme SPI pour arduino
- Réalisation du programme SPI pour la RPi
- Connexion USB avec la PS4 ou ordinateur
- Réalisation de cartes électroniques atmega328p-pu standalone (remplacer les Arduinos)
- Remplacer les "PCB arduino" par le module bluetooth et adapter la connexion
- Conception 3D de la délimitation 1 axe pour le joystick "gâchette"
- Réalisation de l'application Androïde.
Une fois ces étapes réalisées nous auront alors une preuve de concept filaire et nous pourrons alors passer à une connexion bluetooth. Le passage à la connexion bluetooth sera le deuxième prototype et le cas idéal de la réalisation de la manette modulable.
- Matériel
- Modéliser les boutons gâchettes L1/2 R1/2 de la manette PS4 (boutons sensibles à la pression) --> un joystick dont nous bloquerons un axe (imprimante 3D) - Remplacer la RPi 3 par une Rpi zero W qui nous permettrait de réaliser plus facilement une connexion USB tout en gardant l'avantage du bluetooth. - Choix de l’alimentation pour les 5 modules Bluetooth: nécessitent 3V --> utiliser des piles rechargeables 1,2V AAA plutôt que piles rondes 3V.
Nous avons également besoin du matériel cité en semaine 1 pour réaliser des cartes électroniques atmega328p-pu standalone. ( nous revenons alors sur les décisions de la semaine 3)
- Connexion SPI RPi3-Arduino
Montage Raspberrypi et 1 arduino en PSI + 1 bouton + 1 led. Voici le choix des branchements :
MASTER = RPi SLAVE= Arduino
SPI sur Arduino:
MOSI -> GPIO11 //PB3 //master OUT to the slave IN MISO -> GPIO12 //PB4 //slave OUT to the master IN SCLK -> GPIO13 //PB5 //serial clock SS -> GPIO10 //PB2 //slave select
Led, bouton et autre...
LED --> GPIO6 //PD6 GND +5V (if required)
SPI sur la Raspberry Pi
SPIO MOSI -> PIN19 SPIO MISO -> PIN21 SCLK -> PIN23 SPIO CS0 -> PIN24
Continuation du code pour faire clignoter Led branchée à une arduino depuis la Rpi, en connexion SPI.
- Connexion USB PS4-RPi3
Durant la séance, nous avons regardé comment utiliser le port série sur la RPi3, soit utiliser les UART.
0x12, // bLength 0x01, // bDescriptorType (Device) 0x00, 0x02, // bcdUSB 2.00 0x00, // bDeviceClass (Use class information in the Interface Descriptors) 0x00, // bDeviceSubClass 0x00, // bDeviceProtocol 0x40, // bMaxPacketSize0 64 0x4C, 0x05, // idVendor 0x054C 0xC4, 0x05, // idProduct 0x05C4 0x00, 0x01, // bcdDevice 1.00 0x01, // iManufacturer (String Index) 0x02, // iProduct (String Index) 0x00, // iSerialNumber (String Index) 0x01, // bNumConfigurations 1
Nous avons réaliser qu'il n'était pas aussi simple d'utiliser le port serie USB de la Raspberry Pi 3, en effet le SoC est un BCM2837 . De plus nous ne pouvons pas utiliser le même port pour l'alimentation et la connexion.
Une des solutions à cette difficulté serait d'utiliser une RPi ZERO W à défaut d'une RPi 3. On pourrait alors avoir un port d'alimentation avec connexion USB mais également retrouver la connexion bluetooth dont nous avons besoin.