Skip to main content

Roll Up : Marveen Walid Aurélie


Porte papier toilette qui avertit lorsque le rouleau de papier toilette est vide


  • DĂ©finition du projet (besoin, utilisateurs, fonctionnalitĂ© principale, fonctionnalitĂ©s secondaires)

    • Besoin : savoir lorsque le niveau de papier toilette est faible/nul.
    • Utilisateurs : barman, en entreprise, manutentionnaire, etc.
    • FonctionnalitĂ© principale : prĂ©venir lorsque le niveau de papier toilettes est bas/nul afin que le rouleau soit remplacĂ© ; pour un manutentionnaire, savoir quelle quantitĂ© de papier toilette apporter lors de son passage aux toilettes.


  • RĂ©flexions sur la problĂ©matique et veille sur l'existant :

    • Il arrive souvent dans les bars, entreprises ou aires d’autoroute de se retrouver face Ă  un rouleau de papier toilette vide, car les personnes en charge de les changer ne sont pas au courant constamment de l’état du rouleau. De plus, pour les manutentionnaire, lorsqu’ils arrivent avec leur camion, ils ne savent pas quelle quantitĂ© de papier toilette apporter avec eux car ils ne savent pas si les rouleaux sont vides ou non - ils se retrouvent donc Ă  porter une charge de produits plus importante que ce qui Ă©tait nĂ©cessaire.
    • Rollscout : c’est une startup amĂ©ricaine, mais qui a seulement le concept de laser qui dĂ©tecte sous un certain seuil le manque de papier toilette. Hors, nous souhaiterions ajouter dans le futur un mĂ©canisme permettant de remplacer le rouleau.


  • Lean canvas

Lean Canva Outils Technologiques de la Conception Innovante.jpeg


  • Choix techniques

    • Électronique numĂ©rique pour la dĂ©tection de prĂ©sence de papier toilette.
    • Conception 2D et dĂ©coupe laser pour le boĂ®tier en bois.
    • Conception et impression 3D pour la tige sur laquelle sera posĂ© le papier toilette.


  • Gestion de projet : "Minimum Viable Product", planification et rĂ©partition des taches

    • MVP : tige imprimĂ©e en 3D, support fait avec la dĂ©coupeuse laser, et dĂ©tecteur laser reliĂ© Ă  un ESP 32 qui envoie un signal (Mail ou SMS) quand il n'y a plus de papier toilette.
    • Planification : Chacun avance sur sa partie pour le 02/05, puis on fait les impressions et les tests le 02/05, et enfin on peaufine et prĂ©pare la prĂ©sentation le 03/05 et le 04/05.
    • RĂ©partition des tâches : 
      • Marveen : Partie Ă©lectronique numĂ©rique.
      • Walid : Partie conception et impression 3D de la tige.
      • AurĂ©lie : Partie conception 2D et dĂ©coupe laser du boĂ®tier en bois.


  • Croquis, dimensions

image-1680618623262.jpeg

    • BoĂ®tier pour le capteur : minimum 5*2,2*2,5 cm.
    • Fente pour le capteur : 1*0,5*1 (profondeur) cm.


  • Liste du matĂ©riel

    • ESP 32
    • Câbles pour relier les composants
    • Capteur de distance
    • Logiciel Inkscape
    • Logiciel Tinkercad
    • Logiciel Arduino
    • Imprimante 3D
    • DĂ©coupe laser


  • Partie Électonique NumĂ©rique : Circuit et Programmation de l'ESP32

    • Première Ă©tape : Soudure des broches de l'ESP32
      • Comme les broches du capteur n'Ă©taient pas dĂ©jĂ  soudĂ©es, nous les avons soudĂ©es nous mĂŞme avec de l'Ă©tain.

