Documentation

SPECTRE


Article

RÉSUMÉ DES ÉTAPES POUR UN PROTOTYPE FONCTIONNEL :
> les codes sont implantés dans les cartes Arduino Mega et RPI
>> les cartes communiquent entre elles, avec les capteurs et avec l'enceinte
>>> le RPI est connecté au web, il communique avec le serveur pour télécharger le jeu
>>>> la boîte est réalisée
>>>>> les capteurs, les composants, les cartes, l'enceinte sont implantées dans la boîte



RESSOURCES A TELECHARGER :

Code RPI sur Github : https://github.com/spectrehackaton/SpectreBox

Code Arduino sur Github : https://github.com/spectrehackaton/SpectreBox-arduino

Plans de la boîte
Telecharger le fichier box_spectre.eps (36.6kB) .eps
Telecharger le fichier box_spectre.svg (13.3kB) .svg
model cache matric 8x8

Aide de jeu - Grimoire
> Telecharger le fichier grimoire.pdf (1.4MB)
> Telecharger les fichiers pour réaliser la mise en page.zip (2.8MB)

Audio
> [fichier trop large]



DÉTAIL DES TRAVAUX RÉALISÉS PAR CHACUN

0- PRÉPARATION DE LA RASPBERRY PI : Michel
image IMG_9144.jpg (92.6kB)

  • On commence par installer raspbian jessie lite ( https://www.raspberrypi.org/downloads/raspbian/ )sur la raspberry pi 3, on choisit la version lite car nous n'avons pas la nécessité d'un gui.
  • Ensuite on la met à jour "sudo apt-get update && sudo apt-get upgrade"
  • On la configure en wifi en accédant au fichier de config "sudo nano /etc/wpa_supplicant/wpa_supplicant.conf"
  • il suffit d'indiquer un réseau dans le fichier :
  • network={
  • ssid=" VotreSSID"
  • psk=" VotreMDP"
  • }
    • On active le ssh sur la raspberry pour pouvoir y accéder à distance "Raspi-config" dans advanced puis ssh.
    • Ensuite on a besoin de créer un serveur FTP sur la raspberry pour upload nos fichiers code et source pour le jeu on utilisera vsftpd "sudo apt-get install vsftpd" puis on le configure "nano /etc/vsftpd.conf" il faut dé-commenter ou ajouter les lignes suivantes:
    • "
    • Anonymous_enable=NO
    • Write_enable=YES
    • Local_enable=YES
    • Ascii_upload_enable=YES
    • Ascii_download_enable=YES
    • "
    • On redémarre la raspberry "sudo reboot".
Pour notre jeu on aura besoin de plusieurs bibliothèques python, pyserial et pygame, on installe donc pip puis les bibliothèques :
  • "sudo apt-get install python-pip
  • Sudo pip install pyserial
  • sudo apt-get install python-pygame"


  • 1- CODE :
    image IMG_9148.jpg (86.0kB)
Adresse du projet sur Github : https://github.com/spectrehackaton/SpectreBox

  • > Implantation et gestion des capteurs (Arduino) : Célestin + Martin
Le but de cette partie était de créer une plateforme Arduino communicante avec une Raspberry Pi. Un aspect primordial était qu'il soit possible de rajouter des modules à la volée (par exemple rajouter des LEDs, un capteur), sans que cela perturbe le fonctionnement global. Pour cela, nous avons premièrement testé chaque module indépendamment, en commençant par les plus "difficiles" (écran 8x8, ruban de LEDs), et créé pour chacun une fonction que l'on pourrait alors utiliser plus tard.
Au final, nous avons donc une Arduino Mega qui contrôle :
  • Un ensemble d'actionneurs, pour représenter la "manifestation" du spectre, avec : quatre LEDs, un écran 8x8, deux servo-moteurs reliés à des aiguilles ;
  • Un ensemble de capteurs pour détecter les actions du joueur, avec : un bouton start, un capteur de luminosité, une capteur de sitance ultrason, quatre boutons et trois potentiomètres ;
  • La communication avec une Arduino Uno s'occupant uniquement de la bande de LEDs sous la boîte.

  • > Création du gameplay (Raspberry) : Kevin
  • Le raspberry pi est responsable du déroulement du jeu. Au démarrage, il se connecte à internet pour récupérer de nouvelles énigmes, puis lance une nouvelle session de jeu. L'objectif est de créer un framework générique et modulaire qui permette de construire de nouvelles énigmes à partir de tous les capteurs et actionneurs présents sur la boite. Les énigmes complexes vont combiner des séquences, avec chacune des conditions de défaite et de victoire.
    • On utilise le langage python pour son dynamise et pour permettre a terme de scripter des comportements pour la création de nouvelles énigmes.
    • La base de donnée contenant les énigmes est stockée sur Firebase, et on utilise la lib python-firebase pour facilement récupérer les données.

  • > Communication Arduino / RPI : Michel
Dans notre projet il nous faut communiquer entre une arduino Mega et une raspberry Pi 3, pour cela nous utilisons la communication série grâce au port USB. Pour vérifier que le port série est bien détecté par la raspberry on peut utiliser la commande "ls dev/tt*" une liste devrait apparaître et l'arduino devrait s'appeler dev/ttyAMA0 le nom est spécifique au type de l'arduino que vous utilisez, dans notre cas une arduino Mega
  • Le jeu est codé en python et la communication et géré par la librairie python Serial ( https://github.com/pyserial/pyserial ) nous avons défini un protocole de communication pour permettre de faciliter les transmissions il consiste à définir si on parle d'une entré ou d'une sortie puis un nom explicite et enfin les paramètres exemple entrée : "inLight:124;inDistance:10" le capteur de luminosité indique une intensité lumineuse de 124 sur 1024 possible, le capteur de distance indique qu'un objet se trouve au dessus de la boite à 10 cm. Exemple sortie : "outLED:1,255,0,0,10" la raspberry Pi demande à l'aduino d'éclairer la bande rgb dans le mode 1 ( respiration ) en rouge (255,0,0) à une vitesse 10.

  • > Mise en place du serveur : Kevin
  • Le serveur utilisé est Firebase, qui permet un stockage des données sous format JSON, facilement interprétable en python. Il n'y a pas de code côté serveur, chaque client sait quelle données il doit récupérer.


  • 2- CRÉATION DE LA BOITE :
    image IMG_9141.jpg (84.2kB)
    image IMG_9138.jpg (0.1MB)
    • > design : Pierre-Luc
    • Le groupe s'est arrêté sur une esthétique steampunk, un mélange de science fiction et de révolution industrielle (Jules Vernes, par exemple). Nous aurions tout autant partir sur une ambiance cluedo ou hacker.
      • La première étape, en collaboration avec les codeurs et électroniciens, était d'arrêter quels capteurs et quels actionneurs allaient trouver leur place dans la boîte. La démarche de conception était de mettre en place un maximum de contrôleurs et d'actionneurs de couleurs et formes possibles, jusque dans la disposition, pour donner aux énigmes un maximum de combinaisons logiques à travers le moteur de jeu.
      • La seconde étape était de créer la boite proto en impression laser avec un générateur de boites en ligne.
      • Le design effectif commence: positionner les éléments fonctionnels pour une bonne expérience de jeu, en respectant les specificités des composants (vibration=fixation, capteur de lumière=positionnement,...)
      • Ensuite, relevé de cotes des positions puis perçages de la boite .
      • Enfin, le gros du travail a été la fixation des perçages et des éléments de décors comme, par exemple: l'usure d'un des pieds à causé le dessertissage de son pas de vis= réparation, trouver le mode de transmission d'un servo moteur à un axe d'horloge=meulage de l'axe, en particulier...
      • La principale difficulté est d'adapter des composants anciens et de récupération divers, aux formats non-standards, à des actionneurs industriels. Le cadre des 48h du hackathon est un obstacle au travail minutieux que demande l'adaptation... mais tellement stimulant !

3- CRÉATION DES FICHIERS AUDIO : Vincent
image IMG_9142.jpg (0.1MB)

Au-delà de l'ambiance sonore générale du jeu, on part du principe que toute action du joueur doit se manifester par un son (feedback) pour mieux l'aiguiller dans ses choix pour la résolution des énigmes.
Les différents sons ont été :
- créés par synthèse sonore à l'aide d'un Korg electribe v1, d'un Korg Monotron et d'un  PicoPaso de Bleeplabs.
- récupérés sur les sites de banques de samples suivants (libres de droits) :
http://www.universal-soundbank.com
http://soundbible.com
http://www.universal-soundbank.com

Tous les sons ont ensuite été égalisés et découpés dans le logiciel libre Audacity, puis converti au format  Mp3 pour les besoins techniques du RPI.


4- CRÉATION DE L'AIDE DE JEU (GRIMOIRE) :
image grimoirepage001.png (0.9MB)
image grimoirepage004.png (1.0MB)

Une aide de jeu permet de poser queques règles et surtout de donner des indices pour la résolution des énigmes. Un bestiaire de spectres a été imaginé dans une version simplifiée pour le prototypage (4 spectres). Il faut imaginer un bestiaire beaucoup plus conséquent pour la suite à intégrer au grimoire, agrémenté d'indices de logiques (ex : clés de déchiffrement).
La mise en page du grimoire a été réalisée sous le logiciel libre Scribus, les images téléchargées sur Internet.
 Raspberry Pi arduino code fourrure fun matériel steampunk
En éditant la PageColonneDroite, on peut modifier cette zone.

MATÉRIEL NÉCESSAIRE :
- accès au web !

- Raspberry Pi 3

- Arduino Méga

- capteurs Arduino : présence / accéléromètre / photo-résistance /

- composants additionnels : leds / potentiomètres / interrupteurs / encodeurs rotatifs / vibreurs de pagers / câbles / diodes / résistances / solénoïdes

- breadboard

- guirlande de leds

- mini-enceinte alimentée en USB par le RPI

- outillage : graveuse-découpeuse laser pour la boîte / dremel / perceuse à colonne / fer à souder / pince coupante / peinture / vernis

- objets de récupération pour la décoration de la boîte dans un style "steampunk" : cadrans d'horloge, tubes de cuivre, fourrure fluo et tissu léopard !

- logiciels utilisés : Filezilla (connexion FTP avec le RPI) / Inkscape (dessin vectoriel des plans de la boîte) / Arduino / Libreoffice / Notepad++ (gameplay, gestion du serveur, communication Arduino-RPI,...) / Scribus (mise en page de l'aide de jeu) / Audacity (création des samples audio) / Framapad (mutualisation des contenus)

- paper-board pour organiser le planning !
parksville beach colombie britannique canada bienvenue a parksville bay beach 2