C'est le printemps ! Fleur.gif

Passerelle.Infini 2025 : MOUMOUNAN

De Les Fabriques du Ponant
Révision datée du 21 mars 2025 à 17:22 par MEL (discussion | contributions) (résumé du projet)
Aller à : navigation, rechercher

LOGO MOUMOUNA copie.jpg

résumé du projet

MOUMOUNA - dérivé du mot câliner "moumounan" en breton - est un objet interactif distributeur de câlins à distance. A l'échelle de notre prototype celui-ci peut être déployé dans l'espace familial ou à taille humaine disposé dans l'espace public.

Le principe : Enlacer cet objet textile afin de faire baisser son anxiété ou trouver du réconfort. La pression contre son corps active Moumouna qui émet une douce vibration et s'illumine. Cet étreinte envoie un signal au deuxième "moumouna" disposé dans un autre espace ou une autre ville, qui s'illumine en attendant un câlin en réponse. Les vibrations annoncent que deux personnes s'enlacent par Moumouna interposé.

Un QR code est imprimé sur les deux objets qui vous renvoie vers un bande sonore (bruits de vagues) à télécharger pour renforcer l'expérience du câlin.

Action technique.jpg Moumouna Distributeur de câlins.png MOUMOUNA ACTIVE.jpgNotice moumouna.jpg

membres du projet

Equipe au travail.jpg Equipe.jpg


Aude Mouillot - Catherine Huve - Mélissa Rosingana - Claire Denieul

Bibliographie et webographie sur le projet

Mettre ici des exemples trouvés sur web de projets qui ressemblent et des technologies qui s'en rapprochent ou qui servent d'inspiration.

  1. calinothérapie

https://www.24heures.ch/les-bienfaits-de-la-calinotherapie-expliques-par-une-experte-803631900339

pistes explorée, abandonnées ou fertiles

CROQUIS / PREMIERES IDEES Croquis 1 moumounan.jpg Idée 1 moumounan.jpg Moumounan projet calin.jpg Proto-moumounan-esquisse.jpg


Inspiration Oeuvre de Catherine Huve " LE GRAND HUG " textiles, mixtes - Dimensions: 40x70cm, 2024

 LE GRAND HUG Catherine Huve.jpg

prototype qu'on souhaite réaliser

PROTOTYPE EN MOUSSE DES DEUX MOUMOUNA

  Prototype moumounan mousse.jpgPrototype en mousse moumounan.jpg

PROTOTYPE TISSUS

 Coussin tissus proto moumounan.jpg

COUTURE DU PROTOTYPE FINAL

 Catherine couture coussin 2.jpg  Catherine couture main coussin.jpg Aude couture housse.jpg Aude couture housse 2.jpg 

REMPLISSAGE AVEC COPEAUX DE BOIS ET COTON

 Cath remplissage moumouna.jpg Copeaux bois.jpg Remplissage moumouna.jpg

COLORATION DU TISSUS Premier proto tissus moumounan.jpg Peinture bombe.jpg Couleur bombe.jpg

BOITE NUMERIQUE

 Boite numerique.jpg Boite numerique 2.jpg  Bande LED Programmation boite moumouna.jpg Vibreur Vibreur moumouna.jpg  
 Programmation.jpg En action.jpg

ASSEMBLAGE DE NOS PROTOTYPES

Decoupe prototype.jpg  Proto details.jpg

PROTOTYPE FINAL

MOUMOUNA-rose.jpg  MOUMOUNA ACTIVE.jpg  Moumouna2.jpg  Calin moumouna.jpg Calindemoumouna.jpg
  Logo moumouna serigraphie.jpg