image-1680618811778.jpeg


    • Deuxième Ă©tape : Test du programme Blink
      • Ce programme consiste Ă  faire clignoter une LED en fonction du dĂ©lai choisi.
      • Sur notre circuit, nous avons reliĂ© la LED Ă  la broche 14 de l'ESP32.
      • Voici le code de ce programme :
        int LED_BUILTIN = 14;
        
        void setup() {
          pinMode(LED_BUILTIN, OUTPUT);
        }
        
        void loop() {
          digitalWrite(LED_BUILTIN, HIGH);   
          delay(1000);                      
          digitalWrite(LED_BUILTIN, LOW);   
          delay(1000);                     
        }

    • Troisième Ă©tape : Test du capteur
      • L'objectif de ce programme est d'allumer la LED (qui a Ă©tĂ© utilisĂ©e dans le programme Blink) lorsque le capteur ne dĂ©tecte pas de prĂ©sence, et donc de la conserver Ă©teinte lorsque de la prĂ©sence est dĂ©tectĂ©e.
      • Pour cela, nous avons reliĂ© notre capteur Ă  la broche 12 de l'ESP32.
      • Et voici le code que nous avons utilisĂ© pour ce programme :

        int Led = 14; int Capteur = 12; int val; void setup() { pinMode(Led, OUTPUT); pinMode(Capteur, INPUT); Serial.begin(9600); } void loop() { val = digitalRead(Capteur); Serial.print("Distance : "); Serial.println(val); if (val == HIGH) { digitalWrite(Led, HIGH); } else { digitalWrite(Led, LOW); } }
      • Et voici le circuit rĂ©alisĂ© pour ce programme :image-1680618695964.jpeg


    • Quatrième Ă©tape : Connexion de l'ESP32 Ă  Internet
      • Pour pouvoir envoyer un mail Ă  partir de l'ESP32, il faut que ce dernier soit connectĂ© Ă  Internet.
      • Pour cela, nous avons d'abord essayĂ© le code disponible sur Arduino "WiFiManager".
        • Ce code met l'ESP32 en mode "station", c'est-Ă -dire qu'il faut connecter son tĂ©lĂ©phone Ă  l'ESP32 comme si on se connectait Ă  un rĂ©seau WiFi quelconque.
        • Une fois connectĂ© Ă  l'ESP32, il fallait renseigner le nom et le mot de passe du rĂ©seau WiFi auquel on voulait que l'ESP32 se connecte.
        • Enfin, l'ESP32 se connectait au rĂ©seau WiFi.
        • Le problème avec ce programme est que l'on ne peut pas avoir la preuve que l'ESP32 est bien connectĂ© au rĂ©seau WiFi.
      • Nous avons donc utilisĂ© un autre programme, qui fait que l'ESP32 se connecte directement Ă  un rĂ©seau WiFi, après avoir renseignĂ© le nom et le mot de passe du rĂ©seau WiFi directement dans le code.
        • Voici le lien que nous avons utilisĂ© pour cela : https://www.upesy.fr/blogs/tutorials/how-to-connect-wifi-acces-point-with-esp32
        • Et voici le code que nous avons utilisĂ© pour ce programme :
          #include <WiFi.h>
          
          const char* ssid = "Marveen";
          const char* password = "1234567890";
          
          void setup(){
              Serial.begin(115200);
              delay(1000);
          
              WiFi.mode(WIFI_STA); //Optional
              WiFi.begin(ssid, password);
              Serial.println("\nConnecting");
          
              while(WiFi.status() != WL_CONNECTED){
                  Serial.print(".");
                  delay(100);
              }
          
              Serial.println("\nConnecté au réseau WiFi");
              Serial.print("Local ESP32 IP: ");
              Serial.println(WiFi.localIP());
          }
          
          void loop(){}
        • De cette manière, nous pouvions voir directement sur le tĂ©lĂ©phone qui effectue le partage de connexion que l'ESP32 Ă©tait bien connectĂ© :WhatsApp Image 2023-05-04 at 22.53.17.jpeg


    • Cinquième Ă©tape : Faire envoyer un mail par l'ESP32
      • Pour faire cela, nous avons suivi beaucoup de tutos sur Internet, mais cela Ă©tait plutĂ´t compliquĂ©, et les codes utilisĂ©s comprenaient plus de 200 lignes chacun.
      • De plus, il fallait crĂ©er un nouveau compte Gmail, et autoriser sur ce compte l'envoi par des sources non sĂ©curisĂ©es. Cependant, cette fonctionnalitĂ© a Ă©tĂ© arrĂŞtĂ©e par Gmail depuis 2022, ce qui rendait donc cette mĂ©thode inutilisable.
      • Enfin, après avoir rĂ©flĂ©chi sur le sujet, nous nous sommes rendus compte que l'envoi d'un mail n'est pas optimal, car on regarde beaucoup moins ses mails que ses messages.
      • L'envoi par mail Ă©tant trop complexe et non optimal, nous avons dĂ©cidĂ© de passer par un envoi de message sur Whatsapp.
      • Lien utilisĂ© pour cette Ă©tape : https://randomnerdtutorials.com/esp32-email-alert-temperature-threshold/ 


    • Sixième Ă©tape : Faire envoyer un message Whatsapp par l'ESP32
      • Pour cette Ă©tape, nous avons suivi le tutoriel du lien suivant : https://www.raspberryme.com/esp32-envoyer-des-messages-a-whatsapp/#:~:text=Pour%20envoyer%20des%20messages%20%C3%A0,de%20vous%20envoyer%20un%20message
      • Il fallait tout d'abord crĂ©er un BOT sur un compte Whatsapp pour obtenir un "APIKEY", que nous allons utiliser dans notre code.
      • Il fallait ensuite tĂ©lĂ©charger la bibliothèque URLEncode.
      • Nous avons ensuite utilisĂ© le code suivant pour faire envoyer un premier message de test sur Whatsapp par l'ESP32 :
        #include <WiFi.h>    
        #include <HTTPClient.h>
        #include <UrlEncode.h>
        
        const char* ssid = "Marveen";
        const char* password = "1234567890";
        
        String phoneNumber = "+33621941918";
        String apiKey = "8433739";
        
        void sendMessage(String message){
          String url = "https://api.callmebot.com/whatsapp.php?phone=" + phoneNumber + "&apikey=" + apiKey + "&text=" + urlEncode(message);    
          HTTPClient http;
          http.begin(url);
        
          http.addHeader("Content-Type", "application/x-www-form-urlencoded");
          
          int httpResponseCode = http.POST(url);
          if (httpResponseCode == 200){
            Serial.print("Message sent successfully");
          }
          else{
            Serial.println("Error sending the message");
            Serial.print("HTTP response code: ");
            Serial.println(httpResponseCode);
          }
        
          http.end();
        }
        
        void setup() {
          Serial.begin(115200);
        
          WiFi.begin(ssid, password);
          Serial.println("Connexion en cours");
          while(WiFi.status() != WL_CONNECTED) {
            delay(500);
            Serial.print(".");
          }
          Serial.println("");
          Serial.print("Connecté au réseau Wi-Fi avec l'adresse IP : ");
          Serial.println(WiFi.localIP());
        
          sendMessage("Il n'y a plus de papier toilette, il faut en remettre !");
        }
        
        void loop() {
        }


    • Septième Ă©tape : CrĂ©ation du code final
      • Après avoir testĂ© toutes les fonctionnalitĂ©s de manière sĂ©parĂ©e, il ne reste plus qu'Ă  les intĂ©grer sur le mĂŞme code.
      • Nous souhaitons que lorsque le capteur ne dĂ©tecte plus de prĂ©sence (donc il n'y a plus de papier toilette), il allume la LED et envoie un message pour prĂ©venir qu'il n'y a plus de papier toilette et qu'il fait en remettre.
      • Voici le code final pour notre projet :
        #include <WiFi.h>    
        #include <HTTPClient.h>
        #include <UrlEncode.h>
        
        int Led = 14;
        int Capteur = 12;
        int val;
        
        const char* ssid = "Marveen";
        const char* password = "1234567890";
        
        String phoneNumber = "+33621941918";
        String apiKey = "8433739";
        
        void sendMessage(String message){
          String url = "https://api.callmebot.com/whatsapp.php?phone=" + phoneNumber + "&apikey=" + apiKey + "&text=" + urlEncode(message);    
          HTTPClient http;
          http.begin(url);
        
          http.addHeader("Content-Type", "application/x-www-form-urlencoded");
          
          int httpResponseCode = http.POST(url);
          if (httpResponseCode == 200){
            Serial.print("Message sent successfully");
          }
          else{
            Serial.println("Error sending the message");
            Serial.print("HTTP response code: ");
            Serial.println(httpResponseCode);
          }
        
          http.end();
        }
        
        void setup() {
          pinMode(Led, OUTPUT);
          pinMode(Capteur, INPUT);
          
          Serial.begin(115200);
        
          WiFi.begin(ssid, password);
          Serial.println("Connexion en cours");
          while(WiFi.status() != WL_CONNECTED) {
            delay(500);
            Serial.print(".");
          }
          Serial.println("");
          Serial.print("Connecté au réseau Wi-Fi avec l'adresse IP : ");
          Serial.println(WiFi.localIP());
        }
        
        void loop() {
          val = digitalRead(Capteur);
          Serial.print("Distance : ");
          Serial.println(val);
          if (val == HIGH)
          {
           digitalWrite(Led, HIGH);
           sendMessage("Il n'y a plus de papier toilette, il faut en remettre !");
          }
          else {
           digitalWrite(Led, LOW);
          }
        }

    • Huitième Ă©tape : Autonomisation du notre circuit
      • Pour rendre notre circuit autonome, et ne plus avoir besoin de le brancher Ă  un ordinateur, nous l'avons branchĂ© Ă  une batterie portable.
      • Au dĂ©but, cela ne fonctionnait pas, car il fallait brancher la batterie Ă  la broche "BAT" de l'ESP32, et non "USB" comme c'Ă©tait le cas avant.
      • Après avoir fait cette modification de broche, tout a fonctionnĂ© correctement, et voici la dĂ©monstration de notre prototype : 

  • Partie Conception 2D et DĂ©coupe Laser pour le boĂ®tier en bois

Afin de générer une boite avec les bonnes rainures, nous avons générer le code svg permettant de produire notre boîtier sur internet. Pour cela, il a fallu indiquer les dimensions souhaitées et importer directement le fichier svg dans le logiciel Inkscape.

262BE4D8-C6EC-4D8F-B99D-D9EC4137807B.jpeg

Une fois l’importation réalisée, nous avons donc les patrons de notre boîtier. Nous avons bien vérifié que le fond était non coloré et que les contours étaient bien rouge, car c’est ce qui va indiquer que la machine va découper le long des traits rouges.

image-1681720094199.png

Puis, nous avons lancé l’impression, d’abord sur 2 des pièces afin de vérifier que les rainures étaient bien adaptées, puis sur l’ensemble des faces.

Par la suite, comme nous souhaitions avoir le nom de “ROLL UP” sur la face supérieure, nous avons utilisé Inkscape une nouvelle fois, cette fois en utilisant le mode gravure. Pour cela, il a bien fallu penser à mettre le fond de chacune des lettres de couleurs noires.

Nous avons ensuite positionné la face supérieure de notre boîtier dans la machine avant de lancer la gravure (après avoir effectué un test au préalable).


  • Partie Conception et Impression 3D pour la tige

    • Reproduction de la boĂ®te & modĂ©lisation du support pour papier toilette

Pour cela, nous décidons dans un premier temps de réaliser un bloc plein reprenant les dimensions de la boite que nous avons designée.

image-1683224977236.pngNous décidons ensuite de réaliser la pièce qui va supporter le papier toilette. Pour cela nous décidons d'utiliser comme base un heptaèdre. Pour s'assurer que le heptaèdre et parfaitement bien placés nous avons décidé d'utiliser un hexaèdre comme élément de référence.

image-1683225764785.pngPour réaliser le support de papier nous utilisons une base cylindrique pour accueillir le papier toilette. Nous réalisons également deux trous pour accueillir les visses.

image-1683226680128.png

    • RĂ©alisation d'un double fond

Pour stocker les différents composants électroniques, nous décidons de créer un double-fond dans notre boîte. Il s'agit d'une simple plaque fine reprenant les dimensions internes de la boite. Pour la fixation de notre plaque, nous utilisons de la colle. Pour notre version finale, nous aimerions avoir une surface rainurée. 

image-1683250719047.png

    • Impressions

image-1683251041207.png

image-1683251109288.png

image-1683250932542.png





  • photos et analyse des tests, essais, erreurs

    • Lors de la premiere impression de la tige, celle-ci  était trop courte. Il a donc fallu la modĂ©liser une seconde fois avec des dimensions plus adaptĂ©es 

  • photos de l'objet final


image-1683274444636.jpeg

  • RĂ©flexions de pistes d'amĂ©lioration ou d'Ă©volution du projet :

    • Personnalisation possible du matĂ©riau et du logo
    • Adaptation Ă  diffĂ©rents formats de rouleaux 
    • Système d’échange de rouleau lorsqu’un des deux est vide