code

  1  
  2 /////////////////////////
  3 //      POCL Poke      //
  4 /////////////////////////
  5 /*
  6  * Un POCL imaginé et réalisé au Hackathon POCL à l'édulab Rennes 2 les 9 et 10 décembre 2021.
  7  * 
  8  * Difficultés :
  9  * Configurez le logiciel Arduino pour gérer la carte D1 mini (ESP8266).
 10  * Intégrer les biobliothèues requises par le projet :
 11  ** #include <MQTT.h> -> pour gérer le protocole de communication, c'est la bibliothèque MQTT de Joël Gähwiler : https://github.com/256dpi/arduino-mqtt
 12  ** #include <Adafruit_NeoPixel.h> -> pour gérer les rubans de led
 13  ** #include <WiFiManager.h> -> Bibliothèque WiFiManager pour configurer automatiquement le réseau wifi et le mot de passe.
 14  * 
 15  *                                      BROCHAGE                            
 16                                 _________________                        
 17                                /     D1 mini     \                       
 18                            -  |[ ]RST        TX[ ]| -                    
 19                            -  |[ ]A0  -GPIO  RX[ ]| -                    
 20                               |[ ]D0-16    5-D1[ ]| -                    
 21                               |[ ]D5-14    4-D2[x]| - Vibreur In                   
 22                     Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             
 23                            -  |[ ]D7-13    2-D4[ ]| -           
 24                            -  |[ ]D8-15     GND[X]| - GND (Boutons, ruban de leds)             
 25                            -  |[ ]3V3 .      5V[X]| - ruban de Led        
 26                               |       +---+       |                     
 27                               |_______|USB|_______|                      
 28 
 29 Matériel :
 30 - des fils dupont.
 31 - un ruban de led RGB WS28B12
 32 - D1 mini (Wemos, LOLIN,...)
 33 - bouton poussoir
 34 - une alimentation 5V
 35 */
 36 
 37 /*
 38  * Un travail d'équipe de :
 39  * Alma Oskouei
 40  * Gaëlle Bescond
 41  * Tony Vanpoucke
 42  * Wing-Anh Luy
 43  * Antony Le Goïc-Auffret
 44    ___
 45  / ___ \
 46 |_|   | |
 47      /_/ 
 48      _   ___   _ 
 49     |_| |___|_| |_
 50          ___|_   _|
 51         |___| |_|
 52 Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
 53 // Programme inspiré de celui par Joël Gähwiler
 54 // https://github.com/256dpi/arduino-mqtt
 55 */
 56 
 57 #include <ESP8266WiFi.h>
 58 #include <MQTT.h> // Bibliothèque MQTT par Joël Gaehwiler
 59 #include <Adafruit_NeoPixel.h> // Bibliothèque NeoPixel d'Adafruit
 60 #include <WiFiManager.h> // Bibliothèque WiFiManager pour configurer automatiquement le réseau wifi et le mot de passe.
 61 
 62 WiFiClient net; //on crée l'objet WiFiClient "Net"
 63 MQTTClient client;
 64 
 65 #define BROKER_IP "debrouillards.ddns.net" //IP du serveur sur lequel est installé le Broker MQTT
 66 unsigned long lastMillis = 0;
 67 
 68 //=============élément pour le ruban de led et le bouton===============
 69 
 70 // Broche de connexion du ruban de LED
 71 #define PIN D3
 72 
 73 const int brocheBouton = 12; //GPIO de la broche D6
 74 const int vib = D2;
 75 
 76 // Nombre de Led RDGB dans votre ruban
 77 #define NUMPIXELS 13 
 78 
 79 // on configurer un riban nommé "pixels"
 80 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
 81 
 82 #define T 1 // temps pour gérer le fade du ruban
 83 
 84 //==============================================================
 85 
 86 void connect() {
 87   Serial.print("Vérification de la connexion Wifi...");
 88   while (WiFi.status() != WL_CONNECTED) {
 89     Serial.print(".");
 90     delay(1000);
 91   }
 92   
 93   Serial.print("\nconnexion au serveur MQTT en cours...");
 94   //connection au serveur MQTT : identifiant, User, mot de passe
 95 
 96   while (!client.connect("Antony", "poclpokou", "pokou")) {
 97     Serial.print(".");
 98     delay(1000);
 99   }
100 
101   Serial.println("\nconnecté à MQTT !");
102 
103 // on s'abonne au sujet (topic) "/mou" 
104   client.subscribe("/mou"); // Attention à la casse !! La casse c'est maj ou minuscule
105   Serial.println("Abonné à /mou");
106   // client.unsubscribe("/mou");// Pour se désinscrire
107 }
108 
109 void messageReceived(String &topic, String &payload) {
110   digitalWrite(LED_BUILTIN, HIGH);
111   fade();
112   Serial.println("incoming: " + topic + " - " + payload);
113 
114   if (payload == "calin"){
115     Serial.println("clic !");
116     digitalWrite(LED_BUILTIN, LOW);
117     delay(100);
118     digitalWrite(LED_BUILTIN, HIGH);
119   }
120 }
121 
122 
123 void fade() {
124   for (int sig=0; sig<3; sig++){
125   for (int b=0; b<255; b++){
126   pixels.setBrightness(b);
127 
128   for(int i=0; i<NUMPIXELS; i++) {
129     pixels.setPixelColor(i, pixels.Color(250, 150, b));
130   }
131 
132   pixels.show();   // On allume les rubans
133   digitalWrite(vib, HIGH);
134   delay(T);
135   }
136 
137   for (int b=255; b>1; b--){ //boucle de gestion de la brillance
138   pixels.setBrightness(b);
139 
140   // n'oubliez pas que le premier pixel porte le Numéro 0
141   for(int i=0; i<NUMPIXELS; i++) { // Pour chaque pixel...
142     // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255
143     pixels.setPixelColor(i, pixels.Color(b, 50, 255));
144   }
145 
146   pixels.show();   // on affiche les pixels
147   digitalWrite(vib, LOW);
148   delay(T);
149   }
150   }
151 }
152 
153 void setup() {
154   Serial.begin(115200);
155   WiFi.mode(WIFI_STA); // la carte D1 mini est mise en mode STATION
156   WiFiManager MonReseauWifi; // on crée l'objet "MonReseauWifi"
157    
158   bool res;
159   res = MonReseauWifi.autoConnect("Wifi POCL Pokou"); // le POCL diffuse un réseau wifi en accès libre nommé "Wifi POCL Pokou"
160      
161   if(!res) {
162    Serial.println("La connexion n'a pas fonctionnée...");
163    } 
164   else {
165    Serial.println("Vous êtes connecté au Wifi... :-)");
166    } 
167 
168   pixels.begin(); //on initialise le ruban "pixels"
169   pinMode(brocheBouton,INPUT_PULLUP);
170 
171   pinMode(LED_BUILTIN, OUTPUT);
172   digitalWrite(LED_BUILTIN, HIGH);
173   pinMode(vib, OUTPUT);
174   digitalWrite(vib, LOW);
175 
176   // on se connecte au client
177   client.begin(BROKER_IP, 1883, net); // (IP, port, Client Wfi défini plus haut)
178   client.onMessage(messageReceived);
179 
180   connect();
181 }
182 
183 void loop() {
184   pixels.clear(); // Set all pixel colors to 'off'
185   pixels.show();
186   digitalWrite(vib, LOW);
187 
188   client.loop();
189   delay(100);  // <- fixes some issues with WiFi stability
190 
191 
192   if (!client.connected()) {
193     connect();
194   }
195 
196   // publish a message roughly every second.
197   if ( digitalRead(brocheBouton) == LOW ){
198   Serial.println("Appuis Bouton"); 
199   client.publish("/mou", "calin");
200   delay(250);
201   }
202 }

ne pas toucher en dessous de ce paragraphe