Projets d'UE 2022-2023 Comment documenter ? [Projets d'UE] đŸŒĄïž UE LU1SXPFL - L1 CMI Physique Description de l'UE L'UE LU1SXPFL est une UE d'initiation aux principales techniques utilisĂ©es dans les fablabs (conception et fabrication numĂ©rique et prototypage Ă©lectronique) proposĂ©e aux Ă©tudiants du CMI Physique au niveau L1. L'UE commence par un historique des fablabs, d'oĂč ils viennent, ce qu'on y fait, etc. Suivent, quelques sĂ©ances de formation aux outils de conception 2d/3d (Inkscape, OpenSCAD, FreeCAD), un introduction aux machines (dĂ©coupeuse laser, imprimantes 3d) et une initiation au prototypage Ă©lectronique utilisant des cartes de dĂ©veloppement (Arduino Uno, M5Stack) et des modules (capteurs, afficheurs, LEDs, etc.). Le reste du temps est dĂ©diĂ© Ă  la rĂ©alisation d'un projet au fablab combinant conception - fabrication - prototypage. Enseignant responsable: Vincent Dupuis PĂ©riode et volume horaire: janvier 2023-avril 2023, 30h par Ă©tudiant (10 sĂ©ances de 3h) Effectifs: L1 CMI Physique, ~ 30 Ă©tudiants Quelques liens: fablabs.io : carte interactive du rĂ©seau international des fablabs, beaucoup d'informations fabacademy : page de la formation de haut niveau dispensĂ©e au sein des fablabs du rĂ©seau de janvier Ă  juin. Plus interessant, l'archive des documentations de la fabacademy qui rassemble les documentations des Ă©tudiants quelques sites oĂč l'on trouve un grand nombre de projets documentĂ©s : hackster.io,instructables, hackaday. Groupe B1 - SonomĂštre portatif Membres du groupe : MaĂŻlys HERMANN-BOYER, Shirel FELLOUS, Lily-Rose GAVANON Page de documentation d'Ă©tudiantes en L1 de CMI Physique dans le cadre du Projet Fablab (dĂ©couverte du Fablab SU & rĂ©alisation d'un projet incluant un capteur environnemental) en 10 sĂ©ances de 3h DĂ©couverte du Fablab SĂ©ance 1 : Introduction Ă  l'UE Aujourd'hui, ce 23 janvier 2023, nous avons eu la chance de participer Ă  notre premier cours de l'UE Fablab. Cela a Ă©tĂ© organisĂ© dans l'enceinte du Laboratoire Fablab qui se trouve dans le bĂątiment Esclangon de l'universitĂ© de la Sorbonne. Le Fablab est un atelier créé Ă  l'origine par le professeur Neil Gershenfeld au MIT, dans l'optique de rĂ©unir diffĂ©rentes personnes passionnĂ©es par la recherche et le dĂ©veloppement de crĂ©ations quelconques. Un rĂ©seau mondial de laboratoires s'est donc formĂ© afin de donner accĂšs Ă  des outils de fabrication numĂ©rique Ă  de multiples individus. Nous avons donc pu visiter ce laboratoire et suivre les explications des diffĂ©rentes machines telles que des imprimantes 3D, des fraiseuses numĂ©riques ou encore des dĂ©coupeuses laser. Notre but dans les sĂ©ances Ă  venir sera de rĂ©flĂ©chir Ă  un projet permettant la crĂ©ation d'un objet utilisable au quotidien. Ce projet devra inclure un ou plusieurs capteurs environnementaux. SĂ©ance 2 : Circuits Arduino et capteurs Ce lundi 30 janvier, la sĂ©ance portait sur le prototypage Ă©lectronique. Nous avons Ă©tĂ© initiĂ©s Ă  l'histoire de l'Ă©lectronique, du tube Ă  vide en 1904 au M5Stack en 2017 ; nous avons pu voir la chronologie d'apparition des diffĂ©rentes techniques et dĂ©couvertes Ă©lectroniques. Nous avons dĂ©couvert la carte Arduino, prototypĂ©e en 2003 par un Ă©tudiant en Master et apparue rĂ©ellement sous forme de carte en 2005. Ce composant est en fait un microcontrĂŽleur, capable de capter des signaux analogiques (pouvant prendre toutes les valeurs entre 0 et 5 V). Pour programmer un Arduino, il faut utiliser un langage spĂ©cifique, Ă©crire un code "IDE Arduino". Ensuite, nous avons essayĂ© de comprendre le fonctionnement de la carte Arduino, tout d'abord avec un programme permettant de faire clignoter la LED de l'Arduino. Nous avons ensuite essayĂ© de rĂ©cupĂ©rer les donnĂ©es recueillies par un capteur de tempĂ©rature et d'humiditĂ©. Il fallait tout d'abord placĂ© un Grove Shield sur la carte Arduino afin de pouvoir brancher diffĂ©rents composants. On retrouve sur ce Shield des ports numĂ©riques et analogiques, comme sur l'Arduino, mais aussi des ports I2C, que nous utilisons pour relier le capteur Ă  l'Arduino. Le transfert de l'ordinateur Ă  l'Arduino se fait en sĂ©rie. Afin de pouvoir utiliser un composant particulier, il faut tĂ©lĂ©charger une bibliothĂšque associĂ©e qui contient toutes les fonctions liĂ©es Ă  ce composant. Ces bibliothĂšques sont facilement trouvables sur Seeed Studio ou en cherchant le nom du composant sur Internet. Pour chaque capteur il peut y avoir une bibliothĂšque et un port diffĂ©rents. Il faut donc se renseigner sur le Wiki pour avoir les renseignements du capteur utilisĂ©. Par la suite, nous avons utilisĂ© d'autres capteurs tel qu'un "gas sensor" qui permet de calculer la concentration de CO2 dans l'air afin d'estimer si l'on est dans un environnement nocif ou non. Celui se branche par la connecteur A0. Nous avons enfin essayĂ© de travailler avec plusieurs composants en cherchant Ă  afficher les valeurs de tempĂ©rature et d'humiditĂ© enregistrĂ©es par le capteur sur un petit Ă©cran (16x2 LCD). Pour cela, nous avons essayĂ© de combiner les 2 codes des deux composants utilisĂ©s. AprĂšs quelques essais, on arrivait Ă  lire les donnĂ©es du capteur en ayant tĂ©lĂ©versĂ© le code suivant : #include #include #include "SHT31.h" #include #include "rgb_lcd.h" rgb_lcd lcd; const int colorR = 209; const int colorG = 141; const int colorB = 247; SHT31 sht31 = SHT31(); void setup() { Serial.begin(9600); while(!Serial); Serial.println("begin..."); sht31.begin(); } void loop() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity();    // set up the LCD's number of columns and rows:   lcd.begin(16, 2);   lcd.setRGB(colorR, colorG, colorB);   // Print a message to the LCD.   lcd.print("Temp = ");   lcd.print(temp);   lcd.println(" C"); //"ln" pour retour Ă  la ligne   lcd.print("Hum = ");   lcd.print(hum);   lcd.println("%");   delay(1000); } Nous avons ensuite essayĂ© de rĂ©aliser la mĂȘme chose sur un Ă©cran un peu plus complexe, un OLED Display 0.96 inch. Le code Ă©tait le suivant : #include #include #include "SHT31.h" SHT31 sht31 = SHT31(); #include #include #ifdef U8X8_HAVE_HW_SPI #include #endif #ifdef U8X8_HAVE_HW_I2C #include #endif U8G2_SSD1306_128X64_ALT0_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); void setup() { sht31.begin(); u8g2.begin(); } void loop() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); u8g2.clearBuffer();                   // clear the internal memory u8g2.setFont(u8g2_font_ncenB08_tr);   // choose a suitable font u8g2.setCursor(0, 15); u8g2.print("temperature = "); u8g2.print(temp); u8g2.println(" C"); u8g2.setCursor(0, 30); u8g2.print("humidity = "); u8g2.print(hum); u8g2.println(" %"); u8g2.sendBuffer();                    // transfer internal memory to the display delay(200); } Pour conclure, c'Ă©tait une sĂ©ance trĂšs constructive qui nous a donnĂ© diffĂ©rentes idĂ©es pour notre projet final. SĂ©ance 3 : Dessin 2D, 3D, impression 3D et dĂ©coupe laser Lors de cette sĂ©ance, nous avons dĂ©couvert certains logiciels libres et gratuits de dessin et modĂ©lisation 3D. Des tutoriels pour chacun de ces logiciels sont disponibles sur le Wiki du FABLAB ou sur Internet. La logiciel principalement utilisĂ© pour la dĂ©coupe laser est le logiciel Inkscape. Afin que le dessin rĂ©alisĂ© soit exploitable, il faut s'assurer que l'Ă©paisseur du trait soit toujours de 1px. En ce qui concerne la couleur des traits, le rouge correspond Ă  la dĂ©coupe alors que le noir fait rĂ©fĂ©rence Ă  la gravure. Le plus important lors de l'utilisation de ce logiciel est de contrĂŽler les dimensions et le positionnement des diffĂ©rents objets. Le format lu par les dĂ©coupes laser est le format SVG. Nous avons rĂ©alisĂ© ce dessin lors de notre dĂ©couverte du logiciel. Nous avons ensuite Ă©tĂ© initiĂ©es Ă  2 logiciels de modĂ©lisation 3D : OpenSCAD et FreeCAD. Ces logiciels sont utilisĂ©s dans le cadre d'impressions 3D. Pour cela, il est important de savoir que le format lu par les imprimantes est le format STL. Nous nous limiterons Ă  l'utilisation du workbench Part dans FreeCAD. Afin de se familiariser avec les outils des deux logiciels, nous avons essayĂ© de rĂ©aliser un cube de 50mm de cĂŽtĂ© trouĂ© par 3 cylindres de 20mm de diamĂštre. Sur OpenSCAD : difference() { cube(50,center=true); translate([0,0,-25]) cylinder(h=50,r=20); rotate([90,0,0]) translate([0,0,-25]) cylinder(h=50,r=20); rotate([0,90,0]) translate([0,0,-25]) cylinder(h=50,r=20); } Nous avons ensuite pu voir un peu plus en dĂ©tails comment faire fonctionner les diffĂ©rentes machines du FABLAB. Pour les imprimantes 3D, le logiciel utilisĂ© est IdeaMaker. Il est toujours important de rĂ©flĂ©chir au remplissage d'un objet lors de son impression. Il faut aussi penser Ă  l'Ă©paisseur du fil utilisĂ© (+ c'est fin + c'est prĂ©cis mais + c'est long), Ă  l'orientation de l'objet sur le support. SĂ©ance 4 : Prototypage Ă©lectronique Aujourd'hui, nous avons explorĂ© un peu plus en profondeur le prototypage Ă©lectronique avec un M5Stack. Le M5Stack est un boĂźtier programmable avec Arduino IDE, contenant de la mĂ©moire (4Mo), une carte SD et des haut-parleurs. Une sortie I2C permet d'y brancher des capteurs et un port USB-C pour le relier Ă  un ordinateur. Nous avons commencĂ© par tenter de faire fonctionner le M5Stack avec des programmes exemples trouvĂ©s sur GitHub. En tĂ©lĂ©chargeant ce fichier ZIP, on accĂšde Ă  la bibliothĂšque du M5Stack. Nous avons tout d'abord ouvert le programme "Hello World" (examples > basics). Il ne faut pas oublier de sĂ©lectionner la board M5Stack Core ESP32 dans Arduino INE ainsi que le bon port. Nous avons ensuite essayĂ© d’afficher les donnĂ©es d’un capteur de tempĂ©rature et d’humiditĂ© sur l’écran du M5Stack. on a tĂ©lĂ©chargĂ© le fichier ZIP du M5stack puis dans examples > advanced > display > free font demo > on ouvre direct le fichier #include #include #include #include "SHT31.h" #include "Free_Fonts.h" SHT31 sht31 = SHT31(); void setup() { Serial.begin(9600); while(!Serial); Serial.println("begin..."); sht31.begin(); M5.begin(); // Init M5Core. 戝構挖 M5Core M5.Power.begin(); // Init Power module. ćˆć§‹ćŒ–ç””æșæšĄć— } void loop() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); M5.Lcd.setFreeFont(FSB18); M5.Lcd.print("Temp = "); M5.Lcd.print(temp); M5.Lcd.println(" C"); M5.Lcd.print("Hum = "); M5.Lcd.print(hum); M5.Lcd.println(" %"); M5.Lcd.println(); delay(1000); } Projet final SĂ©ance 5 : PremiĂšre idĂ©e de projet final Nous avons commencĂ© Ă  rĂ©flĂ©chir au projet que nous souhaiterions rĂ©aliser. AprĂšs ĂȘtre tombĂ©es sur ce Tiktok, nous avons convenu d'inclure des capteurs de son et des LEDs dans notre projet. Nous voulions Ă  l'origine tenter de reproduire l'objet de la vidĂ©o, avant de vite nous rendre compte que c'Ă©tait un objet encore bien trop complexe pour nos capacitĂ©s. Nous avons alors cherchĂ© sur Internet des projets utilisant quand mĂȘme des micros et des LEDs, tout en restant Ă  notre niveau novice. En voici quelques-uns : Music / hand controlled led strip with arduino Neopixel Ws2812 Rainbow LED Glow With M5stick-C À partir de lĂ , nous avons dĂ©cidĂ© que le but de notre projet serait de contrĂŽler la couleur et la luminositĂ© de LEDs en fonction de la frĂ©quence et l'intensitĂ© sonore (donc par exemple avec de la musique). Nous avons commencĂ© Ă  travailler avec 3 composants : un capteur de son (micro constituĂ© d'une membrane qui vibre en fonction de la pression acoustique et qui convertit les oscillations en signal Ă©lectrique) un capteur de sonie (micro qui isole et amplifie les signaux Ă  haute frĂ©quence) une barre de LED (10 LEDs RGB indĂ©pendantes les unes des autres) Dans un premier temps, nous avons testĂ© un Ă  un chacun des composants pour comprendre leur fonctionnement. Nous avons rĂ©ussi Ă  faire fonctionner les LEDs grĂące au code de "Seeedstudio" : // NeoPixel Ring simple sketch (c) 2013 Shae Erisson // released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library #include "Adafruit_NeoPixel.h" #ifdef __AVR__ #include #endif // Which pin on the Arduino is connected to the NeoPixels? // On a Trinket or Gemma we suggest changing this to 1 #define PIN 6 // How many NeoPixels are attached to the Arduino? #define NUMPIXELS 10 // When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals. // Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest // example for more information on possible values. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 500; // delay for half a second void setup() { // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket #if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // End of trinket special code pixels.setBrightness(255); pixels.begin(); // This initializes the NeoPixel library. } void loop() { // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one. for(int i=0;i #endif #define PIN 6 #define NUMPIXELS 10 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(10, 6, NEO_GRB + NEO_KHZ800); int loudness; void setup() { pixels.setBrightness(100); pixels.begin(); pixels.show(); Serial.begin(9600); } void loop() { loudness = analogRead(0); Serial.println(loudness); delay(200); for (int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(0, 150, 0)); pixels.show(); // This sends the updated pixel color to the hardware. delay(500); // Delay for a period of time (in milliseconds). } } SĂ©ances 6 Ă  9 : Le sonomĂštre portatif Nous nous sommes rendues compte que notre projet de base, qui Ă©tait de faire rĂ©agir des LEDs Ă  du son, nous paraĂźssait au-delĂ  de nos capacitĂ©s. Nous avons donc dĂ©cidĂ© de partir sur un projet plus simple, en restant dans le thĂšme de l'intensitĂ© sonore. Notre projet est donc de rĂ©aliser un sonomĂštre portatif destinĂ© aux Ă©tudiants qui ont tendance Ă  passer beaucoup de temps dans les bars, boĂźtes de nuit, concerts, etc... Programmation MatĂ©riel : M5Stack Core module PLUS capteur de son Le module PLUS permet de connecter des capteurs qui se branchent en analogie ou en numĂ©rique. Cela correspond au port noir (GPIO ou port B). La toute premiĂšre Ă©tape est de rĂ©ussir Ă  afficher les donnĂ©es recueillies par le capteur de son sur le M5Stack. Nous nous sommes donc servies d'un code permettant d'afficher un spectre audio trouvĂ© sur le site Hackster.io. Il a fallu modifier la valeur de "micpin" (ligne 28) de 34 Ă  36 pour que les donnĂ©es soient lues. Le code utilisĂ© est le suivant : /* ESP8266/32 Audio Spectrum Analyser on an SSD1306/SH1106 Display * The MIT License (MIT) Copyright (c) 2017 by David Bird. * The formulation and display of an AUdio Spectrum using an ESp8266 or ESP32 and SSD1306 or SH1106 OLED Display using a Fast Fourier Transform * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files * (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, * publish, distribute, but not to use it commercially for profit making or to sub-license and/or to sell copies of the Software or to * permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * See more at http://dsbird.org.uk */ // https://github.com/tobozo/ESP32-8-Octave-Audio-Spectrum-Display/tree/wrover-kit // https://github.com/G6EJD/ESP32-8266-Audio-Spectrum-Display // https://github.com/kosme/arduinoFFT #include "arduinoFFT.h" // Standard Arduino FFT library arduinoFFT FFT = arduinoFFT(); #include #define SAMPLES 512 // Must be a power of 2 #define SAMPLING_FREQUENCY 40000 // Hz, must be 40000 or less due to ADC conversion time. // Determines maximum frequency that can be analysed by the FFT Fmax=sampleF/2. int micpin = 36; //change this to 36 if you are using the fc-04 struct eqBand { const char *freqname; uint16_t amplitude; int peak; int lastpeak; uint16_t lastval; unsigned long lastmeasured; }; eqBand audiospectrum[8] = { //Adjust the amplitude values to fit your microphone { "125Hz", 500, 0, 0, 0, 0}, { "250Hz", 200, 0, 0, 0, 0}, { "500Hz", 200, 0, 0, 0, 0}, { "1KHz", 200, 0, 0, 0, 0}, { "2KHz", 200, 0, 0, 0, 0}, { "4KHz", 100, 0, 0, 0, 0}, { "8KHz", 100, 0, 0, 0, 0}, { "16KHz", 50, 0, 0, 0, 0} }; unsigned int sampling_period_us; unsigned long microseconds; double vReal[SAMPLES]; double vImag[SAMPLES]; unsigned long newTime, oldTime; uint16_t tft_width = 320; // ILI9341_TFTWIDTH; uint16_t tft_height = 240; // ILI9341_TFTHEIGHT; uint8_t bands = 8; uint8_t bands_width = floor( tft_width / bands ); uint8_t bands_pad = bands_width - 10; uint16_t colormap[255]; // color palette for the band meter (pre-fill in setup) void setup() { M5.begin(); dacWrite(25, 0); // Speaker OFF M5.Lcd.fillScreen(TFT_BLACK); M5.Lcd.setTextColor(YELLOW, BLACK); M5.Lcd.setTextSize(1); M5.Lcd.setRotation(1); sampling_period_us = round(1000000 * (1.0 / SAMPLING_FREQUENCY)); delay(2000); for(uint8_t i=0;i 1500) { // Add a crude noise filter, 10 x amplitude or more byte bandNum = getBand(i); if(bandNum!=8) { displayBand(bandNum, (int)vReal[i]/audiospectrum[bandNum].amplitude); } } } long vnow = millis(); for (byte band = 0; band <= 7; band++) { // auto decay every 50ms on low activity bands if(vnow - audiospectrum[band].lastmeasured > 50) { displayBand(band, audiospectrum[band].lastval>4 ? audiospectrum[band].lastval-4 : 0); } if (audiospectrum[band].peak > 0) { audiospectrum[band].peak -= 2; if(audiospectrum[band].peak<=0) { audiospectrum[band].peak = 0; } } // only draw if peak changed if(audiospectrum[band].lastpeak != audiospectrum[band].peak) { // delete last peak M5.Lcd.drawFastHLine(bands_width*band,tft_height-audiospectrum[band].lastpeak,bands_pad,BLACK); audiospectrum[band].lastpeak = audiospectrum[band].peak; M5.Lcd.drawFastHLine(bands_width*band, tft_height-audiospectrum[band].peak, bands_pad, colormap[tft_height-audiospectrum[band].peak]); } } } void displayBand(int band, int dsize){ uint16_t hpos = bands_width*band; int dmax = 200; if(dsize>tft_height-10) { dsize = tft_height-10; // leave some hspace for text } if(dsize < audiospectrum[band].lastval) { // lower value, delete some lines M5.Lcd.fillRect(hpos, tft_height-audiospectrum[band].lastval, bands_pad, audiospectrum[band].lastval - dsize, BLACK); } if (dsize > dmax) dsize = dmax; for (int s = 0; s <= dsize; s=s+4){ M5.Lcd.drawFastHLine(hpos, tft_height-s, bands_pad, colormap[tft_height-s]); } if (dsize > audiospectrum[band].peak) { audiospectrum[band].peak = dsize; } audiospectrum[band].lastval = dsize; audiospectrum[band].lastmeasured = millis(); } byte getBand(int i) { if (i<=2 ) return 0; // 125Hz if (i >3 && i<=5 ) return 1; // 250Hz if (i >5 && i<=7 ) return 2; // 500Hz if (i >7 && i<=15 ) return 3; // 1000Hz if (i >15 && i<=30 ) return 4; // 2000Hz if (i >30 && i<=53 ) return 5; // 4000Hz if (i >53 && i<=200 ) return 6; // 8000Hz if (i >200 ) return 7; // 16000Hz return 8; } Ce programme permet donc de visualiser un spectre audio en fonction de la frĂ©quence, or nous cherchons Ă  visualiser l'intensitĂ© sonore. MĂȘme si nous n'avons pas utilisĂ© ce programme par la suite, il nous a permis de comprendre comment dĂ©finir le capteur dans Arduino (pin 36). L'Ă©tape suivante est de configurer plusieurs rĂ©actions du M5Stack en fonction des donnĂ©es sonores. Le but est d'afficher diffĂ©rents messages de prĂ©vention pour informer l'utilisateur de son exposition au bruit. Le code suivant permet d'afficher le message "attention" lorsque la valeur rĂ©coltĂ©e par le capteur est supĂ©rieure Ă  1000. Cette valeur est choisie arbitrairement pour l'instant.Ce programme suivant est construit Ă  partir du code de test du capteur de son, ainsi que de quelques recherches qui nous ont permis d'inclure une condition "if". La valeur de la condition choisie est ici totalement arbitraire vu qu'on cherche uniquement Ă  ce que le programme marche. #include const int sensor = 36; void setup() { Serial.begin(115200); M5.begin(); M5.Power.begin(); } void loop() { long sum = 0; for(int i=0; i<32; i++) { sum += analogRead(sensor); // permet de lire la valeur relevĂ©e par capteur sum >>= 2; // divise les valeurs par un certain facteur pour ne pas avoir de trop grandes valeurs } Serial.println(sum); // Ă©crit la valeur dans le plotter if (sum > 1000) { M5.Lcd.clear(); M5.Lcd.print("attention"); } delay(10); } Le but de notre objet est d'afficher diffĂ©rents messages de prĂ©vention en fonction de l'intensitĂ© sonore. Il faut donc imposer plusieurs conditions.Les niveaux d'intensitĂ© sonore sont indiquĂ©s en dĂ©cibels et correspondent Ă  des temps d'exposition hebdomadaires. Dans une boĂźte de nuit, l'intensitĂ© sonore varie entre 85 et 115 dB. Voici les messages affichĂ©s par le M5Stack en fonction de l'intensitĂ© sonore : 96 dB (5h d'exposition) : "Tu peux encore chiller pendant 5h" 103 dB (1h) : "Plus qu'une heure avant l'extinction des feux" 105 dB (10 min) : "Le temps d'une petite clope et au revoir" 115 dB (5 min) : "Prends tes affaires et sors ;)" Pour imposer diffĂ©rentes conditions au M5Stack, il suffit de reprendre le programme ci-dessus et d'y ajouter de nouveaux opĂ©rateurs "if". #include #include "Free_Fonts.h" const int sensor = 36; void setup() { Serial.begin(115200); M5.begin(); M5.Power.begin(); } void loop() { while(1) { long sum = 0; for(int i=0; i<32; i++) { sum += analogRead(sensor); // permet de lire la valeur relevĂ©e par le capteur sum >>= 2; // divise la valeur par un certain facteur pour ne pas avoir des valeurs trop grandes } Serial.println(sum); // Ă©crit la valeur dans le plotter if (sum < 100) //en dessous de 100 dB { M5.Lcd.clear(); M5.Lcd.print("Tu peux encore chiller pendant 5h"); delay(3000); } if (sum >= 100 && sum < 500) //entre 100 et 105 dB { M5.Lcd.clear(); M5.Lcd.print("Plus qu'une heure avant l'extinction des feux"); delay(3000); } if (sum >= 500 && sum < 1000) //entre 105 et 115 dB { M5.Lcd.clear(); M5.Lcd.print("Le temps d'une petite clope"); delay(3000); } if (sum >= 1000) //au dessus de 115 dB { M5.Lcd.clear(); M5.Lcd.print("Prends tes affaires et sors ;)"); delay(3000); } delay(10); } } Ici, les valeurs des conditions "if" ont encore une fois Ă©tĂ© choisies arbitrairement. Pour que l'objet soit rĂ©ellement fonctionnel, il aurait fallu dĂ©terminer quelle plage de valeurs lues sur l'ordinateur correspond Ă  quelle intensitĂ© sonore. On aurait pu utiliser une source de son de rĂ©fĂ©rence, dont on connaĂźt l'intensitĂ© sonore, afin de "calibrer" notre capteur. Par souci de temps, nous n'avons pas pu rĂ©aliser cela. Il faut maintenant s'occuper de la mise en forme du message affichĂ©. Nous avons dĂ©cidĂ© de changer la couleur de l'Ă©cran en fonction de la dangerositĂ© du niveau sonore. Nous avons aussi changer la police ainsi que la taille de la police. Toutes les modifications liĂ©es Ă  la mise en forme sont inspirĂ©es des programmes que l'on peut trouver dans la bibliothĂšque du M5Stack, comme "Free Fonts" ou "Display". Voici le programme final que nous avons utilisĂ© : #include #include "Free_Fonts.h" const int sensor = 36; void setup() { Serial.begin(115200); M5.begin(); M5.Power.begin(); M5.Lcd.setBrightness(100); } void loop() { while(1) { long sum = 0; for(int i=0; i<32; i++) { sum += analogRead(sensor); sum >>= 2; } Serial.println(sum); if (sum < 100) //en dessous de 100 dB { M5.Lcd.clear(); //uint16_t colorvalue = 0; //colorvalue = color565(0, 153, 0); M5.Lcd.fillScreen(GREEN); //colorvalue(0,153,0) M5.Lcd.drawRect(20, 20, 280, 200, WHITE); //cadre M5.Lcd.setTextColor(TFT_WHITE); //couleur du texte M5.Lcd.setTextSize(2); M5.Lcd.drawString("Tu peux encore chiller", 70, 108, 2); M5.Lcd.drawString("pendant 5h", 94, 132, 2); delay(3000); } if (sum >= 100 && sum < 500) //entre 100 et 105 dB { M5.Lcd.clear(); M5.Lcd.fillScreen(YELLOW); //color565(255,213,0) M5.Lcd.drawRect(20, 20, 280, 200, BLACK); //cadre M5.Lcd.setTextColor(TFT_BLACK); //couleur du texte M5.Lcd.setTextSize(2); M5.Lcd.drawString("Plus qu'une heure avant", 70, 110, 2); M5.Lcd.drawString("l'extinction des feux", 90, 130, 2); delay(3000); } if (sum >= 500 && sum < 1000) //entre 105 et 115 { M5.Lcd.clear(); M5.Lcd.fillScreen(ORANGE); //color565(255,162,0) M5.Lcd.drawRect(20, 20, 280, 200, WHITE); //cadre M5.Lcd.setTextColor(TFT_WHITE); //couleur du texte M5.Lcd.setTextSize(2); M5.Lcd.drawString("Le temps d'une petite clope", 160, 112, 2); M5.Lcd.drawString("et au revoir", 160, 128, 2); delay(3000); } if (sum >= 1000) //au dessus de 115 dB { M5.Speaker.tone(1000, 500); M5.Lcd.clear(); M5.Lcd.fillScreen(RED); M5.Lcd.drawRect(20, 20, 280, 200, WHITE); //cadre M5.Lcd.setTextDatum(MC_DATUM); //texte au centre M5.Lcd.setTextColor(TFT_WHITE); //couleur du texte M5.Lcd.setTextSize(2); M5.Lcd.drawString("Prends tes affaires et sors ;)", 160, 120, 2); M5.Speaker.end(); delay(3000); } delay(10); } } ModĂ©lisation 3D Shirel s'est chargĂ©e de concevoir et dessiner le packaging de notre objet. Elle a mesurĂ© toutes les longueurs sur un M5stack de rĂ©fĂ©rence et les a reportĂ©es. On a donc choisi de crĂ©er un boĂźtier imprimĂ© grĂące a une imprimante 3D. Le choix d'une impression 3D s'est imposĂ© de lui mĂȘme. L'objet semble plus design, plus adaptĂ© Ă  des jeunes. En dĂ©coupe laser, il semblerait plus rustique (ce qui n'est pas forcĂ©ment mauvais, mais ce n'est pas le but recherchĂ©). On ferait une sorte d'ouverture permettant de laisser visible l'Ă©cran du M5 afin d'afficher les messages d'alerte. Lily a commencĂ© Ă  modĂ©liser sur FreeCAD la boĂźte qui servira Ă  contenir le M5stack et le capteur. Donc dans un premier temps, j'ai simplement créé un nouveau sketch dans la partie Part design. J'ai appliquĂ© Ă  ce sketch diffĂ©rentes contraintes de longueur et de symĂ©trie pour qu'il soit dans les proportions que nous souhaitions. Par la suite, j'ai entrĂ© une protrusion afin d'obtenir une rectangle en 3D. Afin de crĂ©er une boite, il a fallu utiliser l'option "gĂ©nĂ©rer une coque solide" en sĂ©lectionnant la surface du dessus. Évidemment on modifie l'Ă©paisseur de la protrusion afin que le boĂźte corresponde Ă  nos mesures. Par la suite, il a Ă©tĂ© question de dessiner le profil de l'ergo. Pour se faire, il faut crĂ©er un nouveau sketch en sĂ©lectionnant le plan XZ pour avoir la face souhaitĂ©e de profil. On fait donc "crĂ©er une arrĂȘte liĂ©e" afin d'avoir un point fixĂ© au centre de l'arrĂȘte de la boite. Puis on peut tracer notre ergo en poly ligne. Il suffit simplement d'effectuer un triangle rectangle, auquel encore une fois, on applique des contraintes de longueur. Afin de mieux voir les arĂȘtes et mieux me repĂ©rer, je suis passĂ©e en reprĂ©sentation filaire. À partir de ce sketch, on va donc Ă  nouveau crĂ©er une protrusion symĂ©trique au plan, c'est-Ă -dire centrĂ©e sur l'arĂȘte. Par ailleurs, il est toujours important de centrer les choses par rapport aux axes de coordonnĂ©es, le wiki du fablab le conseil notamment. Par la suite, pour me faciliter la tĂąche, j'ai simplement "créé une fonction de symĂ©trie" afin de dupliquer mon ergo de l'autre cĂŽtĂ©. Pour ce qui est du couvercle, j'avais prĂ©alablement dupliquĂ© le fond de ma boĂźte pour Ă©viter de refaire un rectangle, puis une protrusion etc... J'ai donc simplement modifiĂ© les dimensions en changeant les contraintes de longueur et largeur. En effet, afin que le fond et le couvercle de la boĂźte se clipsent entre eux Ă  la fin, il faut que mon couvercle soit lĂ©gĂšrement plus grand que le fond. J'ai donc laissĂ© 0,5 mm de chaque cĂŽtĂ© afin d'avoir de la marge. Afin de crĂ©er l'ergo du couvercle, j'ai suivi exactement les mĂȘmes Ă©tapes que prĂ©cĂ©demment en crĂ©ant un nouveau sketch, crĂ©er une arĂȘte liĂ©e, faire un triangle rectangle en poly ligne etc... La seule diffĂ©rence est, qu'afin que les deux parties de la boĂźte se clipsent, il est nĂ©cessaire que l'ergo du couvercle soit dirigĂ© vers l'intĂ©rieur au lieu de l'extĂ©rieur. Donc au lieu de crĂ©er une protrusion, je crĂ©e une cavitĂ©. De plus, ses dimensions doivent ĂȘtre lĂ©gĂšrement plus grandes (0,5mm de plus) afin d'avoir de la marge. Pareil que pour le fond, je crĂ©e une fonction de symĂ©trie pour avoir cet ergo des deux cĂŽtĂ©s. Voici donc le rendu final de la boĂźte. Afin de ne pas avoir beaucoup de support lors de l'impression, j'ai superposĂ© les deux parties sur le mĂȘme plan. J'ai donc pu passer Ă  l'impression 3D en enregistrant mon fichier dans le modĂšle qui convient pour FreeCAD. Une premiĂšre impression a Ă©tĂ© faite mais malheureusement, on a eu un problĂšme avec la machine. L'impression finale a prit 6 heures au total et on a pu obtenir un rendu convaincant. Malheureusement, je pense que je n'avais pas pris assez de marge au niveau des dimensions du couvercle car la boĂźte avait du mal Ă  se fermer, notamment avec le M5Stack dedans. On a subit un autre Ă©chec quant Ă  la volontĂ© de creuser un trou dans le couvercle pour que l'on puisse voir l'Ă©cran du M5Stack Ă  travers la boĂźte. L'application FreeCAD ne me permet pas d'appliquer une contrainte de longueur entre le haut de la boite et le haut de mon rectangle. Je n'ai donc pas rĂ©ussi Ă  placer mon rectangle oĂč je le souhaitais sur le couvercle. Cette idĂ©e a donc Ă©tĂ© abandonnĂ©e. Fonctionnement de l'objet et possibles amĂ©liorations Pour s'assurer de son bon fonctionnement, nous avons effectuĂ© diffĂ©rents tests sur notre objet. Nous avons essayĂ© en parlant et en mettant de la musique Ă  diffĂ©rents volumes. Les messages affichĂ©s par le M5Stack sont bien cohĂ©rents avec les tests effectuĂ©s mais on remarque tout de mĂȘme que l'objet ne semble parfois pas capter correctement les ondes sonores. Par exemple, mĂȘme en collant un tĂ©lĂ©phone avec du son trĂšs fort au sonomĂštre, le message affichĂ© reste celui oĂč il n'y a pas de danger.De plus, notre sonomĂštre n'est pas trĂšs efficace car la rĂ©elle dangerositĂ© du son est lorsque l'on reste exposĂ©.e pendant une certaine durĂ©e. Or ici, le message de prĂ©vention s'affiche lorsque le capteur recueille une seule valeur supĂ©rieure Ă  la limite Ă  un instant t prĂ©cis, et non sur une certaine durĂ©e. Il est possible de visualiser le message "Prends tes affaires et sors ;)" puis quelques secondes plus tard, "Plus qu'une heure avant l'extinction des feux", ce qui n'a aucun sens pour l'utilisateur. Pour rĂ©gler ce problĂšme, il faudrait ajouter Ă  chaque condition "if" une condition de temps, oĂč le message s'afficherait aprĂšs que le capteur ait enregistrĂ© un certain nombre de valeurs dĂ©passant la limite imposĂ©e Ă  des intervalles de temps petits. En ce qui concerne la boĂźte, il aurait aussi fallu fixer la capteur dedans et crĂ©er un trou pour que la paroi ne fasse pas office de barriĂšre du son, qui viendrait diminuer et fausser les valeurs. Conclusion gĂ©nĂ©rale du projet Cette UE est construite de maniĂšre Ă  ce que chaque sĂ©ance soit indispensable pour la crĂ©ation de notre objet final. Nous avons rĂ©ussi Ă  faire en sorte que le sonomĂštre capte un son Ă  une intensitĂ© sonore donnĂ©e. Cependant avec plus de temps, nous aurions pu trouver le bon code, le code qui permettrait par exemple d'alerter au 110 dB exactement atteints. De plus, nous pouvions Ă©galement amĂ©liorer toute la partie modĂ©lisation. En outre, notre boĂźte ne se ferme pas correctement. Si on continuait l'UE, on recommencerait la modĂ©lisation avec plus de marge dans les impressions. Finalement, le choix d'une impression 3D, ne fut pas trĂšs judicieux. Si on avait rĂ©alisĂ© la boĂźte Ă  la dĂ©coupe laser, la fabrication aurait Ă©tĂ© plus rapide. Des ajustements seraient encore possibles, si nous dĂ©tections des erreurs, bien que le design recherchĂ© est au rendez- vous. Rendu final Messages BoĂźte SĂ©ance 10 : PrĂ©sentation des projets Lors de cette sĂ©ance, nous avons assistĂ© Ă  la prĂ©sentation des projets de chaque groupe.Voici un lien vers le support de notre prĂ©sentation : projet fablab - sonomĂštre portatif Projets personnels MaĂŻlys Hermann--Boyer RĂ©alisation d’une Ă©toile Ă  l’imprimante 3D & de jaeminbun Ă  la dĂ©coupe-laser page de documentation : Étoile & jaeminbun Shirel Fellous 2D et 3D Shirel Lily-Rose Gavanon ModĂ©lisations King Dong : Les Rois de la Larme (Anciennement de la Sonette) Membre du groupe: BREZOVSEK Kylian ; BERTOLETTI Alex ; BRIENDO Alex ; CAMUS Paul Nous sommes des Ă©tudiants en premiĂšre annĂ©e de CMI. Dans le cadre de notre UE FABLAB (LU1SXPFL) nous avons pour objectif de concevoir un projet en groupe de 4 avec comme seule obligation l’utilisation d’au moins un capteur environnemental. Cette UE est divisĂ©e en 10 sĂ©ances, Ă  l’issue desquelles nous devrons rĂ©aliser une prĂ©sentation de notre projet. Pour plus d’information, nous vous renvoyons sur cette page de Description de l’UE. SĂ©ance 1 : Introduction au FabLab SĂ©ance 1 : Nous avons dĂ©couvert les locaux du FabLab et ses origines ainsi que l'Ă©tat d'esprit de partage mis en place par son crĂ©ateur Neil Gershenfeld. Nous avons ensuite commencĂ© Ă  rĂ©flĂ©chir Ă  notre idĂ©e de projet sur le thĂšme des capteurs. Nous nous orientons pour l'instant vers un appareil qui serait utile dans le cadre de la pratique de la plongĂ©e sous-marine. Il s'agit d'un boĂźtier waterproof, que nous ferions le plus petit possible, contenant des capteurs de pression, de tempĂ©rature et un GPS si nous arrivons Ă  bien optimiser l'espace. SĂ©ance 2 : DĂ©couverte de l'Arduino SĂ©ance 2: La sĂ©ance a commencĂ© par un historique de l'Ă©lectronique. De l'Ă©lectromagnĂ©tisme Ă  la micro-Ă©lectronique actuelle, le monde de l'Ă©lectronique s'est vu transformĂ© par les physiciens au fil du temps. Nous avons Ă©tĂ© introduits Ă  la carte Arduino, qui apporte une approche plus simple au prototypage que les circuits gravĂ©s. Au cours de travaux pratiques, nous avons dĂ©couvert le langage Arduino, notamment les fonctions setup pour l'initialisation et loop pour faire une boucle. Aussi, nous savons maintenant oĂč trouver des bibliothĂšques spĂ©cifiques et les importer afin de rĂ©aliser des tĂąches. Afin de nous familiariser avec la carte Arduino, nous avons essayer d’y brancher plusieurs composants avec des branchements groves. Ces branchements sont des plus robustes que les cĂąbles Dupont initialement utilisĂ©s et empĂȘchent la mise en court circuit de la carte et ainsi endommager celle-ci. Dans un premier temps, nous y avons branchĂ© un capteur de tempĂ©rature et d’humiditĂ© (comme l’image 1). Pour en extraire les donnĂ©es, il faut tout d’abord importer une bibliothĂšque qui va permettre de comprendre le code qui nous et ainsi d’afficher les donnĂ©es obtenues par le capteur sur la console. Ensuite, nous y avons branchĂ© un Ă©cran LCD (image 2) et avons rĂ©pĂ©tĂ© le protocole prĂ©cĂ©dent. Toutefois, la bibliothĂšque disponible sur GitHub n’était pas fonctionnelle. SĂ©ance 3 : ModĂ©lisation 2D et 3D SĂ©ance 3 : Lors de cette troisiĂšme sĂ©ance, nous avons dĂ©couvert les diffĂ©rentes maniĂšres de modĂ©liser un objet aussi bien en deux qu'en trois dimensions afin de pouvoir ensuite le faire confectionner par une machine (graveur laser et imprimante 3D). Afin de modĂ©liser en deux dimensions, nous avons utilisĂ© le logiciel de dessin vectoriel Inkscape permettant de gĂ©nĂ©rer des fichiers SVG exploitables directement par les graveurs laser. Conventionnellement, on dessine en rouge les contours que nous souhaitons voir dĂ©coupĂ©s et en noir ceux que nous souhaitons voir gravĂ©s, le tout toujours avec des traits d'un pixel d'Ă©paisseur. Dans le but de modĂ©liser des objets en 3 dimensions, nous avons utilisĂ© deux logiciels : OpenSCAD qui nous permet de modĂ©liser en utilisant du code de la forme translate([0, 50, 0] cylinder(h = 50, r =100)); et pour lequel il existe une "cheat sheet" FreeCAD, dont on utilisera surtout le workbench "Part" Il est important de noter qu'il existe des banques de modĂšles 2D et 3D tels que Thingiverse (3D) Nous avons Ă©galement vu en fin de sĂ©ance comment opĂ©rer les machines que nous utiliserons lors de notre projet, notamment via le logiciel IdeaMaker pour les imprimantes 3D SĂ©ance 4 : Prototypage du M5Stack SĂ©ance 4 : Au cours de cette sĂ©ance, nous avons approfondi nos compĂ©tences prĂ©alablement acquises en prototypage. Nous avons premiĂšrement testĂ© le programme "Hello World" obtenu sur GitHub et utilisĂ© sur un M5Stack Core-ESP32. Nous avons ensuite tĂ©lĂ©chargĂ© l'ensemble des fichiers GitHub liĂ©s au M5Stack. Puis, nous avons paramĂ©trĂ© un M5Stack afin qu'il affiche la tempĂ©rature et le pression mesurĂ©e par un capteur SHT31. #include #include #include #include "SHT31.h" #include #include "rgb_lcd.h" SHT31 sht31 = SHT31(); void setup() { M5.begin(); M5.Power.begin(); sht31.begin(); M5.Lcd.print("Affichage pression et tempĂ©rature"); } void loop() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); M5.lcd.print("Temp = "); M5.lcd.print(temp); M5.lcd.println(" C"); //The unit for Celsius because original arduino don't support speical symbols M5.lcd.print("Hum = "); M5.lcd.print(hum); M5.lcd.println("%"); M5.lcd.println(); delay(1000); M5.lcd.setCursor(0, 0); M5.lcd.print("Temp = "); M5.lcd.print(sht31.getTemperature()); M5.lcd.setCursor(0, 1); M5.lcd.print("Humidity = "); // print the number of seconds since reset: M5.lcd.print(sht31.getHumidity()); delay(2000); } Nous avons ensuite modifiĂ© ce code afin d'afficher les donnĂ©es avec une police diffĂ©rente (plus grande et jaune) grĂące au pack "Free Font" obtenu sur GitHub : #include #include #include #include "SHT31.h" #include #include "rgb_lcd.h" #include #include "Free_Fonts.h" SHT31 sht31 = SHT31(); void setup() { M5.begin(); M5.Power.begin(); sht31.begin(); } void loop() { M5.lcd.clear(); int xpos = 0; int ypos = 40; M5.Lcd.setFreeFont(FSB9); M5.Lcd.println(); M5.Lcd.setTextColor(TFT_YELLOW); M5.Lcd.setCursor(xpos, ypos); float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); M5.lcd.print("Temp = "); M5.lcd.print(temp); M5.lcd.println(" C"); //The unit for Celsius because original arduino don't support speical symbols M5.lcd.print("Hum = "); M5.lcd.print(hum); M5.lcd.println("%"); M5.lcd.println(); delay(500); M5.lcd.setCursor(0, 0); M5.lcd.print("Temp = "); M5.lcd.print(sht31.getTemperature()); M5.lcd.setCursor(0, 1); M5.lcd.print("Humidity = "); delay(1000); } Le rĂ©sultat obtenu est le suivant : Lors de la suite de la sĂ©ance, nous avons chacun entreprit la modĂ©lisation de deux objets : un en 2 dimensions et un autre en 3. SĂ©ance 4 bis : Petits projets : DĂ©couverte impression 3D et dĂ©coupe laser Projet avec graveuse/dĂ©coupeuse laser : Nom : BREZOVSEK Kylian : Projet carte Ă  jouer e... | Wiki FablabSU (sorbonne-universite.fr) Nom : BRIENDO Alex : https://wiki.fablab.sorbonne-universite.fr/BookStack/books/petits-projets/page/chapeau-de-luffy-le-pirate-et-cercle-de-transmutation Nom : CAMUS Paul J’ai eu l’idĂ©e de faire graver cette citation du film AstĂ©rix et ObĂ©lix : Mission ClĂ©opatre : « Vous savez, moi je ne crois pas qu'il y ait de bonne ou de mauvaise situation. Moi, si je devais rĂ©sumer ma vie aujourd'hui avec vous, je dirais que c'est d'abord des rencontres. Des gens qui m'ont tendu la main, peut-ĂȘtre Ă  un moment oĂč je ne pouvais pas, oĂč j'Ă©tais seul chez moi. Et c'est assez curieux de se dire que les hasards, les rencontres, forgent une destinĂ©e... Parce que quand on a le goĂ»t de la chose, quand on a le goĂ»t de la chose bien faite, le beau geste, parfois on ne trouve pas l'interlocuteur en face je dirais, le miroir qui vous aide Ă  avancer. Alors ça n'est pas mon cas, comme je disais lĂ , puisque moi au contraire, j'ai pu : et je dis merci Ă  la vie, je lui dis merci, je chante la vie, je danse la vie... je ne suis qu'amour ! Et finalement, quand beaucoup de gens aujourd'hui me disent « Mais comment fais-tu pour avoir cette humanitĂ© ? », et bien je leur rĂ©ponds trĂšs simplement, je leur dis que c'est ce goĂ»t de l'amour ce goĂ»t donc qui m'a poussĂ© aujourd'hui Ă  entreprendre une construction mĂ©canique, mais demain qui sait ? Peut-ĂȘtre simplement Ă  me mettre au service de la communautĂ©, Ă  faire le don, le don de soi... ». J’ai ensuite dĂ©cidĂ© de donner au contreplaquĂ© la forme d’un parchemin/papyrus afin de rappeler l’Égypte, lieu oĂč le film se dĂ©roule. Pour ce faire, j’ai utilisĂ© le logiciel Inkscape qui permet de dessiner en 2D n’importe quel objet. Par convention, la dĂ©coupeuse laser sait que lorsqu’un trait est rouge, il faut dĂ©couper et lorsqu’il est noir, il faut graver. J’ai rencontrĂ© un seul vĂ©ritable problĂšme : assigner 2 couleurs diffĂ©rentes Ă  un seul et mĂȘme trait. Pour palier Ă  ce problĂšme, j’ai voulu trouver le moyen de sectionner mon trait en 2. GrĂące Ă  StĂ©phane du FABLAB, que je remercie, j’ai dĂ©couvert la touche qui permet de sĂ©parer 2 noeuds d’une mĂȘme ligne ; ensuite il fallait sĂ©lectionner tous les noeuds de l’objet que je voulais colorer d’une autre couleur puis les couper (CTRL+X) et les coller afin de recrĂ©er un objet Ă  part entiĂšre. Le rĂ©sultat finale est le suivant : Enfin, afin de pourvoir utiliser la dĂ©coupeuse, il faut enregistrer l’image de notre objet en SVG en obtenant ainsi : Je suis ensuite passĂ© Ă  l’utilisation de la dĂ©coupeuse laser. J’ai utilisĂ© celle-ci : Clara, que je remercie aussi, m’a aidĂ© Ă  paramĂ©trer la dĂ©coupeuse en dĂ©plaçant la pointe du laser mais aussi en rĂ©glant numĂ©riquement mon objet. Pour le support, j’ai utilisĂ© une chute de contreplaquĂ© en 6mm. J’ai donc adaptĂ© la taille de mon objet en fonction de la place disponible sur la chute. J’ai ensuite lancĂ© l’impression qui a commencĂ© par graver le texte puis a terminĂ© en dĂ©coupant le bois. Le rĂ©sultat est au dessus de mes attentes, la dĂ©coupeuse est Ă©tonnement prĂ©cise. Nom: Alexandre Bertoletti Dans un premier temps, j’ai eu l’idĂ©e de me crĂ©er une rĂšgle graduĂ©e de 10 cm avec une image de mon choix dessus. J’ai utilisĂ© Inkscape pour rĂ©aliser ce projet, me permettant de dessiner en 2D. La tĂąche la plus longue pour une rĂšgle Ă©tait de la graduĂ© de maniĂšre prĂ©cise. Pour commencer, j’ai tracĂ© un rectangle de 15x5 cm pour laisser une marge de 2,5 cm entre le bord et le premier et dernier trait. Puis, avec le systĂšme prĂ©cis de mesures d’Inkscape j’ai pu tracer les graduation une par une en changeant manuellement la position de tel sorte qu’elle soient positionnĂ©es Ă  1 mm d’interval, en prenant soin de tracer ceux correspondant Ă  0,5 et 1 cm un peu plus long des graduations de 0,1 mm pour des soucis de lisibilitĂ© . Ensuite pour remplir et dĂ©corer cette rĂšgle j’ai utilisĂ© le systĂšme de vectorisation d’une image dans Inkscape qui permet de passer d’une photo Ă  une image vectorielle noir, lisible par une machine Ă  dĂ©coupe laser. La machine a pu lire ma rĂ©alisation sans problĂšme et mon objet a Ă©tĂ© dĂ©couper et rĂ©alisĂ© parfaitement. Projet avec imprimante 3D : Nom : BREZOVSEK Kylian : Projet impression 3D clĂ© | Wiki FablabSU (sorbonne-universite.fr) Nom : CAMUS Paul J’ai eu l’idĂ©e de modĂ©liser 2 piĂšces de Lego avec le logiciel Freecad afin de pouvoir les emboĂźter. Dans un premier temps, j’ai procĂ©dĂ© Ă  la modĂ©lisation de ma piĂšce en utilisant l’outil « sketch » permettant de dessiner une forme en 2D et d’ensuite pouvoir lui donner une Ă©paisseur. J’ai choisi de faire 2 piĂšces avec 8 tĂ©tons pour m’assurer qu’elles tiennent bien ensemble. Puis, grĂące Ă  l’outil cavitĂ©, j’ai pu modifier la forme de mon rectangle d’origine. Les dimensions de ma piece sont les suivantes : - PavĂ© : longueur = 31,8mm ; largeur = 15,8mm ; hauteur = 9,6mm - 8 TĂ©tons supĂ©rieurs : rayon = 1,2mm ; distance par rapport au bord du pavĂ©  le plus proche = 4mm ; hauteur = 1,8mm - CavitĂ© principale : longueur = 30,6mm ; largeur = 14,6mm ; hauteur = 8,6mm - 3 TĂ©tons infĂ©rieurs : rayon = 3,255mm ; distance par rapport au bord du pavĂ©  le plus proche = 6,8mm ; hauteur = 8,6mm - CavitĂ©s des 3 tĂ©tons infĂ©rieurs : rayon = 2,4mm ; profondeur = 8,6mm On obtient alors le rendu suivant : Lien du modĂšle 3D sous FreeCAD : lego 3d.FCStd Ensuite, il faut l’exporter en format STL afin que l’imprimante puisse lire le fichier. Je remercie l’étudiant en Master d’entreprenariat issu d’une licence intensive qui m’a trĂšs bien expliquĂ© le fonctionnement du logiciel IdeaMaker. Sur le logiciel, on voyait qu’il Ă©tait prĂ©fĂ©rable d’imprimer les piĂšces Ă  l’envers, c’est-Ă -dire en commençant par les 8 tĂ©tons supĂ©rieurs afin de limiter les supports et la dĂ©gradation des sommets des tĂ©tons. Lien des fichiers finaux : lego 3d-Body.idea lego 3d-Body.data lego 3d.FCStd Enfin, j’ai lancĂ© l’impression de 1h33. Le rĂ©sultat finale est le suivant : AprĂšs coup, j’aurais dĂ» augmenter le rayon des 8 tĂ©tons ou alors le rayon des cavitĂ©s des 3 tĂ©tons car mes briques ne s’emboĂźtent pas dans tous les sens. Nom: Alexandre Bertoletti Dans un premier temps, j’ai eu l’idĂ©e de me crĂ©er un verre miniature en voulant le rendre le plus esthĂ©tique possible. J’ai utilisĂ© Freecad pour rĂ©aliser ce projet, me permettant de rĂ©aliser aisĂ©ment des objets en 3D. j’ai d’abord créé un cylindre qui serait la forme principale de mon verre avec une boule de mĂȘme diamĂštre que j’ai unies avec l'outil fusion et ensuite creusĂ© Ă  l’aide d’une autre cylindre de diamĂštre infĂ©rieur avec l'outil cut. À la base de cette forme, j’y ai ajoutĂ© 3 carrĂ©s qui se superposent les uns sur les autres mais avec une diffĂ©rence de rotation de 60 degrĂ©s avec lesquels j’ai fait la diffĂ©rence pour crĂ©er un dodĂ©cagone que j’ai incorporĂ© Ă  la structure composĂ© du cylindre et de la boule en la soustrayant Ă  celle-ci en utilisant l’outils cut comme prĂ©cĂ©demment. Pour finir, j’ai utilisĂ© l'outil chamfer pour faire les “finitions”, donner un peu d’esthĂ©tisme au verre et qu’il soit agrĂ©able Ă  utiliser. SĂ©ance 5 : Projet King Dong SĂ©ance 5 : L'objectif de cette sĂ©ance Ă©tait de poser les fondations du projet que nous allons entreprendre lors de cette UE. AprĂšs de nombreuses recherches sur des sites tels que Hackaday, nous avons dĂ©cidĂ© de nous lancer dans la conception et la rĂ©alisation d'une sonnette. Celle-ci devra remplir le cahier des charges suivant: Sonner lorsque l'on appuie sur son bouton Se mettre Ă  filmer lorsqu'un mouvement est dĂ©tectĂ© a proximitĂ© Rentrer dans un pavĂ© droit de taille 10*10*3 cm Pouvoir ĂȘtre accrochĂ©e Ă  un mur Un autre objectif, qui semble cependant plus complexe et que l'on considĂšre donc pour l'instant comme facultatif, serait de faire en sorte que la vidĂ©o captĂ©e par la sonnette soit consultable sur un tĂ©lĂ©phone par exemple, idĂ©alement vient un feed en direct. Afin de rĂ©aliser ce projet, nous avons dressĂ© une liste du matĂ©riel nĂ©cessaire (en dehors de ce qui est dĂ©jĂ  disponible au FabLab) et des sites oĂč leur achat est possible au plus petit prix : ESP 32 Cam Module Capteur PIR Arduino Push Button Arduino Speaker https://wiki.seeedstudio.com/edge-impulse-vision-ai SĂ©ance 6 : Tests des capteurs pour notre projet SĂ©ance 6 : Durant cette sĂ©ance, nous avons testĂ© deux capteurs pouvant remplir la tĂąche de dĂ©tecter un mouvement ou une prĂ©sence. Dans un premier temps, nous avons testĂ© un capteur Ă  ultrason : Ultrasonic Distance Sensor permettant de dĂ©terminer la distance entre le capteur et un objet prĂ©sent devant le capteur.. Le rĂ©sultat a Ă©tĂ© plutĂŽt satisfaisant, le seul dĂ©faut pouvant ĂȘtre qu'il ne capte que trĂšs peu sur les cĂŽtĂ©s. Pour tester ce capteur, nous avons utilisĂ© ce code. //Make sure to install #include #include "Ultrasonic.h" Ultrasonic ultrasonic(22); void setup() { M5.begin(); } void loop() { long RangeInInches; long RangeInCentimeters; RangeInCentimeters = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval M5.Lcd.setCursor(10, 0); M5.Lcd.print(RangeInCentimeters);//0~400cm //M5.Speaker.tone(RangeInCentimeters, 200); delay(250); } Ensuite, nous avons testĂ© un capteur de mouvement : Mini PIR Motion Sensor. Nous avons eu du mal Ă  le faire fonctionner mais nous avons finalement trouvĂ© un code fonctionnel. Finalement, nous pensons utiliser le capteur de mouvement qui permet d'avoir un angle plus large. Voici le code utilisĂ© pour le test. #include void setup() { M5.begin(); Serial.begin(115200); M5.Lcd.clear(BLACK); M5.Lcd.setTextColor(YELLOW); M5.Lcd.setTextSize(2); M5.Lcd.setTextSize(2); M5.Lcd.setCursor(80, 0); M5.Lcd.println("PIR example"); Serial.println("PIR example: "); M5.Lcd.setCursor(65, 10); M5.Lcd.setTextColor(WHITE); pinMode(36, INPUT); } void loop() { M5.Lcd.setCursor(0,25); M5.Lcd.print("Status: "); M5.Lcd.setCursor(0,45); M5.Lcd.print("Value: "); M5.Lcd.fillRect(95,25,200,25,BLACK); M5.Lcd.fillRect(95,45,200,25,BLACK); if(digitalRead(36)==1){ M5.Lcd.setCursor(95, 25);M5.Lcd.print("Sensing"); M5.Lcd.setCursor(95, 45);M5.Lcd.print("1"); Serial.println("PIR Status: Sensing"); Serial.println(" value: 1"); } else{ M5.Lcd.setCursor(95, 25);M5.Lcd.print("Not Sensed"); M5.Lcd.setCursor(95, 45);M5.Lcd.print("0"); Serial.println("PIR Status: Not Sensed"); Serial.println(" value: 0"); } delay(500); M5.update(); } SĂ©ance 7 : Programmation des capteurs SĂ©ance 7 : Dans cette sĂ©ance, nous avons dessinĂ© la boite de notre sonnette. GrĂące au site MakerCase, nous avions juste Ă  rentrer les dimensions de notre boite : - Largeur : 10cm - Longueur : 15cm - Profondeur : 7cm Nous avons aussi rajoutĂ© 3 trous qui permettront de faire passer la camĂ©ra, le bouton et le capteur de mouvement. Ensuite, nous devons programmer une sonnerie qui se dĂ©clenchera dĂšs lors que le bouton de la sonnette sera enclenchĂ©. Pour ce faire, nous avons dans un premier temps utiliser un haut parleur, le Arduino Speaker 1.1, et dĂ©fini une sonnerie trouvĂ© sur Hackster.io avec le code #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 247 #define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978 #define REST 0 #define END -1 int melody[] = { NOTE_E5, NOTE_DS5, //1 NOTE_E5, NOTE_DS5, NOTE_E5, NOTE_B4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_C4, NOTE_E4, NOTE_A4, NOTE_B4, NOTE_E4, NOTE_GS4, NOTE_B4, NOTE_C5, REST, NOTE_E4, NOTE_E5, NOTE_DS5, NOTE_E5, NOTE_DS5, NOTE_E5, NOTE_B4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_C4, NOTE_E4, NOTE_A4, NOTE_B4, NOTE_E4, NOTE_C5, NOTE_B4, NOTE_A4 , REST, END }; // note durations: 8 = quarter note, 4 = 8th note, etc. int noteDurations[] = { //duration of the notes 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ,4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 2, 20 }; int speed=90; //higher value, slower notes void setup() { Serial.begin(9600); for (int thisNote = 0; melody[thisNote]!=-1; thisNote++) { int noteDuration = speed*noteDurations[thisNote]; tone(3, melody[thisNote],noteDuration*.95); Serial.println(melody[thisNote]); delay(noteDuration); noTone(3); } } void loop() { } SĂ©ance 8 : CamĂ©ra AI Module Vision Dans cette sĂ©ance, nous avons essayĂ© de programmer la camĂ©ra AI Module vision. Nous avons dans un premier temps dĂ» souder un Xiao sur la camĂ©ra afin de pouvoir la relier Ă  une carte Arduino ou un M5Stack. Pour ce faire, nous avons souder une barrette femelle longue sur la carte de la camĂ©ra et une barrette droite mĂąle longue sur le Xiao. Une fois cela fait, nous sommes ensuite revenu sur la configuration de la camĂ©ra. Nous avons dĂ» chercher sur de nombreux sites car cette camĂ©ra est relativement rĂ©cente et la documentation sur celle-ci se fait extrĂȘmement rare ou bien pour des applications trĂšs spĂ©cifiques. Que ce soit sur Seed Studio, ou EdgeImpulse, la documentation est faite Ă  partir d’autres interfaces que l’Arduino ou le M5Stack comme le Raspberry nous rendant ainsi impossible l’exploitation de la CamĂ©ra AI Module Vision. Il semblait possible de faire fonctionner la camĂ©ra avec le XIAO, mais nous n'avons pas rĂ©ussi Ă  aboutir mĂȘme en suivant rigoureusement les indications fournies. Notamment, la documentation parlait d'un logiciel nommĂ© Bouffalo que nous n'arrivions pas Ă  comprendre. Par ailleurs, nos capacitĂ©s en informatique et en codage ne nous permettant pas de dĂ©velopper un code de A Ă  Z,  nous avons dĂ©cidĂ© de mettre fin au projet King Dong. Cette sĂ©ance nous a montrĂ© que la documentation est vraiment quelque chose de fondamental, c’est pourquoi nous vous avons mis tous les liens que nous avons trouvĂ©s afin de rassembler le plus d’information possible pour les prochaines personnes qui utiliseront cette camĂ©ra. SĂ©ance 9 : Projet Alarme Incendie : les Rois de la Larme La dĂ©cision de la sĂ©ance derniĂšre nous a obligĂ© a changer de projet.  En effet, les multiples Ă©checs liĂ©s Ă  la camĂ©ra AI Module Vision nous ont menĂ© Ă  tout repenser depuis le dĂ©part afin de rebondir promptement sur un projet nouveau dont les fondations pourraient ĂȘtre bĂąties sur les ruines du regrettĂ© empire de la sonnette que nous avions pourtant corps et Ăąme tentĂ© de faire fructifier. Tout le progrĂšs fait jusqu'alors n'Ă©tait donc pas perdu : il constituerait l'armature neuve d'un projet dont l'aboutissement technique n'aura d'Ă©gal que la splendeur. Afin de repartir, nous nous sommes questionnĂ©s quant Ă  ce qui Ă©tait Ă  notre disposition : un code permettant de jouer de la musique et un autre permettant de faire fonctionner un capteur de mouvement PIR. Nous avons de plus trouvĂ© parmi les nombreux capteurs Ă  notre disposition au FabLab un dĂ©tecteur de flamme. Mis face Ă  tous ces Ă©lĂ©ments, nous eĂ»mes une rĂ©vĂ©lation salvatrice commune : celle de rĂ©aliser une double alarme, Ă  la fois Ă  incendie et Ă  intrusion. Suite Ă  cette illumination collective, nous cherchĂąmes Ă  bride abattue un code permettant de faire fonctionner le Flame Sensor que nous avons su prestement et talentueusement allier au code pour le Capteur PIR (voir sĂ©ance 6) et Ă  celui pour la musique (sĂ©ance 7) afin d'obtenir le code final pour notre alarme : #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 247 #define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978 #define REST 0 #define END -1 #define PIR_MOTION_SENSOR 2 int melody[] = { NOTE_E5, NOTE_DS5, //1 NOTE_E5, NOTE_DS5, NOTE_E5, NOTE_B4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_C4, NOTE_E4, NOTE_A4, NOTE_B4, NOTE_E4, NOTE_GS4, NOTE_B4, NOTE_C5, REST, NOTE_E4, NOTE_E5, NOTE_DS5, NOTE_E5, NOTE_DS5, NOTE_E5, NOTE_B4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_C4, NOTE_E4, NOTE_A4, NOTE_B4, NOTE_E4, NOTE_C5, NOTE_B4, NOTE_A4 , REST, END }; // note durations: 8 = quarter note, 4 = 8th note, etc. int noteDurations[] = { //duration of the notes 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ,4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 2, 20 }; int melody2[] = { REST, NOTE_DS4, NOTE_E4, REST, NOTE_FS4, NOTE_G4, REST, NOTE_DS4, NOTE_E4, NOTE_FS4, NOTE_G4, NOTE_C5, NOTE_B4, NOTE_E4, NOTE_G4, NOTE_B4, NOTE_AS4, NOTE_A4, NOTE_G4, NOTE_E4, NOTE_D4, NOTE_E4, REST, END }; int noteDurations2[] = { //duration of the notes 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4 , 2, 2, 2, 4, 2, 2, 20 }; int speed=90; // lowest and highest sensor readings: const int sensorMin = 0; // sensor minimum const int sensorMax = 1024; // sensor maximum void setup() { pinMode(PIR_MOTION_SENSOR, INPUT); Serial.begin(9600); } void loop() { // read the sensor on analog A0: int sensorReading = analogRead(A0); // map the sensor range (four options): // ex: 'long int map(long int, long int, long int, long int, long int)' int range = map(sensorReading, sensorMin, sensorMax, 0, 8); // range value: switch (range) { case 0: // A fire closer than 1.5 feet away. Serial.println("** Close Fire **"); for (int thisNote = 0; melody[thisNote]!=-1; thisNote++) { int noteDuration = speed*noteDurations[thisNote]; tone(3, melody[thisNote],noteDuration*.95); Serial.println(melody[thisNote]); delay(noteDuration); noTone(3); } break; case 1: // No fire detected. Serial.println("No Fire"); break; case 2: // No fire detected. Serial.println("No Fire"); break; case 3: // No fire detected. Serial.println("No Fire"); break; case 4: // No fire detected. Serial.println("No Fire"); break; case 5: // No fire detected. Serial.println("No Fire"); break; case 6: // No fire detected. Serial.println("No Fire"); break; case 7: // No fire detected. Serial.println("No Fire"); break; } delay(1); // delay between reads if(digitalRead(PIR_MOTION_SENSOR))//if it detects the moving people? for (int thisNote = 0; melody2[thisNote]!=-1; thisNote++) { int noteDuration2 = speed*noteDurations2[thisNote]; tone(3, melody2[thisNote],noteDuration2*.95); Serial.println(melody2[thisNote]); delay(noteDuration2); noTone(3);} else Serial.println("Watching"); delay(200); } Il est important de noter qu'en terme de branchements, il est nĂ©cessaire de brancher l'Arduino Speaker au port D3, le PIR Sensor au D2 et le Flame Sensor au A0. Ce code nous permet alors de jouer la Lettre pour Élise de Beethoven en cas d'incendie et le cultissime gĂ©nĂ©rique de La PanthĂšre Rose en cas d'intrusion. Ces deux musiques, provenant originalement d'un GitHub par nos soins sanctifiĂ© tant il nous a Ă©tĂ© utile, ont Ă©tĂ© longuement rĂ©adaptĂ©es de nos frĂȘles mains note par note afin de fonctionner avec notre code et Ă©quipement. Mais que serait le module Arduino sans sa batterie, lui procurant puissance et autonomie Ă  toute Ă©preuve?  Dans la salle d'Ă©lectronique, nous trouvĂąmes un rĂ©ceptacle qui, Ă  premiĂšre vue, ne payait pas de mine. Cependant, une fois couplĂ© Ă  une triplette de pile AAA et aprĂšs un branchement minutieux au module Arduino, ce dispositif laissa Ă©clater tout son potentiel et se montra tout Ă  fait adĂ©quat Ă  la rĂ©alisation de notre ambitieux projet. Suite Ă  ce vĂ©ritable travail d'horlogerie suisse, il ne nous restait plus qu'a confectionner le digne rĂ©ceptacle qui accueillerait notre merveille technique. Lors de la sĂ©ance 6, nous avions Ă©tabli les plans d’une boite capable d’accueillir le dĂ©sormais caduc projet King Dong. En usant du mĂȘme logiciel (MakerCase), nous avons designĂ© un contenant assez noble pour accueillir cette innovation immodĂ©rĂ©ment novatrice dans son domaine.Ces plans  Ă  la fois complexes et puristes respectent les dimensions suivantes : - Largeur : 14cm - Longueur : 14cm - Profondeur : 7cm SublimĂ©e par l’enseigne de notre marque et accompagnĂ© de son logo, le rendu est tel que : Les capteurs nĂ©cessitant une exposition extĂ©rieure pour fonctionner, nous Ă©tions dans le besoin de crĂ©er 2 orifices. AprĂšs de nombreuses mesures, nous nous sommes arrĂȘtĂ©s sur ce modĂšle : Lors de l’assemblage final de notre prototype, Alexandre, un employĂ© du FABLAB, gravait un QR code sur une plaque de PMMA. Nous vient alors l’idĂ©e de graver Ă  notre tour un QR Code menant Ă  la page Wiki de notre alarme. Pour ce faire, rien de plus simple, il suffit d'utilisĂ© le magnifique logiciel qu'est Inkscape et d'ouvrir le menu puis de cliquer sur extensions, rendu, Code-barres et finalement QR code avant de rentrer dans la page qui s'ouvre le lien de notre parfaite documentation et le tour est jouĂ©. Soudain, une terrible nouvelle vint s’abattre sur notre groupe. Le haut parleur dĂ©cidait de faire des siennes. AprĂšs quelques rectifications, il retrouvait ses capacitĂ©s. Toutefois, le vent de jeunesse qui l’animait n’était plus 
 le son qu’il dĂ©gageait n’était plus aussi puissant que celui d’antan. Nous vient alors l’idĂ©e de designer des trous sur une des nobles tranches de notre appareil afin de diminuer au maximum les pertes d’intensitĂ© sonore. DĂ©sormais vĂȘtu de son illustre documentation ainsi que de splendide orifice, notre projet atteignait calmement son apogĂ©e. Toute bonne chose ayant une fin, l’heure de l’étape finale fut venue. Assemblant Ă  grands coups de colle Ă  bois pour le rĂ©ceptacle et de scotch pour les composants, notre appareil fut revĂȘtit de ses plus divins ornements en un rien de temps. Une aventure venait de prendre fin mais une lĂ©gende Ă©tait créée 
 SĂ©ance 10 : PrĂ©sentation finale Nous sommes dimanche aprĂšs-midi, l’heure de notre soutenance arrive Ă  grands pas. Soudain, une Visio-confĂ©rence est programmĂ©e Ă  15h prĂ©cise. Ce n’est que 2h aprĂšs que nous arrivĂąmes enfin Ă  trouver un consensus. Notre projet Ă©tant, disons-le nous, relativement simpliste, il nous fallait tout miser sur notre derniĂšre resource : l’humour. De cette dĂ©cision en est ressorti ce diaporama. Il est 9h, nous sommes lundi matin, un silence d’outre-tombe rĂšgne dans le Fablab. Les soutenances se font attendre mais notre assiduitĂ© aura raison de nous. Notre groupe se trouvant ĂȘtre l’unique groupe au complet, notre soutenance ouvre le bal. 20 minutes plus tard, des sourires se dessinent sur tous les visages. Notre mission est un franc succĂšs. Les Rois de la Larme ont vaincu. NĂ©anmoins, notre prĂ©sentation est jugĂ©e, Ă  juste titre, un peu trop bĂątarde entre un pitch de start up et une prĂ©sentation formelle et approfondie du sujet. En effet, il aurait Ă©tĂ© prĂ©fĂ©rable de se concentrer uniquement sur l’humour pour prĂ©senter notre projet en survolant trĂšs rapidement les dĂ©tails les plus importants et en se concentrant sur utilisation. Groupe B3 Membre du groupe: ClĂ©ment BAILLY, Pierre BERNARDE, Leeloo BLEYNIE, Vitaly POPOFF SĂ©ance 1 : introduction de l'UE SĂ©ance 1 : introduction de l'UE PrĂ©sentation globale : M. Dupuis nous a montrĂ© les attendus de l'UE,, les projets Ă  rĂ©aliser. Nous rĂ©aliserons un projet scientifique en 10 sĂ©ances, en se servant de la base de donnĂ©es du rĂ©seau FabLab et de son outillage disponible. Cette annĂ©e, le projet portera sur le thĂšme des capteurs mĂ©tĂ©o Cours sur l'histoire des FabLab Un fab lab (contraction de l'anglais fabrication laboratory, « laboratoire de fabrication ») est un tiers-lieu de type makerspace cadrĂ© par le MIT et la FabFoundation en proposant un inventaire minimal permettant la crĂ©ation des principaux projets fab labs, un ensemble de logiciels et solutions libres et open-sources, les Fab Modules, et une charte de gouvernance, la Fab Charter Ils sont créés en 1995 par Neil Gershenfeld, et sont considĂ©rĂ©s comme trĂšs pratiques pour la communautĂ© scientifique. Visite des locaux du FabLab : Nous disposons d'imprimantes 3D, de machines de dĂ©coupe et de gravure, de fraiseuses, et d'un labo d'assemblage Ă©lectronique pour construire la structure de l'objet technique Ă  concevoir. SĂ©ance 2 : composants Ă©lectroniques SĂ©ance 2 : composants Ă©lectroniques Cours magistral de 3h sur : les composants Ă©lectroniques, le prototypage, les transistors, etc.. la carte Arduino. Il s'agit d'une carte connectable Ă  la fois Ă  un ordinateur et Ă  diffĂ©rents modules (gazomĂštre, thermomĂštre, Ă©cran, haut-parleur, dĂ©tecteur de CO2, etc). Cette carte est trĂšs polyvalente, et son utilisation est relativement simple. Elle est plus simple et plus compacte dans un montage Ă©lectronique par rapport aux fils Dupont (utilisables sur une breadboard). Elle peut ĂȘtre associĂ©e Ă  diffĂ©rents modules, fournissant diffĂ©rentes informations comme la tempĂ©rature, l'humiditĂ© de l'air, la pression, mais Ă©galement des pĂ©riphĂ©riques externes comme comme un haut-parleur, un buzzer, etc. Le code sur arduino a une structure assez spĂ©cifique : il faut tout d'abord inclure les bibliothĂšques de code fonctionnant avec les modules utilisĂ©s (Ă©cran, capteur...) ainsi que les variables que nous voudrions utiliser aprĂšs. Ensuite dans la fonction setup il faut mettre tout ce qui permet d'initialiser les composants et de les prĂ©parer au code principal ainsi que tous les codes qui sont utilisĂ©s qu'une seule fois. Pour finir il y a la fonction loop qui comme son nom l'indique permet de faire une "boucle" dans le code et donc de rĂ©pĂ©ter pĂ©riodiquement certaines actions. Nous avons tout d'abord voulu tester l'appareil avec un capteur d'humiditĂ©. Ce module utilise l'extension I2C, nous l'avons donc connectĂ© Ă  ce port de la carte, que nous avons reliĂ©s Ă  un ordinateur. Il faut ensuite tĂ©lĂ©charger la bibliothĂšque associĂ©e Ă  ce module et prendre le code d'exemple en bas de page nous permettant de voir la tempĂ©rature ainsi que l'humiditĂ© sur le moniteur sĂ©rie comme ceci : Nous avons ensuite utilisĂ© sĂ©parĂ©ment un Ă©cran OLED et avons utilisĂ© le fameux code "hello world" en bas de page pour voir comment il fonctionnait nous donnant ce rĂ©sultat : Pour finir nous avons combinĂ© les deux codes afin d'afficher les valeurs de tempĂ©rature et d'humiditĂ© du capteur sur l'Ă©cran OLED de la sorte : Code lecture de l'humiditĂ© et de la tempĂ©rature du SHT31 : #include #include #include "Adafruit_SHT31.h" bool enableHeater = false; uint8_t loopCnt = 0; Adafruit_SHT31 sht31 = Adafruit_SHT31(); void setup() { Serial.begin(9600); while (!Serial)   delay(10);   Serial.println("SHT31 test"); if (! sht31.begin(0x44)) {   Serial.println("Couldn't find SHT31");   while (1) delay(1); } Serial.print("Heater Enabled State: "); if (sht31.isHeaterEnabled())   Serial.println("ENABLED"); else   Serial.println("DISABLED"); } void loop() { float t = sht31.readTemperature(); float h = sht31.readHumidity(); if (! isnan(t)) {   Serial.print("Temp *C = "); Serial.print(t); Serial.print("\t\t"); }else{   Serial.println("Failed to read temperature"); } if(! isnan(h)){   Serial.print("Hum. % = "); Serial.println(h); }else{   Serial.println("Failed to read humidity"); } delay(1000); if (loopCnt >= 30) {   enableHeater = !enableHeater;   sht31.heater(enableHeater);   Serial.print("Heater Enabled State: ");   if (sht31.isHeaterEnabled())     Serial.println("ENABLED");   else     Serial.println("DISABLED");   loopCnt = 0; } loopCnt++; } Code "hello world" OLED : #include #include void setup() {   Wire.begin();   SeeedOled.init();   SeeedOled.clearDisplay();           SeeedOled.setNormalDisplay();       SeeedOled.setPageMode();           SeeedOled.setTextXY(0, 0);         SeeedOled.putString("Hello World!"); } void loop() { } Code d'affichage des donnĂ©es du SHT31 sur l'Ă©cran OLED : #include #include #include "Adafruit_SHT31.h" #include Adafruit_SHT31 sht31 = Adafruit_SHT31(); void setup() { Wire.begin(); SeeedOled.init(); SeeedOled.clearDisplay();         SeeedOled.setNormalDisplay();     SeeedOled.setPageMode();         sht31.begin(0x44); } void loop() { float t = sht31.readTemperature(); float h = sht31.readHumidity(); SeeedOled.clearDisplay(); SeeedOled.setTextXY(0, 0); SeeedOled.putString("temp="); SeeedOled.putFloat(t); SeeedOled.putString("°C"); SeeedOled.setTextXY(1, 0); SeeedOled.putString("hum="); SeeedOled.putFloat(h); SeeedOled.putString("%"); delay(10000); } SĂ©ance 3 : logiciels de design SĂ©ance 3 : logiciels de design Lors de cette sĂ©ance nous avons appris Ă  utiliser le logiciel de dessin 2D Inkscape ainsi que les logiciels de modĂ©lisation 3D OpenSCAD et FreeCAD. Ces logiciels sont trĂšs pratiques car ils sont gratuits et opensource. Inkscape : Ce logiciel peut ĂȘtre utilisĂ© pour faire du graphisme mais nous l'utilisons surtout pour faire de la dĂ©coupe au laser ainsi que de la gravure sur bois (max 8mm d'Ă©paisseur pour nos machines). Pour que la dĂ©coupeuse laser fonctionne, il faut que le document soit en format SVG. Il faut aussi que les traits soient d'un pixel d'Ă©paisseur de couleur rouge pour la dĂ©coupe et noir pour la gravure. Logiciels de 3D : Ces logiciels permettent de rĂ©aliser des formes en 3D que l'on peut imprimer par la suite. Les machines utilisĂ©es au Fablab n'acceptent que des formats STL. Ces documents doivent ensuite ĂȘtre traitĂ©s avec le logiciel Ideamaker nous permettant de programmer les conditions d'impression (taille du fil, remplissage, supports...). Sur FreeCAD il suffit de placer ses formes et de les dĂ©placer Ă  l'aide de la barre d'outils tandis que sur OpenSCAD il faut faire apparaitre les objets grĂące Ă  du code. Nous avons donc pendant cette sĂ©ance rĂ©alisĂ© quelques modĂ©lisations afin de voir comment les manipuler. Nous avons fais ce dessin sur Inkscape : Nous avons ensuite rĂ©alisĂ© un cube de 50mm de diamĂštre avec Ă  l'intĂ©rieur des trous faits Ă  l'aide de trois cylindres de 20mm de rayon centrĂ©s au niveau du centre des faces. Voici ce que cela donne sur les deux logiciels de 3D : Sur FreeCAD : Sur OpenSCAD (code puis forme): difference() { cube(50,center=true); translate([0,0,-30]) cylinder(h=60,r=20); rotate([90,0,0]) translate([0,0,-30]) cylinder(h=60,r=20); rotate([0,90,0]) translate([0,0,-30]) cylinder(h=60,r=20); } SĂ©ance 4 : approche de la M5stack SĂ©ance 4 : approche de la M5stack Nous avons Ă©tudiĂ© l'utilisation de la carte m5stack, et son logiciel. Cette carte permet tout comme la carte Arduino, de connecter diffĂ©rents modules Ă  un ordinateur, mais a beaucoup plus d'options (ordinateurs, boutons...). Nous avons tĂ©lĂ©chargĂ© les modules depuis M5stack GitHub, et essayĂ© plusieurs programmes de base, comme "HelloWord", qui a fonctionnĂ© avec ce code #include void setup() { M5.begin(); M5.Power.begin(); M5.Lcd.print("Hello World"); } void loop() { } Nous avons ensuite essayĂ© de connecter le module "capteur d'humiditĂ©" de la derniĂšre fois avec la carte M5stack. Il fallait donc modifier le code qu'on avait pour l'adapter, ce que nous n'avons pas rĂ©ussi. Puis nous avons essayĂ© le module "Tetris" (permettant normalement de jouer au jeu sur la carte M5stack) mais cela n'a pas marchĂ©. SĂ©ance 5 : dĂ©but du projet SĂ©ance 5 : dĂ©but du projet Cette sĂ©ance Ă©tait la 1Ăšre entiĂšrement en autonomie, ou nous avons commencĂ© Ă  rĂ©flĂ©chir au projet que nous allons rĂ©aliser. Pour cela, M.Dupuis nous a conseillĂ© 3 sites proposant des mĂ©thodes d'assemblage et de codes pour diffĂ©rents appareils: hackster.io instructables hackaday Ce sont des sites ouverts au public, des banques de donnĂ©es de passionnĂ©s qui partagent des montages d'appareils en tout genre. Nous avons convenu de crĂ©er une station mĂ©tĂ©o multifonction, avec haut parleur. Pour cela nous nous sommes basĂ©s sur un modĂšle m5stack de station dĂ©jĂ  existante sur internet. On va donc d'abord la recrĂ©er avec le matĂ©riel disponible avant d'innover pour arriver au rĂ©sultat souhaitĂ©. Pour cela il nous faut : une carte M5STACK (faisait Ă©galement office d'Ă©cran) un capteur de lumiĂšre un capteur thermique un capteur de pression Pour finir, nous avons commencĂ© Ă  manipuler le code informatique relatif aux diffĂ©rents composants pour pouvoir tous les utiliser sur la carte M5stack. SĂ©ance 6 : cahier des charges SĂ©ance 6 : Cahier des charges Lors de cette sĂ©ance nous avons finaliser le cahier des charges de notre objet. Voici la les fonctionnalitĂ©s que nous voulons qu'il est : Il faut qu'il affiche : la tempĂ©rature l'humiditĂ© la luminositĂ© la pression l'heure la mĂ©tĂ©o prĂ©sente et de la journĂ©e qui arrive (si c'est faisable) Ces donnĂ©es vont ĂȘtre affichĂ©es sur 4 Ă©crans lcd et l'Ă©cran du M5. Pour les Ă©crans lcd, nous voulons afficher une des 4 premiĂšre donnĂ©es par Ă©cran soit en l'Ă©crivant soit en faisant une graduation que nous graverions sur la boĂźte. Il suffirait d'allumer seulement une petite partie de l'Ă©cran quand la valeur et faible et inversement. L'heure et la mĂ©tĂ©o seraient elles sur l'Ă©cran du M5. Pour recueillir la mĂ©tĂ©o, nous avons trouver un site qui permet au M5 de recevoir les informations de la mĂ©tĂ©o moins d'un centime par requĂȘte. Ceci est sĂ»rement faisable car le m5 peut se connecter Ă  internet. Il y a cependant un problĂšme, il y a trop de composants pour le M5 et certains ont la mĂȘme adresse donc c'est impossible de communiquer sĂ©parĂ©ment avec eux. Nous voulons donc utiliser un multiplexeur permettant cela, le Grove - 8 Channel I2C Multiplexer/I2C Hub (TCA9548A). Il faut aussi qu'on puisse sĂ©lectionner une de ces donnĂ©es et grĂące Ă  un bouton avoir la boĂźte qui dise un message liĂ© Ă  cette valeur. Par exemple dire quand il fait 20°C "ça va tu peux sortir en t-shirt". Pour faire ceci, nous avons pensĂ© Ă  utiliser le haut-parleur ainsi que les boutons du M5. Il suffirait d'appuyer sur les boutons de gauche et de droite pour changer de donnĂ©e et d'appuyer sur celui du centre pour que cela le dise. Pour permettre de visualiser la sĂ©lection, nous pensons Ă  faire changer la couleur des Ă©crans. Nous pouvons aussi utiliser une led par donnĂ©e qui s'allume quand cette derniĂšre est sĂ©lectionnĂ©e. Nous avons ensuite briĂšvement rĂ©flĂ©chi au design de la boĂźte et avons dĂ©cidĂ© de faire une façade ressemblant Ă  ceci : Le trou en bas serait pour le M5, les autres rectangulaires pour les Ă©crans et les ronds pour les leds. SĂ©ance 7 : montage Ă©lectronique SĂ©ance 7 : montage Ă©lectronique Nous avons durant cette sĂ©ance, fini la rĂ©alisation technique du dispositif : Comme vous pouvez le voir nous avons abandonnĂ© les leds car c'Ă©tait techniquement trop compliquĂ©. Il nous aurait fallu en plus un deuxiĂšme multiplexeur et ça paraissait dĂ©jĂ  assez compliquĂ© avec les Ă©crans. Nous avons donc connectĂ© la carte M5stack (en haut Ă  droite) Ă  un hub I2C (en bas Ă  droite). Voici sa rĂ©fĂ©rence et une image de lui Grove - 8 Channel I2C Multiplexer/I2C Hub (TCA9548A) https://wiki.seeedstudio.com/Grove-8-Channel-I2C-Multiplexer-I2C-Hub-TCA9548A/ . Vu que la majoritĂ© de nos modules sont dans ce format, c'est la maniĂšre la plus compacte Ă  notre disposition que l'on peut utiliser pour rĂ©aliser ce projet. Nous y avons ajoutĂ© les composants suivants : Capteur de lumiĂšre (light sensor v.1.2) + convertisseur analogique  https://wiki.seeedstudio.com/Grove-Light_Sensor/ Toute station mĂ©tĂ©o doit ĂȘtre capable de capter et donner un indice de la lumiĂšre ambiante. Cependant, nous avons utilisĂ© un hub I2C, et notre light sensor (Ă  gauche) n'Ă©tait pas compatible. Il a donc fallu ajouter un convertisseur analogique (Ă  droite) capable de transformer le signal d'origine en format I2C. BaromĂštre Ecran affichant l'heure Capteur d'humiditĂ© et thermomĂštre 4 Ă©crans LCD https://wiki.seeedstudio.com/Grove-16x2_LCD_Series/ Ils vont servir Ă  afficher les valeurs des 4 modules. Nous nous sommes demandĂ©s par quel moyen nous allions faire ça. Nous avons optĂ© pour un systĂšme de graduation, avec l'Ă©chelle indiquĂ©e sous chaque Ă©cran, plutĂŽt qu'un nombre directement affichĂ© sur dessus. Enfin, nous nous sommes penchĂ©s sur la structure du code informatique. Afficher les donnĂ©es sur les Ă©crans est normalement pas trop compliquĂ© sauf qu'il faut arriver Ă  communiquer avec eux sĂ©parĂ©ment. Pour cela il faudrait rĂ©ussir Ă  faire marcher le multiplexeur. La partie plus compliquĂ©e du code est l'utilisation des leds et le haut-parleur. La structure de son fonctionnement ressemblerait Ă  quelque chose comme cela : avec n le numĂ©ro de l'Ă©cran rĂ©cupĂ©rer les donnĂ©es les afficher si le bouton droit est pressĂ© si n=5 ne rien faire sinon n=n+1 si le bouton droit est pressĂ© si n=5 ne rien faire sinon n=n+1 si n=1 mettre l'Ă©cran 1 en vert k = donnĂ©e affichĂ©e sinon mettre l'Ă©cran 1 en blanc copier ceci pour les 5 Ă©crans si le bouton central est pressĂ© si n=1 lire la piste audio associĂ©e Ă  la valeur k et la donnĂ©e copier ceci pour les 5 Ă©crans SĂ©ance 8 : problĂšmes et solutions SĂ©ance 8 : problĂšmes et solutions Durant cette sĂ©ance, ayant de sĂ©rieux problĂšmes Ă  faire fonctionner la carte M5stack et saisir le bon code informatique, je (ClĂ©ment) me suis tournĂ© vers un montage alternatif de station mĂ©tĂ©o utilisant la carte arduino : https://www.instructables.com/Weather-Station-With-Arduino-Station-M%C3%A9t%C3%A9o-Avec-Ar/ Ce montage est parfaitement documentĂ©, simple Ă  rĂ©aliser en comparaison de ce que nous avions entrepris. Il requiert : 1. Un Ă©cran LCD alphanumĂ©rique 16x2 2. Un capteur de tempĂ©rature TMP36 3. Un haut-parleur de 8 Ohm 4. Un potentiomĂštre de 10 kilos Ohm 5. Deux rĂ©sistance de 220 ohm 6. Beaucoup de fils 7.Une Breadboard ou platine d'expĂ©rimentation 8. Un Arduino (J'utilise un Uno) Les instructions sont disponibles sur Instructables, via le lien envoyĂ©. J'ai rĂ©alisĂ© une grosse partie du montage, mais manquant de certains composants, je n'ai pas pu finir. Une fois le montage prĂȘt, il faut ajouter le code suivant dans l'application Arduino : https://content.instructables.com/F6A/V3BV/KM3GBVUI/F6AV3BVKM3GBVUI.ino Pendant ce temps, Pierre et Vitaly ont essayĂ©s de rĂ©soudre les problĂšmes avec le multiplexeur. Il est sensĂ© pouvoir communiquer avec plusieurs objets ayant la mĂȘme adresse cependant, il faut bidouiller des choses pour y arriver. Une des solutions serait d'arriver Ă  changer les bibliothĂšques des Ă©crans pour changer dĂ©finitivement leur adresse. Cependant, malgrĂ© beaucoup d'efforts, nous n'y sommes pas parvenu. sĂ©ance 9 projet final Lors de cette sĂ©ance et les jours de la semaine qui ont suivi nous avons du changĂ© notre projet afin d'avoir au final un objet qui marche car nous n'avons pas rĂ©ussi Ă  faire marcher le multiplexeur comme nous le voulions. Nous sommes donc repartis sur une station mĂ©tĂ©o basique marchant sur l'arduino uno affichant la tempĂ©rature, l'humiditĂ©, la luminositĂ© et la pression. Pour cela, nous avons utilisĂ© le grove barometer sensor BME280 (1) fonctionnant en I2C nous donnant tout sauf la luminositĂ© donnĂ©e par le grove light sensor (3) marchant en analogique. Pour l'affichage, nous voulions afficher les valeurs une par une en gros sur un grove OLED Display 0.96 inch (4) cependant la fonction permettant d'agrandir la taille des caractĂšres pour une raison mystĂ©rieuse ne marchait pas donc nous avons dĂ©cidĂ© au final d'afficher les donnĂ©es recueillies par le baromĂštre dessus. La luminositĂ© est affichĂ©e sur la grove led bar (2) de sorte Ă  ce que quand la luminositĂ© est faible, peu de leds s'allument et quand elle est forte, beaucoup de led s'allument.                 (1)                                                    (2)                                                                               (3)                                                         (4) Nous avons donc branchĂ© l'Ă©cran et le baromĂštre sur les ports I2C, le light sensor sur le port A0 et la led bar sur le port D2(cf photo). Pour ce qui est du code, il est assez simple. On inclue tout d'abord les bibliothĂšques nĂ©cessaires et on initialise tous nos composants. Ensuite dans la boucle, nous rĂ©cupĂ©rons les donnĂ©es du capteur de luminositĂ© et nous affichons toutes les mesures sur l'Ă©cran Oled (d'oĂč le grand nombre de SeeedOled.xxxx). Et pour finir nous affichons la graduation sur la barre de led. Voici le code faisant fonctionner notre projet : #include #include #include #include #include "Seeed_BME280.h" #include Grove_LED_Bar bar(3, 2, 0); BME280 bme280; void setup() { float pressure; Wire.begin(); SeeedOled.init(); SeeedOled.clearDisplay(); SeeedOled.setNormalDisplay(); SeeedOled.setPageMode(); SeeedOled.setTextXY(0, 0); bme280.init(); bar.begin(); bar.setGreenToRed(true); } void loop() { int value = analogRead(A0); value = map(value, 0, 800, 0, 10); SeeedOled.clearDisplay(); SeeedOled.setTextXY(0, 1); SeeedOled.putString(" temperature"); SeeedOled.setTextXY(1, 0); SeeedOled.putString(" "); SeeedOled.putFloat(bme280.getTemperature()); SeeedOled.putString("C"); SeeedOled.setTextXY(3, 0); SeeedOled.putString(" humidite"); SeeedOled.setTextXY(4, 0); SeeedOled.putString(" "); SeeedOled.putNumber(bme280.getHumidity()); SeeedOled.putString("%"); SeeedOled.setTextXY(6, 0); SeeedOled.putString(" pression"); SeeedOled.setTextXY(7, 0); SeeedOled.putString(" "); SeeedOled.putNumber(bme280.getPressure()/100); SeeedOled.putString(" hPa"); bar.setLevel(value); delay(5000); } Cela donne cet affichage (sans la led bar car nous avons oubliĂ© de le prendre en photo) Il nous faut maintenant crĂ©er une boĂźte permettant de contenir tout le matĂ©riel et d'afficher les donnĂ©es recueillies par nos capteurs. Nous avons dĂ©cidĂ© d'utiliser la dĂ©coupeuse laser car c'est rapide, et nous permet de graver des choses sur la boĂźte. Il faut cependant prĂ©voir des trous pour la ventilation car le baromĂštre est dans la boĂźte, un trou pour l'alimentation de l'arduino, un pour l'Ă©cran, un pour la led bar et un pour le light sensor car il doit ĂȘtre Ă  l'extĂ©rieur. Malheureusement pour nous, le port permettant de brancher ce dernier est du mĂȘme cĂŽtĂ© que le capteur (cf 3). Il faut aussi prĂ©voir des encoches afin que tout s'emboĂźte. Nous avons donc optĂ© de le mettre devant de sorte Ă  ce que le capteur soit Ă  l'extĂ©rieur et le cĂąble Ă  l'intĂ©rieur. D'un point de vue design, nous avons dĂ©cidĂ© de faire sur la face avant une sorte de visage avec les afficheurs Ă©tant les yeux, un sourire gravĂ© en dessous et le light sensor sortant au-dessus des yeux avec un petit bout rectangulaire de bois pour boucher l'espace en trop. Nous avons aussi gravĂ© son nom le logo de Sorbonne UniversitĂ© ainsi que son nom : Jean-Eudes the weather station (nous l'avons choisi car nous trouvions le dĂ©calage entre un nom bien français suivi de la fin du nom en anglais drĂŽle). La boĂźte fait 9*9*9cm et doit ĂȘtre dĂ©coupĂ©e en bois de 6mm d'Ă©paisseur pour toutes les piĂšces sauf l'avant qui elle doit ĂȘtre de 3mm. Cela nous donne ce dessin : boite-projet-fin.svg Pour finir le design de notre boĂźte, nous avons dĂ©cidĂ© de lui rajouter des bras et un chapeau trouvĂ©s sur thingiverse Ă  l'aide des imprimantes 3D : bras chapeau Voici donc Ă  quoi ressemble Jean-Eudes quand il est totalement assemblĂ© Projets personnels Vitaly POPOFF Lors de cette UE nous devons rĂ©aliser un objet en 3D Ă  imprimer ainsi qu’un objet rĂ©alisĂ© Ă  l’aide de la dĂ©coupeuse au laser. Pour l’objet en 3D j’ai dĂ©cidĂ© de rĂ©aliser un dĂ©. Pour ce faire, j’ai utilisĂ© le logiciel OpenSCAD en crĂ©ant des trous dans un cube Ă  l’aide de cylindres pour marquer les nombres sur les faces du dĂ©. Cela nous donne ce code et donc cette forme : Je l’ai ensuite imprimĂ©e avec une taille de 30mm par cĂŽtĂ© et en remplissage de 10 % car le dĂ© n’a pas besoin d’ĂȘtre plein. Cependant, je me suis rendu compte aprĂšs impression que le dĂ© ne roulait pas trĂšs bien Ă  cause de ses bords en angle droit. PlutĂŽt que de rĂ©imprimer avec les bords arrondis, j’ai dĂ©cidĂ© de poncer les bords et les coins avec du papier de verre afin d’économiser une impression. Voici le rĂ©sultat final : Pour l’objet dessinĂ© en 2D, j’ai dĂ©cidĂ© de rĂ©aliser un puissance 4. Cependant c’est un objet en 3D donc il va falloir rĂ©aliser plusieurs piĂšces. La premiĂšre version ressemble Ă  ceci : La piĂšce numĂ©ro 1 est le panneau Ă  la verticale en face des joueurs. Les cubes rouges permettent aux joueurs de voir oĂč sont les jetons et les indentations sur les cĂŽtĂ©s permettent aux piĂšces de s’emboĂźter entre elles. Il a fallu la dĂ©couper 2 fois avec une Ă©paisseur de 5mm. La piĂšce numĂ©ro 3 est Ă  la verticale et permet de relier les deux panneaux tout en laissant assez d’espace pour les jetons. Son rectangle central est de 5mm de largeur et ses cubes qui dĂ©passent sur les cĂŽtĂ©s aussi permettant de s’encastrer parfaitement (thĂ©oriquement) dans les trous des panneaux. Il a fallu la dĂ©couper 2 fois avec une Ă©paisseur de 5mm. La piĂšce numĂ©ro 4 est ce qui permet aux jetons de ne pas passer d’une colonne Ă  une autre. Ces bloqueurs s’incrustent dans les petits trous en haut du panneau central grĂące aux rectangles sortant tout en haut de la piĂšce. Il a fallu la dĂ©couper 5 fois avec une Ă©paisseur de 3mm. La piĂšce numĂ©ro 2 est ce qui maintient les deux panneaux par le bas. Les rectangles «sortant» de la piĂšce permettent Ă  la piĂšce de s’emboĂźter dans les panneaux et les petits carrĂ©s Ă  l’intĂ©rieur permettent aux bouts des piĂšces 4 de s’incruster dans la piĂšce afin d’assurer leur stabilitĂ©. Il a fallu la dĂ©couper 1 fois avec une Ă©paisseur de 5mm. La piĂšce 5 est le jeton mais dĂ» Ă  des complications, elle a Ă©tĂ© modifiĂ©e plus tard. Il faudra nĂ©anmoins la dĂ©couper 42 fois avec une Ă©paisseur de 5mm. Je pensais tout d’abord dĂ©couper toutes les piĂšces en bois mais ai finalement dĂ©cider de les dĂ©couper en PMMA et quelle erreur. Je savais qu’il fallait prendre en compte l’épaisseur du laser pour que les piĂšces s’emboĂźtent parfaitement mais je me suis dit que je rattraperai les erreurs Ă  l’aide de colle. AprĂšs la dĂ©coupe de toutes les piĂšces sauf les jetons, je me suis rendu compte que sur certaines piĂšces il y avait des problĂšmes d’emboĂźtement, cela Ă  cause du plastique ayant fondu et de l’épaisseur du laser Ă©tant non nĂ©gligeable. L’emboĂźtement entre les panneaux et les piĂšces 2 et 3 est impossible car ces derniĂšres sont trop petites par rapport aux trous dans les panneaux. Ceci est un problĂšme facilement rĂ©glable avec de la colle. Cependant, l’emboĂźtement des piĂšces 4 avec les 1 et 2 sont impossible car le plastique a fondu rĂ©duisant la taille des trous. Heureusement, Ă  l’aide de papier de verre, il est possible de rĂ©duire l’épaisseur des piĂšces 4 rendant finalement leurs emboĂźtements possible. La forte tempĂ©rature de dĂ©coupe a aussi dĂ©formĂ© les bĂątonnets des piĂšces 4. A cause de toutes ces imprĂ©cisions, les jetons ronds ne pourraient pas (ou du moins difficilement) rentrer dans le puissance 4, j’ai donc dĂ©cidĂ© de dĂ©couper Ă  la place des jetons de 3mm d’épaisseur rectangulaires de taille 11mm*15mm. Cela nous donne au final un puissance 4 ressemblant Ă  ceci : dĂ©.FCStd puissance-4.svg Projet personnel ClĂ©ment En utilisant le logiciel de Design Freecad, j'ai rĂ©alisĂ© une Ă©querre (objet 2D). Je pensais l'imprimer par impression 3D, mais il faut la rĂ©aliser avec une machine de dĂ©coupe. Je vais donc recrĂ©er un fichier Inkscape. L'objet est simple Ă  rĂ©aliser : on rĂ©alise une esquisse 2D de l'equerre, puis on rĂ©alise une protusion de 1mm. Objet 3D : boule de noĂ«l . Pour ce faire, j'ai dessinĂ© une esquisse, reprĂ©sentant une tranche de la boule. J'ai ensuite effectuĂ© une rotation pour obtenir l'ensemble. Projet personnel Pierre :         Mon objet en 2D est une pancarte dĂ©corative pour un Sound System que j'ai rĂ©alisĂ©e avec le logiciel INKSCAPE. grĂące Ă  la palette de couleur conçue pour les dĂ©coupeuses et graveuses laser Trotec que j'ai du tĂ©lĂ©chargĂ© sur mon ordinateur, j'ai tracĂ© cette pancarte de 30cm de long pour 20 m de large donnant l'ordre de dĂ©couper lorsque les tracĂ©s sont rouges et de graver lorsqu'ils sont noirs. NĂ©anmoins j'ai rencontrĂ© DEUX SOUCIS lors de la rĂ©alisation : - le premier problĂšme est que la police d'Ă©criture (qu'on voit Ă  l'Ă©cran) s'est enlevĂ©e sur le rendu 2D du logiciel de la dĂ©coupeuse Trotec et le texte s'est Ă©galement dĂ©centrĂ© sans raison - le deuxiĂšme soucis provient de moi, j'ai oubliĂ© de bien calibrer la position de la pancarte par rapport Ă  la planche de bois ce qui a rognĂ© une partie Ă  droite de la pancarte... (snif)          Quant Ă  mon objet 3D, j'ai cherchĂ© sur Thingiverse plusieurs dizaines d'objets avant de tomber sur une statue un peu modifiĂ© de Buddha qui ressemble aux photos ci-dessous. C'est une dĂ©coration qui serait la bienvenue dans ma chambre.                                       Je n'ai pas utilisĂ© de logiciel 3D particulier comme FREECAD, et j'aurais peut ĂȘtre dĂ» d'ailleurs. J'ai tout de mĂȘme gĂ©rĂ© les supports nĂ©cessaires Ă  l'impression correcte de ma piĂšce, les dimensions et la finesse d'impression sur le logiciel IDEA MAKER. SĂ©ance 10 : oraux de prĂ©sentation Nous avons prĂ©sentĂ© notre projet, et assistĂ© Ă  la prĂ©sentation de ceux des autres. Bilan de l'UE : nous avons appris des fonctionnements trĂšs intĂ©ressants (logiciels, machines, montages, etc). Ces compĂ©tences nous resterons et peut-ĂȘtre nous aurons Ă  revenir au Fablab un jour. Analyz'Air - Station mĂ©tĂ©o portable Membres du groupe : ianel AKOU, Paul BOUDET, Rose PEYBERNES, MathĂ©o TONNEYCK : Nous sommes tous les quatre en Cursus Master en IngĂ©nierie Physique Ă  Sorbonne UniversitĂ©. Cette page Wiki a pour but de prĂ©senter l'Ă©volution de notre projet de l'UE FabLab au cours de ces 10 sĂ©ances. SĂ©ances de dĂ©couvertes et de prise en main du matĂ©riel du FabLab SĂ©ance : DĂ©couverte du FabLab Nous avons commencĂ© la sĂ©ance par une prĂ©sentation du principe et du fonctionnement du Fablab , nous permettant d'en dĂ©couvrir davantage notamment sur l’origine de ce rĂ©seau de labos, leur localisation et l'importance de la documentation qui y est associĂ©e. Par la suite, nous avons dĂ©taillĂ© les objectifs et le programme de l'UE . Une visite du Fablab nous a ensuite permis de dĂ©couvrir l'ensemble des machines et composants avec lesquels nous pourrons travailler afin de confectionner et concrĂ©tiser notre projet final : imprimantes 3D, dĂ©coupeuses laser, fraiseuses numĂ©riques, cartes Arduino. Cette annĂ©e, nos projets doivent ĂȘtre portĂ©s sur le thĂšme des mesures environnementales Ă  l'aide de capteurs . AprĂšs avoir formĂ© des groupes de projet, nous avons explorĂ© le wiki du fablab, trouvĂ© la bibliothĂšque de documents Ă  notre disposition et Ă©mis les premiĂšres idĂ©es pour notre projet final. Mais avant de nous lancer dans ces projets, nous devons prendre en main les logiciels de programmation et de modĂ©lisation avec lesquels nous n’avons encore jamais travaillĂ©. C’est donc ce que nous ferons dĂšs la prochaine scĂ©ance en commençant par les cartes Arduino UNO. SĂ©ance 2 : Prise en main de l'Arduino UNO Partie thĂ©orique : Pour dĂ©buter la sĂ©ance, nous avons eu une discussion autour de l'Ă©volution de l'Ă©lectronique en dates ( de la diode de John Fleming en 1904 au M5Stack en 2017). Par la suite, nous avons Ă©tĂ© introduits aux cartes Arduino dans les dĂ©tails nous permettant de comprendre leur fonctionnement et la façon de communiquer avec la suite Arduino IDE. Chaque carte supporte plusieurs composants ayant chacun une fonctionnalitĂ© prĂ©cise.                                                                           GrĂące au logiciel Arduino,  nous avons commencĂ© Ă  dĂ©couvrir le langage des cartes et la bonne façon de transmettre une volontĂ© Ă  notre carte. Nous avons dĂ©fini des termes et fonctions pouvant ĂȘtre prĂ©sents dans les codes que nous pouvons avoir Ă  utiliser pour notre projet : Exemples : SETUP : La fonction setup() est appelĂ©e au dĂ©marrage du programme. Cette fonction est utilisĂ©e pour initialiser les variables, les librairies utilisĂ©es. LOOP : cette fonction appelle Ă  rĂ©pĂ©ter en boucle une certaine action. IF / ELSE : if (la condition) —> ce terme ouvre une condition; si cette condition est vĂ©rifiĂ©e par le programme il l’applique sur le systĂšme. A la fin de la condition on ajoute deux accolades et on y insert tout ce qui sera executĂ© si et seulement si la condition est vĂ©rifiĂ©e.                  else —> (peut se traduire par sinon) ce terme est une instruction d’alternative; si la condition imposĂ©e n’est as vĂ©rifiĂ©e, il executera de la mĂȘme façon les instruction entre accolades. Pour finir sur la thĂ©orie, nous ne sommes pas encore en capacitĂ© de coder un programme suffisemment complet pour un projet comme nous devons rendre Ă  la fin du semestre. C’est ppourquoi nous nous servons de bibliothĂšques de codes qui sont Ă  disposition sur inernet pour trouver des programmes dĂ©jĂ  rĂ©digĂ©s et complets que nous avons seulement Ă  modifier. Pour les utiliser, nous avons appri que pour brancher n'importe quel module Ă  une carte Arduino et trouver son code il y a une dĂ©marche Ă  suivre pour avoir un rĂ©sultat rapide et de qualitĂ© : 1) Identifier le module avec son nom ou une rĂ©fĂ©rence. 2) Trouver sa fiche technique (si elle existe) sur le site seeed studio 3) Correctement apprĂ©hender le module et comprendre son mĂ©canisme et sa fonctionnalitĂ© 4) TĂ©lĂ©charger la bibliothĂšque qui lui correspond et l'introduire dans le programme sur Arduino 5) Choisir un programme sur le site qui rĂ©pond Ă  la demande et le transfĂ©rer dans Arduino 6) Brancher les composants Partie pratique : AprĂšs avoir bien compris le fonctionnement d'Arduino, nous avons branchĂ© une carte Arduino Ă  notre ordinateur. Sur le logiciel, Ă  l'aide des exemples de codes Ă  disposition nous sommes parvenus premiĂšrement Ă  faire de simples manipulations comme allumer la LED de la plaque et la faire clignoter Ă  des intervalles de temps diffĂ©rents. Par la suite, nous avons superposĂ© un shield sur notre carte Arduino et y avons branchĂ© sur l'un des ports I2C un capteur de tempĂ©rature et d'humiditĂ© avec un connecteur grove . De nouveau Ă  l'aide d'un exemple de code, nous sommes parvenus Ă  afficher la tempĂ©rature et l'humiditĂ© de la salle.Par la suite avec la fonctionnalitĂ© module en sĂ©rie, nous avons rĂ©ussi Ă  mesurer toutes les deux secondes la tempĂ©rature et l'humiditĂ©. Pour ĂȘtre sur que notre dispositif fonctionnait nous l'avions placĂ© Ă  diffĂ©rents endroits et vĂ©rifiĂ© qu'il y avait bien une variation des valeurs (dans les mains, sur une table, dans un pull). Suite Ă  cela, nous avons voulu amĂ©liorer notre dispositif en numĂ©risant les valeurs sur un Ă©cran en temps rĂ©el. Pour cela, nous avons d'abord choisi le bon programme pour relier l'Ă©cran Ă  notre carte. Nous avons ensuite combinĂ© le programme du capteur et celui de l'Ă©cran pour afficher les valeurs. Nous avons ainsi obtenu le programme suivant : #include #include #include "SHT31.h" #include #include "rgb_lcd.h" rgb_lcd lcd; const int colorR = 255; const int colorG = 0; const int colorB = 0; SHT31 sht31 = SHT31(); void setup() { Serial.begin(9600); while(!Serial); Serial.println("begin..."); sht31.begin(); } void loop() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); Serial.print("Temp = "); Serial.print(temp); Serial.println(" C"); //The unit for Celsius because original arduino don't support speical symbols Serial.print("Hum = "); Serial.print(hum); Serial.println("%"); Serial.println(); delay(1000); // set up the LCD's number of columns and rows: lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); // Print a message to the LCD. lcd.setCursor(0, 0); lcd.print("Temp = "); lcd.print(sht31.getTemperature()); lcd.setCursor(0, 1); lcd.print("Humidity = "); // print the number of seconds since reset: lcd.print(sht31.getHumidity()); delay(2000); } Nous avons ainsi obtenu un capteur de tempĂ©rature et d'humiditĂ© qui mesurait ces paramĂštres toutes les deux secondes et un Ă©cran qui affichait ces deux valeurs. À la fin de la sĂ©ance, nous avons pu avoir accĂšs Ă  d'autres types de capteurs que nous pouvons utiliser dans notre projet final : capteur de lumiĂšre, CO2, gaz, qualitĂ© de l'eau, dĂ©bit de l'eau, pression. MatĂ©riel utilisĂ© en image et vidĂ©os : Carte Arduino                                  Shield Capteur de tempĂ©rature et d'humiditĂ© Connecteur bosquet Ecran pour Arduino La prochaine sĂ©ance nous travaillerons sur la reprĂ©sentation et le dessin en 2 et 3 dimensions . Nous verrons aussi l'utilitĂ© et le fonctionnement de M5Stack qui est un systĂšme de plusieurs modules que l'on peut approcher par programmation avec la suite Arduino IDE. SĂ©ance 3 : DĂ©couverte du dessin 2D/3D, de la dĂ©coupe laser et de l'impression 3D Pour cette sĂ©ance nous sommes concentrĂ©s sur la reprĂ©sentation en deux dimensions et en trois dimensions avec plusieurs logiciels : INKSCAPE : le logiciel Inskcape permet de rĂ©aliser des dessins vectoriels gratuitement et qui reste relativement abordable en utilisation. Nous nous en servirons pour la modĂ©lisation destinĂ©e Ă  la dĂ©coupe laser. Nous avons commencĂ© par faire nos premiers pas sur Inskape en reproduisant un dessin gĂ©omĂ©trique alĂ©atoire proposĂ© par notre professeur avec plusieurs paramĂštres de dimensions :                                                                           Il est aussi important de connaĂźtre l'existence de Makercase : qui est une proposition en ligne d'une banque de modĂšles de boĂźtes de toutes les sortes dĂ©jĂ  rĂ©alisĂ©es. Ce sont des formes basiques que l'on peut ensuite modifier sur Inskcape en les importantes. OPENSCAD : est un logiciel libre de modĂ©lisation paramĂ©trique gratuit. La modĂ©lisation sur ce logiciel se fait par programmation avec un langage C++. Une aide-mĂ©moire existe sur le site officiel du logiciel oĂč l'on retrouve les fonctions de base pour crĂ©er des designs relativement Ă©laborĂ©s. Sur ce logiciel, nous avons modĂ©lisĂ© un cube percĂ© par 3 cylindres : FREECAD : FreeCAD est un modeleur 3D paramĂ©trique open-source conçu principalement pour concevoir des objets rĂ©els de toute taille. La modĂ©lisation paramĂ©trique nous permet de modifier facilement nos conceptions en revenant dans l'historique du modĂšle et en modifiant ses paramĂštres. Ce logiciel permet notamment de gĂ©nĂ©rer des fichiers 3d au format STL (qui est un format adaptĂ© aux impressions 3D mais qui ne peut plus ĂȘtre modifiĂ©). En effet, il faut crĂ©er au prĂ©alable un fichier de conception que l'on peut modifier Ă  notre aise puis l'exporter en fichier STL pour l'impression ou la dĂ©coupe laser. Nous avons de nouveau modĂ©lisĂ© le mĂȘme cube trouĂ© :                                                                           Nous avons ensuite transfĂ©rĂ© notre modĂ©lisation 3D de cube percĂ© Ă  une imprimante 3D et nous avons lancĂ© l'impression. Nous avons fait de mĂȘme pour la dĂ©coupeuse laser. L'objectif Ă©tait de comprendre comment transferer le modĂšle obtenu grĂące aux logiciels de dessin sur les machines de conception. NB : La durĂ©e d'une impression 3D peut dĂ©pendre de la taille, du choix de remplissage de l'objet Ă  imprimer ou encore du filament utilisĂ©. Il arrive parfois que la buse se bouche ou que l'impression rate Ă  cause de mauvaises dimensions. Par consĂ©quent, il faut prĂ©voir une marge de temps pour que le projet soit prĂȘt Ă  la date butoir au cas oĂč il serait nĂ©cessaire de recommencer une impression. A la prochaine scĂ©ance nous apprendrons Ă  programmer un M5Stack et nous Ă©tudierons ses avantages/desavantages par rapport Ă  la carte Arduino UNO. SĂ©ance 4 : Prise en main du M5Stack DĂ©couverte du M5Stack Au cours de cette sĂ©ance, l'objectif Ă©tait de comprendre le fonctionnement du M5Stack. Pour rappel, un M5Stack est un kit de dĂ©veloppement intĂ©grĂ© autour de l'ESP32. Il se compose d'une partie centrale appelĂ©e core , qui intĂšgre notamment un Ă©cran et un lecteur de cartes SD. Il faut aussi savoir que le M5Stack rĂ©pond au langage   C / C++  via l' IDE Arduino. Cela signifie que les codes utilisĂ©s pour la programmation d'une carte Arduino peuvent aussi ĂȘtre utilisĂ©s pour la programmation de M5Stack. Attention ! --> il faut tout de mĂȘme effectuer quelques modifications : changer toutes les adresses Ă  la carte Arduino en adresses au M5Stack (ex : #include en #include ). Il faut aussi bien penser Ă  aller changer/vĂ©rifier le port et l'entrĂ©e sĂ©lectionnĂ©e pour transfĂ©rer le programme. AprĂšs avoir compris ce qu'Ă©tait un M5Stack et comment nous pouvions nous en servir, nous sommes passĂ©s Ă  la partie pratique. Celle-ci a Ă©tĂ© facilitĂ©e par l'existence du site internet github proposant de nombreux codes standards pour donner des missions basiques au M5Stack. Notre premiĂšre mission Ă©tant d'afficher "Hello World" sur l'Ă©cran du M5Stack, nous nous sommes donc servis du programme HelloWorld.ino qui se trouve dans le dossier Basics des exemples : /* ******************************************************************************* * Copyright (c) 2021 by M5Stack * Equipped with M5Core sample source code * é…ć„— M5Core ç€ș䟋æșä»Łç  * Visit for more information: https://docs.m5stack.com/en/core/gray * èŽ·ć–æ›Žć€šè”„æ–™èŻ·èźżé—ź: https://docs.m5stack.com/zh_CN/core/gray * * Describe: Hello World * Date: 2021/7/15 ******************************************************************************* */ #include /* After M5Core is started or reset the program in the setUp () function will be run, and this part will only be run once. 朹 M5Core ćŻćŠšæˆ–è€…ć€äœćŽïŒŒćłäŒšćŒ€ć§‹æ‰§èĄŒsetup()ć‡œæ•°äž­çš„çš‹ćșïŒŒèŻ„éƒšćˆ†ćȘäŒšæ‰§èĄŒäž€æŹĄă€‚ */ void setup() { M5.begin(); // Init M5Core. 戝構挖 M5Core M5.Power.begin(); // Init Power module. ćˆć§‹ćŒ–ç””æșæšĄć— /* Power chip connected to gpio21, gpio22, I2C device Set battery charging voltage and current If used battery, please call this function in your project */ M5.Lcd.print("Hello World"); // Print text on the screen (string) // ćœšć±ćč•äžŠæ‰“ć°æ–‡æœŹ(歗笩äžČ) } /* After the program in setup() runs, it runs the program in loop() The loop() function is an infinite loop in which the program runs repeatedly 朹setup()ć‡œæ•°äž­çš„çš‹ćșæ‰§èĄŒćźŒćŽïŒŒäŒšæŽ„ç€æ‰§èĄŒloop()ć‡œæ•°äž­çš„çš‹ćș loop()ć‡œæ•°æ˜Żäž€äžȘæ­»ćŸȘçŽŻïŒŒć…¶äž­çš„çš‹ćșäŒšäžæ–­çš„é‡ć€èżèĄŒ */ void loop() { } AprĂšs avoir rĂ©ussi cette Ă©tape, nous avons branchĂ© le mĂȘme capteur d'humiditĂ© et de tempĂ©rature qu'Ă  la sĂ©ance 2 et nous avons essayĂ© d'afficher les valeurs sur l'Ă©cran du M5Stack. Pour cela, notre premiĂšre idĂ©e Ă©tait de rĂ©utiliser notre programme de la sĂ©ance 2 en le modifiant pour qu'il soit compris par le M5Stack. Nous avons obtenu ceci :                                                                               Cependant, les donnĂ©es s'affichaient Ă  la suite et en trĂšs petit. AprĂšs avoir passĂ© un certain temps Ă  chercher comment modifier la taille, la police et la couleur des Ă©critures, nous ne sommes pas parvenus Ă  un rĂ©sultat concluant. Mais un groupe de camarades a Ă©crit un code qui fonctionne parfaitement (il s'agit du groupe B1). Nous les remercions pour le travail efficace qu'ils ont fourni. Voici leur code : #include #include #include #include "SHT31.h" #include "Free_Fonts.h" SHT31 sht31 = SHT31(); void setup() { Serial.begin(9600); while(!Serial); Serial.println("begin..."); sht31.begin(); M5.begin(); // Init M5Core. 戝構挖 M5Core M5.Power.begin(); // Init Power module. ćˆć§‹ćŒ–ç””æșæšĄć— } void loop() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); M5.Lcd.setFreeFont(FSB18); M5.Lcd.print("Temp = "); M5.Lcd.print(temp); M5.Lcd.println(" C"); M5.Lcd.print("Hum = "); M5.Lcd.print(hum); M5.Lcd.println(" %"); M5.Lcd.println(); delay(1000); } CrĂ©ation de projet personnel Projets Personnels AprĂšs avoir travaillĂ© sur les M5Stacks, nous avons chacun avancĂ© sur nos mini projets dont l'objectif est de modĂ©liser un objet en 3D et de l'imprimer mais aussi de prototyper un objet et de le dĂ©couper/graver sur une planche de bois avec la dĂ©coupeuse laser. Chaque membre du groupe dĂ©taillera son projet ci-dessous : Paul Boudet ModĂ©lisation d'un marteau en 3D : Pour modĂ©liser mon objet en 3D, j'ai utilisĂ© le logiciel FREECAD qui a Ă©tĂ© introduit lors de la sĂ©ance 2. J'ai créé un nouveau document puis la fenĂȘtre Part Design. GrĂące Ă  cette fenĂȘtre, j'ai rĂ©alisĂ© une esquisse d'un rectangle puis utilisĂ© l'outil protrusion afin de crĂ©er un pavĂ© en 3D Ă  partir de cette esquisse de longueur l= 30 mm, de largeur L= 10 mm et de hauteur h = 15 millimĂštres. Une fois mon pavĂ© rĂ©alisĂ©, j'ai sĂ©lectionnĂ© une des faces du pavĂ© et rĂ©alisĂ© une nouvelle esquisse, d'un cercle cette fois ci, sur cette face. A partir de cette esquisse d'un cercle, en utilisant l'outil protrusion, j'ai créé un cylindre de 30 mm de hauteur dont la base est le cercle rĂ©alisĂ© en esquisse.J'ai ensuite fait un trou dans ce cylindre Ă  l'aide de l'outil prĂ©conisĂ©. Ces Ă©tapes m'ont permis de modĂ©liser un petit marteau en 3D de dimensions 50*50 mm : A droite, sur le fond bleu ce situe la modĂ©lisation du marteau. A gauche on retrouve la fenĂȘtre "vue combinĂ©e", qui rĂ©sume les actions rĂ©alisĂ©es afin de modĂ©liser cette piĂšce. Cette vue nous permet, si l'on souhaite modifier notre objet, de rĂ©aliser ces modifications sur une partie spĂ©cifique de notre objet au lieu de tout recommencer. Enfin, en haut, sur la ligne du bas, se trouvent les outils du mode part design qui m'ont permis de modĂ©liser cette piĂšce. Une fois, la modĂ©lisation terminĂ©e, il faut exporter le fichier en format STL afin de l'imprimer Ă  l'aide des imprimantes 3D du Fablab qui sont des imprimantes FDM Raise 3D Pro 2. Une documentation sur le fonctionnement de ces imprimantes est disponible dans l'onglet Tutoriels puis Machines, du wiki. Voici un lien vers mon fichier : piĂšce-3D-2.FCStd Documentation dessin 2D Paul BOUDET : Pour rĂ©aliser mon dessin en 2D, j'ai dessinĂ© mon objet dans le logiciel de dessin vectoriel INKSCAPE . GrĂące Ă  ce logiciel, j'ai dessinĂ© un motif connu par les amateurs du manga Naruto. Ce motif esthĂ©tique reprĂ©sente les yeux de certains personnages dans le manga et est nommĂ© "sharingan" : Pour dessiner ce motif, j'ai utilisĂ© les outils mis Ă  ma disposition Ă  droite de l'interface. A droite se situe une fenĂȘtre qui m'a permis de gĂ©rer les fonds et les contours comme je le souhaitais. Notons, que les motifs de couleur rouge seront dĂ©coupĂ©s, tandis que ceux de couleur noire seront gravĂ©s. Afin de dessiner le cercle plein au centre et les cercles noirs et rouges autour j'ai tout simplement utilisĂ© l'outil "crĂ©er des cercles" situĂ© Ă  gauche. J'ai ensuite pu gĂ©rer la couleur et le fond comme je le voulais grĂące Ă  la fenĂȘtre de droite. Pour dessiner les motifs un peu plus mis au point sur le cercle vide noir, j'ai utilisĂ© l'outil "tracer des courbes de BĂ©zier et des segments de droite" pour rĂ©aliser des courbes. Ce dessin a Ă©tĂ© fait en dimension 80 mm par 80 mm. Une fois ce modĂšle enregistrĂ©, il sera gravĂ© et dĂ©coupĂ© Ă  l'aide des dĂ©coupeuses laser prĂ©sentes au Fablab qui inclura des formats SVG. Sont prĂ©sents au fablab, une dĂ©coupeuse laser Trotec Speedy 360 et une dĂ©coupeuse laser Trotec Speedy 100. Une documentation sur le fonctionnement de ces dĂ©coupeuses est prĂ©sente dans l'onglet Tutoriels puis Machines, du wiki. Photos du rĂ©sultat obtenu : Voici un lien vers mon fichier : dessin-1.svg MathĂ©o Tonneyck ModĂ©lisation 2D et utilisation de la dĂ©coupeuse laser : Pour ce procĂ©dĂ©, j'ai dĂ©cidĂ© d'utiliser Inkscape afin de reproduire le logo du CMI de Sorbone UniversitĂ©. Pour cela, j'ai utilisĂ© deux techniques. La premiĂšre technique consiste Ă  le reproduire Ă  la main avec les outils du logiciel : Formes : cercle, cube Texte CaractĂ©ristiques et couleurs des objets La deuxiĂšme technique consiste Ă  utiliser l'outils Trace Bitmap du logiciel qui va vectoriser automatiquement l'image RĂ©sultat obtenu : lien vers le fichier svg : Logo_CMI.svg ModĂ©lisation 3D et utilisation de l'imprimante 3D : Dans le cadre de notre projet, nous aurons certainement besoin d'un systĂšme d'accroche pour des accessoires supplĂ©mentaires tel qu'un trĂ©pied donc j'ai dĂ©cidĂ© de travailler sur un systĂšme qui permet de viser un objet Ă  un autre. Pour ce faire, j'ai utilisĂ© le logiciel Freecad. J'ai utilisĂ© deux techniques diffĂ©rentes pour chaque partie. Pour le cube avec un trou filetĂ©, j'ai utilisĂ© l'outil "Hole" dans Part design que j'ai appliquĂ© sur un cube dĂ©jĂ  tracer. Avec cet outils j'ai pu appliquer des paramĂštres pour y insĂ©rer un vis de taille avec des dimensions standard M10. Tandis que pour crĂ©er la vis, j'ai utilisĂ© la librairie "Fasterners" qui intĂšgre de nombreux modĂšles de vis et d'Ă©crous de diffĂ©rentes tailles prĂ©-conçu nous n'avons plus qu'Ă  appliquer des paramĂštres tel que le diamĂštre de la vis ou encore sa longueur. RĂ©sultat obtenu : Lien ver le fichier STL : Vis filletage fablab.stl Rose Peybernes ModĂ©lisation 3D : Pour cette modĂ©lisation, je n'avais pas d'idĂ©e prĂ©cise d'un objet Ă  crĂ©er mais je voulais savoir s'il Ă©tait possible d'imprimer un objet dans un autre objet et que celui-ci soit mobile. Comme nous ne devions pas faire un objet trop volumineux je me suis inspirĂ© du travail que nous avons fait Ă  la troisiĂšme sĂ©ance et j'ai modĂ©lisĂ© un cube 5x5cm avec une sphĂšre d=2.5cm Ă  l'intĂ©rieur Ă  l'aide du logiciel OPENSCAD . Voici le code pour obtenir la modĂ©lisation 3D : $fn=50; //cube(5, center = true); //cylinder(10, 4, 4, center = true); //rotate([90, 0, 0])cylinder(10, 4, 4, center = true); //rotate([90,90, 90])cylinder(10, 4, 4, center = true); //rotate([90, 0, 0])cylinder(10, 2, 2, center = true); // rotate([90,90, 90])cylinder(3, 2, 5, center = true); sphere( r = 2, d = 5); difference (){ cube(5, center = true); cylinder(10, 2, 2, center = true); rotate([90, 0, 0])cylinder(10, 2, 2, center = true); rotate([90,90, 90])cylinder(10, 2, 2, center = true); }                                         Afin d'imprimer mon objet je me suis servi du tutoriel sur le wiki et j'ai aussi Ă©tĂ© aidĂ©e par le personnel du Fablab afin d'ĂȘtre sur que mon impression se fasse correctement. Je tiens Ă  prĂ©ciser que lorsque j'ai transfĂ©rĂ© mon fichier dans le logiciel d'impression, ce dernier m'a proposĂ© des supports automatiquement et que ce n'est pas moi qui les ai modĂ©lisĂ©s. Pour cette impression j'ai donc utilisĂ© une bobine de filament ABS et une imprimante  FDM Raise 3D Pro 2 dont les caractĂ©ristiques sont les suivantes : Utilisation : Impression 3D Ă  dĂ©pĂŽt de filament Volume maximal d'impression : 305mm*305mm*300mm. Extrusion : directe, double-extrusion possible MatiĂšres compatibles : bobines de filament PLA / ABS / HIPS / PC / TPU / TPE / NYLON / PETG / ASA / PP DiamĂštre du filament : 1,75mm Buse : laiton, 0.4mm Logiciel : ideaMaker Formats de fichiers requis : stl, obj ModĂ©lisation et rĂ©glages sur logiciel d'impression : NB : Bien que mon objet soit plutĂŽt petit, l'impression Ă  tout de mĂȘme pris 3h. Il faut donc prĂ©voir une plage de temps suffisante au cas oĂč l'impression raterait et serait Ă  refaire. J'ai obtenu un objet qui ressemblait exactement Ă  ce que je voulais. On observe sur la sphĂšre quelques imperfections liĂ©es Ă  mon choix de prĂ©cision moyenne pour la dĂ©pose du filament.                                    Voici un lien vers mon fichier : modifiable --> cube avec sphere.scad                                                final --> cube avec sphĂšre final.stl ModĂ©lisation 2D : Pour mon dessin en 2D, je voulais faire un objet qui pourrait m'ĂȘtre utile et qui en mĂȘme temps me ferait suffisamment travailler sur le logiciel pour le maĂźtriser. Je me suis donc servie de INKSCAPE  pour dessiner un jeu morpion de poche 10x10 cm. Pour cela j'ai du imaginer une espĂšce de petite boĂźte qui pourrait accueillir les piĂšces de jeu (2cm) et un plateau de jeu. Une fois que j'avais une idĂ©e arrĂȘtĂ©e de toutes mes piĂšces, je me suis penchĂ©e sur le dessin 2D :                       Ă  noter que les Ă©lĂ©ments noirs sont gravĂ©s et les rouges dĂ©coupĂ©s. Pour la dĂ©coupe laser j'ai utilisĂ© une dĂ©coupeuse laser Trotec Speedy 360 et une planche de bois de 3mm d'Ă©paisseur. Description : dĂ©coupe et gravure de certains matĂ©riaux plans comme le contreplaquĂ© et le PMMA CaractĂ©ristiques techniques : Ă©quipĂ© d'une lentille CO2 2,5" ou d'une lentille CO2 1,5" Surface de travail : 813*508mm Épaisseur max de dĂ©coupe : environ 12mm, selon matĂ©riaux Hauteur max de la piĂšce Ă  usiner : ... MatĂ©riaux compatibles : voir la  liste des matĂ©riaux utilisables Logiciel : Ruby Formats de fichiers requis : privilĂ©gier svg. En principe compatibilitĂ© ai, dxf, pdf, cdr + jpeg pour les gravures Pour rĂ©aliser correctement la dĂ©coupe je me suis de nouveau aidĂ©e du tutoriel. Pour rĂ©aliser mon objet j'ai dĂ©cidĂ© de prendre du contre plaquĂ© de 3mm d'Ă©paisseur. Ainsi, les piĂšces du jeux et la boĂźte ne seront pas trop Ă©paisses et donc pas trop grosses pour un objet de poche. NB : Avant de lancer la dĂ©coupe laser, il ne faut pas oublier de faire la focale du laser de la dĂ©coupeuse.                                                                               Une fois tous les morceaux dĂ©coupĂ©s, je les ai assemblĂ©s. Si certaines parties Ă©taient trop Ă©paisses, je les ai poncĂ© pour ĂȘtre sĂ»r que toutes les piĂšces s'emboitent correctement.                  Voici un lien vers mon fichier : modifiable et final --> dessin modifiable.svg Yanel Akou ModĂ©lisation 3D : De mon cĂŽtĂ©, j'ai utilisĂ© le logiciel fusion 360 pour modĂ©liser mon objet en 3 dimensions. Etant un joueur d'Ultimate Flying Disc, mon projet Ă©tait de crĂ©er un ustensile, appelĂ© "disc clip", permettant de pouvoir accrocher un disque (freesbie) Ă  son sac. J'ai donc pu d'abord modĂ©liser en 2D une esquisse de la forme de mon objet pour ensuite utiliser l'outil extrusion afin de lui donner de l'Ă©paisseur et obtenir un premier objet en 3 dimensions. Par la suite, j'ai travaillĂ© sur cet objet brut en lui arrondissant les angles pour lui donner un aspect plus ergonomique. Enfin, en utilisant toujours l'outil d'extrusion mais cette fois ci en mode diffĂ©rence j'ai pu faire des trous Ă  certains endroits afin d'obtenir un gain de matiĂšre inutile.Pour finir, j'ai pu exporter mon fichier sous format STL, DĂ©coupe laser : Mon projet de dĂ©coupe laser Ă©tait une boite en bois avec des trous, qui accueillerait une bougie et illuminerait la piĂšce avec certains motifs. Afin de rĂ©aliser le patron de la boite je me suis rendu sur un site qui modĂ©lise ce genre de patron "box maker", comme montrĂ© en cours. De cette maniĂšre j'ai obtenu un patron de ma boite aux dimensions souhaitĂ©es. Par la suite, j'ai utilisĂ© le logiciel Inkscape afin de rajouter sur ce patron les motifs en Ă©toiles de tailles diffĂ©rentes qui seront dĂ©coupĂ©es dans les paroisses de la boite afin de laisser passer la lumiĂšre. Pour finir j'ai pu exporter le fichier de mon projet sous format SVG. Projet Final - Station mĂ©tĂ©orologique portable SĂ©ance 5 Ă  8 : Projet Final - CrĂ©ation du programme de la station mĂ©tĂ©orologique Nous avons dĂ©cidĂ© de partir sur une station mĂ©tĂ©o portable capable de mesurer la tempĂ©rature, l'humiditĂ©, la pression et dotĂ© d'un GPS. Elle serait destinĂ©e aux randonneurs pour des expĂ©ditions en montagne pouvant s'Ă©tendre sur plusieurs jours. Cette station aura la forme d'un pavĂ© droit : une boĂźte dans laquelle seront rangĂ©s les capteurs et l'antenne GPS. Le M5Stack sera intĂ©grĂ© dans la boĂźte de façon Ă  ce que l'Ă©cran et les boutons soient accessibles. Si nous terminons en avance, nous voudrions trouver un systĂšme pour l'accrocher sur un sac ou y accrocher une perche pour avoir un meilleur maintenu en marche. Pour fabriquer cette station mĂ©tĂ©o portable, nous n'utiliserons que des capteurs ayant des ports I2C. Nous allons donc utiliser un hub contenant des ports I2C que nous attribuerons Ă  tous nos capteurs. Ce hub sera lui mĂȘme connectĂ© Ă  notre M5stack qui affichera sur un Ă©cran les donnĂ©es relevĂ©es et sur un autre les donnĂ©es recueillies Ă  l'aide de l'antenne GPS. Hub I2C : Voici tous les capteurs que nous allons utiliser et leurs rĂ©fĂ©rences : € TempĂ©rature et HumiditĂ© (SHT31) :                          € Pression (DPS310) : GPS : Pendant l’ensemble des sĂ©ances qui ont suivi, nous avons travaillĂ© sur l’écriture des codes. Notre stratĂ©gie Ă©tait de d’abord rĂ©diger le code correspondant Ă  chaque composant et ensuite de le combiner avec les autres. Pour chacun, nous avons commencĂ© par chercher un code exemple sur  seeed studio que nous avons ensuite modifier pour qu’il correspondent Ă  notre projet. Codage GPS Voici le programme pour faire fonctionner notre module GPS, trouver sur le site hackster.io https://m5stack.hackster.io/ptschulik/simple-gps-tracker-d3500e AprĂšs avoir compris ce programme, nous avons rĂ©alisĂ© quelques modifications telles que changer la langue de base qui Ă©tait l'allemand en français ainsi que rĂ©aliser des modifications au niveau du graphisme. /****************************************************************************************/ /* GPS Logger with M5Stack and M5 GPS Module */ /* Version: 1.0 */ /* Date: 27.06.2019 */ /* */ /* Special features: */ /* Key A: Change language between German and Englis */ /* Key B: Changes format of location data */ /* Key C: Change brightness of display */ /* */ /* Used library: */ /* Tiny GPS Plus: https://github.com/mikalhart/TinyGPSPlus */ /* */ /****************************************************************************************/ #include /* Include M5 Stack library */ #include /* Include Tiny GPS++ library */ /* Definitions */ #define NOTE_DH2 661 /* Constants */ const byte DELAY_READ = 10; /* Delay between two reads: 10 = 100ms */ const byte DELAY_CHECK_CONST = 100; /* Delay to check if any data received 100 * 10 = 1 sec */ const byte MINUMUM_SAT = 4; /* Minumum number of satellites before fix is accepted */ const byte UTC_CET = 2; /* Time difference from UTC to CET */ /* Variables */ boolean UPDATE_FLAG; /* Display update flag: TRUE = Update, FALSE = No update */ boolean LOC_UPDATE_FLAG; /* Location update flag: TRUE = Update, FALSE = No update */ boolean ALT_UPDATE_FLAG; /* Altitude update flag: TRUE = Update, FALSE = No update */ boolean SPEED_UPDATE_FLAG; /* Speed update flag: TRUE = Update, FALSE = No update */ boolean SAT_UPDATE_FLAG; /* Nr. of sattelites update flag: TRUE = Update, FALSE = No update */ boolean HDOP_UPDATE_FLAG; /* HDOP update flag: TRUE = Update, FALSE = No update */ byte LOOP_COUNTER; /* Generic loop counter for delay */ byte DELAY_CHECK = 0; /* Delay to check if any data received */ byte LCD_BRIGHTNESS = 250; /* LCD brightness value (0-250) */ byte MENU_LANGUAGE = 0; /* Menu Language 0 = German, 1 = English */ byte GPS_FORMAT = 0; /* GPS format 0 = Decimal degree, 1= Degree, Minutes, Seconds */ byte GPS_STATUS; /* GPS status: 0 = No GPS receiver detected, 1 = No valid GPS fix, 2 = Valid GPS data */ unsigned int NO_OF_SAT; /* Number of satellites */ unsigned int CHARS_PROCESSED = 0; /* Number of procesed chars */ unsigned int OLD_CHARS_PROCESSED = 1; /* Number of procesed chars */ unsigned int OLD_NO_OF_SAT; /* Old number of satellites */ unsigned int OLD_HDOP; /* Old HDOP value */ int OLD_SEC = 0; /* Old second */ int OLD_ALTITUDE; /* Old altitude value */ int OLD_SPEED; /* Old speed value */ float OLD_LOC_LAT; /* Old lateral location */ float OLD_LOC_LNG; /* Old longitudinal location */ /* Table for day of month */ unsigned char DAY_OF_MONTH[] = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30,31}; char CONVERTED[32]; /* Conversion string for display */ TinyGPSPlus gps; /* Reference the TinyGPS++ object */ HardwareSerial GPSRaw(2); /* By default, GPS is connected with M5Core through UART2 */ /****************************************************************************************/ /* Init routine */ /****************************************************************************************/ void setup() { M5.begin(); /* Start M5 functions */ GPSRaw.begin(9600); /* Init GPS serial interface */ M5.Lcd.setBrightness(LCD_BRIGHTNESS); /* Set initial LCD brightness */ delay (2000); /* 2000ms init delay */ UPDATE_FLAG = true; /* Set update flag true */ LOC_UPDATE_FLAG = true; /* Set location update flag true */ } /****************************************************************************************/ /* Main routine */ /****************************************************************************************/ void loop() { while (GPSRaw.available() > 0) /* Check if new GP data is available */ { gps.encode(GPSRaw.read()); /* Read until no more data is available */ } CHARS_PROCESSED = gps.charsProcessed(); /* Read processed chars */ /* No chars processed or no more data received --> Checked every 10ms ? */ if ((CHARS_PROCESSED < 10)|| (CHARS_PROCESSED == OLD_CHARS_PROCESSED)) { if (DELAY_CHECK < 230) /* Prevent variable from overflow */ { DELAY_CHECK = DELAY_CHECK + 10; /* Increase delay check if any data received each 10ms by 10 */ } } else /* No chars received ? */ { DELAY_CHECK = 0; /* Reset delay check if any data received */ } /* Case 1: Timeout */ if (DELAY_CHECK > DELAY_CHECK_CONST) { if (GPS_STATUS > 0) /* Was already in an other GPS status ? */ { UPDATE_FLAG = true; /* Set update flag true */ } if (UPDATE_FLAG == true) /* Update flag true ? */ { SUB_DISPLAY_NO_REC(); /* Call sub routine to display no receiver error message */ UPDATE_FLAG = false; /* Set update flag false */ } GPS_STATUS = 0; /* Set GPS status 0 */ } else /* New data received correctly ? */ { if (GPS_STATUS == 0) /* GPS state 0 ? */ { GPS_STATUS = 1; /* Set GPS status 1 */ UPDATE_FLAG = true; /* Set update flag true */ } } /* Case 2: Receiver found and data are received but no GPS signal --> Status 1 */ if (GPS_STATUS == 1) /* GPS status is 1 ? */ { /* Check number of satellites */ if (gps.satellites.isValid() == true) /* Valid GPS number of satellites received ? */ { NO_OF_SAT = gps.satellites.value(); /* Save number of satellites */ } else /* Not valid GPS number of satellites received ? */ { NO_OF_SAT = 0; /* Set number of satellites to 0 */ } /* Decide on number of satellites received */ if (NO_OF_SAT < MINUMUM_SAT) /* Too less satelites received ? */ { if (UPDATE_FLAG == true) /* Update flag true ? */ { SUB_DISPLAY_NO_GPS(); /* Call sub routine to display no GPS message */ UPDATE_FLAG = false; /* Set update flag false */ } } else /* Correct number of satellites received? */ { GPS_STATUS = 2; /* Set GPS status 2 --> Fix received */ UPDATE_FLAG = true; /* Set update flag true */ UPDATE_FLAG = true; /* Set display update flag true */ LOC_UPDATE_FLAG = true; /* Set location update flag true */ ALT_UPDATE_FLAG = true; /* Set altitude update flag true */ SPEED_UPDATE_FLAG = true; /* Set speed update flag true */ SAT_UPDATE_FLAG = true; /* Set number of sattelites update flag true */ HDOP_UPDATE_FLAG = true; /* Set HDOP update flag true */ } } /* Case 2: Enough satellites received ? --> Valid fix*/ if (GPS_STATUS == 2) /* GPS status is 2 ? */ { /* Check number of satellites */ if (gps.satellites.isValid() == true) /* Valid GPS number of sattllites received ? */ { NO_OF_SAT = gps.satellites.value(); /* Save number of satellites */ } else /* Not valid GPS number of sattelites received ? */ { NO_OF_SAT = 0; /* Set number of satellites to 0 */ } if (NO_OF_SAT < MINUMUM_SAT) /* Too less satelites received ? */ { GPS_STATUS = 1; /* Set GPS status 1 */ UPDATE_FLAG = true; /* Set update flag true */ } else /* Correct number of satellites received? */ { if (UPDATE_FLAG == true) /* Update flag true ? */ { SUB_DISPLAY_MAIN(); /* Call sub routine to display main menu */ UPDATE_FLAG = false; /* Set update flag false */ } SUB_DISPLAY_DATE_TIME(); /* Call sub routine to display time and date info */ SUB_DISPLAY_LOCATION(); /* Call sub routine to display location */ SUB_DISPLAY_ALTITUDE(); /* Call sub routine to display altitude */ SUB_DISPLAY_SPEED(); /* Call sub routine to display speed */ SUB_DISPLAY_SAT(); /* Call sub routine to display number of sattelites */ SUB_DISPLAY_HDOP(); /* Call sub routine to display HDOP value */ } } OLD_CHARS_PROCESSED = CHARS_PROCESSED; /* Delay as defined in delay read const and check on key pressed every 10ms */ for (LOOP_COUNTER = 0; LOOP_COUNTER < DELAY_READ; LOOP_COUNTER++) { delay (10); /* 10 ms delay */ M5.update(); /* Update on reading keys */ if (M5.BtnA.wasPressed() == true) /* Button A pressed ? --> Change language */ { // M5.Speaker.tone(NOTE_DH2, 1); if (MENU_LANGUAGE == 0) /* German selected ? */ { MENU_LANGUAGE = 1; /* Set menu language to English */ UPDATE_FLAG = true; /* Set display update flag true */ LOC_UPDATE_FLAG = true; /* Set location update flag true */ ALT_UPDATE_FLAG = true; /* Set altitude update flag true */ SPEED_UPDATE_FLAG = true; /* Set speed update flag true */ SAT_UPDATE_FLAG = true; /* Set number of sattelites update flag true */ HDOP_UPDATE_FLAG = true; /* Set HDOP update flag true */ } else /* English selected ? */ { MENU_LANGUAGE = 0; /* Set menu language to German */ UPDATE_FLAG = true; /* Set display update flag true */ LOC_UPDATE_FLAG = true; /* Set location update flag true */ ALT_UPDATE_FLAG = true; /* Set altitude update flag true */ SPEED_UPDATE_FLAG = true; /* Set speed update flag true */ SAT_UPDATE_FLAG = true; /* Set number of sattelites update flag true */ HDOP_UPDATE_FLAG = true; /* Set HDOP update flag true */ } } if (M5.BtnB.wasPressed() == true) /* Button B pressed ? --> Change format */ { // M5.Speaker.tone(NOTE_DH2, 1); if (GPS_FORMAT == 0) /* Format 0 selected ? */ { GPS_FORMAT = 1; /* Set Format to 1 */ LOC_UPDATE_FLAG = true; /* Set location update flag true */ } else /* Format 1 selected ? */ { GPS_FORMAT = 0; /* Set Format to 0 */ LOC_UPDATE_FLAG = true; /* Set location update flag true */ } } if (M5.BtnC.wasPressed() == true) /* Button C pressed ? --> Change brightness */ { // M5.Speaker.tone(NOTE_DH2, 1); if (LCD_BRIGHTNESS < 250) /* Maximum brightness not reached ? */ { LCD_BRIGHTNESS = LCD_BRIGHTNESS + 10; /* Increase brightness */ } else /* Maximum brightness reached ? */ { LCD_BRIGHTNESS = 10; /* Set brightness to lowest value */ } M5.Lcd.setBrightness(LCD_BRIGHTNESS); /* Change brightness value */ } } } /****************************************************************************************/ /* SUBROUTINE Display Date and Time Information */ /* This subroutine displays the time and date information and corrects the time zone */ /****************************************************************************************/ void SUB_DISPLAY_DATE_TIME () { boolean TIME_VALID; /* True = Valid time, False = not valid */ boolean DATE_VALID; /* True = Valid date, False = not valid */ boolean TIME_DATE_UPDATE; /* True = Needs update, False = Needs no update */ byte NTP_TIME_ZONE; /* Variable for time zone: 0 = UTC time, 1 = CET winter time, 2 = CET summer time */ int BEGIN_DST_DATE; /* Begin date summer time */ int BEGIN_DST_MONTH; /* Begin month summer time */ int END_DST_DATE; /* End date summer time */ int END_DST_MONTH; /* End month summer time */ int ACT_YEAR; /* Actual year */ int ACT_MONTH; /* Actual month */ int ACT_DAY; /* Actual day */ int ACT_HOUR; /* Actual hour */ int ACT_MIN; /* Actual minute */ int ACT_SEC; /* Actual second */ TIME_DATE_UPDATE = false; /* No update needed */ if (gps.time.isValid()) /* Valid time available ? */ { ACT_HOUR = gps.time.hour(); /* Get actual hour */ ACT_MIN = gps.time.minute(); /* Get actual minute */ ACT_SEC = gps.time.second(); /* Get actual second */ TIME_VALID = true; /* Set valid time flag true */ TIME_DATE_UPDATE = true; /* Update needed */ } else /* Valid time not available ? */ { TIME_VALID = false; /* Set valid time flag false */ } if (gps.date.isValid()) /* Valid date available ? */ { ACT_YEAR = gps.date.year(); /* Get actual year */ ACT_MONTH = gps.date.month(); /* Get actual month */ ACT_DAY = gps.date.day(); /* Get actual day */ DATE_VALID = true; /* Set valid time flag true */ TIME_DATE_UPDATE = true; /* Update needed */ } else /* Valid time not available ? */ { DATE_VALID = false; /* Set valid date flag false */ } /* Changed second and valid date/time --> Update display */ if ((OLD_SEC != ACT_SEC) && (TIME_VALID == true) && (DATE_VALID == true)) { OLD_SEC = ACT_SEC; /* Save old second */ /* Step 1: Leap year? --> Adjust February */ if (ACT_YEAR%400 == 0 || (ACT_YEAR%4 == 0 && ACT_YEAR%100 !=0)) { DAY_OF_MONTH[1] = 29; /* Set day of month to 29 */ } else { DAY_OF_MONTH[1] = 28; /* Set day of month to 28 */ } /* Step 2: Determine start and end date of summer time */ BEGIN_DST_DATE= (31 - (5* ACT_YEAR /4 + 4) % 7); /* Determine last Sunday of March */ BEGIN_DST_MONTH = 3; /* Begin month is March */ END_DST_DATE= (31 - (5 * ACT_YEAR /4 + 1) % 7); /* Determine last Sunday of October */ END_DST_MONTH = 10; /* Begin month is October */ /* Step 3: Check for summer time */ if (((ACT_MONTH > BEGIN_DST_MONTH) && (ACT_MONTH < END_DST_MONTH)) || ((ACT_MONTH == BEGIN_DST_MONTH) && (ACT_DAY >= BEGIN_DST_DATE)) || ((ACT_MONTH == END_DST_MONTH) && (ACT_DAY <= END_DST_DATE))) { NTP_TIME_ZONE = UTC_CET; /* Set time zone for CET = UTC + 2 hour */ } else /* Winter time ? */ { NTP_TIME_ZONE = UTC_CET-1; /* Set time zone for CET = UTC +1 hour */ } /* Step 4: Generate correct adjusted time */ ACT_HOUR = ACT_HOUR + NTP_TIME_ZONE; if (ACT_HOUR > 23) /* Next day ? */ { ACT_HOUR = ACT_HOUR - 23; /* Correct hour */ if (ACT_DAY = DAY_OF_MONTH [ACT_MONTH-1]) /* Last day of month ? */ { ACT_DAY = 1; /* Set day to 1st of month */ ACT_MONTH = ACT_MONTH +1; /* Increase month */ if (ACT_MONTH > 12) /* Beyond December ? */ { ACT_MONTH = 1; /* Set actual month to January */ ACT_YEAR = ACT_YEAR + 1; /* Increase year */ } } } /* Step 4: Display actual time and date according chosen language */ M5.Lcd.fillRect(0, 215, 320, 25, 0x439); /* Clear old time and date */ M5.Lcd.setTextSize(2); /* Set text size to 2 */ M5.Lcd.setCursor(10, 219); /* Position cursor to display time */ /* Convert into dispaly string */ sprintf(CONVERTED, "%02d:%02d:%02d ", ACT_HOUR, ACT_MIN, ACT_SEC); M5.Lcd.print(CONVERTED); /* Display converted time string */ M5.Lcd.setCursor(190, 219); /* Position cursor to display date */ if (MENU_LANGUAGE == 0) /* German language chosen ? */ { /* Convert into dispaly string */ sprintf(CONVERTED, "%02d.%02d.%02d ", ACT_DAY, ACT_MONTH, ACT_YEAR); } else /*Englishn language chosen ? */ { /* Convert into dispaly string */ sprintf(CONVERTED, "%02d/%02d/%02d ", ACT_YEAR, ACT_MONTH, ACT_DAY); } M5.Lcd.print(CONVERTED); /* Display converted date string */ } /* Time or date not correctly received */ if ((TIME_VALID == false) || (DATE_VALID == false)) { if (TIME_DATE_UPDATE == true) /* Update needed ? */ { M5.Lcd.fillRect(0, 215, 320, 25, 0x439); /* Clear old time and date */ M5.Lcd.setTextSize(2); /* Set text size to 2 */ M5.Lcd.print(F("--:--:--")); /* Dispaly time placeholder */ M5.Lcd.setCursor(190, 219); /* Position cursor to display date */ if (MENU_LANGUAGE == 0) /* German language chosen ? */ { M5.Lcd.print(F("--.--.----")); /* Display date placeholder */ } else /*Englishn language chosen ? */ { M5.Lcd.print(F("----/--/--")); /* Display date placeholder */ } TIME_DATE_UPDATE = false; /* Set date update false */ } } } /****************************************************************************************/ /* SUBROUTINE Display Location */ /* This subroutine displays the location information */ /****************************************************************************************/ void SUB_DISPLAY_LOCATION () { boolean LOC_FAIL_UPDATE; /* True = Needs update, False = Needs no update */ float ACT_LOC_LAT; /* Actual lateral location */ float ACT_LOC_LNG; /* Actual longitudinal location */ float ROUNDED_VAL; /* Rounded floating value */ uint16_t CONVERT_DATA; /* Converted data value */ LOC_FAIL_UPDATE = false; /* No update needed */ if (gps.location.isValid() == true) /* Valid GPS location received ? */ { LOC_FAIL_UPDATE = true; /* Update needed */ M5.Lcd.setTextSize(3); /* Set text size to 3 */ ACT_LOC_LAT = gps.location.lat(); /* Get lattitude value */ ACT_LOC_LNG = gps.location.lng(); /* Get longitude value */ /* Display lattitude value */ ROUNDED_VAL = SUB_ROUND_FLOAT_VALUE (ACT_LOC_LAT, 5); /* Call subroutine to round float to 5 digits */ /* Value has changed for updating display or location update flag true? */ if ((OLD_LOC_LAT != ROUNDED_VAL) || (LOC_UPDATE_FLAG == true)) { OLD_LOC_LAT = ROUNDED_VAL; /* Save value */ M5.Lcd.fillRect(114, 40, 169, 44, 0x1E9F); /* Clear old degree of lattitude value */ M5.Lcd.setCursor(115, 50); /* Position cursor */ if (GPS_FORMAT == 0) /* Format 0 selected */ { M5.Lcd.print(ACT_LOC_LAT, 6); /* Display latitude information */ } else /* Format 1 selected */ { CONVERT_DATA = (int)(ACT_LOC_LAT); /* Extract degree value */ M5.Lcd.print(CONVERT_DATA); /* Display degree value */ M5.Lcd.print(" "); /* Extract Minute value */ ACT_LOC_LAT= ACT_LOC_LAT - CONVERT_DATA; ACT_LOC_LAT = ACT_LOC_LAT * 60; CONVERT_DATA = (int)(ACT_LOC_LAT); M5.Lcd.print(CONVERT_DATA); /* Display minute value */ M5.Lcd.print(" "); /*Extract Second value */ ACT_LOC_LAT= ACT_LOC_LAT - CONVERT_DATA; ACT_LOC_LAT = ACT_LOC_LAT * 60; M5.Lcd.print (ACT_LOC_LAT, 0); /* Dispaly second value */ } } /* Display lngitude value */ ROUNDED_VAL = SUB_ROUND_FLOAT_VALUE (ACT_LOC_LNG, 5); /* Call subroutine to round float to 5 digits */ /* Value has changed for updating display or location update flag true? */ if ((OLD_LOC_LNG != ROUNDED_VAL) || (LOC_UPDATE_FLAG == true)) { OLD_LOC_LNG = ROUNDED_VAL; /* Save value */ M5.Lcd.fillRect(114, 94, 169, 44, 0x1E9F); /* Clear old degree of longitude value */ M5.Lcd.setCursor(115, 104); /* Position cursor */ if (GPS_FORMAT == 0) /* Format 0 selected */ { M5.Lcd.print(ACT_LOC_LNG, 6); /* Display longitudinal information */ } else /* Format 1 selected */ { CONVERT_DATA = (int)(ACT_LOC_LNG); /* Extract degree value */ M5.Lcd.print(CONVERT_DATA); /* Display degree value */ M5.Lcd.print(" "); /* Extract Minute value */ ACT_LOC_LNG= ACT_LOC_LNG - CONVERT_DATA; ACT_LOC_LNG = ACT_LOC_LNG * 60; CONVERT_DATA = (int)(ACT_LOC_LNG); M5.Lcd.print(CONVERT_DATA); /* Display minute value */ M5.Lcd.print(" "); /*Extract Second value */ ACT_LOC_LNG= ACT_LOC_LNG - CONVERT_DATA; ACT_LOC_LNG = ACT_LOC_LNG * 60; M5.Lcd.print (ACT_LOC_LNG, 0); /* Dispaly second value */ } } LOC_UPDATE_FLAG = false; /* Set location update flag false */ } else /* Not valid GPS location received ? */ { if (LOC_FAIL_UPDATE == true) /* Update needed ? */ { M5.Lcd.setTextSize(3); M5.Lcd.fillRect(114, 40, 169, 44, 0x1E9F); /* Clear old degree of lattitude value */ M5.Lcd.fillRect(114, 94, 169, 44, 0x1E9F); /* Clear old degree of longitude value */ if (GPS_FORMAT == 0) /* Format 0 selected */ { M5.Lcd.setCursor(115, 50); /* Display location placeholder */ M5.Lcd.print("--.------"); M5.Lcd.setCursor(115, 104); M5.Lcd.print("--.------"); } else /* Format 1 selected */ { M5.Lcd.setCursor(115, 50); /* Display location placeholder */ M5.Lcd.print("----'---"); M5.Lcd.setCursor(115, 104); M5.Lcd.print("----'---"); } } LOC_FAIL_UPDATE = false; /* Set date update false */ } } /****************************************************************************************/ /* SUBROUTINE Display Altitude */ /* This subroutine displays the altitude information */ /****************************************************************************************/ void SUB_DISPLAY_ALTITUDE () { boolean ALT_FAIL_UPDATE; /* True = Needs update, False = Needs no update */ float ACT_ALTITUDE; /* Actual laltitude value */ int INTEGER_VAL; /* Integer value */ int STRING_LENGTH; /* Length of string */ ALT_FAIL_UPDATE = false; /* No update needed */ if (gps.altitude.isValid() == true) /* Valid GPS altitude received ? */ { ALT_FAIL_UPDATE = true; /* Update needed */ M5.Lcd.setTextSize(3); /* Set text size to 3 */ ACT_ALTITUDE = gps.altitude.meters(); /* Get altitude value */ /* Display altitude value */ INTEGER_VAL = (int)(ACT_ALTITUDE); /* Extract integer value of altitude variable */ sprintf(CONVERTED, "%.0f", ACT_ALTITUDE); /* Convert float to a string to determine length */ STRING_LENGTH = strlen(CONVERTED); /* Determine length of string */ /* Value has changed for updating display or location update flag true? */ if ((OLD_ALTITUDE != INTEGER_VAL) || (ALT_UPDATE_FLAG == true)) { OLD_ALTITUDE = INTEGER_VAL; /* Save value */ M5.Lcd.fillRect(4, 145, 100, 40, 0x1E9F); /* Clear old altitude value */ if (STRING_LENGTH >= 4) /* String length >= 4 ? */ M5.Lcd.setCursor(8, 155); /* Position cursor */ if (STRING_LENGTH == 3) /* String length = 3 ? */ M5.Lcd.setCursor(18, 155); /* Position cursor */ if (STRING_LENGTH == 2) /* String length = 2 ? */ M5.Lcd.setCursor(25, 155); /* Position cursor */ if (STRING_LENGTH<= 1) /* String length <= 1 ? */ M5.Lcd.setCursor(35, 155); /* Position cursor */ M5.Lcd.print(CONVERTED); /* Display value */ M5.Lcd.print("m"); } ALT_UPDATE_FLAG = false; /* Set altitrude update flag false */ } else /* Not valid GPS altitude received ? */ { if (ALT_FAIL_UPDATE == true) /* Update needed ? */ { M5.Lcd.setTextSize(3); /* Set text size to 3 */ M5.Lcd.fillRect(4, 145, 100, 40, 0x1E9F); /* Clear old altitude value */ M5.Lcd.setCursor(18, 155); /* Position cursor */ M5.Lcd.print("---m"); /* Display altitude placeholder */ } ALT_FAIL_UPDATE = false; /* Set altitude update false */ } } /****************************************************************************************/ /* SUBROUTINE Display Speed */ /* This subroutine displays the speed information */ /****************************************************************************************/ void SUB_DISPLAY_SPEED () { boolean SPEED_FAIL_UPDATE; /* True = Needs update, False = Needs no update */ float ACT_SPEED; /* Actual speed value */ int INTEGER_VAL; /* Integer value */ int STRING_LENGTH; /* Length of string */ SPEED_FAIL_UPDATE = false; /* No update needed */ if (gps.speed.isValid() == true) /* Valid GPS speed received ? */ { SPEED_FAIL_UPDATE = true; /* Update needed */ M5.Lcd.setTextSize(3); /* Set text size to 3 */ ACT_SPEED = gps.speed.kmph(); /* Get speed value */ /* Display speed value */ INTEGER_VAL = (int)(ACT_SPEED); /* Extract integer value of speed variable */ sprintf(CONVERTED, "%.0f", ACT_SPEED); /* Convert float to a string to determine length */ STRING_LENGTH = strlen(CONVERTED); /* Determine length of string */ /* Value has changed for updating display or location update flag true? */ if ((OLD_SPEED != INTEGER_VAL) || (SPEED_UPDATE_FLAG == true)) { OLD_SPEED = INTEGER_VAL; /* Save value */ M5.Lcd.fillRect(114, 145, 94, 40, 0x1E9F); /* Clear old speed value */ if (STRING_LENGTH >= 4) /* String length >= 4 ? */ M5.Lcd.setCursor(125, 155); /* Position cursor */ if (STRING_LENGTH == 3) /* String length = 3 ? */ M5.Lcd.setCursor(135, 155); /* Position cursor */ if (STRING_LENGTH == 2) /* String length = 2 ? */ M5.Lcd.setCursor(142, 155); /* Position cursor */ if (STRING_LENGTH<= 1) /* String length <= 1 ? */ M5.Lcd.setCursor(152, 155); /* Position cursor */ M5.Lcd.print(CONVERTED); /* Display value */ } SPEED_UPDATE_FLAG = false; /* Set speed update flag false */ } else /* Not valid GPS altitude received ? */ { if (SPEED_FAIL_UPDATE == true) /* Update needed ? */ { M5.Lcd.setTextSize(3); /* Set text size to 3 */ M5.Lcd.fillRect(114, 145, 94, 40, 0x1E9F); /* Clear old speed value */ M5.Lcd.setCursor(135, 155); /* Position cursor */ M5.Lcd.print("---"); /* Display speed placeholder */ } SPEED_FAIL_UPDATE = false; /* Set speed update false */ } } /****************************************************************************************/ /* SUBROUTINE Display Sattelites */ /* This subroutine displays the number of sattelites */ /****************************************************************************************/ void SUB_DISPLAY_SAT () { boolean SAT_FAIL_UPDATE; /* True = Needs update, False = Needs no update */ SAT_FAIL_UPDATE = false; /* No update needed */ if (gps.satellites.isValid() == true) /* Valid GPS number of sattllites received ? */ { SAT_FAIL_UPDATE = true; /* Update needed */ M5.Lcd.setTextSize(2); /* Set text size to 2 */ /* Value has changed for updating display or location update flag true? */ if ((OLD_NO_OF_SAT != NO_OF_SAT) || (SAT_UPDATE_FLAG == true)) { OLD_NO_OF_SAT = NO_OF_SAT; /* Save value */ M5.Lcd.fillRect(275, 145, 45, 35, 0x1E9F); /* Clear satelite field */ M5.Lcd.setCursor(280, 155); /* Display header info */ M5.Lcd.print(NO_OF_SAT); /* Display number of sattelites */ } SAT_UPDATE_FLAG = false; /* Set speed update flag false */ } else /* Not valid GPS altitude received ? */ { if (SAT_FAIL_UPDATE == true) /* Update needed ? */ { M5.Lcd.fillRect(275, 145, 45, 35, 0x1E9F); /* Clear satelite field */ M5.Lcd.setCursor(280, 155); /* Display header info */ M5.Lcd.print("-"); /* Display sattelite placeholder */ } SAT_FAIL_UPDATE = false; /* Set sattelite update false */ } } /****************************************************************************************/ /* SUBROUTINE Display HDOP */ /* This subroutine displays the HDOP value */ /****************************************************************************************/ void SUB_DISPLAY_HDOP () { boolean HDOP_FAIL_UPDATE; /* True = Needs update, False = Needs no update */ float ACT_HDOP; /* Actual HDOP value */ unsigned int INTEGER_VAL; /* Integer value */ HDOP_FAIL_UPDATE = false; /* No update needed */ if (gps.hdop.isValid() == true) /* Valid GPS HDOP value received ? */ { HDOP_FAIL_UPDATE = true; /* Update needed */ M5.Lcd.setTextSize(2); /* Set text size to 2 */ ACT_HDOP = gps.hdop.hdop(); /* Get HDOP value */ INTEGER_VAL = (int)(ACT_HDOP); /* Extract integer value of HDOP variable */ /* Value has changed for updating display or location update flag true? */ if ((OLD_HDOP != INTEGER_VAL) || (HDOP_UPDATE_FLAG == true)) { OLD_HDOP = INTEGER_VAL; /* Save value */ M5.Lcd.fillRect(275, 180, 45, 28, 0x1E9F); /* Clear satelite field */ M5.Lcd.setCursor(280, 185); /* Display header info */ M5.Lcd.print(INTEGER_VAL); /* Display HDOP value */ } HDOP_UPDATE_FLAG = false; /* Set HDOP update flag false */ } else /* Not valid GPS altitude received ? */ { if (HDOP_FAIL_UPDATE == true) /* Update needed ? */ { M5.Lcd.fillRect(275, 180, 45, 28, 0x1E9F); /* Clear satelite field */ M5.Lcd.setCursor(280, 185); /* Display header info */ M5.Lcd.print("---"); /* Display sattelite placeholder */ } HDOP_FAIL_UPDATE = false; /* Set sattelite update false */ } } /****************************************************************************************/ /* SUBROUTINE Display Main */ /* This subroutine displays the main menu based on the selected kanguage */ /****************************************************************************************/ void SUB_DISPLAY_MAIN (void) { M5.Lcd.fillRect(0, 0, 320, 30, 0x439); /* Upper dark blue area */ M5.Lcd.fillRect(0, 31, 320, 178, 0x1E9F); /* Main light blue area */ M5.Lcd.fillRect(0, 210, 320, 30, 0x439); /* Lower dark blue area */ M5.Lcd.fillRect(0, 30, 320, 4, 0xffff); /* Upper white line */ M5.Lcd.fillRect(0, 208, 320, 4, 0xffff); /* Lower white line */ M5.Lcd.fillRect(0, 84, 320, 4, 0xffff); /* First vertical white line */ M5.Lcd.fillRect(0, 140, 320, 4, 0xffff); /* Second vertical white line */ M5.Lcd.fillRect(106, 140, 4, 72, 0xffff); /* First horizontal white line */ M5.Lcd.fillRect(210, 140, 4, 72, 0xffff); /* First horizontal white line */ M5.Lcd.setTextSize(2); /* Set text size to 2 */ M5.Lcd.setTextColor(WHITE); /* Set text color to white */ M5.Lcd.setCursor(10, 7); /* Display header info */ M5.Lcd.print("GPS Logger"); M5.Lcd.setCursor(210, 7); M5.Lcd.print("@PT 2019"); if (MENU_LANGUAGE == 0) /* German language chosen ? */ { M5.Lcd.setCursor(5, 40); /* Display degree of lattitude */ M5.Lcd.print("Breiten-"); M5.Lcd.setCursor(5, 65); M5.Lcd.print("grad"); M5.Lcd.setCursor(5, 94); /* Display degree of longitude */ M5.Lcd.print("Laengen-"); M5.Lcd.setCursor(5, 119); M5.Lcd.print("grad"); M5.Lcd.setCursor(25, 185); /* Display elevation info */ M5.Lcd.print("Hoehe"); M5.Lcd.setCursor(125, 185); /* Display hspeed info */ M5.Lcd.print("Gesch."); } else /*Englishn language chosen ? */ { M5.Lcd.setCursor(5, 40); /* Display degree of lattitude */ M5.Lcd.print("Degree"); M5.Lcd.setCursor(5, 65); M5.Lcd.print("of Lat."); M5.Lcd.setCursor(5, 94); /* Display degree of longitude */ M5.Lcd.print("Degree"); M5.Lcd.setCursor(5, 119); M5.Lcd.print("of Long."); M5.Lcd.setCursor(25, 185); /* Display altitude info */ M5.Lcd.print("Alti."); M5.Lcd.setCursor(125, 185); /* Display hspeed info */ M5.Lcd.print("Speed"); } M5.Lcd.setCursor(215, 155); /* Display number of sattelites */ M5.Lcd.println(" Sat."); M5.Lcd.setCursor(215, 185); /* Display HDOP info */ M5.Lcd.print(" HDOP"); M5.Lcd.setTextSize(3); /* Set text size to 3 */ M5.Lcd.setCursor(295, 50); /* Display North info */ M5.Lcd.print("N"); if (MENU_LANGUAGE == 0) /* German language chosen ? */ { M5.Lcd.setCursor(295, 104); /* Display East info */ M5.Lcd.print("O"); } else /* Englishn language chosen ? */ { M5.Lcd.setCursor(295, 104); /* Display East info */ M5.Lcd.print("E"); } } /****************************************************************************************/ /* SUBROUTINE No receiver */ /* This subroutine displays the screen when no GPS receiver is found */ /****************************************************************************************/ void SUB_DISPLAY_NO_REC (void) { M5.Lcd.fillRect(0, 0, 320, 30, 0x439); /* Upper dark blue area */ M5.Lcd.fillRect(0, 31, 320, 178, 0x1E9F); /* Main light blue area */ M5.Lcd.fillRect(0, 210, 320, 30, 0x439); /* Lower dark blue area */ M5.Lcd.setTextSize(3); /* Set text size to 3 */ M5.Lcd.setTextColor(WHITE); /* Set text color to white */ if (MENU_LANGUAGE == 0) /* German language chosen ? */ { M5.Lcd.setCursor(80, 80); /* Display message */ M5.Lcd.print(F("Kein GPS!")); M5.Lcd.setCursor(40, 120); M5.Lcd.print(F("Pruefe Modul!")); } else /* Englishn language chosen ? */ { M5.Lcd.setCursor(100, 80); /* Display message */ M5.Lcd.print(F("No GPS!")); M5.Lcd.setCursor(40, 120); M5.Lcd.print(F("Check module!")); } } /****************************************************************************************/ /* SUBROUTINE No GPS signal */ /* This subroutine displays the screen when no or a weak GPS signal is available */ /****************************************************************************************/ void SUB_DISPLAY_NO_GPS (void) { M5.Lcd.fillRect(0, 0, 320, 30, 0x439); /* Upper dark blue area */ M5.Lcd.fillRect(0, 31, 320, 178, 0x1E9F); /* Main light blue area */ M5.Lcd.fillRect(0, 210, 320, 30, 0x439); /* Lower dark blue area */ M5.Lcd.setTextSize(3); /* Set text size to 3 */ M5.Lcd.setTextColor(WHITE); /* Set text color to white */ if (MENU_LANGUAGE == 0) /* German language chosen ? */ { M5.Lcd.setCursor(40, 80); /* Display message */ M5.Lcd.print(F("Kein valides")); M5.Lcd.setCursor(50, 120); M5.Lcd.print(F("GPS Signal!")); } else /* Englishn language chosen ? */ { M5.Lcd.setCursor(70, 80); /* Display message */ M5.Lcd.print(F("No valid")); M5.Lcd.setCursor(50, 120); M5.Lcd.print(F("GPS signal!")); } } /****************************************************************************************/ /* SUBROUTINE to round floating value */ /* Input to this subroutine is float value amd number of digits after decimal point */ /****************************************************************************************/ float SUB_ROUND_FLOAT_VALUE (float FLOAT_IN, byte DIGITS) { float SHIFTS = 1; /* Define shift value */ while (DIGITS--) /* Process until digit value is zero */ { SHIFTS *= 10; /* Increase shifts value */ } return floor(FLOAT_IN * SHIFTS + .5) / SHIFTS; /* Calculated rounded value */ } Programme TempĂ©rature - HumiditĂ© #include #include #include #include "SHT31.h" #include "Free_Fonts.h" SHT31 sht31 = SHT31(); void setup() { Serial.begin(9600); while(!Serial); Serial.println("begin..."); sht31.begin(); M5.begin(); // Init M5Core. 戝構挖 M5Core M5.Power.begin(); // Init Power module. ćˆć§‹ćŒ–ç””æșæšĄć— } void loop() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); M5.Lcd.fillRect(0, 0, 320, 30, 0x439); /* Upper dark blue area */ M5.Lcd.fillRect(0, 31, 320, 178, 0x1E9F); /* Main light blue area */ M5.Lcd.fillRect(0, 210, 320, 30, 0x439); /* Lower dark blue area */ M5.Lcd.fillRect(0, 30, 320, 4, 0xffff); /* Upper white line */ M5.Lcd.fillRect(0, 208, 320, 4, 0xffff); /* Lower white line */ M5.Lcd.fillRect(0, 125, 160, 4, 0xffff); /* vertical white line */ M5.Lcd.fillRect(160, 30, 4, 180, 0xffff); /* Horizontal white line */ M5.Lcd.setTextSize(2); /* Set text size to 2 */ M5.Lcd.setTextColor(WHITE); /* Set text color to white */ M5.Lcd.setCursor(10, 7); /* Display header info */ M5.Lcd.print("Weather"); M5.Lcd.setCursor(200, 7); M5.Lcd.print("Analyz'Air"); M5.Lcd.setTextSize(2.5); M5.lcd.setCursor(12.5,40); M5.Lcd.print("Temperature: "); M5.Lcd.setTextSize(4); M5.lcd.setCursor(15,70); M5.Lcd.print(temp); M5.Lcd.setTextSize(3); M5.lcd.setCursor(140,75); M5.Lcd.println("C"); M5.Lcd.setTextSize(2.5); M5.lcd.setCursor(30,135); M5.Lcd.print("Humidity: "); M5.Lcd.setTextSize(4); M5.lcd.setCursor(15,165); M5.Lcd.print(hum); M5.Lcd.setTextSize(3); M5.lcd.setCursor(140,170); M5.Lcd.println("%"); M5.Lcd.println(); delay(2000); } Ce code a Ă©tĂ© obtenu grĂące au Wiki Seeed Studio oĂč est disponible le code de base. Puis nous l'avons modifiĂ© Ă  notre guise afin d'afficher les valeurs sur le M5Stack grĂące Ă  la commande M5.Lcd.print, de modifier le design grĂące aux commandes M5.Lcd.setTextSize et M5.Lcd.fillRect, et de placer les valeurs oĂč on le souhaitait grĂące Ă  la commandes M5.setcursor. Une fois ces modifications faites, on obtient le code ci-dessus. Programme BaromĂštre #include // Dps310 Opject Dps310 Dps310PressureSensor = Dps310(); void setup() { Serial.begin(9600); while (!Serial); //Call begin to initialize Dps310PressureSensor //The parameter 0x76 is the bus address. The default address is 0x77 and does not need to be given. //Dps310PressureSensor.begin(Wire, 0x76); //Use the commented line below instead to use the default I2C address. Dps310PressureSensor.begin(Wire); //temperature measure rate (value from 0 to 7) //2^temp_mr temperature measurement results per second int16_t temp_mr = 2; //temperature oversampling rate (value from 0 to 7) //2^temp_osr internal temperature measurements per result //A higher value increases precision int16_t temp_osr = 2; //pressure measure rate (value from 0 to 7) //2^prs_mr pressure measurement results per second int16_t prs_mr = 2; //pressure oversampling rate (value from 0 to 7) //2^prs_osr internal pressure measurements per result //A higher value increases precision int16_t prs_osr = 2; //startMeasureBothCont enables background mode //temperature and pressure ar measured automatically //High precision and hgh measure rates at the same time are not available. //Consult Datasheet (or trial and error) for more information int16_t ret = Dps310PressureSensor.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr); //Use one of the commented lines below instead to measure only temperature or pressure //int16_t ret = Dps310PressureSensor.startMeasureTempCont(temp_mr, temp_osr); //int16_t ret = Dps310PressureSensor.startMeasurePressureCont(prs_mr, prs_osr); if (ret != 0) { Serial.print("Init FAILED! ret = "); Serial.println(ret); } else { Serial.println("Init complete!"); } } void loop() { uint8_t pressureCount = 20; float pressure[pressureCount]; uint8_t temperatureCount = 20; float temperature[temperatureCount]; //This function writes the results of continuous measurements to the arrays given as parameters //The parameters temperatureCount and pressureCount should hold the sizes of the arrays temperature and pressure when the function is called //After the end of the function, temperatureCount and pressureCount hold the numbers of values written to the arrays //Note: The Dps310 cannot save more than 32 results. When its result buffer is full, it won't save any new measurement results int16_t ret = Dps310PressureSensor.getContResults(temperature, temperatureCount, pressure, pressureCount); if (ret != 0) { Serial.println(); Serial.println(); Serial.print("FAIL! ret = "); Serial.println(ret); } else { Serial.println(); Serial.println(); Serial.print(temperatureCount); Serial.println(" temperature values found: "); for (int16_t i = 0; i < temperatureCount; i++) { Serial.print(temperature[i]); Serial.println(" degrees of Celsius"); } Serial.println(); Serial.print(pressureCount); Serial.println(" pressure values found: "); for (int16_t i = 0; i < pressureCount; i++) { Serial.print(pressure[i]); Serial.println(" Pascal"); } } //Wait some time, so that the Dps310 can refill its buffer delay(10000); } Les commandes Serial.print nous indiquent que les valeurs et les unitĂ©s de la pression s'afficheront sur le serial monitor du logiciel arduino et non sur notre M5stack. Afin de les afficher sur le M5stack, nous remplacerons cette commande par la commande M5.Lcd.print afin de les afficher sur celui-ci. Cette commande est prĂ©sente sur le code suivant contenant les codes servant Ă  afficher la pression, l'humiditĂ©, et la tempĂ©rature rĂ©unis. Il est prĂ©sent dans l'onglet "Programme MĂ©tĂ©o Complet". La prochaine Ă©tape sera de rĂ©unir ces trois codes diffĂ©rents afin de finaliser notre logiciel puis lorsque l'assemblage sera fini, rĂ©alisera le design extĂ©rieur. Programme MĂ©tĂ©o complet #include #include #include #include "SHT31.h" #include #include "Free_Fonts.h" SHT31 sht31 = SHT31(); Dps310 Dps310PressureSensor = Dps310(); void setup() { Serial.begin(9600); while(!Serial); Serial.println("begin..."); sht31.begin(); Dps310PressureSensor.begin(Wire); M5.begin(); // Init M5Core. 戝構挖 M5Core M5.Power.begin(); // Init Power module. ćˆć§‹ćŒ–ç””æșæšĄć— } void loop(){ mesure(); M5.Lcd.fillRect(0, 0, 320, 30, 0x439); /* Upper dark blue area */ M5.Lcd.fillRect(0, 31, 320, 178, 0x1E9F); /* Main light blue area */ M5.Lcd.fillRect(0, 210, 320, 30, 0x439); /* Lower dark blue area */ M5.Lcd.fillRect(0, 30, 320, 4, 0xffff); /* Upper white line */ M5.Lcd.fillRect(0, 208, 320, 4, 0xffff); /* Lower white line */ M5.Lcd.fillRect(0, 125, 160, 4, 0xffff); /* vertical white line */ M5.Lcd.fillRect(160, 30, 4, 180, 0xffff); /* Horizontal white line */ M5.Lcd.setTextSize(2); /* Set text size to 2 */ M5.Lcd.setTextColor(WHITE); /* Set text color to white */ M5.Lcd.setCursor(10, 7); /* Display header info */ M5.Lcd.print("Weather"); M5.Lcd.setCursor(200, 7); M5.Lcd.print("Analyz'Air"); } void mesure() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); float temperature; float pressure; uint8_t oversampling = 7; int16_t ret; M5.Lcd.println(); ret = Dps310PressureSensor.measurePressureOnce(pressure, oversampling); if (ret != 0) { //Something went wrong. //Look at the library code for more information about return codes M5.Lcd.print("FAIL! ret = "); M5.Lcd.println(ret); } else { M5.Lcd.setTextSize(2.5); M5.lcd.setCursor(12.5,40); M5.Lcd.print("Temperature: "); M5.Lcd.setTextSize(4); M5.lcd.setCursor(15,70); M5.Lcd.print(temp); M5.Lcd.setTextSize(3); M5.lcd.setCursor(140,75); M5.Lcd.println("C"); M5.Lcd.setTextSize(2.5); M5.lcd.setCursor(30,135); M5.Lcd.print("Humidity: "); M5.Lcd.setTextSize(4); M5.lcd.setCursor(15,165); M5.Lcd.print(hum); M5.Lcd.setTextSize(3); M5.lcd.setCursor(140,170); M5.Lcd.println("%"); M5.Lcd.setTextSize(2.5); M5.lcd.setCursor(200,40); M5.Lcd.print("Pression: "); M5.Lcd.setTextSize(3); M5.lcd.setCursor(180,70); M5.Lcd.print(pressure); M5.Lcd.setTextSize(3); M5.lcd.setCursor(260,70); M5.Lcd.println(" Pa "); } delay(2000); } Une fois les codes combinĂ©s, nous obtenons le code ci-dessus qui permettra d'afficher l'ensemble des informations mĂ©tĂ©orologiques. Voici le rendu une fois le programme terminĂ©, de la station mĂ©tĂ©orologique Analyz'Air :             SĂ©ance 9 Ă  10 : Projet Final - CrĂ©ation de la boite Afin de finaliser notre station mĂ©tĂ©orologique, nous devions crĂ©er une boite de transport pour notre m5stack ainsi que pour tous les composants Ă©lectroniques. Pour ce faire, nous avons utilisĂ© le logiciel de modĂ©lisation 3D : Fusion 360. Étape 1 : CRÉATION DE LA COQUE Étape 2 : CRÉATION DE LA GRILLE DE FERMETURE ET DU SYSTEME DE VENTILLATION Étape 3 : CRÉATION DU SYSTEME DE FERMETURE ET DU SYSTEME DE CLIPSAGE DE POIGNÉE Étape 4 : CRÉATION DE LA POIGNÉE ET D'UNE PLAQUE PERMETTANT DE PLACER CORRECTEMENT DE M5STACK Étape 5 : IMPRESSION 3D DE LA COQUE Afin d'imprimer cette coque, nous avons utiliser les imprimantes 3D "Raise3D Pro" prĂ©sentent au FabLab. Lors de l'impression, nous avons utilisĂ© du plastique PLA de couleur blanche afin de rĂ©fractĂ© les rayons arrivant sur la boite afin d'Ă©viter au maximum de chauffer l'intĂ©rieur pour ne pas biaiser les mesures. Rendu Projet Finale Montage du m5stack avec tous les capteurs : Rendu du l'impression 3D de la coque : Montage complet - m5stack + coque :               Fin de Projet Fin du projet et de l’UE En cette fin d’UE, nous avons prĂ©sentĂ© Ă  l’oral au reste de la classe notre projet de station mĂ©tĂ©o en retraçant notre dĂ©marche au long du semestre. Toutes ces sĂ©ances au Fablab nous ont appris Ă©normĂ©ment : nous savons maintenant utiliser une carte Arduino ou un M5Stack et tous les capteurs qui y sont rattachĂ©s; utiliser une imprimante 3D de façon Ă  avoir un rĂ©sultat optimal; utiliser une dĂ©coupeuse laser; documenter le mieux possible un projet pour qu’il devienne accessible pour tous; confectionner un objet Ă©lectronique en Ă©quipe tout en respectant une limite de temps. Lien vers notre prĂ©sentation finale : Diaporama prĂ©snetation Analyz'air Nous tenons Ă  remercier l’équipe du Fablab pour son aide et le savoir faire qu’elle nous a transmis qui nous sera sans aucun doute trĂšs utile dans la suite de nos Ă©tudes. Groupe A1 💡 Membres du groupe : Maxime ARRESSEGUET Sophie NAVARRO Malick DIALLO Paul SPIRCKEL SĂ©ance 1 : 23/01/2023 ----------------------------------------------------- DĂ©couverte et Ă©mergence d'idĂ©es Il s’agissait de la premiĂšre sĂ©ance consacrĂ©e au projet FabLab. Nous avons tous les 4 commencĂ© Ă  chercher des idĂ©es pour notre projet. Celui-ci doit comporter au moins 1 capteur mesurant un ou plusieurs Ă©lĂ©ment(s) dans l’environnement qui nous entoure (tempĂ©rature, pression, humiditĂ©, luminosité ) Nous souhaitons concevoir un objet qui ait une utilitĂ© (pour les Ă©tudiants par exemple). Afin d’éveiller notre imagination, nous avons explorĂ© la liste des capteurs proposĂ©s par SeeedStudio (Grove - Seeed Studio). Notre premiĂšre idĂ©e est de concevoir un appareil capable de rĂ©aliser plusieurs Ă©tapes dans la cuisson d’aliments comme des pĂątes, de maniĂšre automatique. Plus prĂ©cisĂ©ment, il s’agirait d’un appareil posĂ© sur une casserole pleine d’eau, dans lequel se trouve des pĂątes par exemple, il est Ă©quipĂ© d’une “trappe” qui s’ouvre dĂšs que l’eau bout (ce qui est mesurĂ© Ă  l’aide du thermomĂštre de l’appareil), ce dernier possĂšde aussi une petite cuillĂšre en bois, qui remue constamment les pĂątes lorsqu’elles sont dans l’eau. Enfin, notre appareil enverra une notification ou sonnera une minute avant la fin de la cuisson. SĂ©ance 2 : 15/02/2023 ----------------------------------------------------- Prise en main du logiciel ARDUINO La sĂ©ance d'aujourd'hui constituait en la prise en main du logiciel ARDUINO. Nous avons dĂ©couvert la carte arduino UNO. Une fois que le logiciel est installĂ©, il est possible de tĂ©lĂ©charger des croquis (sketches) pour contrĂŽler les capteurs sur Arduino. Lors de notre sĂ©ance nous avons utilisĂ© les capteurs d'humiditĂ© et de tempĂ©rature. Les croquis pour utiliser les capteurs sur Arduino peuvent ĂȘtre trouvĂ©s en ligne sur des sites tels que GitHub. Ci dessous voici par exemple les croquis d'un composant Grove LCD RGB. Les croquis sont gĂ©nĂ©ralement Ă©crits en langage C et sont tĂ©lĂ©chargĂ©s sur la carte Arduino via le port USB de l'ordinateur. Pour utiliser les croquis, il est important de comprendre le fonctionnement des capteurs et de choisir le bon croquis pour chaque capteur. Les croquis peuvent ĂȘtre modifiĂ©s pour adapter les capteurs aux besoins spĂ©cifiques du projet. La prise en main comprenait notamment le codage des capteurs Ă  notre disposition. Par exemple avec un capteur de tempĂ©rature et un Ă©cran nous devions prendre en main les codes en C afin d'afficher les valeurs relevĂ©es par le capteur sur l'Ă©cran. Voici par exemple le bricolage de code (langage C) que nous avons rĂ©ussi Ă  rĂ©aliser en peu de temps d'aprĂšs les programmes examples fournis avec les library attachĂ©es aux capteurs : #include #include "rgb_lcd.h" #include #include #include "SHT31.h" SHT31 sht31 = SHT31(); rgb_lcd lcd; const int colorR = 200; const int colorG = 100; const int colorB = 100; void setup() { // set up the LCD's number of columns and rows: sht31.begin(); lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); delay(1000); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 0); float temp = sht31.getTemperature(); lcd.print("Temp = "); lcd.print(temp); lcd.println(" C "); //The unit for Celsius because original arduino don't support speical symbols lcd.println(" "); lcd.setCursor(0, 1); float hum = sht31.getHumidity(); lcd.print("Hum = "); lcd.print(hum); lcd.println(" % "); } GrĂące auquel nous avons obtenu un rĂ©sultat plutĂŽt satisfaisant : DĂ©couverte du M5Stack La deuxiĂšme partie de la sĂ©ance Ă©tait consacrĂ©e Ă  la prise en main d'une carte M5Stack (similaire Ă  Arduino). Nous avons rĂ©alisĂ© le mĂȘme travail (affichage tempĂ©rature et humiditĂ© en temps rĂ©el (pas d'images)). DĂ©couverte pratique SĂ©ance 3 : 17/02/2023 ----------------------------------------------------- RedĂ©finition du projet Tout d'abord, nous avons redĂ©fini notre projet pour cette UE. En effet, nous Ă©tions partis sur une idĂ©e de robot qui faciliterait la cuisson des pĂątes ou du riz mais nous nous sommes assez vite rendus compte que ce dernier allait ĂȘtre trop compliquĂ© Ă  rĂ©aliser. Ainsi, notre nouvelle idĂ©e consiste Ă  crĂ©er un robot qui fuit lorsqu'on s'approche de lui. Il sera Ă©quipĂ© de capteurs de distance Ă  l'avant, Ă  l'arriĂšre et sur les cĂŽtĂ©s qui lui permettront d'avancer lorsqu'il dĂ©tecte quelque chose au niveau de ces capteurs. Il reculera lorsque quelque chose sera placĂ© devant lui. Nous aimerions aussi pouvoir intĂ©grer une fonction qui fera jouer de la musique Ă  notre robot dĂšs qu'il se dĂ©place, pour "narguer" la personne qu'il fuit. DĂ©couverte des outils de modĂ©lisation 2D & 3D Lors de cette sĂ©ance, nous avons appris Ă  modĂ©liser en 2D et en 3D Ă  l'aide des logiciels Inkscape, FreeCad et OpenScad. Sur OpenSCAD comme sur FreeCAD, un des exercices Ă©tait de modĂ©liser un cube trouĂ© sur chacune des faces. Ainsi nous avons pris en main plusieurs outils fondamentaux de ce type de logiciels : modĂ©liser des formes simples, les dĂ©placer dans l'espace, les recouper... Sur OpenSCAD (fichier cubetrous.scad) : Code C++ : $fn=100; module trous(){ cylinder(51, 5, 5, center=true); rotate([0,90,0])cylinder(51, 5, 5, center=true); rotate([90,0,0])cylinder(51, 5, 5, center=true); }; difference(){cube(50, center = true); trous(); }; Rendu : Sur FreeSCAD (fichier cubetrous.FCStd) : Rendu : Projets personnels A l'issue de cette sĂ©ance, nous devons chacun modĂ©liser un objet 2D (InkScape) et 3D (OpenSCAD ou FreeCAD) : Maxime Projet 2D (InkScape) : Pour ce projet, j'ai dĂ©cidĂ© de modĂ©liser sur un carrĂ© de 10 cm, la texture d'une jack-o-lantern. Pour cela, j'ai donc commencĂ© par trouver mes sources, afin d'avoir des modĂšles Ă  suivre : Je connais maintenant les proportion a respecter, cependant cette texture est composĂ©e de 16 pixels de haut et de large. Ainsi pour me faciliter la tache, je modĂ©liserais une citrouille de 16 cm avec des pixels de 1cm que je rĂ©duirais ensuite a 10 cm, en gardant les proportions. J'ai donc commencĂ© par crĂ©er ma base, un carrĂ© de 10cm de couleur rouge. Ensuite, j'ai dessinĂ© un segment de droite de longueur 1 cm puis en plaçant le carrĂ© initial aux coordonnĂ©es (0;0), je pouvais placer assez simplement ce segment pour suivre le contour des parties sombres. Je n'avais plus qu'a respecter la positon de chacun de ces segments sur mon dessin en rentrant sa coordonnĂ©e prĂ©cise Ă  la main. J'ai d'abord fait tout les segments horizontaux : Enfin, j'ai pivotĂ© le mĂȘme segment d'exactement 90° et refait la manipulation pour tout les segments horizontaux. Pour finir, j'ai rempli les 3 parties avec l'outil "sceau", de la couleur noire puis le dessin final Ă©tait prĂȘt. Une fois passĂ© a la graveuse laser, voici le rĂ©sultat. Voici le projet 2D final : Citrouille inkscape.svg ModĂ©lisation 3D (Blender) : Pour commencer, j'ai dĂ©cidĂ© de faire cette modĂ©lisation sur blender, car, mĂȘme si plus complexe a prendre en main, il me semble plus complet et je vois ca comme l'occasion d'apprendre a maitriser un logiciel plus polyvalent. J'ai dĂ©cidĂ© pour cette modĂ©lisation, de crĂ©er un "pot de fleur" capable de maintenir une rose en lego avec un certain angle. Comme pour la modĂ©lisation 2d la premiĂšre Ă©tape a Ă©tait de trouver un modĂšle a suivre, or cette fois ci j'ai du le crĂ©er moi-mĂȘme, en prenant soin de mesurer la rose en lego et plus prĂ©cisĂ©ment sa tige. J'ai ensuite construit la forme de base, un cercle, que j'ai Ă©tirĂ© puis dans lequel j'ai crĂ©e des faces, pour obtenir une surface. AprĂšs avoir extrudĂ© et modifiĂ© celle ci pour avoir le volume souhaitĂ©, je me retrouve avec ceci : Apres cela, j'ai crĂ©e un cylindre penchĂ©, auquel j'ai supprimĂ© les deux faces opposĂ©s. Ensuite, j'ai extrudĂ© les diffĂ©rents points des deux cercles restant et j'ai enfin rĂ©duit la taille des cercles extrudĂ©s. Ainsi, en crĂ©ant des faces entres les nouveaux cercles du haut et du bas, j'avais la forme gĂ©nĂ©rale qui allait tenir la tige: Enfin, aprĂšs avoir assemblĂ© les deux piĂšces, je n'ai plus eu qu'a gĂ©rer les proportions et la taille gĂ©nĂ©rale de l'objet pour quelle corresponde Ă  mes mesures initiales: Voici donc l'objet final :Pot de fleur.stl Malick PROJET 2D (Inkscape) : Pour mon projet 2D, j'ai dĂ©cidĂ© de faire une plaque en bois avec un numĂ©ro de porte dessus. Les numĂ©ros de porte Ă©tant Ă©crits avec un style particulier mes compĂ©tences artistiques seront mises Ă  rude Ă©preuve. Pour rendre l'exercice plus intĂ©ressant il me fallait trouver un style de 4 particulier. J'ai eu 2 idĂ©es principales: - un circuit de course style Mario Kart en forme de 4 - un 4 avec la calligraphie de Zelda BOTW Je suis finalement parti pour le 4 avec une calligraphie hylienne. Je me suis basĂ© sur ce modĂšle: Et voilĂ  mon projet 2D : NumĂ©ro porte 4 PROJET 3D (Freecad) : Pour mon projet 3D, je suis parti pour modĂ©liser un flocon de neige. La structure du flocon Ă©tant assez complexe, modĂ©liser le flocon me permettra diverses fonctionnalitĂ©s de l'outil Freecad. Tout d'abord il me fallait un croquis que j'allais suivre dans la rĂ©alisation de mon flocon. Le voilĂ  : Pour rĂ©aliser la structure sur Freecad j'ai vu que la construction se ferait en deux parties : - ModĂ©lisation de l'Ă©toile centrale Ă  12 branches - ModĂ©lisation du pourtour avec les 6 branches de givre L'objectif de la premiĂšre partie Ă©tait pour moi de faire une belle Ă©toile. Je l'Ă©cris car je m'y suis pris Ă  plusieurs fois avant de rĂ©ussir Ă  en faire une satisfaisante. Le secret de ma rĂ©ussite : l'outil '' SYMETRIE '' de Freecad: Cet outil m'a vraiment sauvĂ© la mise car je n'avais plus qu'Ă  faire une partie de l'Ă©toile puis faire une symĂ©trie axiale pour chacune de mes branches. Une fois l'Ă©toile faite le vrai dĂ©fi venait de commencer avec les 6 branches externes. J'ai donc dĂ» me diviser cette grande en une multitude de petite tĂąche que voici : - Faire le ''premier rempart'' qui est l'hexagone avec des espaces - Ajouter les ''premiĂšres routes'' - Faire les premiers arcs de cercles sur les fins de routes grĂące Ă  l'outil '' crĂ©er un arc '' - Ensuite on refait la mĂȘme chose comme une sorte de fractale avec un ''deuxiĂšme niveau de route'' et les deuxiĂšmes arc de cercles Finalement on obtient la givre voulu : Givre Sophie ModĂ©lisation 2D : Pour ma modĂ©lisation 2D, j'ai utilisĂ© le logiciel Inkscape pour dessiner une guitare. J'ai utilisĂ© l'outil qui permet de tracer des courbes de BĂ©zier et des Segments de droites pour dessiner son contour et ses dĂ©tails. La forme particuliĂšre de la guitare m'a permis de rĂ©ellement prendre en main cet outil. J'ai ensuite mis en rouge les contours "Ă  dĂ©couper" et en noir les contours Ă  tracer. La guitare : guitar..svg Sur le logiciel Inkscape : Une fois gravĂ©, voici le rĂ©sultat : Un bug sur la dĂ©coupeuse laser directement a empĂȘchĂ© la rĂ©alisation d'un des petits trous sur la partie fine de la guitare. Je suis tout de mĂȘme satisfaite du rĂ©sultat. ModĂ©lisation 3D : Pour ma modĂ©lisation 3D, j'ai utilisĂ© le logiciel FreeCAD pour crĂ©er un poisson. J'ai utilisĂ© la section Sketcher dans un premier temps pour dessiner la forme de mon poisson et de ses nageoirs etout en leur ajoutant des contraintes de symĂ©tries, puis je suis passĂ©e par Part Design pour leur donner des dimensions (en utilisant l'outil protrusion pour le corps et par l'outil Extrusion pour les nageoirs) ainsi que pour "creuser" les yeux. J'ai pris soin de ne former qu'un seul corps qui comprenait les nageoirs et le corps du poisson, pour que l'imprimante 3D ne les imprime pas en plusieurs parties diffĂ©rentes, ce qui amĂšnerait Ă  un Ă©chec d'impression. Voici mon poisson : poisson.FCStd Sur le logiciel Freecad : Vous pouvez voir ici le rĂ©sultat de l'impression 3D : Paul ModĂ©lisation 2D : Pour ma modĂ©lisation 2D, je me suis inspirĂ© de la technique de "wood layering" qui constiste en la superposition de couches de bois, dĂ©coupĂ©es, afin de donner une sensation de profondeur Ă  des objets plutĂŽt en 2 dimensions. J'ai designĂ© un visage Ă  partir de plusieurs piĂšces qui je vais pouvoir attacher et faire bouger Ă  ma convenance : (fichier frenchounet.svg) Enfin, j'ai utilisĂ© des attaches parisiennes afin d'accrocher mes diffĂ©rentes parties. ModĂ©lisation 3D : J'ai utilisĂ© FreeCAD pour rĂ©aliser cette modĂ©lisation. Je voulais continuer Ă  m'entrainer en manipulant les formes de base proposĂ©es par le logiciel. Pour mes prochaines modĂ©lisations, je souhaites passer par la section Part Design qui me semble beaucoup plus pratique, efficace et ouvre bien plus le champ des possibles. Pour l'instant du moins, j'ai dĂ©cidĂ© de rĂ©aliser une maison en forme de champignon : Fichier : Maison Champignon La seule surprise que j'ai eu, qui rĂ©sulte d'une erreur, Ă©tait que le chapeau et le tronc Ă©taient en fait sĂ©parĂ©s. Je n'avais pas fusionnĂ© les deux parties sur FreeCAD, n'ayant pas encore tout Ă  fait bien saisi toutes les subtilitĂ©s du logiciel. C'est une erreur que je n'ai pas reproduit sur mes modĂ©lisations suivantes. Etant donnĂ© qu'il y a avait un trou sous le chapeau dans lequel la base ne passait pas, j'ai du le boucher avec des piĂšces de carton et coller le tout. De plus cette sĂ©ance a Ă©tĂ© pour nous l'occasion de dĂ©passer la partie "software" de cette UE et de voir concrĂštement ce qu'il Ă©tĂ© possible de fabriquer. En effet, nous avons assistĂ© Ă  la prĂ©sentation des machines disponibles au FabLab ainsi qu'Ă  leur fonctionnement. Nous savons maintenant comment les manipuler en toute sĂ©curitĂ©, quelles sont leurs limites, les diffĂ©rents matĂ©riaux qu'il est possible d'utiliser ainsi que plusieurs autres subtilitĂ©s. Ceci nous ouvre Ă  l'immense champ des possibles de cette UE. Ainsi, il Ă©tait venu l'heure des tests. A quelle point cette machine pour graver le bois au laser est elle prĂ©cise ? Combien de temps met-elle pour graver une piĂšce d'une dizaine de centimĂštre ? Testons. Et quoi de mieux qu'un dessin de Pac-Man pour ce test ? Ainsi, nous avons eu rĂ©ponse Ă  nos interrogations, en environ 3 minutes, la machine avait fini de graver et dĂ©couper cette piĂšce, nous bluffant par sa prĂ©cision, son niveau de dĂ©tail et sa simplicitĂ© d'utilisation. SĂ©ance 4 : 21/02/2023 ----------------------------------------------------- Le but de cette sĂ©ance Ă©tait de rĂ©ellement commencer Ă  travailler sur notre projet pour cette UE. Nous avons dans un premier temps dĂ©cidĂ© de laisser de cĂŽtĂ© la partie Design de notre projet, car nous hĂ©sitions entre plusieurs choix (robot avec une coque en forme de cafard, de pacman ou de mouche), nous nous occuperions donc de l’impression 3D de la coque de notre robot une fois le robot lui mĂȘme fini. Test de capteurs Aujourd’hui nous avons donc choisi les capteurs qui nous paraissaient les plus adaptĂ©s pour notre idĂ©e de faire un robot qui fuit lorsqu’on s’approche de lui. Nous sommes donc partis sur des capteurs de mouvement. Nous hĂ©sitions avec un capteur de distance mais l’idĂ©e est bien que notre robot capte un humain ou objet qui le poursuit, donc en mouvement, et non pas n’importe quel objet qui se trouve autour de lui (comme un mur par exemple). Nous avons donc pu tester diffĂ©rents modĂšles de capteurs en les codant simplement sur Arduino : Le premier que nous avons testĂ© fonctionnait parfaitement bien (deux photos de droite). Cependant, nous n'avons pas rĂ©ussi Ă  trouver (mĂȘme en fouillant tous les projets imagineables ayant utilisĂ© ce modĂšle exact de capteur sur internet) comment rĂ©gler la distance Ă  laquelle le mouvement peut ĂȘtre dĂ©tectĂ©. En effet, il nous faudrait une distance de 0 Ă  3 mĂštres environ et ce capteur allait jusqu'Ă  6 mĂštres. Nous avons donc essayĂ© un autre modĂšle (photos de gauche, mini PR Motion Sensor) mais les tests ont Ă©tĂ© un peu plus compliquĂ©s dans la mesure oĂč ce capteur Ă©tait beaucoup trop sensible, en plus du fait que, mĂȘme si cette fois-ci nous savons rĂ©gler la distance (il dĂ©tectait les mouvement jusqu'Ă  6m autour de lui, ce qui est trop pour nous), cela reviendrait Ă  modifier la carte mĂšre. Il nous paraissait donc plus simple de commander un modĂšle de capteur avec une distance et un angle prĂ© Ă©tablis qui nous conviennent. Cette sĂ©ance nous a permis de nous familiariser avec la programmation de ce genre de capteurs, nous n'avons donc pas produit de programme pour notre projet mais nous avons pu manipuler le programme suivant (fourni sur le Wiki PIR Motion Sensor) : #define PIR_MOTION_SENSOR 2//Use pin 2 to receive the signal from the module void setup() { pinMode(PIR_MOTION_SENSOR, INPUT); Serial.begin(9600); } void loop() { if(digitalRead(PIR_MOTION_SENSOR))//if it detects the moving people? Serial.println("Hi,people is coming"); else Serial.println("Watching"); delay(200); } MatĂ©riel nĂ©cessaire : 4x Grove PIR Motion Sensor : https://www.seeedstudio.com/Grove-PIR-Motion-Sensor.html SĂ©ance 5 : 24/02/2023 ----------------------------------------------------- Cette sĂ©ance, nous nous sommes fixĂ©s plusieurs objectifs : Faire la liste des Ă©lĂ©ments qui composent notre projet Prendre en main un relai et l'incorporer dans le circuit d'alimentation d'un moteur Prendre en main la commande de signal (programmer la sortie d'un signal de maniĂšre interne au M5) sur un M5Stack pour ensuite faire fonctionner un moteur et finalement le relai. En ce qui concerne la "dissection" de notre projet, voici ce que nous en avons tirĂ© : ChĂąssis (Ă  concevoir nous-mĂȘmes) Moteurs Alimentation (par piles) Batterie externe pour alimenter la carte Arduino 4x  Capteurs Grove PIR Motion Sensor Arduino UNO Motor Shield Interrupteur manuel pour allumer Ă©teindre complĂštement LED indicatrice ON/OFF "Coque" / "Carapace pour fermer le tout et protĂ©ger l'Ă©lectronique (Ă  concevoir nous-mĂȘmes) Vis, Ă©crous, tiges, engrenages...? (Ă  concevoir nous-mĂȘmes ?) Cables Groves, Duponts... Prise en main du relai : Nous voulions utiliser un relai pour commander l'activation des moteurs. Nous avons donc fait des esais avec un relai Grove , qui ont Ă©tĂ© plutĂŽt concluant. Cependant, nous n'avons pas gardĂ© cette idĂ©e une fois que nous avions utilisĂ© le Motor Shield ARDUINO, qui possĂšde une fonctionnalitĂ© similaire en interne. Commande de signal : Le but ici Ă©tait de rĂ©ussir Ă  programmer la sortie d'un courant depuis le M5, qui servira ensuite Ă  alimenter des relais, eux-mĂȘme connectĂ©s aux moteurs. Nous avons utilisĂ© le Module PLUS du M5 pour avoir une connexion GPIO. Pour l'instant sans succĂšs avec un moteur, nous avons tout de mĂȘme pu dĂ©couvrir le vocabulaire nĂ©cessaire sur Arduino. Nous testerons Ă  la prochaine sĂ©ance avec une LED, voir s'il y a des diffĂ©rences. #include #include #define GPIO_PIN26 26 #define GPIO_PIN36 36 void setup() { // put your setup code here, to run once: M5.begin(); M5.Power.begin(); pinMode(26, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(26, HIGH); delay(5000); digitalWrite(26, LOW); delay(5000); } SĂ©ance 6 : 07/03/2023 ----------------------------------------------------- Lors de cette sĂ©ance, nous avons continuĂ© l'avancĂ©e du projet de notre robot en travaillant sur : Faire fonctionner le moteur avec le module du Motor Shield compatible avec la carte Arduino UNO Tester le module de dĂ©tecteur de mouvement PIR Motion Sensor Le montage du robot Shield Motor : Nous avons dĂ©cidĂ© de ne plus utiliser le M5Stack et de nous concentrer sur la carte ARDUINO munie de plusieurs shields. Pour monter de la bonne maniĂšre le moteur au Motor Shield nous avons trouvĂ© une vidĂ©o Youtube qui est trĂšs complĂšte : On y aborde la composition du shield, son fonctionnement, ses utilisations et surtout son application pour un robot, trĂšs bien expliquĂ© et qui nous sera trĂšs utile dans la suite de notre projet. Nous avons donc essayĂ© de contrĂŽler un moteur Ă  l'aide de la carte Arduino ainsi que du Shield Motor. Nous avons d'abord utilisĂ© un programme example pour se familiariser avec la synthaxe propre au shield : // Adafruit Motor shield library // copyright Adafruit Industries LLC, 2009 // this code is public domain, enjoy! #include #include AF_DCMotor motor(1); void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Motor test!"); // turn on motor motor.setSpeed(200); motor.run(RELEASE); } void loop() { uint8_t i; Serial.print("tick"); motor.run(FORWARD); for (i=0; i<255; i++) { motor.setSpeed(i); delay(10); } for (i=255; i!=0; i--) { motor.setSpeed(i); delay(10); } Serial.print("tock"); motor.run(BACKWARD); for (i=0; i<255; i++) { motor.setSpeed(i); delay(10); } for (i=255; i!=0; i--) { motor.setSpeed(i); delay(10); } Serial.print("tech"); motor.run(RELEASE); delay(1000); } Puis nous nous sommes attaquĂ©s au coeur du projet : commander les moteurs grĂące au dĂ©tecteur de mouvement. Nous avons Ă©crit un programme qui n'a pas fonctionnĂ©, mais qui s'approche fortement de ce que nous cherchons Ă  rĂ©aliser : #define PIR_MOTION_SENSOR 4 #include #include AF_DCMotor motor(1); void setup() { pinMode(PIR_MOTION_SENSOR, INPUT); Serial.begin(9600); motor.setSpeed(200); motor.run(RELEASE); } void loop() { uint8_t i; if(digitalRead(PIR_MOTION_SENSOR)) {//if it detects the moving people? Serial.println("hey dude"); motor.run(FORWARD); delay(10); delay(10); } else { Serial.println("oh"); delay(10); } } Et les montages qui nous avons fait : PIR Motion Sensor : Du cĂŽtĂ© du PIR Motion Sensor nous avons testĂ© l'efficacitĂ© du dĂ©tecteur de mouvement et nous avons codĂ© sur Arduino le module. L'objectif Ă©tait de lui faire afficher sur le moniteur du logiciel Arduino "Hi, People is coming" lorsqu'il dĂ©tecte du mouvement et "Watching" sinon. Pour ce faire nous avons trouvĂ© la page wiki du PIR Motion Sensor sur Seeedstudio : Et voici le code permettant de faire marcher le module : /*macro definitions of PIR motion sensor pin and LED pin*/ #define PIR_MOTION_SENSOR 2//Use pin 2 to receive the signal from the module void setup() { pinMode(PIR_MOTION_SENSOR, INPUT); Serial.begin(9600); } void loop() { if(digitalRead(PIR_MOTION_SENSOR))//if it detects the moving people? Serial.println("Hi,people is coming"); else Serial.println("Watching"); delay(200); } Le module de dĂ©tection de mouvement a une portĂ©e de dĂ©tection de 3 mĂštres (comme prĂ©vu par le constructeur) et lorsqu'il y avait du mouvement, il affichait les informations sur le serial monitor du logiciel Arduino : Ensuite nous nous sommes occupĂ©s du montage du robot que nous allions utiliser. ChĂąssis du robot : Ce robot utilise le Magician Chassis--DG007 que l'on peut trouver sur le site de Gotronic : Et pour en arriver au rĂ©sultat ci-dessus nous avons suivi le montage dont on peut trouver le dĂ©roulement ici: http://www.pyroelectro.com/tutorials/building_robot_chassis/hardware SĂ©ance 7 : 14/03/2023 ----------------------------------------------------- Programmation Dans la continuitĂ© de la sĂ©ance derniĂšre, le groupe de codage a continuĂ© Ă  travailler sur le code pour que le moteur fonctionne AVEC le module PIR Motion Sensor. Le plus gros problĂšme Ă©tait que le code faisait fonctionner le moteur seul mais dĂšs qu'on y incluait le module PIR le moteur s'arrĂȘtait de fonctionner. Lorsqu'on incluait le PIR, la connection du PIR prenait le dessus et bloquait la communication entre la carte Arduino et le Motor Shield. Nous avons changĂ© le port du PIR sur le GROVE de D4 Ă  D3. Nous avons programmĂ© : Un premier code pour qu'un seul moteur fonctionne selon le comportement du PIR Motion Sensor : #define PIR_MOTION_SENSOR 3 #include #include int switchstate = 0; AF_DCMotor motorA(1); AF_DCMotor motorB(4); void setup() { motorA.run(RELEASE); Serial.begin(9600); pinMode(PIR_MOTION_SENSOR, INPUT); } void loop() { switchstate = digitalRead(PIR_MOTION_SENSOR); if(switchstate == HIGH) { Serial.println("forward"); motorA.run(FORWARD); motorA.setSpeed(200); motorB.run(FORWARD); motorB.setSpeed(200); delay(1); } else { motorA.run(RELEASE); motorB.run(RELEASE); Serial.println("release"); delay(1); } delay(1); } Un deuxiĂšme code pour tester la connexion entre 2 moteurs et 2 capteurs, en faisant 2 couples moteur/capteur : #define PIR_MOTION_SENSOR_FRONT 3 #define PIR_MOTION_SENSOR_BACK 6 #include #include int switchstate_front = 0; int switchstate_back = 0; AF_DCMotor motorA(1); AF_DCMotor motorB(4); void setup() { motorA.run(RELEASE); motorB.run(RELEASE); Serial.begin(9600); pinMode(PIR_MOTION_SENSOR_FRONT, INPUT); pinMode(PIR_MOTION_SENSOR_BACK, INPUT); } void loop() { switchstate_front = digitalRead(PIR_MOTION_SENSOR_FRONT); if(switchstate_front == HIGH) { Serial.println("front"); motorA.run(FORWARD); motorA.setSpeed(200); delay(100); } else { motorA.run(RELEASE); Serial.println("frontrelease"); delay(100); } switchstate_back = digitalRead(PIR_MOTION_SENSOR_BACK); if (switchstate_back == HIGH) { Serial.println("back"); motorB.run(BACKWARD); motorB.setSpeed(200); delay(100); } else { motorB.run(RELEASE); Serial.println("backrelease"); delay(100); } delay(100); } Un dernier code qui s'approche trĂšs fortement du code final, capable de rĂ©aliser les actions de dĂ©placement (rotation, ligne droite, marche arriĂšre...) en fonction du capteur actif : #define PIR_MOTION_SENSOR_FRONT 3 #define PIR_MOTION_SENSOR_RIGHT 5 #define PIR_MOTION_SENSOR_LEFT 9 #define PIR_MOTION_SENSOR_BACK 6 #include #include int switchstate_front = 0; int switchstate_right = 0; int switchstate_left = 0; int switchstate_back = 0; AF_DCMotor motorR(1); AF_DCMotor motorL(4); void setup() { motorR.run(RELEASE); motorL.run(RELEASE); Serial.begin(9600); pinMode(PIR_MOTION_SENSOR_FRONT, INPUT); pinMode(PIR_MOTION_SENSOR_RIGHT, INPUT); pinMode(PIR_MOTION_SENSOR_LEFT, INPUT); pinMode(PIR_MOTION_SENSOR_BACK, INPUT); } void loop() { //Capteur FRONT switchstate_front = digitalRead(PIR_MOTION_SENSOR_FRONT); if(switchstate_front == HIGH) { Serial.println("front"); motorR.run(BACKWARD); motorR.setSpeed(250); motorL.run(BACKWARD); motorL.setSpeed(250); delay(3000); } else { motorR.run(RELEASE); motorL.run(RELEASE); Serial.println("frontrelease"); delay(100); } //Capteur RIGHT switchstate_right = digitalRead(PIR_MOTION_SENSOR_RIGHT); if(switchstate_right == HIGH) { Serial.println("right"); motorR.run(FORWARD); motorR.setSpeed(250); motorL.run(RELEASE); delay(1000); } else { motorR.run(RELEASE); motorL.run(RELEASE); Serial.println("rightrelease"); delay(100); } //Capteur LEFT switchstate_left = digitalRead(PIR_MOTION_SENSOR_LEFT); if(switchstate_right == HIGH) { Serial.println("left"); motorL.run(FORWARD); motorL.setSpeed(250); motorR.run(RELEASE); delay(1000); } else { motorR.run(RELEASE); motorL.run(RELEASE); Serial.println("leftrelease"); delay(100); } //Capteur BACK switchstate_back = digitalRead(PIR_MOTION_SENSOR_BACK); if (switchstate_back == HIGH) { Serial.println("back"); motorR.run(BACKWARD); motorR.setSpeed(250); motorL.run(BACKWARD); motorL.setSpeed(250); delay(100); } else { motorR.run(RELEASE); motorL.run(RELEASE); Serial.println("backrelease"); delay(100); } delay(100); } Conception et rĂ©adaptation d'un chĂąssis Dans un deuxiĂšme temps nous nous sommes occupĂ©s du montage de notre robot et une difficultĂ© est apparue : la taille des composants dont nous disposions n'Ă©taient pas calibrĂ©e avec le chĂąssis. En effet, les modules que nous voulions fixer au chĂąssis Ă©taient trop grand ou trop petit par rapport au chĂąssis. Pour pallier Ă  ce problĂšme, 2 choix s'offraient Ă  nous : RecrĂ©er le chĂąssis de zĂ©ro en y incluant des accroches pour les composants que nous allons y placer (moteurs, capteurs, batteries
) Garder le chĂąssis de base et crĂ©er des accroches pour les composants que nous allons y placer (moteurs, capteurs, batteries
) Nous sommes partis sur la 2e option et allons modĂ©liser sur Freecad, 4 accroches pour les modules PIR que nous allons fixer. Pour accrocher les capteurs, nous avons optĂ© pour une accroche en forme de L pliĂ©. Les piles et la carte Arduino possĂšdent des trous pour les visser directement. On fixera donc les piles en dessous du robot et l'Arduino au dessus. Les moteurs quant Ă  eux, seront au milieu avec les accroches prĂ©-fournies. Enfin, pour l'interrupteur et la LED (que nous n'avons finalement pas implĂ©mentĂ©), nous les placerons Ă  cĂŽtĂ© des piles en fabriquant une accroche. Ainsi tous les composants seront placĂ©s et il ne resterait plus qu'Ă  modĂ©liser une "coque" (le corps du robot).  ModĂšle 3D des supports pour PIR Motion Sensor (fichier Support capteurs.FCStd & Support capteurs - Inverse.FCStd) : SĂ©ance 8 : 21/03/2023 ----------------------------------------------------- Impression des supports pour capteurs Durant cette sĂ©ance, nous avons fait des finitions sur le modĂšle 3D des supports pour les PIR Motion Sensor, puis nous en avons lancĂ© deux en impression 3D pour ĂȘtre sĂ»rs de voir le rĂ©sultat avant la fin de la sĂ©ance. Les rĂ©sultats finaux Ă©tait trĂšs satisfaisant mais il nous a tout de mĂȘme permis de repĂ©rer deux problĂšmes : Un problĂšme de modĂ©lisation : erreur humaine. Le long trou du socle n'avait pas Ă©tĂ© perforĂ© entiĂšrement sur le fichier .stl, nous nous sommes donc retrouvĂ©s avec un socle bouchĂ© et trop Ă©pais pour pouvoir tenter de rĂ©parer le problĂšme. Les trous prĂ©vus pour fixer les capteurs Ă©taient trop proches d'environ 1 mm. Nous avons en mĂȘme temps dĂ©marrĂ© les impressions 3D et dĂ©coupes laser pour terminer nos projets personnels (sĂ©ance 3). Soudures Avant d'assembler le robot, nous devions nous charger de souder tous les fils : soit ensemble, soit avec des moteurs... Nous nous sommes initiĂ©s Ă  la soudure, Ă  la façon d'Ă©taler de l'Ă©tain sur des fils, de placer des gaines thermorĂ©tractables. A la fin de la sĂ©ance, il ne nous manquait plus que 4 soudures afin de rallonger certains fils. DĂ©but de l'assemblage du robot Nous avons surtout remonter ensemble les moteurs, le bloc de piles et la carte ARDUINO sur le chassis du robot. SĂ©ance 9 : 28/03/2023 ----------------------------------------------------- RĂ©sultat final des supports de PIR Motion Sensor Nous avons rĂ©cupĂ©rĂ© les supports pour les capteurs qui nous avions imprimĂ© en 3D. Le rĂ©sultat Ă©tait trĂšs satisfaisant : Ils sont solides Ils sont peu encombrants L'espacement des trous pour les vis est exact pour bien faire tenir le capteur Le diamĂštre des trous de vis est parfait : suffisamment Ă©troit pour ne pas avoir besoin d'Ă©crou Ă  l'arriĂšre sans pour autant devoir forcer Ă©normĂ©ment lorsque qu'on visse. (nous n'avons finalement pas utilisĂ© le modĂšle ci-dessus mais la version oĂč la fixation est positionnĂ©e sur le dessus, que l'on peut voir dans les images suivantes) Fin de l'assemblage du robot Avant de pouvoir nous pencher sur la programmation, il fallait finir d'assembler le robot. Nous avons commencĂ© par quelques soudures afin de rallonger les fils reliĂ©s aux moteurs pour qu'ils atteignent les entrĂ©es du Motor Shield. Ensuite nous avons fait passer les fils Ă  travers les trous du chĂąssis, de maniĂšre Ă  avoir un cĂąblage clair et pratique. Nous les avons connectĂ© aux bonnes entrĂ©es. On a aussi attachĂ© les capteurs Ă  l'avant et Ă  l'arriĂšre du robot. L'assemblage final a Ă©tĂ© rĂ©alisĂ© quelques jours plus tard, afin de s'occuper des dĂ©tails : l'emplacement de la batterie pour la carte Arduino, fixer (solidement) l'interrupteur. Ceci a Ă©tĂ© fait avec des colliers de serrage car ils sont pratiques, faciles Ă  poser et simple Ă  retirer si on veut changer quoi que ce soit. Le robot, finalement, ressemble Ă  ceci : Echecs du code Une fois que l’assemblage du robot Ă©tait fini, il Ă©tait temps de tester notre code final de la derniĂšre sĂ©ance, mais avec seulement deux capteurs (par dĂ©faut de commande, les deux derniers ne sont jamais arrivĂ©s). PlacĂ©s Ă  l’arriĂšre du robot, avec un sur chaque cĂŽtĂ©, notre robot devrait capter tout ce qui arrive des deux cĂŽtĂ©s et derriĂšre lui. Nous avons donc remodifer le code : une dĂ©tection Ă  l’arriĂšre gauche du robot le fait tourner Ă  droite puis avancer et une dĂ©tection Ă  l’arriĂšre droit le fait tourner Ă  gauche puis avancer, en prenant soin d’arrĂȘter les moteurs au bout d’un certain temps pour que le robot ne capte pas les murs ou le plafond qui sont en mouvement par rapport Ă  lui lorsqu’il bouge. Lorsqu’on a lancĂ© le code, le robot se mettait certes Ă  tourner et Ă  avancer lorsqu’on l’allumait, mais soit de maniĂšre trĂšs alĂ©atoire, soit il arrĂȘtait complĂštement de capter au bout d’un certain moment (malgrĂ© le fait qu’on avait mis des dĂ©lais assez courts). En plus de tout ça, il avait l’air de ne capter que du cĂŽtĂ© gauche, car il ne tournait qu’à droite Ă  chaque fois qu’on l’allumait. ThĂ©ories sur les diffĂ©rents problĂšmes qu’on a rencontrĂ© : comme Ă  la sĂ©ance 7, des branchements se gĂȘneraient entre eux un des capteurs Ă©tait peut ĂȘtre dĂ©faillant les dĂ©lais ne convenaient peut ĂȘtre pas au temps de rĂ©action des capteurs les capteurs se marchaient l’un sur l’autre (quand l'un dĂ©tecte un mouvement, l’autre aussi et les codes se confondent) une partie du code (le premier if du capteur gauche) aurait la prioritĂ© sur une autre (le if du deuxiĂšme capteur) AprĂšs avoir essayĂ© de modifier les dĂ©lais, de changer les branchements, de tester les capteurs un par un, notre code ne fonctionnait toujours pas comme on le souhaitait. Les capteurs se gĂȘnaient donc entre eux et la premiĂšre partie du code Ă©tait prioritaire sur la deuxiĂšme, ce qui gĂȘnait la dĂ©tection du capteur droit. Il fallait donc que l’on trouve : soit une maniĂšre de mettre les deux conditions du code sur le mĂȘme pied d’égalitĂ© soit une commande qui nous permettrait d’éteindre un capteur lorsque l’autre dĂ©tecte du mouvement, afin qu’ils ne se gĂȘnent plus entre eux. Voici notre code dĂ©fectueux : #define PIR_MOTION_SENSOR_RIGHT 6 #define PIR_MOTION_SENSOR_LEFT 3 #include #include int switchstate_right = 0; int switchstate_left = 0; AF_DCMotor motorR(1); AF_DCMotor motorL(4); void setup() { motorR.run(RELEASE); motorL.run(RELEASE); Serial.begin(9600); pinMode(PIR_MOTION_SENSOR_RIGHT, INPUT); pinMode(PIR_MOTION_SENSOR_LEFT, INPUT); } void loop() { //Capteur RIGHT switchstate_right = digitalRead(PIR_MOTION_SENSOR_RIGHT); if(switchstate_right == HIGH) { Serial.println("right"); motorR.run(FORWARD); motorR.setSpeed(250); motorL.run(BACKWARD); delay(500); motorR.run(FORWARD); motorL.run(FORWARD); delay(1000); } //Capteur LEFT switchstate_left = digitalRead(PIR_MOTION_SENSOR_LEFT); else if(switchstate_right == HIGH) { Serial.println("right"); motorL.run(FORWARD); motorR.setSpeed(250); motorR.run(BACKWARD); delay(500); motorR.run(FORWARD); motorL.run(FORWARD); delay(1000); } else { motorR.run(RELEASE); motorL.run(RELEASE); Serial.println("release"); delay(1000); } } Finition du code et test C'est quelques jours plus tard que nous avons trouvĂ© la solution. En se documentant, on se rend compte qu'il n'existe pas de synthaxe pour "Ă©teindre" un capteur. En revanche une autre idĂ©e nous vient. Afin d'utiliser le signal transmis par le capteur, on doit dĂ©clarer au dĂ©but de notre programme sur quelle entrĂ©e la capteur est connectĂ©, et surtout le fait qu'il s'agisse d'une entrĂ©e. pinMode(PIR_MOTION_SENSOR_RIGHT, INPUT); Arduino s'attend alors Ă  recevoir un signal. Or rien ne nous empĂȘche de forcer le Pin du capteur Ă  ĂȘtre une sortie. De cette façon, Arduino ne regarde que les signaux sortants (qui n'existent pas puisque ça n'aurait pas de sens) et ne fait plus attention aux signaux entrants : c'est une sorte de sens unique. On implĂ©mente alors deux lignes qui permettent en dĂ©but de condition de mettre l'autre capteur en OUTPUT, suivit de toutes les commandes puis Ă  la toute fin, une ligne pour faire passer de nouveau l'autre capteur en INPUT. Nous n'avions plus de problĂšmes de superposition de commandes. Nous avons Ă©galement ajoutĂ© du temps d'arrĂȘt directement Ă  la fin des commandes de mouvement et pas seulement avec une commande Ă  part. Ceci Ă©vite au robot d'avoir un air hystĂ©rique en enchaĂźnant immĂ©diatement avec un autre mouvement. if(switchstate_back == LOW) { if(switchstate_front == LOW) { motorR.run(RELEASE); motorL.run(RELEASE); Serial.println("release"); delay(2000); } } Enfin, nous avions utilisĂ© une commande else pour immobiliser le robot. Afin d'ĂȘtre certains que cette condition se rĂ©alise, nous avons prĂ©fĂ©rĂ© opter pour une imbrication de conditions : de cette façon on est sĂ»r que le robot ne bouge pas quand les deux capteurs ne dĂ©tectent rien. C'est ainsi que arrivons au programme final : #define PIR_MOTION_SENSOR_FRONT 6 #define PIR_MOTION_SENSOR_BACK 3 #include #include int switchstate_front = 0; int switchstate_back = 0; AF_DCMotor motorR(1); AF_DCMotor motorL(4); void setup() { motorR.run(RELEASE); motorL.run(RELEASE); Serial.begin(9600); pinMode(PIR_MOTION_SENSOR_FRONT, INPUT); pinMode(PIR_MOTION_SENSOR_BACK, INPUT); } void loop() { switchstate_front = digitalRead(PIR_MOTION_SENSOR_FRONT); switchstate_back = digitalRead(PIR_MOTION_SENSOR_BACK); if(switchstate_front == HIGH) { //Capteur FRONT pinMode(PIR_MOTION_SENSOR_BACK, OUTPUT); Serial.println("front"); motorR.run(FORWARD); motorR.setSpeed(250); motorL.run(BACKWARD); motorL.setSpeed(250); delay(200); motorR.run(BACKWARD); motorR.setSpeed(250); motorL.run(BACKWARD); motorL.setSpeed(250); delay(3000); motorR.run(RELEASE); motorL.run(RELEASE); delay(3500); pinMode(PIR_MOTION_SENSOR_BACK, INPUT); } if(switchstate_back == HIGH) { //Capteur BACK pinMode(PIR_MOTION_SENSOR_FRONT, OUTPUT); Serial.println("back"); motorR.run(BACKWARD); motorR.setSpeed(250); motorL.run(FORWARD); motorL.setSpeed(250); delay(200); motorR.run(FORWARD); motorR.setSpeed(250); motorL.run(FORWARD); motorL.setSpeed(250); delay(3000); motorR.run(RELEASE); motorL.run(RELEASE); delay(3500); pinMode(PIR_MOTION_SENSOR_FRONT, INPUT); } if(switchstate_back == LOW) { if(switchstate_front == LOW) { motorR.run(RELEASE); motorL.run(RELEASE); Serial.println("release"); delay(2000); } } } CĂ©lĂ©bration (avec un peu de chance) Notre projet est alors terminĂ©, ci-aprĂšs quelques tests (plus ou moins convaincants) qui dĂ©montre du bon fonctionnement du programme et de l'Ă©lectronique. Un lĂ©ger "soucis" concerne l'inclinaison des capteurs sur leur support. Le robot Ă©tant au niveau du sol fait que le capteur de devant (respectivement de l'arriĂšre) arrive Ă  capter du cĂŽtĂ© opposĂ© au sien. A part cela, nous sommes trĂšs satisfaits. SĂ©ance 10 : 28/03/2023 ---------------------------------------------------- DĂ©coupe de Joey : En dĂ©but de sĂ©ance, nous avons rapidement dĂ©coupĂ© au laser un modĂšle de Joey (Oggy et les Cafards) afin de sublimer notre crĂ©ation. On a utilisĂ© une image trouvĂ©e sur internet, puis nous avons repassĂ© les contours en rouge (dĂ©coupe) grĂące Ă  l'outil Plume sur InkScape. Fichier InkScape : joey.svg Soutenances : Support Powerpoint disponible en ligne (Google Slides) : Projet Joey BILAN SUR CE QUI A ÉTÉ RÉALISÉ / NON RÉALISÉ --------------------- Au fur et Ă  mesure que nous avancions dans notre projet, plusieurs idĂ©es ont Ă©mergĂ© et d'autres ont Ă©tĂ© abandonnĂ©es. Beaucoup d'entre elles ont abouti mais certaines n'ont pas vu le jour, soit par manque de temps, soit par manque de moyens ou d'expĂ©rience. Voici donc le bilan de ce que nous avons fait, et ce qui est restĂ© sur le bord : CE QUI A ÉTÉ RÉALISÉ Un circuit Ă©lectronique fonctionnel comprenant : 2 moteurs 1 carte Arduino UNO + 1 Shield de connectiques + 1 Motor Shield 2 PIR Motion Sensor 1 bloc Pile 1 batterie externe 1 interrupteur Une structure robuste et pratique composĂ©e de : 1 chĂąssis prĂ©fabriquĂ© 2 supports pour PIR Motion Sensor faits sur mesure en impression 3D Un programme fonctionnel sur l'IDE Arduino. Il permet de commander les mouvements du robot en fonction de l'Ă©tat des capteurs. CE QUI N'A PAS ÉTÉ RÉALISÉ Le circuit Ă©lectronique complet comprenant en tout 4 PIR Motion Sensor La carapace de notre robot (qui devait initialement ressemblĂ© Ă  un cafard) rĂ©alisĂ©e soit pas impression 3D ou dĂ©coupe 2D de piĂšces suivis de l'assemblage. La conception entiĂšre d'un nouveau chĂąssis pour optimiser la place nĂ©cĂ©ssaire Ă  nos composants, choisir l'emplacement des trous, des attaches... De mĂȘme, trĂšs certainement par design 3D. L'implĂ©mentation d'autres fonctionnalitĂ©s telles que : Un haut-parleur qui lancerait une musique quand le robot fuit L'utilisation d'un tilt switch qui permettrait au robot de s'Ă©teindre dĂšs qu'on le soulĂšverait Utiliser quelques LEDs soit pour un cĂŽtĂ© pratique, sinon par souci d'esthĂ©tique. GrĂące Ă  ce projet, nous avons appris Ă  nous familiariser avec les logiciels de modĂ©lisation 3D (FreeCAD, OpenSCAD) et 2D (InkScape) en plus des machines Ă  notre disposition (imprimantes 3D, dĂ©coupeuse laser...). Aussi, nous avons dĂ©couvert la programmation de composants Ă©lectroniques grĂące au logiciel ARDUINO couplĂ© aux composants SeeedStudio. On s'est Ă©galement initiĂ©s Ă  des tĂąches plus classiques comme la soudure pour notre circuit Ă©lectronique. Ce projet Ă©tait aussi trĂšs formateur du point de vue du travail de groupe. On a chacun rĂ©ussi Ă  s'inclure dans le projet en fonction de notre niveau. De plus, on a su rebondir sur nos Ă©checs en proposant des solutions ou alternatives. En gĂ©nĂ©ral, nous avons fait preuve de persĂ©vĂ©rance afin d'arriver Ă  ce rĂ©sultat Ă©poustouflant. Enfin, le travail de documentation Ă©tait une nouveautĂ© majeure inhĂ©rente Ă  ce projet. Cet aspect est d'autant plus pertinent que les compĂ©tences acquises grĂące Ă  celle-ci nous servirons sans aucun doute dans nos futurs projets. Groupe A2 doigts du succĂšs Membres du groupe : Alex CANAVAGGIO, AngĂšle EDMOND, Louise GALLY, Alicia LUONG SĂ©ance 1 : DĂ©couverte du Fablab Au cours de cette premiĂšre sĂ©ance, nous avons dĂ©couvert le Fablab de Sorbonne UniversitĂ©. Cet endroit possĂšde une capacitĂ© de crĂ©ation sans limites notamment grĂące aux Ă©quipements et matĂ©riaux disponibles. Etant encore rĂ©cent, le fablab est disponible au public et en libre-service afin de permettre un rĂ©el partage de savoir. Dans le cadre du projet que nous souhaitons rĂ©aliser, nous devons y incorporer un capteur permettant d'effectuer des mesures environnementales. SĂ©ance 2 : Introduction Ă  Arduino Pendant cette deuxiĂšme sĂ©ance, nous avons dĂ©couvert les bases du prototypage avec un Arduino Uno puis avec un M5. Avec l'Arduino, nous avons d'abord commencĂ© par le connecter au logiciel sur le PC, puis nous avons connectĂ© un capteur tempĂ©rature/humiditĂ©. En recherchant les codes d'instructions sur le wiki de Seeed Studio, nous avons rĂ©ussi Ă  rĂ©cupĂ©rer les donnĂ©es sur l'Arduino, puis sur un Ă©cran que nous avons Ă©galement connectĂ©. On a ensuite changĂ© quelques paramĂštres pour rendre l'affichage sur l'Ă©cran plus agrĂ©able (couleur, texte, alignement...) #include #include "rgb_lcd.h" #include "SHT31.h" rgb_lcd lcd; SHT31 sht31 = SHT31(); // dĂ©finir la couleur du fond const int colorR = 255; const int colorG = 100; const int colorB = 0; void setup() { // dĂ©finir le nombre de colonnes et de lignes de l'Ă©cran LCD: lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); lcd.print("Bonjour !"); // message s'affichant les premiĂšres secondes sht31.begin(); delay(1000); } void loop() { // mettre le curseur Ă  la colonne 0 et ligne 0 lcd.setCursor(0, 0); // afficher la tempĂ©rature sur l'Ă©cran en utilisant la valeur fournie par le capteur lcd.print("Temp : "); float temp = sht31.getTemperature(); lcd.print(temp); lcd.print(" C"); // afficher l'humiditĂ© sur l'Ă©cran en utilisant la valeur fournie par le capteur lcd.setCursor(0, 1); lcd.print("Hum : "); float hum = sht31.getHumidity(); lcd.print(hum); lcd.print(" %"); delay(1000); } Nous sommes ensuite passĂ©s au M5. C'est un capteur plus complet et plus rĂ©cent, mais dont l'utilisation de l'Ă©cran est un peu plus complexe. Nous avons donc recherchĂ© les instructions sur le wiki, et lancĂ© un programme "Hello World", en utilisant le code disponible sur Github. https://github.com/m5stack/M5Stack/blob/master/examples/Basics/HelloWorld/HelloWorld.ino Enfin, nous avons essayĂ© d'afficher les valeurs prises par le capteur de tempĂ©rature et humiditĂ© sur le M5. Pour cela, on a utilisĂ© la bibliothĂšque "Freefonts", tĂ©lĂ©chargĂ©e prĂ©alablement sur Github. #include #include #include "SHT31.h" #include "Free_Fonts.h" // Include the header file attached to this sketch unsigned long drawTime = 0; SHT31 sht31 = SHT31(); void setup(void) { M5.begin(); M5.Power.begin(); sht31.begin(); } void loop() { M5.Lcd.setTextColor(TFT_BLUE); // couleur du texte M5.Lcd.setFreeFont(FSBI24); // choix de la police // position du curseur sur l'Ă©cran int xpos = 10; int ypos = 60; M5.Lcd.fillScreen(TFT_BLACK); // remplir l'Ă©cran en noir pour effacer ce qui a Ă©tĂ© Ă©crit prĂ©cĂ©demment // affichage de la tempĂ©rature M5.Lcd.drawString("Temp :", xpos, ypos, GFXFF); // texte, x, y, police float temp = sht31.getTemperature(); M5.Lcd.drawFloat(temp, 2, xpos+150, ypos); //nombre flottant, nb de chiffres aprĂšs la virgule, x, y M5.Lcd.drawString(" C", xpos+260, ypos, GFXFF); ypos += 1.6*M5.Lcd.fontHeight(GFXFF); // retour Ă  la ligne // affichage de l'humiditĂ© M5.Lcd.drawString("Hum :", xpos, ypos, GFXFF); float hum = sht31.getHumidity(); M5.Lcd.drawFloat(hum, 2, xpos+140, ypos); M5.Lcd.drawString(" %", xpos+250, ypos, GFXFF); delay(2000); } SĂ©ance 3 : DĂ©couverte des logiciels de dessin graphique Au cours de cette sĂ©ance, on a dĂ©couvert des logiciels de dessins graphiques. Le premier Ă©tant le logiciel Inkscape, avec lequel on peut effectuer des images en 2D servant notamment afin de servir par la suite comme modĂšle pour gravure ou dĂ©coupeuse laser. On s'est tout d'abord entrainĂ©s Ă  la prise en main de ce logiciel en rĂ©alisant des dessins simples. Par la suite, nous avons utilisĂ© le logiciel OpenSCAD qui permet de rĂ©aliser des modĂ©lisations 3D, permettant ainsi de concevoir des objets 3D. Un autre logiciel permettant cette mĂȘme rĂ©alisation est FreeCAD, ci dessous le mĂȘme objet avec cette application. Projet Notre projet pour ce semestre consiste en l'assemblage d'un robot capable d'avancer en ligne droite, auquel nous incorporerons un capteur sonore. Le but est ainsi de relier la vitesse de rotation des roues Ă  l'intensitĂ© sonore, afin que plus il y ait de bruit, plus le robot avance rapidement. Nous allons ajouter Ă  ce robot un dĂ©tecteur de distance, de maniĂšre Ă  ce qu'il s'arrĂȘte automatiquement devant un obstacle. Pour la structure de base du robot, nous allons reprendre un modĂšle dĂ©jĂ  prĂ©conçu, que nous assemblerons au FabLab, puis le modifierons, notamment esthĂ©tiquement. Structure du robot Robot : https://www.gotronic.fr/art-chassis-magic-dg007-p-25708.htm Le capteur Capteur d'intensitĂ© sonore : https://wiki.seeedstudio.com/Grove-Loudness_Sensor/ (on choisit celui-ci car le capteur de son Ă©galement testĂ© Ă©tait trop sensible pour notre utilisation) int loudness; void setup() { Serial.begin(9600); } void loop() { loudness = analogRead(0); Serial.println(loudness); delay(200); } On a tĂ©lĂ©versĂ© le programme et ouvert la console sĂ©rie pour visualiser les valeurs de la variable loudness. En testant plusieurs intensitĂ©s sonores, on en a dĂ©duit que l'amplitude de la variable s'Ă©tend entre 0 et 300 environ quand on crie proche du capteur. Faire tourner les moteurs Ă  partir d'un seuil d'intensitĂ© sonore On a d'abord essayĂ© de faire avancer le robot Ă  partir d'un seuil d'intensitĂ© sonore, qu'on a fixĂ© Ă  loudness = 100 puisque cette valeur est facilement dĂ©passĂ©e lorsqu'on parle. Le problĂšme Ă©tant que la carte Arduino ne dĂ©livre que des tensions de 0 et 5V, on ne peut pas faire fonctionner les moteurs sans amplifier cette tension. On a donc commencĂ© par essayer d'allumer une LED pour Ă©tablir le seuil qu'on utilisera. int loudness; void setup() { Serial.begin(9600); pinMode(3, OUTPUT); } void loop() { loudness = analogRead(0); Serial.println(loudness); if (loudness > 100) { digitalWrite(3, HIGH); } else { digitalWrite(3, LOW); } delay(200); } Pour pouvoir faire fonctionner les moteurs, nous devions donc utiliser une source d'alimentation dĂ©livrant une tension adaptĂ©e au moteur. Nous avons utilisĂ© les piles fournies avec le robot. Pour connecter cette alimentation, nous avons utilisĂ© un relay. Enfin, nous avons effectuĂ© le mĂȘme branchement en reliant les cĂąbles aux moteurs des roues du robot. Chaque roue possĂšde son moteur : si on branche les 2 moteurs en parallĂšle, ils tournent Ă  la mĂȘme vitesse que s'il n'y avait qu'un moteur, et si on les branche en sĂ©rie ils tournent 2 fois moins vite. Faire tourner les moteurs Ă  une vitesse proportionnelle au niveau sonore Ainsi, pour le moment notre robot avance lorsque le volume sonore dĂ©passe une certaine intensitĂ©. Notre but est maintenant de faire varier la vitesse des moteurs proportionnellement au volume sonore. Pour cela, on essaye d'utiliser le signal PWM de l'Arduino. La carte Arduino dĂ©livre en sortie un signal numĂ©rique, qui ne peut prendre que deux valeurs : 0 et 5V. Or on veut que les moteurs tournent Ă  des vitesses diffĂ©rentes, donc il faut que l'Arduino dĂ©livre des tensions entre ces deux bornes. La PWM (Pulse Width Modulation = modulation de largeur d'impulsion en français) permet de crĂ©er un signal analogique Ă  partir du signal numĂ©rique fourni par l'Arduino. Le signal pourra alors varier parmi 256 valeurs (entre 0 et 255) et non plus seulement entre les deux valeurs prĂ©cĂ©dentes. La tension dĂ©livrĂ©e par le signal PWM est la tension moyenne dĂ©livrĂ©e par l'Arduino pendant une durĂ©e courte correspondant Ă  une frĂ©quence de 500 Hz. Ainsi, si le signal dĂ©livrĂ© par la carte Arduino pendant cette durĂ©e est toujours de 5V, le signal PWM sera aussi de 5V, et s'il est toujours de 0V, le signal PWM sera aussi de 0V. Par contre, on va pouvoir faire varier le rapport cyclique du signal en sortie de l'Arduino, c'est-Ă -dire le pourcentage de la durĂ©e oĂč l'on fait la moyenne pendant lequel le signal de l'Arduino a une tension de 5V. Par exemple, si le signal dĂ©livrĂ© par l'Arduino varie entre 0 et 5V pendant des durĂ©es Ă©gales, le rapport cyclique sera de 50% et le signal PWM dĂ©livrĂ© aura une tension de 50%*5V = 2,5V. Source : https://electrotoile.eu Pour pouvoir exploiter le signal PWM de l'Arduino, nous avons eu besoin d'un shield pour moteurs. On a donc commencĂ© par installer la bibliothĂšque correspondant Ă  ce nouveau composant sur Arduino : https://github.com/adafruit/Adafruit-Motor-Shield-library Ce nouveau composant nous permet de brancher directement les moteurs sur le shield sans avoir Ă  utiliser de relay et de source de tension externe. Afin de comprendre comment fonctionne notre nouveau circuit, on a commencĂ© par reproduire l'Ă©tape prĂ©cĂ©dente, c'est-Ă -dire faire tourner les moteur Ă  partir d'un certain seuil d'intensitĂ© : #include int loudness; AF_DCMotor motor(1); void setup() { Serial.begin(115200); // set up Serial library at 115 200 bps // turn on motor motor.setSpeed(200); } void loop() { loudness = analogRead(0); Serial.println(loudness); if (loudness>100) { // seuil motor.setSpeed(255); // vitesse du robot entre 0 et 255 motor.run(FORWARD); // si l'intensitĂ© sonore dĂ©passe le seuil, le robot avance Ă  la vitesse fixĂ©e delay(100); } else { motor.run(RELEASE); // sinon le robot s'arrĂȘte delay(100); } } L'amplitude de la valeur loudness s'Ă©tendant entre 0 et jusqu'Ă  environ 200 lorsqu'on crie, on a donc dĂ©cidĂ© pour le moment de tout simplement mettre la vitesse du robot Ă  la valeur donnĂ©e par le capteur. #include int loudness; AF_DCMotor motor(1); void setup() { Serial.begin(115200); // set up Serial library at 115 200 bps // turn on motor motor.setSpeed(200); } void loop() { loudness = analogRead(0); Serial.println(loudness); if (loudness<255) { if (loudness<50) { motor.run(RELEASE); delay(1); } else { motor.setSpeed(loudness); motor.run(FORWARD); delay(1); } } } Cependant, nous nous sommes vite rendu compte que lorsque le moteur se met Ă  tourner, la courbe de l'intensitĂ© sonore tracĂ©e par le serial plotter de l'application Arduino affichait des valeurs allant jusqu'Ă  500-600. Nous avons pensĂ© dans un premier temps que le bruit provoquĂ© par les moteurs influençait la valeur fournie par le capteur. Mais cette hypothĂšse ne tenait pas puisque les mĂȘmes valeurs subsistait quelle que soit la distance du moteur avec la capteur. On nous a alors suggĂ©rĂ© qu'il s'agissait peut-ĂȘtre d'une perturbation du signal d'entrĂ©e du capteur et de sortie pour faire fonctionner les moteurs, pouvant provenir du fait que les shields Grove et moteur sont imbriquĂ©s l'un au dessus de l'autre au dessus de l'Arduino. On a donc essayĂ© de sĂ©parer les 2 shields en utilisant 2 cartes Arduino. On a sĂ©parĂ© les programmes et connectĂ© les Arduino, mais le problĂšme semblait lĂ©gĂšrement diminuĂ© mais persistait : une fois un son dĂ©tectĂ©, le moteur se met en marche et ne s'arrĂȘte plus, puisque la valeur dĂ©livrĂ©e par le capteur ne correspond plus du tout Ă  l'intensitĂ© sonore environnante. Par peur de manque de temps créé par ce problĂšme nous nous sommes rendu au Fablab pendant les heures d'ouverture au public. Nous voyant en difficultĂ©, un Ă©tudiant travaillant au Fablab et un visiteur du Fablab nous ont gentiment proposĂ© leur aide et suggĂ©rĂ© que le problĂšme venait du manque de courant fournit Ă  la carte Arduino. En effet, les ports USB de l'ordinateur dĂ©livrent un courant de 500 mA, ce qui ne suffisait pas pour faire fonctionner la carte Arduino avec ses 2 shields. On a alors dĂ©branchĂ© la carte du port USB et on l'a alimentĂ©e directement en la branchant Ă  la table : immĂ©diatement, notre robot s'est mis Ă  fonctionner parfaitement comme nous l'avions programmĂ© ! #include int loudness; AF_DCMotor motor(1); // choix du moteur sur le shield moteur void setup() { Serial.begin(115200); // set up Serial library at 115200 bps motor.setSpeed(200); // allume le moteur } void loop() { loudness = analogRead(0); // lit la valeur de l'intensitĂ© sonore sur le capteur Serial.println(loudness); if ((loudness > 75) && (loudness < 400)) { // borne d'intensitĂ© sonore Ă  adapter pour que le robot dĂ©marre Ă  partir d'une certaine intensitĂ© motor.setSpeed(255*loudness/400); // et pour adapter l'intensitĂ© maximum Ă  la valeur maximum prise par la fonction set.Speed (entre 0 et 255) motor.run(FORWARD); delay(100); } else { motor.run(RELEASE); delay(100); } } Ensuite, comme nous voulions que le robot puisse tourner, nous avons reproduit le mĂȘme montage avec le mĂȘme programme, et nous avons branchĂ© les 2 cartes Arduino aux 2 roues de notre robot.  Nous avons alimentĂ© chaque carte avec 4 piles. Il reste encore Ă  rĂ©gler la vitesse de rotation des moteurs en adaptant les bornes d'intensitĂ© sonore sur le code, pour que le robot avance un peu plus rapidement. DĂ©tecteur de distance Afin de s'assurer que le robot ne fonce pas dans un mur, nous avons dĂ©cidĂ© d'y ajouter un capteur de distance, pour qu'il arrĂȘte automatiquement d'avancer lorsqu'il est Ă  moins de 30cm d'un obstacle. Le capteur utilisĂ© est le Ultrasonic Distance Sensor V2.0 de Grove : https://wiki.seeedstudio.com/Grove-Ultrasonic_Ranger/. Ci-dessous, le code que nous avons utilisĂ© pour tester le fonctionnement du capteur. #include "Ultrasonic.h" Ultrasonic ultrasonic(7); void setup() { Serial.begin(9600); } void loop() { long Range; bool A; Range = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval delay(250); if (Range > 30){ A = 1; } else{ A = 0; } Serial.print(A); if (A == 1){ // code Ă  ajouter en fonction du robot } else{ // code Ă  ajouter en fonction du robot } } Conception esthĂ©tique Pour la partie esthĂ©tique du robot, on choisit de rĂ©aliser une sorte de carrosserie Ă  la maison, autour de l'idĂ©e d'un cornichon avec des ailes d'avion, sans aucune raison particuliĂšre. Montage final Pour le montage final, on a effectuĂ© des soudures au niveau des fils reliĂ©s au 2 moteurs puisque l'on a souhaitĂ© minimiser le plus possible les risques de dĂ©connexions des fils. Egalement, on a finalisĂ© le programme du robot. Selon nos instructions, il est supposĂ© avancĂ© de maniĂšre accĂ©lĂ©rĂ©e proportionnellement Ă  l'intensitĂ© de la voix, et s'arrĂȘter automatiquement lorsqu'il va rencontrer un obstacle. Le programme est le suivant : #include "Ultrasonic.h" #include int loudness; int Range; AF_DCMotor motor(1); Ultrasonic ultrasonic(2); void setup() { Serial.begin(115200); motor.setSpeed(200); } void loop() { loudness = analogRead(0); Range = ultrasonic.MeasureInCentimeters(); Serial.println(Range); if (Range > 30){ if ((loudness > 75) && (loudness < 200)) { motor.setSpeed(255*loudness/200); motor.run(FORWARD); delay(50); } else { motor.run(RELEASE); delay(50); } } else{ motor.run(RELEASE); delay(50); } } AprĂšs plusieurs tests, et quelques rĂ©glages empiriques sur la sensibilitĂ© des capteurs de son, notre robot fonctionne. Les roues tournes correctement, et Ă  une vitesse satisfaisante, lorsque l'on fait du bruit, et il s'arrĂȘte si un obstacle est situĂ© devant lui. On note toutefois 3 dĂ©fauts : - Il est nĂ©cessaire d'utiliser une rallonge pour connecter le robot Ă  une prise secteur, et malgrĂ© ça, le robot reste volumineux - Le robot ne peut pas dĂ©tecter un obstacle s'il n'est pas directement en face de lui - Le robot a parfois tendance Ă  continuer Ă  avancer aprĂšs avoir arrĂȘter de faire du bruit Projets Personnel Alex Dessin et dĂ©coupe laser des piĂšces d'un coffre Ă  assembler J'ai d'abord voulu utiliser un modĂšle trouvĂ© en ligne de coffre Ă  assembler. Ne trouvant pas de format compatible avec Inkscape, je suis partie d'une simple image des piĂšces du coffre par dessus laquelle j'ai redessinĂ© une image vectorielle sur le logiciel. Mais aprĂšs plusieurs burn tests, le modĂšle que j'avais choisi ne s'emboitait pas correctement. J'ai donc complĂštement redessinĂ© mon propre modĂšle, disponible ici en format svg : Coffre.svg Attention, ce fichier est sur une seule page, mais il est trop grand pour rentrer sur les plaques utilisĂ©es au FabLab (600mm x 300mm), il a donc fallu le diviser en 2 fichiers et l'imprimer en 2 fois. Pour ça, j'utilise la Trotec Speedy 360. Il faut importer le fichier svg sur le logiciel du PC liĂ© Ă  la dĂ©coupeuse laser, puis faire la "mise au point", sĂ©lectionner le bon matĂ©riau (ici du bois MDF 3mm) et lancer la dĂ©coupe. Une camĂ©ra permet de vĂ©rifier en temps rĂ©el que la dĂ©coupe se fera au bon endroit. Je reste ensuite Ă  cĂŽtĂ© pour vĂ©rifier le bon dĂ©roulement du procĂ©dĂ©. Une fois toutes les piĂšces obtenues avec succĂšs, je les assemble avec une colle Ă  bois (les instructions de montage sont donnĂ©es sur la page mentionnĂ©e quelques lignes plus bas, je ne les réécris pas ici car ce serait trop long pour peu d'intĂ©rĂȘt). J'utilise des cure-dents pour les charniĂšres, afin de relier le couvercle au reste du coffre. Ensuite,, je le dĂ©core avec de la peinture acrylique sur le bois, et au feutre POSCA (jaune et noir) pour repasser sur les gravures. J'ai plus tard rĂ©utilisĂ© ce modĂšle de coffre pour un projet personnel, dont les dĂ©tails sont sur cette page : Coffres en bois. J'y rajoute quelques dĂ©tails quant Ă  la conception de ce premier modĂšle. Conception et impression 3D de 2 modĂšles de "chien Minecraft" Ce modĂšle 3D, composĂ© d'un couple de chiens reprenant le design du jeu Minecraft, a Ă©tĂ© fait avec le logiciel FreeCAD. Le modĂšle "debout" a Ă©tĂ© créé en ajoutant diffĂ©rent parallĂ©lĂ©pipĂšdes les uns accolĂ©s aux autres, selon des dimensions trouvĂ©es sur des images internet, et avec une Ă©chelle un peu arbitraire (le but Ă©tait que l'objet final fasse entre 5 et 10 cm). Il y a une simple rotation pour la queue. Le modĂšle "assis" est une copie du modĂšle "debout", auquel j'ai rajoutĂ© des rotations de diffĂ©rentes valeurs autour du mĂȘme axe pour les pates et le corps, puis des translations sur ces mĂȘmes parties de façon arbitraire, jusqu'Ă  ce que le rendu finale me plaise, et de façon Ă  ce que les 4 pattes reposent sur le mĂȘme plan. Le fichier est disponible ici : Duo de chiens.stl Il a ensuite Ă©tĂ© imprimĂ© avec une imprimante du FabLab, avec du filament PLA blanc. Pour ça, on importe un fichier .stl (fichier 3D) dans le logiciel IdeaMaker, sur l'ordinateur connectĂ© aux imprimantes 3D. On sĂ©lectionne l'imprimante, les paramĂštres d'impression (taux de remplissage, couleur du fil...), puis on lance l'impression. Pour ces 2 chiens, ça a durĂ© environ 6h. AprĂšs avoir enlevĂ© les supports gĂ©nĂ©rĂ©s automatiquement par le logiciel, le rendu final est conforme Ă  mes attentes. Une des pattes s'est dĂ©tachĂ©e pendant que je retirais les supports, mais elle a pu ĂȘtre recollĂ©e sans problĂšme. J'ai ensuite dĂ©cidĂ© de peindre un des deux. AngĂšle Conception de coquetiers en 3DDans un premier temps, j'ai commencĂ© par dessiner la forme d'un coquetier sur Inkscape. Puis j'ai coupĂ© le dessin en 2 et je l'ai mis Ă  la position (0;0), tout en haut Ă  gauche de la page et enregistrĂ© au format svg.   Ensuite, j'ai importĂ© le dessin sur Freecad, et j'ai utilisĂ© la fonction Revolve pour crĂ©er un solide.     J'ai ensuite lancĂ© l'application ideaMaker pour l'impression, oĂč j'ai dupliquĂ© le coquetier pour faire 3 exemplaires et paramĂ©trĂ© mon impression. Ces coquetiers ne sont pas destinĂ©s Ă  ĂȘtre utilisĂ©s pour l'alimentation, je les ai donc imprimĂ© en PLA blanc. coquetier.stl Conception d'une maison Ă  la dĂ©coupeuse laser J'ai dessinĂ© sur Inkscape cette maison et entourĂ© chaque face de crĂ©neaux pour l'assemblage. Ces crĂ©neaux sont adaptĂ©s Ă  un dĂ©coupage sur du bois de 3mm, mais je n'y ai pas pensĂ© au moment de choisir la planche, et j'ai utilisĂ© du contreplaquĂ© de 5mm. Le rĂ©sultat m'a tout de mĂȘme plu !Cependant, en raison de l'inclinaison du toit, il a fallu poncer un peu les crĂ©neaux pour qu'ils s'emboitent bien. maison.svg Louise Conception et impression d'un "chien Minecraft" en 3D Avec l'utilisation du logiciel OpenSCAD : cube([28.125,18.75,18.75]); translate([- 14,-3,0]) cube([14,24.75,21.75]); translate([-24,0,0]) cube([10,18.75,18.75]); translate([-34,5,0]) cube([10,10,10]); translate([-17.5,0,18.75]) cube([3.5,6,6]); translate([-17.5,12.75,18.75]) cube([3.5,6,6]); translate([-9.5,10.75,-21]) cube([6,6,22]); translate([-9.5,2,-21]) cube([6,6,22]); translate([20,10.75,-21]) cube([6,6,22]); translate([20,2,-21]) cube([6,6,22]); rotate([0,60,0]) translate([-2,6.5,29]) cube([6,6,25]); chien.stl Ci-dessus le chien gĂ©nĂ©rĂ© par le code. Gravure d'une image Afin de me familiariser avec l'utilisation de Inkscape et surtout de la dĂ©coupeuse laser, j'ai commencĂ© par simplement graver une image trouvĂ©e sur internet. Pour cela, il a d'abord fallut modifier l'image en dehors d'Inkscape, pour s'assurer que le contraste entre les parties claires et foncĂ©es soit optimal. AprĂšs cela, il ne restait qu'Ă  coller l'image dans Inkscape et de l'entourer d'un rectangle rouge pour la dĂ©coupe. J'ai de plus dĂ©cidĂ© d'ajouter un rectangle sur l'image, dans lequel j'ai Ă©cris "La ProphĂ©tie des Grenouilles" (titre du dessin animĂ© dont est tirĂ© l'image), pour me familiariser avec d'autres outils de l'application. grenouilles.svg Ci-dessous l'image originale et l'image modifiĂ©e pour avoir le meilleur contraste possible. AprĂšs cela, il suffisait de lancer l'impression sur la dĂ©coupe laser du Fablab, pour obtenir le rĂ©sultat final : DĂ©coupe 2D d'une lune en relief Mon projet final pour la dĂ©coupe laser Ă©tait donc de fabriquer une lune en relief, c'est-Ă -dire composĂ©e de cercles qui viennent s'imbriquer autour de l'arc de cercle principal. Pour cela j'ai, sur Inkscape, d'abord créé le corps principal de la lune en utilisant deux arcs de cercle collĂ©s ensemble. Il a fallut par la suite ajouter des encoches correspondant Ă  l'Ă©paisseur du matĂ©riaux utilisĂ© (j'ai dĂ©cidĂ© de mettre 3,5cm pour un bois de 3cm mais ce n'Ă©tait pas assez, il m'a fallu poncer aprĂšs coup, l'idĂ©al dans ce cas serait sans doute de 3,7cm). Puis, au niveau des encoches, mesurer la taille de l'arc de cercle avec l'outil rĂšgle d'Inkscape (cf. photo), ce qui nous donne le diamĂštre de chacun des cercles Ă  crĂ©er. Une fois les cercles crĂ©er, il faut leur ajouter des encoches de la mĂȘme taille qu'on avait mis au corps principal. lune.svg L'objet a ensuite Ă©tĂ© dĂ©coupĂ© sur une planche en bois suivant les trais rouges par la dĂ©coupeuse laser du Fablab. Il ne restait plus qu'Ă  l'assembler. Alicia Conception et impression de poignĂ©e de commode en 3D Dans le cadre du projet personnel du Fablab, j'ai choisi d'imprimer des poignĂ©es de commode et un chien Ă  l'aide du logiciel Openscad. Dans un premier temps, j'ai rĂ©alisĂ© deux poignĂ©es de commode par l'association de cylindres et de sphĂšres emboĂźtĂ©s. De plus, il a fallu crĂ©er un trou pour faciliter l'entrĂ©e d'une vis. Le projet Ă©tant simple, cela n'a pas Ă©tĂ© trop complexe Ă  rĂ©aliser. Par la suite, j'ai repris le code de ma camarde Louise, afin de rĂ©aliser (ou du moins essayer) de faire un corgi : Pour les poignĂ©es de porte, il fallait prendre en considĂ©ration dans les paramĂštres, de l'utilisation quotidienne de ces derniĂšres. Par consĂ©quent, il faut les rendre rĂ©sistante en augmentant le remplissage qui ici a Ă©tĂ© mis de 30%. Cependant, il n'y avait pas la couleur que je souhaitais dans l'imprimante 3D. J'ai donc dĂ» remplacer moi-mĂȘme le fil. Pour se fait, il fallait tout d'abord chauffer le fil dĂ©jĂ  prĂ©sent dans la machine jusqu'Ă  une tempĂ©rature souhaitĂ©e. Par la suite, on peut retirer le fil et incĂ©rer celui qui nous intĂ©resse Ă  l'intĂ©rieur de la machine. Il faut ensuite faire fondre une nouvelle fois faire chauffer le plastique souhaitĂ© et laisser l'imprimante 3D sortir le plastique ainsi fondu pour qu'elle retire les restes du fil prĂ©cĂ©dent qui Ă©tait restĂ© dans l'imprimante. Fichier de l'impression 3D : chien et poignĂ©es de porte.scad Le rĂ©sultat a Ă©tĂ© trĂšs satisfaisant : Projet dĂ©coupe laser Pour la dĂ©coupeuse laser, j'ai choisi de faire des porte-clĂ©s en bois pour ensuite les donner Ă  ma famille. Pour ce fait, j'ai utilisĂ© le logiciel Inkscape pour dessiner le modĂšle : chat.svg Pour rĂ©aliser la tĂȘte du chat, je me suis inspirĂ©e d'une image trouvĂ©e sur internet. Par la suite, je voulais m'assurer de la rigiditĂ© du porte-clĂ©s en choisissant un bois assez costaud. Groupe A3 APaR đŸŒ” Informations pratiques : PrĂ©noms et NOMS: Alexandre TAUFFLIEB, Pola SZOPKA, Menouha Rachel LAHMI Cursus : CMI Physique Groupe A Timeline : S2 (2023) Introduction au Fablab SĂ©ance 1 : introduction au Fablab et au projet SĂ©ance 1 : introduction au Fablab et au projet Notre idĂ©e de projet est de crĂ©er un arroseur automatique utilisant un capteur d'humiditĂ©. Ainsi, l'objet créé pourra garder n'importe quelle plante ("classique") assez humide plus rationnellement qu'un arroseur automatique programmĂ© exclusivement sur des horaires. Notamment, l'objet s'adapte aux saisons selon l'humiditĂ© de l'environnement de la plante et est donc plus adaptĂ© Ă  la plante et Ă  la quantitĂ© d'eau nĂ©cessaire Ă  son Ă©volution .Le systĂšme peut ainsi s'Ă©tendre Ă  un ensemble de types de plantes plus large, avec un rĂ©servoir d'eau qui avertit l'utilisateur quand il est vide . Capteurs Grooves utilisĂ©s : DĂ©tecteur d'humiditĂ© dans le sol : Grove Moisture Sensor . DĂ©tecteur de niveau d'eau dans le rĂ©servoir : Grove Water Sensor . SĂ©ance 2 : Capteurs, et prototypage Ă©lectronique SĂ©ance 2 : Capteurs, et prototypage Ă©lectronique Capteur Arduino: Image d'un Arduino assemblĂ© Ă  un Shield : L'objectif est d'afficher la tempĂ©rature et l'humiditĂ© de l'air sur l'ordinateur puis sur Ă©cran LCD grĂące Ă  une carte Arduino(+Shield) et Ă  un capteur d'humiditĂ© et de tempĂ©rature. Pour commencer Ă  utiliser un capteur d'humiditĂ© et de tempĂ©rature (SHT31) grĂące une carte Arduino, nous avons d'abord trouvĂ© un programme et la librairie associĂ©e sur Wiki Seeed Studio et Github. Ces derniers nous permettent d'afficher les valeurs de la tempĂ©rature avec la commande Serial Monitor en utilisant le programme suivant: #include #include #include "SHT31.h" SHT31 sht31 = SHT31(); void setup() { Serial.begin(9600); while(!Serial); Serial.println("begin..."); sht31.begin(); } void loop() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); Serial.print("Temp = "); Serial.print(temp); Serial.println(" C"); //The unit for Celsius because original arduino don't support speical symbols Serial.print("Hum = "); Serial.print(hum); Serial.println("%"); Serial.println(); delay(1000); } Dans la console de l'IDE, l'ordinateur affiche par exemple les valeurs suivantes : Temp = 24.77 C Hum = 31.22% Temp = 24.79 C Hum = 31.30% Temp = 24.76 C Hum = 31.20% Temp = 24.76 C Hum = 31.09% Temp = 24.73 C Hum = 31.11% Temp = 24.71 C Hum = 31.05% Temp = 24.71 C Hum = 31.09% On connecte ensuite l'Ă©cran LCD,  Ă  la carte Arduino. On trouve Ă  nouveau la librairie associĂ©e sur GitHub pour l’écran LCD. Pour afficher les valeurs sur l'Ă©cran LCD, on s'est basĂ© un programme de code pour afficher " Card Works " sur l'Ă©cran : #include #include "rgb_lcd.h" rgb_lcd lcd; const int colorR = 255; const int colorG = 0; const int colorB = 0; void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); // Print a message to the LCD. lcd.print("hello, world!"); delay(1000); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis()/1000); delay(100); } On a ensuite pu Ă©crire et utiliser le programme suivant pour la carte Arduino : #include #include #include "SHT31.h" #include #include "rgb_lcd.h" rgb_lcd lcd; const int colorR = 255; const int colorG = 0; const int colorB = 188; SHT31 sht31 = SHT31(); void setup() { Serial.begin(9600); while(!Serial); Serial.println("begin..."); sht31.begin(); // set up the LCD's number of columns and rows: lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); // Print a message to the LCD. lcd.setCursor(0, 0); lcd.print("Card works !"); lcd.setCursor(1, 1); lcd.print(" (-^_^-) "); delay(5000); } void loop() { float temp = sht31.getTemperature(); float hum = sht31.getHumidity(); Serial.print("Temp = "); Serial.print(temp); lcd.setCursor(0, 0); lcd.print("Temp = "); lcd.print(temp); Serial.println(" C"); //The unit for Celsius because original arduino don't support special symbols Serial.print("Hum = "); Serial.print(hum); lcd.setCursor(0, 1); lcd.print("Hum = "); lcd.print(hum); Serial.println("%"); Serial.println(); lcd.setCursor(12, 1); lcd.print("%"); delay(1000); } L'affichage a bien marchĂ© grĂące Ă  ce programme. On peut lire sur l'Ă©cran la tempĂ©rature et l'humiditĂ© de l'air . M5Stack Core ESP32 Programme « Hello Word » donnĂ©e en exemple par le constructeur : /* ******************************************************************************* * Copyright (c) 2021 by  M5Stack *                 Equipped with M5Core sample source code * Visit for more information: https://docs.m5stack.com/en/core/gray * Describe: Hello World * Date: 2021/7/15 ******************************************************************************* */ #include /* After M5Core is started or reset the program in the setUp () function will be run, and this part will only be run once. */ void setup() {   M5.begin();        // Init M5Core.   M5.Power.begin();  // Init Power module.   /* Power chip connected to gpio21, gpio22, I2C device     Set battery charging voltage and current     If used battery, please call this function in your project */   M5.Lcd.print("Hello World");  // Print text on the screen (string) } /* After the program in setup() runs, it runs the program in loop() The loop() function is an infinite loop in which the program runs repeatedly */ void loop() { Le programme fonctionne , « Hello World »apparaĂźt Ă  l’écran . Pour afficher la tempĂ©rature et l'humiditĂ© sur l'Ă©cran du M5Stack, nous avons dĂ» retrouver le programme en utilisant Chat GPT (Programme original perdu et contrainte de temps). Voici le code ainsi obtenu: #include #include #define DHTPIN 36 // Pin du capteur DHT #define DHTTYPE DHT11 // Type de capteur DHT DHT dht(DHTPIN, DHTTYPE); void setup() { M5.begin(); dht.begin(); } void loop() { float temperature = dht.readTemperature(); // Lecture de la tempĂ©rature float humidity = dht.readHumidity(); // Lecture de l'humiditĂ© M5.Lcd.fillScreen(BLACK); // Effacement de l'Ă©cran M5.Lcd.setTextSize(3); // Taille du texte M5.Lcd.setTextColor(WHITE); // Couleur du texte M5.Lcd.setCursor(10, 10); // Position du texte M5.Lcd.printf("Temp: %.1f C", temperature); // Affichage de la tempĂ©rature M5.Lcd.setCursor(10, 60); // Position du texte M5.Lcd.printf("Humidite: %.1f %%", humidity); // Affichage de l'humiditĂ© delay(2000); // Attente de 2 secondes } Le programme original fonctionnait : on peut lire sur l’écran la tempĂ©rature et l’humiditĂ© de l’air. Malheureusement, lorsque nous avons Ă©crit notre premier programme, les emplacements de texte n'avaient pas bien Ă©tĂ© paramĂ©trĂ©s et les mesures s'affichaient en tout petit et tendaient Ă  se superposer. Toutefois, le programme ci-dessus prend quand Ă  lui dĂ©jĂ  en compte la taille des caractĂšres et leur emplacement et, donc, en l'utilisant les donnĂ©es devraient s'affichaient plus grandes et bien une en dessous de l'autre . SĂ©ance 3:Dessin 2D 3D ,Impression 3D ,DĂ©coupe Laser SĂ©ance 3:Dessin 2D 3D ,Impression 3D ,DĂ©coupe Laser Dessin 2D : Inskcape Ce logiciel permet de dessiner en 2D afin de rĂ©aliser une dĂ©coupe /gravure laser. Des formes que nous pouvons transformer et utiliser Ă  notre guise sont dĂ©jĂ  proposĂ©es par le logiciel. Il suffit de le paramĂ©trer selon ce qu'on cherche Ă  dessiner. Le rouge est destinĂ© Ă  la dĂ©coupe et le noir Ă  la gravure (Attention Ă  bien suivre les conventions !). Nous avons ainsi pu dessiner une petite tĂȘte de Robot : ModĂ©lisation 3D : Open SCAD Ce logiciel peut ĂȘtre utilisĂ© pour modĂ©liser un objet en 3D . Ce logiciel fonctionne de la maniĂšre suivante, il suffit d’entrer un code pour une forme particuliĂšre que l’on souhaite dessiner en 3D (cela fonctionne aussi pour les objets en 2D )pour que le logiciel la dessine. On peut trouver ce code sur : https://openscad.org/cheatsheet/ .On peut ainsi dessiner un cube, par exemple .Dans notre cas nous avions pour objectif de dessiner un cube trouĂ©e sur ses 6 faces .Pour cela il suffit d’entrer le code du cube puis de faire une diffĂ©rence avec 6 petits cylindre placĂ©s au centre de chacune des 6 faces . Voici le code utilisĂ© ,suivi de la figure qu’il a permit de construire . difference(){ cube(50, center = true); union(){ cylinder(60, 5, 5, center = true); rotate ([90,0,0]) cylinder(60, 5, 5, center = true); rotate ([0,90,0]) cylinder(60, 5, 5, center = true); } } FreeCAD Voici un second logiciel de modĂ©lisation 3D .Contrairement Ă  OpenScade , ce logiciel ne fonctionne pas avec des codes qu’il faut importer d’un site externe. Le logiciel lui-mĂȘme propose des formes prĂ©dĂ©finies que nous pouvons utilisĂ©s Ă  notre guise pour former l’objet que l’on souhaite . Comme prĂ©cĂ©demment notre mission consistait Ă  dessiner un cube trouĂ©e sur ses 6 faces. Pour cela il suffisait en premier lieu de sĂ©lectionner notre cube puis de le trouer en utilisant l’option Cut (toutes les informations sont indiquĂ©es sur les images ci-dessous ) Option Cut ou Soustraction : Pour centrer notre cylindre(qui fera office de trous) au centre des surfaces du cube :RĂ©gler la position( ou sa taille) de celui-ci en cliquant sur le cylindre dans l'onglet applications Ă  gauche .Les paramĂštres s’afficheront et il sera possible de rĂ©aliser les modifications voulues . Pour plus de paramĂštres cliquer sur l’option tĂąches de la fenĂȘtre . Voici notre objet achevĂ©e et son suivi de conception Ă  gauche sur la fenĂȘtre . Projet : SĂ©ance 4 : Conception du projet Arroseur de plante SĂ©ance 4 : Conception du projet Arroseur de plante MatĂ©riel nĂ©cessaire : DĂ©tecteur d'humiditĂ© dans le sol DĂ©tecteur de niveau d'eau ) Pompe Ă  eau Relais M5 STACK Carte Arduino Ecran OLed 128 X 62 Test capteur humiditĂ© Pour connaĂźtre les valeurs que le capteur d'humiditĂ© dans le sol enregistre selon l'arrosage d'une plante, on a créé un programme Arduino pour prendre les donnĂ©es. On a ensuite insĂ©rĂ© au programme des valeurs seuils Ă  partir desquelles l'arroseur automatique devrait se mettre en route .(car plante trop sĂ©che). SĂ©ance 5 : soudure et test de la pompe SĂ©ance 5 : Soudure et Test de la pompe Soudure de la pompe : La premiĂšre pompe que nous avions l'intention d'utiliser n'avait pas de terminaisons adaptĂ©es pour la connecter au relais .Il a fallut la souder Ă  des cĂąbles adaptĂ©s. Pour rĂ©aliser la soudure ,Il faut au prĂ©alable dĂ©couper un peu de l'isolant sur les cĂąbles auxquels on voudrait connecter le relais puis lui rajouter de l'Ă©tain fondu Ă  l'aide du fer Ă  souder. Prendre des cĂąbles du pont et de la mĂȘme façon leur dĂ©couper un peu de l'isolant, puis leur rajouter de l'Ă©tain. Souder le tout Ă  l'aide du fer Ă  souder. Enfin ,rajouter de la gaine thermo rĂ©tractable pour isoler le tout. Test de la pompe : Pour connaĂźtre les fonctionnalitĂ©s et propriĂ©tĂ©s de la pompe nous nous sommes documenter sur Seeed Studio. Afin de bien tester le fonctionnement de la pompe nous l’avons brancher Ă  une alimentation de 3 V environ. Pour notre pompe, il faut l'activer 1 minute pour avoir 100 ml. void setup() { pinMode(4, OUTPUT); } void loop() { digitalWrite(4, HIGH); delay(10000); digitalWrite(4, LOW); delay(10000); } Voici les tests de la pompe en cours de rĂ©alisation . Nous avons utilisĂ© une bredboard pour faciliter les branchements lors des tests et le tuyau utilisĂ© ci-dessous diffĂšre de celui utilisĂ© finalement . SĂ©ance 6: Changements drastique du projet SĂ©ance 6: Changements drastique du projet Lorsque nous avons rĂ©flĂ©chit au rĂ©servoir allant avec l'arroseur automatique, nous avons essayĂ© de le concevoir et de l'imprimer en 3D. Impression 3D du rĂ©servoir : Nous avons conçu notre modĂšle  de rĂ©servoir sur FreeCad en suivant le mode de fonctionnement du logiciel comme appris prĂ©cĂ©demment (SĂ©ance 3). Pour l'impression du rĂ©servoir, il faut au prĂ©alable exporter notre fichier de FreeCad au format STL car sinon le logiciel d’impression IdeaMaker ne reconnaĂźt pas le fichier. Nous nous sommes servi(e)s du wiki pour avoir une bonne connaissance du fonctionnement de l’imprimante et du logiciel associĂ© dans la section tutoriel. On imprime le rĂ©servoir d'eau sans le couvercle : ces deux parties ont Ă©tĂ© sĂ©parĂ©es avec l'outil cut. Voici notre rĂ©servoir rĂ©servoir modĂ©lisĂ© grĂące Ă  FreeCad : Nous avons donc tentĂ© d'imprimer grĂące au logiciel Idea-Maker notre rĂ©servoir en deux parties distinctes en l'important donc au format STL sur l'ordinateur de la salle des imprimantes . Voici la forme attendue et simulĂ©e sur Idea-Maker pour le bas de notre rĂ©servoir . Avant de lancer l'impression, nous avons paramĂ©trĂ© notre impression afin de lui accorder les supports nĂ©cessaire Ă  une impression favorable et optimale ainsi que lui configurĂ© l'Ă©paisseur, la densitĂ© de remplissage de l'objet  et le motif d'impression souhaitĂ©. Nous avons ensuite cherchĂ© une imprimante disponible et y avons ajoutĂ© du fil de la couleur que l'on souhaitĂ© : Avant de lancer l'impression , nous l'avons simulĂ©e afin de vĂ©rifier les supports : En dĂ©pit de tous nos efforts, notre impression a ratĂ© pour des raisons inconnues. On peut expliquer cet Ă©chec par la complexitĂ© et le nombre important de vide dans notre objet ce qui complexifiait son impression . RĂ©servoir en PMMA AprĂšs l'Ă©chec de l'impression 3D du rĂ©servoir et en vue du temps restant pour prĂ©senter notre projet. Nous avons dĂ©cidĂ© de simplifier quelques aspects du projet. Le rĂ©servoir d'eau prĂ©vu sera destinĂ© Ă  une plante du Fablab qui possĂšde dĂ©jĂ  un pot ,cela nous Ă©viter de perdre le temps d'en concevoir et tentĂ© d'imprimer 1. Ci-dessous, la plante Ă  laquelle sera dĂ©diĂ©e notre arroseur :nous l'avons nommĂ©e Emeline. Le pot fait 13,5 centimĂštres de diamĂštre. Le rĂ©servoir est de 18,5 centimĂštres en largueur et en longueur. Pour pouvoir dĂšs Ă  prĂ©sent le construire, nous avons pensĂ© un rĂ©servoir carrĂ© qui sera calĂ© sur le pot : la face haute du rĂ©servoir tient sur le pot. Le rĂ©servoir est en PMMA. Nous avons dĂ©jĂ  dĂ©coupĂ© dans l'atelier l'extĂ©rieur de ce premier: A la prochaine sĂ©ance, nous dĂ©couperons le reste de la structure de notre rĂ©servoir afin de l'adapter selon les piĂšces Ă©lectroniques qui seront utilisĂ©s : ainsi si certaines piĂšces ont besoin d'ĂȘtre abriter de l'eau, le couvercle pourra ĂȘtre ajustĂ© pour laisser passer les fils des appareils. Programme complet final de l'Arduino Nous avons pu grĂące Ă  tous les tests effectuĂ©s et ayant tous le matĂ©riel Ă  notre disposition Ă©crire le programme quasi final(il manque la partie du capteur de niveau d'eau ) de notre carte Arduino et ainsi programmer notre arroseur . En langage naturel, nous voulons que le code opĂšre plusieurs opĂ©rations. Nous avons ensuite utilisĂ© Chat GPT pour traduire le code du langage naturel en code C. Des modifications ont Ă©tĂ© effectuĂ© sur celui-ci. mesurer le niveau d’eau du rĂ©servoir avec le Watersensor si le rĂ©servoir est vide : faire clignoter le LCD en rouge sinon : mesurer le niveau d’humiditĂ© si le niveau d’humiditĂ© de la plante est en dessous de 400: ouvrir le relai attendre 30 secondes fermer le relai refaire le programme toute les 24h const int waterSensorPin = A0; const int relayPin = 2; const int ledPin = 3; void setup() { pinMode(relayPin, OUTPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { int waterLevel = analogRead(waterSensorPin); if (waterLevel < 200) { // Si le rĂ©servoir est vide, faire clignoter la LED rouge blinkRedLED(); } else { // Si le rĂ©servoir n'est pas vide, mesurer le niveau d'humiditĂ© int humidityLevel = analogRead(A1); Serial.println(humidityLevel); if (humidityLevel < 400) { // Si le niveau d'humiditĂ© est faible, ouvrir le relai, attendre 30 secondes et fermer le relai digitalWrite(relayPin, HIGH); delay(60000); digitalWrite(relayPin, LOW); } } // Refaire le programme toutes les 24 heures delay(86400000); } void blinkRedLED() { digitalWrite(ledPin, HIGH); delay(500); digitalWrite(ledPin, LOW); delay(500); } Nous avons Ă©galement effectuĂ© des tests sur ce code pour vĂ©rifier qu'il programme notre arroseur comme voulu . Pour cela ,il a fallut que l'on relie tous les composants entre eux et que l'on rĂ©alise le circuit Ă©lectronique final de notre arroseur . Voici tous nos composants connectĂ©s Ă  l'Arduino, les composants non indiquĂ©s sur l'image ci-aprĂšs n'ont pas Ă©tĂ© utilisĂ©s. Nous avons ainsi pu simuler tester avec deux tasses pleines d'eau, le fonctionnement de notre arroseur automatique : Le fonctionnement est opĂ©rationnel : Lorsque le capteur d'humiditĂ© estime que l'humiditĂ© est trop basse il communique l'information au relais qui lui active la pompe qui s'actionne et dans notre cas pratique fait passer l'eau d'une tasse Ă  l'autre .La LED s'allume simultanĂ©ment en vert . SĂ©ance 7 : Soudures SĂ©ance 7 : Soudures La premiĂšre pompe que nous avons soudĂ©e prĂ©cĂ©demment n'Ă©tait pas trĂšs adaptĂ©e au fonctionnement de notre rĂ©servoir on a donc optĂ© pour un autre modĂšle : Nous avons du ressouder ses terminaisons Ă  des cĂąbles plus adaptĂ©s . La voici reliĂ©e au relais Durant cette sĂ©ance nous avons Ă©galement finalisĂ© toute la partie Ă©lectronique de notre projet en rĂ©alisant des derniers tests . SĂ©ance 8 : Collage et gravure SĂ©ance 8 : Collage et gravure Durant cette sĂ©ance ,nous avons poursuivi la "construction de notre rĂ©servoir". Collage Nous avons coller les morceaux de Plexi dĂ©coupĂ©s lors des derniĂšres sĂ©ances. Dans la premiĂšre photo, ceux sont les faces intĂ©rieures qui ont Ă©tĂ© collĂ©es et scotchĂ©es autour d'un morceau de polystyrĂšne dĂ©coupĂ© Ă  cet usage. Dans la deuxiĂšme photo, ceux sont les face extĂ©rieures qui ont Ă©tĂ© de mĂȘme collĂ©es et fixĂ©es. Ce travail a Ă©tĂ© fait avant la sĂ©ance. Pour le collage, nous avons utilisĂ© comme colle du PMMA dissolu dans de l'acĂ©tone. Ainsi, lorsque l'acĂ©tone sĂšche, il ne reste que du PMMA entre les parois. Le temps de pose pour le collage est un peu long ( 6H ) mais le rĂ©sultat est trĂšs satisfaisant. La structure est solide et aprĂšs avoir coller les faces extĂ©rieures, intĂ©rieures et la base du rĂ©servoir, le test d'Ă©tanchĂ©itĂ© a Ă©tĂ© rĂ©ussi. Il y eu seulement un coin Ă  corriger mais la colle empĂȘche bien l'eau de passer. Pour pallier aux problĂšmes d'Ă©tanchĂ©itĂ© nous avons renforcĂ© les liens entre nos diffĂ©rentes planches avec de la colle forte: Notre rĂ©servoir est ainsi Ă©tanche : Il ne reste plus qu'Ă  ajouter le couvercle du rĂ©servoir . Gravure pour la boĂźte de l'arduino Nous avons voulu personnalisĂ© notre Projet en nommant notre plante et en lui crĂ©ant une boĂźte pour l’arduino qui se ferme avec une gravure par dessus indiquant le nom de notre plante ,un logo du Fablab de Sorbonne UniversitĂ© ainsi que nos noms . Nous avons dessinĂ© un petit design de feuille sur Procreate : Nous l’avons vectorisĂ© sur Inskcape , puis rajouter le nom de notre plante . Voici le rĂ©sultat: Nous l’avons ensuite graver et dĂ©couper sur le couvercle de notre boĂźte pour l'Arduino. Nous y avions Ă©galement noter nos noms mais malheureusement ceux-ci ne sont pas trĂšs bien gravĂ©s. Voici le couvercle final gravĂ©: Nous nous sommes ensuite rendu compte que la boite Ă©tait trop petite pour contenir l'arduino et la pompe et qu'il Ă©tait plus efficace de les placer dans la mĂȘme boite et le matĂ©riel utilisĂ© ne correspondait Ă©galement pas au bon ce qui a endommagĂ© notre gravure : Nous avons ainsi redimensionner notre boite et utiliser le bon matĂ©riel  : Nous avons procĂ©dĂ© de la mĂȘme maniĂšre que prĂ©cĂ©demment : SĂ©ance 9 : Montage du rĂ©servoir SĂ©ance 9 : Montage du rĂ©servoir Programme final du rĂ©servoir : (le temps au bout duquel le mĂ©canisme se rĂ©active est mis a 1s pour des raisons de dĂ©monstration, mais la valeur conseillĂ© pour une utilisation rĂ©elle est de 24h, la valeur en millisecondes est indiquĂ© dans les notes entre parenthĂšses) // Librairies pour fonctionner la barre de LED #include "Adafruit_NeoPixel.h" #ifdef __AVR__ #include #endif //Toutes les constantes utilisĂ©s dans le programme #define EAU A1 #define RELAIS A3 #define LED A0 #define HUMIDITE A2 #define TEMPS 10000 // temps au bout duquel le mĂ©canisme se rĂ©active (86400000) #define TEMPS_RELAIS 30000 // temps d'ouverture du relais en ms 1min <=> 100 mL d'eau Adafruit_NeoPixel pixels = Adafruit_NeoPixel(10, LED, NEO_GRB + NEO_KHZ800); //Fonctions utilisĂ©s dans le programme void LED_verte() { //Allumer la barre de LED en vert for (int i = 0; i < 10; i++) { pixels.setPixelColor(i, pixels.Color(0, 255, 0)); pixels.show(); } } int LED_rouge(int temps){ //Faire clignoter la barre de LED en rouge for (int j = 0; j < (temps / 1000); j++) { for (int i = 0; i < 10; i++) { pixels.setPixelColor(i, pixels.Color(255, 0, 0)); pixels.show(); } delay(500); for (int i = 0; i < 10; i++) { pixels.setPixelColor(i, pixels.Color(0, 0, 0)); pixels.show(); } delay(500); } } //Programme principal void setup() { pinMode(RELAIS, OUTPUT); digitalWrite(RELAIS, LOW); pixels.setBrightness(255); pixels.begin(); } void loop() { int niveau_eau = analogRead(EAU); // Si le rĂ©servoir est vide, faire clignoter la LED rouge if (niveau_eau > 800) { LED_rouge(TEMPS); } // Si le rĂ©servoir n'est pas vide, mesurer le niveau d'humiditĂ© else { LED_verte(); int niveau_humid = analogRead(HUMIDITE); // Si le niveau d'humiditĂ© est faible, ouvrir le relai, attendre TEMPS_RELAIS et fermer le relai if (niveau_humid < 400) { digitalWrite(RELAIS, HIGH); delay(TEMPS_RELAIS); digitalWrite(RELAIS, LOW); delay(TEMPS - TEMPS_RELAIS) ; } } } On a collĂ© le couvercle du rĂ©servoir pour avoir notre rĂ©servoir complet : On as placĂ© le capteur d'eau dans le rĂ©servoir, qu'on cale avec de la colle chaude : On as fini d'Ă©tanchĂ©ifier, le rĂ©servoir avec de la colle chaude. Des derniĂšres impressions 3D, on Ă©tĂ© rĂ©alisĂ© pour amĂ©liorer le projet. Il s'agit d'un entonnoir pour amĂ©liorer le versement de l'eau dans le rĂ©servoir, et d'une partie pour aider le tuyau Ă  se planter dans le sol. Le projet est donc finie : Fichier gravure de la boite a partir d'un gĂ©nĂ©rateur de boite (https://www.festi.info/boxes.py/ClosedBox?language=fr ) ClosedBox.svg SĂ©ance 10 : Fin du projet Voici notre dispositif final : Lien vers la prĂ©sentation du projet (il est impossible d'importer la prĂ©sentation) : https://docs.google.com/presentation/d/1RvjZwm3ub1IRcP89UrX1iEL7PhEK4Pk01iP4Ofjxdcw/edit?usp=sharing Projets personnels : Projet perso Pola Projet Perso : Pola Projet 2D : Objectif ModĂ©liser en 2D et graver une plaque de contreplaquĂ© pour obtenir un peigne Ă  tisser. ModĂ©lisation Fichier final : metier-a-tisser.svg Gravure du bois Bonus : au cƓur de l'action . Projet 3D : Objectif ModĂ©liser puis rĂ©aliser un organisateur d’aiguilles Ă  tricoter. ( Sachant qu'il y as 5 aiguilles de 2 mm de diamĂštre, 10 aiguilles de 2,5 mm de diamĂštre, 5 aiguilles de 3 mm de diamĂštre, 5 aiguilles de 3,5 mm de diamĂštre et 5 aiguilles de 4 mm de diamĂštre). Le sĂ©parateur sera ensuite collĂ© sur une plateforme avec des trous pour pouvoir ĂȘtre cousus sur une pochette, pour rendre le tout pratique. ModĂ©lisation organisateur.stl Impression 3D Projet Perso Menouha Rachel Projet Perso Menouha Rachel Projet 2D Objectif ModĂ©liser en 2D ,graver un logo et ajouter des designs personnels Ă  graver puis dĂ©couper grĂące Ă  la dĂ©coupe laser sur une planche en bois pour une dĂ©coration de bureau . ModĂ©lisation 2D Logiciel utilisĂ© :Inkscape J'ai dĂ©cidĂ© de graver un logo d'une sĂ©rie tĂ©lĂ©visĂ© que j'aime beaucoup .J'ai copiĂ© une image du logo en question . Voici sa source : https://ih1.redbubble.net/image.1175253289.6955/bg,f8f8f8-flat,750x,075,f-pad,750x1000,f8f8f8.u1.jpg Pour modĂ©liser mon image et pouvoir la graver il faut tout d'abord la copier-coller dans une page Inkscape. Une fois l'image copiĂ© cliquer dessus et sĂ©lectionner  "Vectoriser un objet matriciel" Ensuite ,sur la fenĂȘtre de gauche on a nos paramĂštres de vectorisation pour notre image qui s'affichent . Pour bien vectoriser notre image ,j'ai effectuĂ© quelques modifications dans les paramĂštres comme indiquĂ© dans l'image ci-dessous: Je n'ai Ă  prĂ©sent plus qu'Ă  appliquer la vectorisation de l'image : Pour finaliser la vectorisation ,suivre les indications sur l'image ci-dessous: J'ai ainsi obtenu mon image vectorisĂ©e : En cliquant dessus et en sĂ©lectionnant l'option fonds et contours  une fenĂȘtre pour rĂ©gler les paramĂštres de mon image s'affiche Ă  droite . Pour rĂ©gler l'Ă©paisseur de mes contours : Afin d'ajouter une touche personnelle Ă  ma gravure j'ai dĂ©cidĂ© d' y ajouter une petite spirale . Voici comment j'ai procĂ©dĂ© : J'ai dĂ©cidĂ© ensuite de graver en bas Ă  droite de mon cadre le prĂ©nom de ma petite sƓur pour lui offrir la dĂ©coration finale . Voici comment j'ai procĂ©dĂ© : J'ai ainsi obtenu ma modĂ©lisation 2D. Voici le fichier au format svg  : DĂ©coupe +Gravure Ă  la dĂ©coupe laser J'ai tout d'abord coller mon image sur le site Trotec Ruby . J'ai ensuite trouver du bois dans les chutes  pour dĂ©couper et graver mon design: J'ai positionnĂ© mon bout de bois dans la dĂ©coupe laser . J'ai ensuite cadrer ma modĂ©lisation sur la plaque de bois simuler sur l'ordinateur : J' ai ensuite bien placer la sortie du  faisceau de l'appareil comme indiquĂ© ci-dessous: Voici la dĂ©coupe Laser en action : J'ai rĂ©ussit Ă  obtenir ma dĂ©coration !Voici ce que Ça a donnĂ© ! Projet 3D Objectif Concevoir puis imprimer un mini piano en 3D . Logiciel utilisĂ©: Tinkercad (sur Ipad) Le logiciel est trĂšs performant et sur iPad les rĂ©glages sont rapides, car Ă  l'aide de l'Apple Pencil et de l'Ă©cran tactile on peut facilement manier les formes et objets Ă  notre guise afin de concevoir ce qui nous intĂ©resse . ModĂ©lisation 3D Pour commencer ma crĂ©ation ,j'ai utilisĂ© deux cubes dans les formes simples proposĂ©es par l'application puis je les ai rĂ©glĂ©es afin qu'elles forment les deux blocs de base de mon piano . J'ai ensuite rattachĂ© les deux blocs afin que mon objet ressemble plus Ă  un piano . J'ai Ă©galement ,en utilisant encore une fois un cube rĂ©alisĂ© la premiĂšre pĂ©dale de mon petit piano : Voici ce que ça a donnĂ© : Afin de ne pas perdre de temps Ă  refaire deux autres pĂ©dales j'ai utilisĂ© l'option collage comme expliquĂ© dans l'image ci-dessous : J'ai obtenu ceci: J'ai ensuite vidĂ© mon cube noire servant de support au clavier du piano afin de pouvoir crĂ©er les touches de mon piano et les y placer : Pour cela je me suis servie de l'outil vider un Ă©lĂ©ment : J'ai obtenu ceci : J'ai ensuite commencĂ© Ă  rĂ©aliser mon clavier : Pour cela j'ai créé des blocs de touches blanches que je copiais collais un Ă  un en les sĂ©lectionnant en bloc . Pour dĂ©placer et modifier la taille et le position des Ă©lĂ©ments il suffit de se servir des petites flĂšches qui s'affichent autour de notre objet quand on le sĂ©lectionne . J'ai procĂ©dĂ© de la mĂȘme maniĂšre pour les touches noires . J'ai ainsi obtenu mon clavier : J'ai Ă©galement ajoutĂ© 2 cubes pour les bords de mon piano : Me rendant compte que le cube vidĂ© rendait difficile mes manipulations avec l'Apple Pencil j'ai pensĂ© qu'il serait plus simple d'utiliser simplement  un support de clavier noire Ă  l'aide d'un cube que j'ai aplati : J'ai ensuite rallier le clavier au piano : Voici le rĂ©sultat final de ma conception 3D: Voici mon modĂšle au format Stl: "D:\Piano.impression 3D.stl" Impression 3D J'ai tout d'abord exportĂ© mon fichier au format stl puis enregistrer sur ma clĂ© USB : Le voici ci-joint : J'ai branchĂ© ma clĂ© Ă  l'ordinateur de la salle d'impression 3D . J'ai ouvert mon fichier dans le logiciel Idea Maker : Imprimer l'objet ainsi risque de ne pas bien fonctionner du aux supports nĂ©cessaires : J'ai dĂ©cidĂ© de le renverser afin que moins de support soit nĂ©cessaire : Pour cela ,j'ai utilisĂ© l'outil rotation : J'ai ensuite configurĂ© les paramĂštres de mon impression afin de rĂ©gler la hauteur de couche ,le pourcentage de remplissage ...de mon objet : J'ai ensuite dĂ©cidĂ© d'estimer le rĂ©sultat de mon impression : J'ai ensuite choisi une imprimante ,sĂ©lectionnĂ© un fil que j'ai choisi (orange )et j'ai lancĂ© mon  impression : Voici l'imprimante en action : Voici mon objet finalement imprimĂ© : Projet perso Alexandre : Projet perso Alexandre : DĂ©coupe 2D en bois L'objectif est de modĂ©liser sur FreeCAD plusieurs piĂšces simples qui en s'assemblant puissent servir de support pour ordinateur ou pour un livre comme un manuel. Les diffĂ©rentes piĂšces sont modĂ©lisĂ©es en 2D pour ĂȘtre dĂ©coupĂ©es en bois. Pour pouvoir modĂ©liser en 2D sur FreeCAD, je me suis aidĂ© d'un tutoriel en ligne. Pour la premiĂšre Ă©tape, j'ai commencĂ© par le plus Ă©vident en mesurant la taille de mon ordinateur en largeur et en longueur que j'ai respectivement arrondi vers le haut Ă  25cm et 35cm pour le support. Ainsi, il me reste de l'espace sur le support pour le lier au reste de la structure par la suite. Ce support se glisse sur les cĂŽtĂ©s de la structure. Sur le mode Draft, on peut dessiner des formes avec des lignes qu'on peut ensuite lier par la fonction Wire (upgrade) dans le mode Part. Les cĂŽtĂ©s rehaussent l'ordinateur d'environ 6cm Ă  un angle de 10°. Pour vĂ©rifier que le support rentre dans les cĂŽtĂ©s, on modĂ©lise un rectangle qui reprĂ©sente le support vu de cĂŽtĂ© (donc de dimension 1cm de hauteur et 25cm et quelques de largeur). Dans Part, on peut ainsi crĂ©er une surface avec les Wires Ă  laquelle on soustrait (cut) le rectangle pour crĂ©er l'espace oĂč le support sera glissĂ©. Pour modĂ©liser une structure plus solide, on peut crĂ©er des rectangles de 1cm par 1cm (Draft) et les associer au cĂŽtĂ© en les espaçant de 1cm chacun. La fonction Compound permet d'accĂ©lĂ©rer cette Ă©tape en groupant plusieurs rectangles ensemble. Le but est d'utiliser le mĂȘme motif de rectangles sur ce qui servira comme base du support. Ainsi en utilisant la fonction Cut dans Part, les trous dans la base du support seront exactement les mĂȘmes que ceux utilisĂ©s dans les cĂŽtĂ©s de la structure. Ce modĂšle d'assemblage est utilisĂ© par Maker Box pour crĂ©er des structures de boĂźte fonctionnelles. La base du support est longue de 35cm (comme le support) et est large de 29,5cm comme les arrĂȘtes Ă  dent des cĂŽtĂ©s. Pour crĂ©er la piĂšce qui bloque l'ordinateur/livre sur le support, il suffit d'utiliser un rectangle (ici 20cm de longueur et 2,5cm de largeur) auquel on soustrait un motif de rectangles comme ceux utilisĂ©s prĂ©cĂ©demment. On soustrait ensuite ce mĂȘme motif de rectangle au support. En ajoutant quelques millimĂštre de marge, l'assemblage des deux piĂšces pourra ĂȘtre fonctionnel. La modĂ©lisation sur FreeCAD est prĂȘte. Voici le rendu final aprĂšs la dĂ©coupĂ© Freecad m'a jouĂ© des tours, des ajustements sur la structure ont dĂ» ĂȘtre fait mais sinon le principe reste le mĂȘme. Au lieu d'avoir la base de l'ordi qui se glisse dans les deux autres planches, celle-ci s'emboĂźte dans les deux Ă©querres sur le cĂŽtĂ©. J'ai aussi rajouter deux planches qui s'emboĂźtent avec les deux Ă©querres pour rajouter de la stabilitĂ© Ă  l'objet. J'ai aussi rajouter de la colle chaude pour remplir les trous. Impression 3D Mon projet en 3D est de modĂ©liser un plectre/mĂ©diateur. Cet objet a 4 courbes et n'est en fait pas si Ă©vident Ă  rĂ©aliser mais voici comment j'ai fait. Tout d'abord, j'ai utilisĂ© un cercle de 5 cm de rayon, ce sera la hauteur du plectre. Ensuite, j'ai utilisĂ© des tubes de la mĂȘme hauteur que mon cercle pour dĂ©couper la forme du plectre. Avec l'option cut, cette partie se fait facilement. Les tubes sont placĂ©s symĂ©triquement par rapport Ă  l'axe x pour que le plectre soit lui aussi symĂ©trique. Les tubes ont bien sĂ»r la mĂȘme dimension. Le cut crĂ©e malheuresement des coins pointus donc il faut les adoucir avec la fonction fillet. Pour ça, il suffit de sĂ©lectionner l'objet sur lequel on utilise le fillet puis quelle arrĂȘte sera arrondie. Le diamĂštre doit ĂȘtre grand si l'on veut Ă©viter des bosses sur les coins. AprĂšs toutes les opĂ©rations, nous avons la base du plectre, mais celle-ci est plutĂŽt fine( 1 mm ) et nĂ©cessite deux couches en plus pour ajouter de la densitĂ©. Pour faire la couche supplĂ©mentaire, on peut utiliser des formes gĂ©omĂ©triques et les assembler. Encore une fois, il faudra adoucir les coins avec la fonction fillet. Ici, j'ai utilisĂ© un cercle et trois rectangles. La couche supplĂ©mentaire peut ĂȘtre copiĂ©e et collĂ©e juste en dessous du plectre pour que son Ă©paisseur soit de 3 mm au moins. Il faut pour cela crĂ©er un compound avec les figures gĂ©omĂ©triques utilisĂ©es. Pour l'impression, il faudra prendre soin de sĂ©lectionner une Ă©paisseur assez importante pour Ă©viter toute casse du plectre (surtout en vue du support qu'il y aura). Voici le rĂ©sultat final ! Malheureusement, les dimensions surtout la hauteur ne sont plus homogĂšnes Ă  l'impression. Cependant, le plectre fonctionne et ne casse pas, finalement cela le rend plus joli ! đŸŽ›ïž UE 5Ci803 - Optimisation et contrĂŽle des procĂ©dĂ©s Aquarium et rĂ©gulation de la qualitĂ© de l'eau Informations Camille Guillet, Amel Gaci, Sabrina Akour, Andjela Zlatkovic, Anis Sakka email : camille.guillet.2@etu.sorbonne-universite.fr UE 5CI803 15/12/2022 - 31/01/2023 Contexte Nous cherchons Ă  effectuer la rĂ©gulation et le contrĂŽle de la qualitĂ© de l'eau d'un "aquarium " dans le cadre de notre UE 803 'optimisation et contrĂŽle des procĂ©dĂ©s. Objectifs - construire un aquarium avec les outils Ă  disposition - RĂ©aliser une rĂ©gulation de la qualitĂ© de l'eau : contrĂŽler la turbiditĂ©, le niveau d'eau et la tempĂ©rature - Mettre au point et RĂ©aliser un dispositif expĂ©rimental et un schĂ©ma electronique avec Arduino Vue filaire de notre aquarium avec les cloisons incorporĂ©es Vue ombrĂ©e de notre boĂźte d'aquarium MatĂ©riel 2 planches de CP peuplier 5mm (dimensions 280*580mm) Plexiglas Silicone Capteur TurbiditĂ© et niveau eau Pompes eau et pompe air Tuyaux Sonde de TempĂ©rature immergeable elctrovanne, servomotor Switch A/N, cables, adaptateur 12V Machines utilisĂ©es - DĂ©coupe Laser - pistolet Ă  colle Construction Étape 1 Construction du bocal Aquarium : utilisation logiciel dĂ©coupe laser Étape 2 Construction support en bois : dĂ©coupe planche et gravure Étape 3 RĂ©alisation montage electronique (Arduino) Étape 4 : finalisation aquarium : collage (avec colle pour Glue, mais mieux d'utiliser colle PMMA acrylique pour Plexiglas) , joints de colle ( ça aurait Ă©tĂ© mieux avec des bons joints de silicone) installation des pompes et vannes, tuyaux Étape 5 : Code Arduino et test electronique Étape 6 : Installation finale:  rĂ©servoir source et Ă©vacuation eau et tests Étape 7 : DĂ©monstration Journal de bord 15/12/2022 Brainstorm et dĂ©finition des dimensions du bocal: 25  x 20 x 15 (cm) et matĂ©riau (Plexiglas) : transparent, rĂ©sistant au poids de l'eau et suffisamment inerte, d'Ă©paisseur 3mm. Utilisation logiciel Festi pour gĂ©nĂ©rer les dimensions de la boite 16/12/2022 Utilisation outil dĂ©coupe laser et assemblage plaques Plexiglas : dĂ©but de construction aquarium 03/01/2023 Brainstorm sur la filtration et agencement des outils et dispositifs Code pour Arduino : dĂ©but DĂ©coupe planche bois pour support et gravure Poursuite construction de l'aquarium 06/01/2023 Codage Arduino DĂ©but Montage composants Ă©lectroniques 09/01/2023 Montage electronique, Arduino: branchages chaque pompe est contrĂŽlĂ©e par un relai 5V:  les pompes sont alimentĂ©es par un courant de 12V (air et eau) ou 3V pour la pompe immergĂ©e. Les capteurs sont reliĂ©s Ă  du 5V : le capteur de turbiditĂ© a une sortie analogique (reliĂ©e Ă  A0), celui de niveau d'eau digitale ( reliĂ© Ă  un pin 8). La ligne d'alimentation du bas de la platine d'essai est rĂ©alisĂ© par  le microcontroleur en 5V, et permet d'alimenter les capteurs et les relais. La 2Ăšme ligne d'alimentation est alimentĂ©e en 12V par un adaptateur 12 branchĂ© sur secteur. L'alimentation de la pompe immergĂ©e en 3V est rĂ©alisĂ© par l'alimentation du controleur via une autre platine d'essai Collage, Joints de la boite de l'aquarium : dĂ©but des joints : Ă  poursuivre : les dimensions des 2 parois de Plexiglas sĂ©parant les compartiments sont de mĂȘme dimension mais les plaques de Plexiglas ne sont pas placĂ©es au mĂȘme niveau : h x l x e : 11cm x 19,6 cm x 3mm Agencement des diffĂ©rentes parties, scotchage 17/01/2023 Avancement montage electronique 20/01/2023 rĂ©alisation 2Ăšme planche CP Peuplier, mise en place des tuyaux, test des diamĂštres d'installation du capteur niveau d'eau 24/01/2023 DĂ©termination du diamĂštre trou capteur d'eau d=21,3mm et de la position : environ 12,5 cm depuis le bas , plus ou moins vers le 1er tiers de la longueur. Collage des bords de l'aquarium, sauf derniĂšre avec le trou, problĂšme de collage et assemblage (changement de colle entre les 2) : on n'a pas rĂ©ussi Ă  bien tout assembler de maniĂšre jointive. En voulant arranger le problĂšme, (on a voulu enlever la plaque collĂ©e trĂšs fortement) on a cassĂ© la plaque. Donc, refabrication de la mĂȘme plaque la fois d'aprĂšs. Les cloisons entre les compartiments sont au nombre de 2 ( mĂȘmes dimensions, cf 09/01) Une 1re cloison sĂ©parant le bac principal ( Aquarium) et le compartiment de "filtration" : cette plaque est collĂ©e de la base (20 x 20 cm) de l'aquarium, perpendiculairement aux 2 parois longitudinales ( parallĂšlement Ă  la paroi latĂ©rale)  par la tranche de 3mm: cette plaque de 11cm permet le dĂ©bordement de l'eau par dessus la plaque pour passer sur le filtre Ă  cafĂ© installĂ©. Elle est installĂ©e Ă  partir de 3,5 cm environ de la paroi latĂ©rale de l'aquarium. Une 2Ăšme cloison est Ă©galement installĂ©e parallĂšlement Ă  2cm de la premiĂšre et Ă  1,2 cm  environ de la paroi latĂ©rale de l'aquarium. celle ci est collĂ©e de telle maniĂšre que le haut de la paroi est à  15cm de haut : il y a donc h1=15-11-0,3=3,7 cm d'espace entre la base de l'aquarium et la cloison. Celle ci permet de sĂ©parer l'espace "filtration" et l'espace de pompage/Ă©vacuation de l'eau. La plaque est donc collĂ©e sur 2x11 cm sur les parois latĂ©rales. Le filtre Ă  cafĂ© sera installĂ© Ă  la toute fin entre ces 2 "cloisons" pour permettre Ă  l'eau transvasante et de se dĂ©verser dessus et de la filtre : l'eau s'Ă©coule du haut vers le bas et l'eau en aval du filtre est donc filtrĂ©e et Ă©vacuĂ©e par la pompe Ă  eau (le filtre permet d'Ă©viter de boucher les tuyaux et la pompe) 26/01/2023 Fabrication d'une nouvelle plaque plexiglas pour la derniĂšre paroi de l'aquarium, assemblage pas jointif encore avec le test de colle. On a finalement juste pris de la colle pour faire des joints d'Ă©tanchĂ©itĂ© et pour boucher un peu les trous de la derniĂšre longueur. Pour les fuites, on mettre notre boite d'aquarium dans un rĂ©cipient plus grand pour les fuites ( cf JĂ©rome ) Test du capteur de turbiditĂ© : valeur de la tension pour la turbiditĂ© est de 4,3V (cf code):  test dans une bouteille d'eau transparente, de l'eau d'abord limpide ( U=4,6V) puis ajout de jus de clĂ©mentine pour augmenter la turbiditĂ© petit Ă  petit. On a fixĂ© la valeur de turbiditĂ© maximale avant la rĂ©gulation du systĂšme. DĂ©but de test des pompes. 27/01/2023 Test des pompes : MatĂ©riel limitĂ© pour les pompes : -pompe Ă  air 12V: ContrĂŽlĂ©e par un relai et alimentĂ©e 12V : la pompe permet d'ajouter de l'air dans l'aquarium, test de son fonctionnement et de son contrĂŽle -pompe Ă  eau immmergĂ©e, 3V : la pompe est placĂ©e dans un rĂ©servoir d'eau qui est une source d'eau pure - pompe Ă  eau,12V permettant l'Ă©vacuation de l'eau par le compartiment de pompage : Finalisation 2Ăšme planche en bois pour  support, collage et joins, collage filtre Ă  cafĂ©RĂ©gulation de pH La rĂ©gulation du pH Objectif du projet : Le projet consiste Ă  rĂ©guler le pH d’une certaine solution (acide ou basique) en utilisant un programme Arduino. L’idĂ©e vient du problĂšme de neutralisation des rejets liquides industriels qui consiste une Ă©tape primordiale dans le traitement des dĂ©chets. Le matĂ©riel utilisĂ© : - 4 bouteilles en plastique (2 rĂ©servoirs pour l’acide et la base, un rĂ©acteur, et un tank). - 3 Ă©lectrovannes associĂ©es Ă  des relais. - Une sonde de pH - Une Tige d’agitation associĂ© Ă  un moteur - Un afficheur - Un indicateur de niveau - Un Arduino avec une plaque d’essai - Des files et des tuyaux en plastique - Un support en bois Les appareils utilisĂ©s : - DĂ©coupeuse Laser - Perceuse Ă  colonne - Scie Ă©lectrique - Imprimante 3D - Des outils manuels ( pistolet Ă  colle, perceuse, viceuse Ă  main,
) Les Ă©tapes de construction : Étape 1 : Construction du support Nous avons utilisĂ© 4 plaques ( 6030 cm^2) pour avoir un support 9060. Étape 2 : Mise en place des rĂ©servoirs Nous avons fixĂ© d’abord les 2 rĂ©servoirs des solutions acide et base. Ensuite, nous avons fixĂ© le rĂ©acteur et le tank. Enfin, nous avons fait des trous pour faire passer les tuyaux. Étape 3 : Mise en place des Ă©lectrovannes Nous avons placĂ© les Ă©lectrovannes Ă  la sortie des deux rĂ©servoirs ainsi que le rĂ©acteur. Nous avons associĂ© Ă  ces derniĂšres des relais. Étape 4 : Impression de la tige Nous avons fait le design de la tige en utilisant le logiciel Tinkercad, et ensuite nous avons utilisĂ© l'imprimante 3D. Enfin, nous avons reliĂ© la tige au moteur. RĂ©gulation et mesure de la couleur par spectrophotomĂ©trie RĂ©gulation et mesure de la couleur par spectrophotomĂ©trie en utilisant Arduino Le concept de ce projet est de pouvoir produire un ensemble de couleurs spĂ©cifiques par le mĂ©lange des trois couleurs primaires (Rouge, Jaune et Bleu) utilisĂ©es pour produire ces derniĂšres, cela sera possible par l'utilisation d'un spectrophotomĂštre qui mesure la couleur de l'Ă©chantillon de dĂ©part que nous avons (transparent par exemple) ce qui permet au systĂšme de savoir quelle quantitĂ© des couleurs primaires doit ĂȘtre administrĂ©e pour notre rĂ©sultat final, le spectromĂštre effectuera ensuite une seconde mesure pour Ă©valuer la qualitĂ© de la couleur et si c'est bien le rĂ©sultat escomptĂ©, avec une petite marge d'erreur qui, si elle est dĂ©passĂ©e, l'Ă©chantillon est administrĂ© en quantitĂ©s appropriĂ©es pour atteindre la marge d'erreur acceptĂ©e. Le choix des couleurs utilisĂ©s pour le mĂ©lange est plutĂŽt simple, le RYB (rouge-jaune-bleu, Red-Yellow-Blue en anglais) est un ensemble historique de couleurs utilisĂ© dans le mĂ©lange soustractif de couleurs, et est un ensemble de couleurs primaires couramment utilisĂ©. Elle est principalement utilisĂ©e dans l'enseignement de l'art et du design, notamment en peinture. Les RYB constituent donc les critĂšres de couleur primaire, en concevant la roue chromatique standard de l'artiste. Le secondaires (violet-orange- vert) constituent une autre triade. Les couleurs de la triade (violet-orange- vert) parfois appelĂ©e (violet-orange- vert) constitue une autre triade. Les triades sont formĂ©es par trois couleurs Ă©quidistantes sur une roue de couleur particuliĂšre. Pour crĂ©er une large gamme de nouvelles couleurs, les couleurs primaires peuvent ĂȘtre mĂ©langĂ©es en utilisant diffĂ©rentes quantitĂ©s de couleurs proportionnelles les unes aux autres. MĂ©langer des peintures, des pigments ou des colorants en utilisant des formules de mĂ©lange de couleurs proportionnelles garantit qu'une couleur spĂ©cifique peut ĂȘtre reproduite, ce qui permet Ă  un artiste d'assurer la cohĂ©rence et la prĂ©visibilitĂ© du mĂ©lange des couleurs. Le mĂ©lange proportionnel des couleurs peut impliquer des rapports simples, comme utiliser deux fois plus de rouge que de jaune, ou des formules complexes, comme mĂ©langer une partie de rouge, deux parties de bleu et trois parties de jaune. Chaque combinaison produira un rĂ©sultat nouveau et intĂ©ressant. L'image de mĂ©lange de couleurs jointe ci-dessous prĂ©sente quelques formules de mĂ©lange proportionnel de couleurs. Pour appliquer cette logique Ă  notre idĂ©e de projet, nous utiliserons bien sĂ»r l'Arduino pour le stockage interne d'instructions pour la mise en Ɠuvre de fonctions telles que la logique, le sĂ©quençage, la synchronisation, le comptage et l'arithmĂ©tique pour contrĂŽler, par le biais de modules d'entrĂ©e/sortie numĂ©riques ou analogiques, diffĂ©rents types de composants qui constituent notre systĂšme.  L'image jointe ci-dessous montre un schĂ©ma fonctionnel de ce dernier. Le mĂ©lange dans le rĂ©cipient sera soit gĂ©rĂ© par arduino Ă©galement, soit nous pourrions utiliser un mĂ©langeur magnĂ©tique manuellement. Le premier modĂšle : SpectromĂštre MIKROE-4165 Led blanche Breadboard La premiĂšre option est assez simple, une source de lumiĂšre normale avec un capteur spectromĂštre qui, comme son nom l'indique, dĂ©tecte les diffĂ©rents spectres de la lumiĂšre avec un prix Ă©levĂ© Ă  payer pour cette commoditĂ©. Partie RĂ©gulation : Électrovannes LEX-VALVE2 Relais Électrovanne Relais La partie RĂ©gulation est assez simple en ce qui concerne le matĂ©riel, les Ă©lectrovannes Ă©tant utilisĂ©es comme moyen d'administrer les pigments de couleur avec prĂ©cision pour obtenir les rĂ©sultats souhaitĂ©s. Conception du support du projet MatĂ©riel utilisé : Trois goblets en plastique Tuyaux de 8 mm de diamĂštre. Planches en bois faible Ă©paisseur (5-6 mm d’eppaisseur) pour le decoupage laser. 16 visses M5 16 Ă©crous M5 4 Ă©querres Appareils utilisĂ©s : DĂ©coupeuse Laser Perceuse Ă  colonne Imprimante 3D Logiciels utilisĂ©s : Blender (Pour la conception 3D). Ink Scape (Puisque la dĂ©coupeuse laser Ă  besoin d'un fichier au format svg). IdeaMaker (Pour le dĂ©coupage du modĂšle 3D). Des supports pour le spectrophotomĂštre et d'autres composants Ă©taient nĂ©cessaires, le composant principal Ă©tant une plateforme utilisant trois planches dont deux ont les dimensions suivantes (28x20 cm) et ont Ă©tĂ© utilisĂ©es comme support pour oĂč la carte Arduino, la boĂźte du spectrophotomĂštre et les rĂ©cipients Ă  trois couleurs, les deux planches Ă©tant collĂ©es sur la plus grande planche (58x28 cm). Ce dernier Ă©tant conçu Ă  l'aide d'une dĂ©coupeuse laser. Le capteur du spectromĂštre n'ayant besoin que d'une seule source de lumiĂšre, il lui fallait un boĂźtier fermĂ© faisant face Ă  la source de lumiĂšre (LED blanche) pour capter la lumiĂšre traversant la cuvette remplie de son contenu colorĂ©, voici des photos dudit boĂźtier modifiĂ© Ă  l'aide du logiciel de modĂ©lisation gratuit Blender. Boitier SpectromĂštre dans Blender Boitier spectromĂštre avec composants Un problĂšme que nous avons rencontrĂ© lors de cette phase est le problĂšme de mĂ©lange des couleurs administrĂ©es, d'autant plus que la cuvette est trĂšs petite et ne peut pas entrer dans n'importe quel appretus de mĂ©lange, la solution que nous avons trouvĂ© est une sorte de mĂ©langeur en forme d'embout qui regroupe les trois tuyaux qui viennent des Ă©lectrovannes et les condense en une seule sortie oĂč les trois couleurs mĂ©langĂ©es sont versĂ©es Ă  l'intĂ©rieur de la cuvette, sa conception a Ă©galement Ă©tĂ© rendue possible en utilisant le logiciel de modĂ©lisation Blender. Mixeur dans Blender Mixeur imprimĂ© Montage : Pour le montage, on a placĂ© nos gobelets, qui contiendront chacun un de nos 3 colorants, en hauteur sur la plateforme. Nos gobelets sont liĂ©s Ă  nos Ă©lectrovannes via des tuyaux en caoutchouc, et ces mĂȘmes Ă©lectrovannes sont liĂ©es Ă  un mĂ©langeur de la mĂȘme maniĂšre. Nous avons utilisĂ© un embout d’aspirateur pour voiture comme base pour fabriquer notre mĂ©langeur. Le liquide, aprĂšs ĂȘtre passĂ© dans le mĂ©langeur, entrera dans la cuve afin d’ĂȘtre analysĂ© par le spectrophotomĂštre. Notre montage est fait de sorte Ă  ce que la gravitĂ© suffit Ă  acheminer notre liquide jusqu’à la cuve. Nos Ă©lectrovannes sont reliĂ©es Ă  des relais qui seront fixĂ©s Ă  proximitĂ© sur la plateforme (juste en dessous). Les relais serviront Ă  gĂ©rer le passage du courant vers l’électrovanne, et donc Ă  gĂ©rer son ouverture. Ces relais sont branchĂ©s directement sur un breadbord, qui sera posĂ© Ă  la base de notre support. Ce breadbord sera, quant Ă  lui, liĂ© Ă  la carte mĂšre de notre spectrophotomĂštre. Le breadbord est un outil qui nous servira Ă  lier plusieurs Ă©lĂ©ments (ici nos relais et notre spectrophotomĂštre) sans avoir Ă  faire de soudure. Cette carte mĂšre sera elle directement liĂ©e au capteur afin de pouvoir traiter les donnĂ©es reçues par le capteur dans le boitier sur le mĂ©lange de colorant dans la cuve. L’alimentation en Ă©lectricitĂ© de notre systĂšme se fait via la carte mĂšre du spectrophotomĂštre. Il est nĂ©cessaire d’avoir une alimentation assez puissante afin de pouvoir faire fonctionner le circuit. Nous avons au dĂ©but eu des problĂšmes Ă  ce niveau car nous avions fait l’erreur d’alimenter le circuit via la batterie d’un ordinateur portable. Pour rĂ©sumer, toutes les composants ou le liquide place a Ă©tĂ© placĂ© en hauteur Ă  diffĂ©rent niveau de sorte Ă  ce que la gravitĂ© soit une force motrice suffisante pour le dĂ©placer. Le reste a Ă©tĂ© placĂ© Ă  la base car plus pratique (sauf les relais qui doivent ĂȘtre Ă  proximitĂ© des electrovannes). Logique du code utilisé : Ce code est Ă©crit dans le langage de programmation Arduino et utilise l'environnement de dĂ©veloppement intĂ©grĂ© (IDE) Arduino. Le code met en Ɠuvre un systĂšme de contrĂŽle simple pour contrĂŽler l'intensitĂ© des relais Ă©lectromagnĂ©tiques DC rouge, jaune et bleu afin de crĂ©er une couleur dĂ©sirĂ©e. Le code comprend plusieurs bibliothĂšques, notamment la bibliothĂšque Wire.h qui fournit une interface TWI/I2C pour la communication entre le microcontrĂŽleur et le capteur AS7341. Les bibliothĂšques Adafruit_Sensor.h et Adafruit_AS7341.h fournissent le support pour le capteur que nous avons, qui est utilisĂ© pour mesurer les valeurs RGB d'un Ă©chantillon de couleur, bien que le nĂŽtre ne soit pas exactement un capteur Adafruit, nous avons pensĂ© que puisqu'ils utilisent le mĂȘme type de capteur, il peut suivre la mĂȘme logique et fonctionnalitĂ©. Les broches pour les relais DC Ă©lectromagnĂ©tiques sont dĂ©finies en utilisant la directive #define du prĂ©processeur, et la broche de la LED blanche est Ă©galement dĂ©finie. Une instance du capteur AS7341 est créée en utilisant Adafruit_AS7341 sensor = Adafruit_AS7341() ;. Dans la fonction setup(), la communication sĂ©rie est initialisĂ©e, les broches du relais et de la LED sont initialisĂ©es comme sorties, le capteur AS7341 est initialisĂ© et la couleur dĂ©sirĂ©e est lue sur le clavier. La fonction loop() mesure en continu les valeurs RVB d'une couleur Ă©chantillon Ă  l'aide du capteur AS7341 et calcule l'erreur entre la couleur souhaitĂ©e et la couleur mesurĂ©e. En fonction de l'erreur, la quantitĂ© de chaque colorant est mise Ă  jour pour minimiser l'erreur, et les relais Ă©lectromagnĂ©tiques DC sont activĂ©s ou dĂ©sactivĂ©s en consĂ©quence. Le code attend 100 millisecondes dans la fonction loop() avant de rĂ©pĂ©ter le processus de mesure et de contrĂŽle. Look final du projet : AprĂšs le montage correct de tous les composants, le projet Ă©tait terminĂ© et il ne manquait plus que le code pour l'exĂ©cution, le problĂšme rĂ©sidait dans les bibliothĂšques ou plutĂŽt dans la mauvaise utilisation de ces derniĂšres lors de l'Ă©criture du code, la logique de ce dernier reposait sur les capacitĂ©s du capteur Ă  donner les donnĂ©es directement dans un format RGB, une tentative quelque peu dĂ©licate qui nĂ©cessitait d'autres ajustements. Une autre logique possible que nous aurions pu poursuivre Ă©tait d'avoir une sorte de banque de donnĂ©es qui a tous les spectres d'absorption stockĂ©s dans lequel il peut ĂȘtre consultĂ© pour reconnaĂźtre et produire la couleur, une fonction tout Ă  fait prĂ©visible que ce capteur est capable d'un tel exploit. Ces deux voies ont nĂ©cessitĂ© un temps considĂ©rable dont nous manquions fortement, le dĂ©veloppement de ce code est donc nĂ©cessaire au bon fonctionnement de l'appareil. Les fichiers STL de l'impression ainsi que le fichier Arduino contenant le code sont accessibles en cliquant ici.Machine Ă  Cocktail UE 803 - Optimisation et ContrĂŽle des ProcĂ©dĂ©s - Master 2 - IngĂ©nierie Chimique Projet ExpĂ©rimental Arduino Dans le cadre de cette UE, nous devons rĂ©aliser un projet de rĂ©gulation par prototypage utilisant principalement un micro contrĂŽleur Arduino et des capteurs / actionneurs. AprĂšs quelques sĂ©ances de brainstorming et Ă©change d'idĂ©es, nous avons dĂ©cidĂ© d'opter pour la conception d'une machine Ă  cocktail connectĂ© via assistant vocal. Des pompes gĂšreraient le dĂ©bit des boissons et un capteur pour la dĂ©tection d'un gobelet serait ajoutĂ©. Nous avons passĂ© en revu plusieurs projets de systĂšme de pompage utilisant Arduino ou un connecteur Nano-IoT et avons donc pu dresser une liste du matĂ©riel complet pour mener Ă  bien ce projet. Projet distributeurs de boissons Objectif : RĂ©aliser un distributeur de cocktails Ă  partir de 7 boissons (et donc 7 pompes) qui nous permettrait de faire diffĂ©rents mĂ©langes. Le distributeur serait connectĂ© au cloud via un Nano-IoT et contrĂŽlĂ© vocalement par Alexa. MatĂ©riel Ă©lectronique : 7 pompes 7 relays (ou switch) fils de connexions Un nano 33 IoT Une carte arduino Une platine CĂąble d'alimentation CĂąble usb reliĂ© Ă  l'arduino CĂąble usb reliĂ© l'IoT Un capteur sonar (distance) 4 Boutons poussoirs 4 RĂ©sistances MatĂ©riel de construction : Tuyaux Planches de bois Vis 7 Bouteilles vides 1,5L Premier Brouillon : ____________________________________________________________________________________________________________ Semaine 6 au 13 DĂ©cembre : Une fois tout le matĂ©riel reçu, la premiĂšre Ă©tape du projet a Ă©tĂ© de mettre en place une stratĂ©gie pour monter et faire fonctionner les pompes : Mettre en place le schĂ©ma de branchement des pompes Faire un Ă©tat des lieux des fils nĂ©cessaires (bruts, embout femelle, embout male). DĂ©nudĂ© la quantitĂ© de fils nĂ©cessaire Trouver la borne + et la borne - des pompes en utilisant un multimĂštre AprĂšs plusieurs recherches et la consultation de plusieurs sites web et pages github, le branchement suivant reliant la pompe, le relay et l'arduino a Ă©tĂ© dĂ©terminĂ© comme celui qui serait utilisĂ© : L'utilisation d'un relay est essentiel si nous voulons ĂȘtre capable de faire varier l'intensitĂ© de la pompe ou sa durĂ©e de fonctionnement. En effet la pompe est par dĂ©faut une entitĂ© boolĂ©enne : allumĂ©e ou Ă©teinte. Soudure des fils Ă  nos 7 pompes : Branchement des fils de connexions aux 7 relays : Branchement final des pompes aux relay puis sur la carte Arduino : Semaine 2 Janvier : Une fois les pompes cĂąblĂ©s correctement et branchĂ©es, nous devons commencer Ă  programmer nos commandes de boissons, car sinon les pompes sont activĂ©s en continues quand connectĂ© Ă  l’alimentation. Nous recherchons donc des exemples de codes qui montrent comment activer une pompe pour un dĂ©lais prĂ©cis et initialiser notre setup en fonction du nombre de pompe utilisĂ©es. Un de nos premiers exemple de code utilisĂ© est celui-ci : Nous arrivons donc maintenant Ă  activer une pompe et contrĂŽler sa durer d’activation. Le but est d’ensuite ajouter toutes nos pompes et crĂ©e des fonctions qui gĂšrent l’activation de 2 pompes en mĂȘme temps gĂ©rer par une seule fonction « boisson »pour rĂ©aliser les mĂ©langes de nos cocktails. Nous cherchons Ă©galement en parallĂšle comment se branche et fonctionne notre capteur sonar de distance. En effet aprĂšs plusieurs recherches nous nous sommes rendu compte que notre capteur ne possĂšde pas les branchements dĂ©crit habituellement dans la littĂ©rature et autres projet libre d’accĂšs. En effet, dans nos nombreuses recherches de fonctionnement du capteur nous retrouvions tout le temps le capteur ci-dessus. Qui possĂšde quatre branchements : Vcc qui correspond au voltage 3,3 ou 5V, GND qui correspond comme l'indique son nom Ă  la terre (ou ground). Et finalement les branchements Trig et Echo oĂč Trig correspond au transmetteur soit la partie de gauche qui va Ă©mettre des impulsions qui seront arrĂȘtĂ©es et renvoyĂ© par l'objet qui fait face au capteur. Ces impulsions renvoyĂ©es sont captĂ©es par le rĂ©cepteur qui correspond Ă  l'Echo (partie de droite). Cependant, nous ne sommes pas exactement dans ce cas-lĂ . Ici, les sorties Trig et Echo sont remplacĂ©s par la sortie SIG qui fait office de branchement pour le transmetteur et le rĂ©cepteur et sera branchĂ© sur le pin digital dans notre cas le pin 10. La sortie NC (ou "not connected") est comme l'indique son nom une sortie qui n'a pas besoin d'ĂȘtre reliĂ© Ă  quoi que ce soit. GND et VCC sont des branchements qui se font Ă  l'identique de ce qui a Ă©tĂ© expliquĂ© prĂ©cĂ©demment. Le branchement de notre capteur est donc simplifiĂ© mais il a fallu faire un travail d’identification pour assurer une connexion. Branchement capteur : Semaine 9 Janvier : Nous avons pu rĂ©aliser les branchements du capteur et les avons reliĂ©s correctement Ă  l’Arduino. Nous devons dĂ©sormais adapter notre code afin de spĂ©cifier les fonctions liĂ©es au fonctionnement du capteur mais aussi ajouter une nouvelle condition sur l’activation des pompes : les pompes ne peuvent s’activer que si le capteur dĂ©tecte une prĂ©sence proche Ă  moins ou Ă©gale Ă  2cm de distance du rĂ©cepteur du capteur. Nous nous penchons Ă©galement sur le Nano-IoT fait pour relier notre systĂšme au service cloud de Arduino afin de crĂ©er des boutons digitaux (web ou application mobile) contrĂŽlable manuellement ou par assistanats vocaux grĂące Ă  la configuration de ces boutons digitaux en skills Alexa. Pour ce faire nous commençons Ă  souder les branches en or fournis avec note Nano-IoT 33 pour pouvoir faire des branchement. Une fois fait, il est connectĂ© sur une platine et branchĂ© par un cĂąble USB Ă  l’ordinateur pour la crĂ©ation des boutons et du code associĂ©. Nano IoT : AprĂšs soudures : Nous cherchons dans la documentation Arduino le nom des connexions disponible sur notre connecteur bluetooth car ils ne sont pas inscrit sur notre appareil : Une fois les soudures rĂ©alisĂ©es et la documentation en notre possession, nous pouvons tenter de recrĂ©er les connexions rĂ©alisĂ©es prĂ©cĂ©demment sur l’Arduino avec une pompe sur le Nano-IoT afin de commencer Ă  comprendre le fonctionnement du service cloud. Nous souhaitons avoir 7 boissons, donc 7 boutons, qui vont activer des jeux de pompes diffĂ©rentes, nous crĂ©erons donc nos boutons auxquels nous relions des variables boolĂ©enne (TRUE or FASLE) qui gĂšrent l’état des boutons « Appuyer ou Étein » et devons coder dans la partie du code auto gĂ©nĂ©rĂ© par Arduino Cloud pour contrĂŽler l’action rĂ©aliser aprĂšs activation des boutons. AprĂšs plusieurs recherches sur le fonctionnement d’Arduino Cloud et du IoT nous associons notre appareil Ă  leur application, et nous nous connectons Ă  un rĂ©seau wifi privĂ© et sĂ©curisĂ©. Nous pouvons alors crĂ©er  nos « things » qui sont nos variables qui vont gĂ©rer l’allumage des pompes et donc la crĂ©ation des boissons. Nous commençons d’abord Ă  travailler avec une seule pompe et sans capteur pour bien comprendre comment marche cet appareil. Nous avons alors crĂ©e nos 4 variables pour 4 boissons, et n’allons travailler que sur la boisson 1 avec une seule pompe pour l’instant. Nous pouvons alors passer Ă  la suite et crĂ©er nos boutons virtuels, on associe alors les variables crĂ©ees prĂ©cĂ©demment Ă  chaque boutons. Nos variables sont dĂ©finies comme boolĂ©enne, read & write et sa valeur est actualisĂ©e Ă  chaque changement d’état du bouton. Arduino Cloud nous auto crĂ©e alors une partie de code oĂč nous avons plus qu’a ajouter nos fonctions de contrĂŽle des pompes. Dans la photo ci-dessous le code n’est pas correcte, mais nous avons utilisĂ© le code montrĂ© prĂ©cĂ©demment, utilisĂ© pour la carte Arduino. Nous avons vĂ©rifiĂ© la syntaxe et tĂ©lĂ©visĂ© le code sans aucun problĂšme. Les boutons devraient donc marcher. Par la suite nous crĂ©ons donc les skills Alexa nĂ©cessaires pour le contrĂŽle vocal de l’activation des boutons crĂ©es prĂ©cĂ©demment, codĂ© et associĂ© Ă  l’IoT. Le code marche sur l’arduino, les boutons sont reliĂ©s au variables, le code transfĂ©rĂ© Ă  l’IoT Ă  la bonne syntaxe compatible Cloud Agent et le tĂ©lĂ©versement se fait « succesfully » et sans erreur, malheureusement impossible de connecter le IoT au cloud. Il reste « Hors ligne » en permanence. Normalement aprĂšs le tĂ©lĂ©versement, le IoT est sensĂ© se connecter immĂ©diatement au cloud et ĂȘtre « Online », nous avons vu une connexion de 1 seconde puis dĂ©connexion immĂ©diate. AprĂšs plusieurs recherche il se peut que le rĂ©seau cloud de Arduino soit en maintenance ou inaccessible. Nous avons essayĂ© plusieurs rĂ©seau diffĂ©rents par la suite, et malgrĂ© le tĂ©lĂ©versement rĂ©ussi et une connexion privĂ©, notre IoT ne se connecte pas au Cloud, impossible donc d’activer les boutons sur le site web et encore moins Ă  distance avec Alexa. AprĂšs de nombreuses tentatives infructueuses cette semaine, et le fait que ni l’universitĂ© ni le fablab ne possĂšdent de rĂ©seau wifi privĂ© auquel nous pourrions nous connecter pour prĂ©senter la machine lors du rendu final, nous dĂ©cidons d’abandonner l’idĂ©e de contrĂŽle par assistant vocal ou de boutons virtuels. Il faut alors trouver une autre solution. Semaine 16 Janvier : Nous arrivons plus ou moins Ă  faire marcher le capteur et une pompe, mais pour l’instant nous n’arrivons pas Ă  spĂ©cifier la condition && du fonctionnement des 2 pompes en mĂȘme temps que le capteur. Nous travaillons donc a amĂ©liorer le code et tentĂ© de trouver une version qui fonctionne. Cette semaine nous commençons Ă©galement Ă  avancer sur la structure : nous avons fait un Ă©tat des lieux et avons dĂ©fini que nous avions besoin d’un bac pour rĂ©cuperer le liquide sous le verre, d’une partie haute qui dispense le liquide et qu’un « rĂ©servoir » qui contiendrais nos bouteilles et doit etre accessible pour les changer ou faire une maintenance des Ă©quipements. Le capteur, les pompes et le arduino avec la platine ce trouveraient Ă  l’interieur de la machine, au dessus des bouteilles d’ou sont pompĂ© les liquides. Un premier croquis est suggĂ©rĂ© : Le bac d’écoulement du liquide au cas oĂč des goutes couleraient Ă  cotĂ© lors de la distribution de boisson est assez indĂ©pendant de la machine et peut ĂȘtre rajoutĂ© seule, nous commençons donc a rĂ©flĂ©chir Ă  un design de conception pour commencer par cette piĂšce, Ă©tant donnĂ© que le code n’est pas dĂ©finitif nous ne prĂ©fĂ©rons pas avancer de suite sur la structure dĂ©finitive. Le bac d’écoulement Ă©tait initialement prĂ©vu en bois tout comme le reste de a structure de la machine mais ce matĂ©riaux n’est pas hydrophobe et se gorgera d’eau s’il est en contact avec. A la fin de cette sĂ©ance fablab nous dĂ©cidons donc de partir sur du plastique PMMA de 3mm d’épaisseur et de couleur noir (pas transparent car nous verrions le liquide Ă  travers, ce qui n’est pas trĂšs esthĂ©tique dans ce cas). Nous commençons donc par rĂ©aliser une fichier vectoriel 2D grĂące au logiciel Inkscape afin de dessiner les bordures de nos piĂšces en vue d’une dĂ©coupe laser. Dans un premier temps nous optons pour un porte gobelet de 10x10cm et avons rĂ©aliser le fichier suivant pour la dĂ©coupeuse laser : Semaine 23 Janvier : CotĂ© code, nous arrivons finalement Ă  faire fonctionner une pompe d'aprĂšs la condition de distance sur le capteur que nous avions spĂ©cifiĂ© Ă  moins de 3 cm. Nous pouvons alors tenter de reproduire les branchements pour toutes nos pompes et commencer Ă  structurer notre code avec les pompes correspondant aux boissons souhaitĂ©es. Faisant face Ă  des problĂšmes pour travailler avec le Nano-Iot comme nous le souhaitions, nous avons cherchĂ© en parallĂšle une alternative pour proposer nos diffĂ©rentes boissons. Et pour cela, nous avons dĂ©cidĂ© de travailler avec des boutons poussoirs. C'est aussi Ă  ce moment qu'il nous a semblĂ© judicieux de nous limiter dans le nombre de pompes en passant de  7 Ă  4 pompes ce qui nous permettait aussi d'avoir un plus petit montage Ă  rĂ©aliser pour notre design. Remarque : Un fil GND (Noir) et un fil 5V (Blanc) sont reliĂ©s de l'arduino vers la platine respectivement sur la bande moins et la bande plus. Tous les fils devant ĂȘtre reliĂ©s au GND seront donc sur la ligne des moins et ceux devant ĂȘtre reliĂ©s au 5V seront sur la ligne des plus. Nous arrivons Ă  rĂ©aliser un premier montage pour activer une pompe Ă  l'aide d'un bouton, mais nous Ă©prouvons quelques problĂšmes pour le code pour apposer la condition && entre le capteur et le bouton. En effet, nous souhaitons que la pompe s'active si et uniquement si l'obstacle se trouve Ă  moins de 3 cm du capteur et si le bouton a Ă©tĂ© activĂ©. En essayant une condition if ((bouton == 0) && (cm<3)), nous remarquons que le bouton n'est pas pris en compte dans l'activation de la pompe. Pour finalement faire fonctionner nos deux conditions, il nous a fallu dĂ©clarer nos conditions comme des variables "boolean" dites aussi "tout ou rien". C'est ce qu'il est possible de voir en rouge dans le code correspondant au montage (a). Cela nous permet d'indiquer Ă  l'arduino que nous avons deux Ă©tats pour chacune de nos variables : Ă©tat 0 oĂč le bouton n'a pas Ă©tĂ© activĂ© et oĂč le capteur ne repĂšre un obstacle Ă  moins de 3 cm et l'Ă©tat 1 oĂč le bouton est activĂ© et le capteur identifie bien un obstacle Ă  moins de 3 cm. const int pingPin = 7; const int pumpPin2 = 2; // // le relais est connectĂ© Ă  la broche  de la carte Adruino const int bouton1 = 3; boolean boutonappuye1; boolean proche; void setup() { // initialize serial communication: Serial.begin(9600); // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pumpPin2, OUTPUT); pinMode(bouton1,INPUT); } void loop() { // establish variables for duration of the ping, and the distance result // in inches and centimeters: long duration, inches, cm; // The same pin is used to read the signal from the PING))): a HIGH pulse // whose duration is the time (in microseconds) from the sending of the ping // to the reception of its echo off of an object. pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // convert the time into a distance inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.print(cm); Serial.print("cm"); Serial.println(); boutonappuye1 = digitalRead(bouton1); Serial.println(boutonappuye1); proche = (cm<3); if (boutonappuye1 && proche) { digitalWrite(pumpPin2, LOW);// la pompe Ă  eau remplit la bouteille } else { digitalWrite(pumpPin2, HIGH); // la pompe Ă  eau s'arrĂȘte } } long microsecondsToInches(long microseconds) { // According to Parallax's datasheet for the PING))), there are 73.746 // microseconds per inch (i.e. sound travels at 1130 feet per second). // This gives the distance travelled by the ping, outbound and return, // so we divide by 2 to get the distance of the obstacle. // See: https://www.parallax.com/package/ping-ultrasonic-distance-sensor-downloads/ return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { // The speed of sound is 340 m/s or 29 microseconds per centimeter. return microseconds / 29 / 2; } Remarque : Ce code fonctionne de telle maniĂšre qu'il indique que lorsque le capteur dĂ©tecte un obstacle Ă  moins de 3 cm et le bouton est appuyĂ© alors la pompe est allumĂ©. Cependant d'aprĂšs le code c'est l'inverse qui devrait se passer puisqu'il est indiquĂ© que la pompe est en "LOW". Nous expliquons cela par le fait que des branchements sont inversĂ©s et inversent donc la consigne. A partir de ce premier code, nous pouvons donc activer les pompes lorsque la condition du capteur et du bouton est respectĂ© et si l'on s'Ă©loigne assez du capteur ou si nous arrĂȘtons d'appuyĂ© sur le bouton alors la pompe s'arrĂȘte. Nous souhaitions qu'une fois que le bouton n'est pas besoin d'ĂȘtre pressĂ© en continue pour obtenir notre boisson. nous avons rajouter des "delay" pour activer les pompes un temps donnĂ©. Dans ce cas, le capteur et le bouton restent bloquĂ©s en position 1 tant que le delay n'est pas arrivĂ© Ă  termes, cela signifie que nous ne pouvons pas arrĂȘter la pompe lorsque  les deux conditions sont rĂ©unis une fois. CotĂ© design nous choisissons une version un peu plus dĂ©finitive du modĂšle final de la machine et faisons l’inventaire des planches et tailles de planches nĂ©cessaires : Nous prĂ©voyons donc d’utiliser une planche intermĂ©diaire en hauteur afin de fixĂ© les pompes Ă  cotĂ© de l’arduino et de dĂ©dier un espace spĂ©cifique pour les bouteilles et les tubes. Cependant, nous voyons d’or et dĂ©jĂ  que nous n’allons pas avoir assez de tube en plastique fournis. Effectivement nous n’avons qu’un seul mĂštre de tube pour un total de 4 pompes au final, dont 1 tube dois descendre tout au fond de la bouteille, et l’autre ressortir au point d’écoulement du liquide sur la machine. Nous faisons donc le choix de sacrifier de la longueur de file dans le fond de certaines bouteilles. Semaine 30 Janvier : Plusieurs Ă©tapes du projet sont rĂ©alisĂ©es cette semaine, nous travaillons Ă  la fois sur la finalisation de notre code et de notre montage pour quatre pompes et quatre boutons, mais aussi sur la construction de la structure et sur le site que nous avons souhaitĂ© rĂ©aliser afin de prĂ©senter nos boissons. RĂ©alisation du site : Pour finaliser le projet il nous a fallu trouver la meilleure interface afin de rendre le distributeur ergonomique et facile d’utilisation. Nous avons donc dĂ©cidĂ© de commencer une maquette. Comme il Ă©tait complexe de faire un design directement sur la machine nous avons pensĂ© faire un menu virtuel.  Nous sommes tout d’abord partis sur une carte virtuelle avec le menu liĂ© Ă  un QR Code sur la machine. AprĂšs rĂ©flexions nous avons dĂ©cidĂ© de voir encore plus loin en crĂ©ant un site permettant d’avoir accĂšs aux menus.  Le site s’appelle Flamme & Co, un nom qui nous embarque dans une ambiance chaleureuse avec « Flamme » et rafraichissante avec « Co » (pour coktail), et qui nous fait voyager : Flamenco (Flamme & Co). Le site est composĂ© de l’accueil oĂč l’on peut trouver les diffĂ©rentes informations clĂ©s sur la marque. D’autre part dans l’onglet « Commandes en ligne » on peut retrouver et choisir les diffĂ©rentes boissons proposĂ©es. Pour rendre accessible le site, nous avons souhaitĂ© installer un QR code sur notre machine afin d'y avoir directement accĂšs et pouvoir dĂ©couvrir le dĂ©tails des boissons proposĂ©es. Code et montage : Le montage et le code ayant Ă©tĂ© rĂ©alisĂ© pour une pompe liĂ©e Ă  un bouton et au capteur, la suite Ă©tait donc d'appliquer tout cela Ă  quatre pompes et quatre boutons afin d'avoir deux cocktails et deux boissons Ă  proposer. En suivant le mĂȘme montage que celui pour une pompe et un bouton, nous avons donc rĂ©ussi Ă  le reproduire avec nos trois pompes et boutons supplĂ©mentaires. Le code suivant nous permet d'activer nos quatre pompes avec quatre boutons. const int pingPin = 10; const int pumpPin2 = 2; // // le relais est connectĂ© Ă  la broche  de la carte Adruino const int pumpPin3 = 3; // // le relais est connectĂ© Ă  la broche  de la carte Adruino const int pumpPin4 = 4; // // le relais est connectĂ© Ă  la broche  de la carte Adruino const int pumpPin5 = 5; // // le relais est connectĂ© Ă  la broche  de la carte Adruino const int bouton1 = 6; const int bouton2 = 7; const int bouton3 = 8; const int bouton4 = 9; boolean boutonappuye1; boolean boutonappuye2; boolean boutonappuye3; boolean boutonappuye4; boolean proche; void setup() { // initialize serial communication: Serial.begin(9600); // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pumpPin2, OUTPUT); pinMode(pumpPin3, OUTPUT); pinMode(pumpPin4, OUTPUT); pinMode(pumpPin5, OUTPUT); ; pinMode(bouton1,INPUT); pinMode(bouton2,INPUT); pinMode(bouton3,INPUT); pinMode(bouton4,INPUT); } void loop() { // establish variables for duration of the ping, and the distance result // in inches and centimeters: long duration, inches, cm; // The same pin is used to read the signal from the PING))): a HIGH pulse // whose duration is the time (in microseconds) from the sending of the ping // to the reception of its echo off of an object. pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // convert the time into a distance inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.print(cm); Serial.print("cm"); Serial.println(); boutonappuye1 = digitalRead(bouton1); Serial.println(boutonappuye1); boutonappuye2 = digitalRead(bouton2); Serial.println(boutonappuye2); boutonappuye3 = digitalRead(bouton3); Serial.println(boutonappuye3); boutonappuye4 = digitalRead(bouton4); Serial.println(boutonappuye4); proche = (cm<5); if (boutonappuye1 && proche) { digitalWrite(pumpPin2, LOW);// la pompe Ă  eau remplit la bouteille digitalWrite(pumpPin3, LOW);// la pompe Ă  eau remplit la bouteille delay(5000); digitalWrite(pumpPin2, HIGH); // la pompe Ă  eau s'arrĂȘte digitalWrite(pumpPin3, HIGH);// la pompe Ă  eau s'arrĂȘte } else { digitalWrite(pumpPin2, HIGH); // la pompe Ă  eau s'arrĂȘte digitalWrite(pumpPin3, HIGH);// la pompe Ă  eau s'arrĂȘte } if (boutonappuye2 && proche) { digitalWrite(pumpPin5, LOW);// la pompe Ă  eau remplit la bouteille delay(5000); } else { digitalWrite(pumpPin5, HIGH);// la pompe Ă  eau s'arrĂȘte } if (boutonappuye3 && proche){ digitalWrite(pumpPin4, LOW);// la pompe Ă  eau remplit la bouteille delay(5000); digitalWrite(pumpPin4, HIGH);// la pompe Ă  eau s'arrĂȘte } else { digitalWrite(pumpPin4, HIGH); // la pompe Ă  eau s'arrĂȘte } if (boutonappuye4 && proche) { digitalWrite(pumpPin2, LOW);// la pompe Ă  eau remplit la bouteille delay(5000); digitalWrite(pumpPin2, HIGH);// la pompe Ă  eau s'arrĂȘte } else { digitalWrite(pumpPin2, HIGH); // la pompe Ă  eau s'arrĂȘte } } long microsecondsToInches(long microseconds) { // According to Parallax's datasheet for the PING))), there are 73.746 // microseconds per inch (i.e. sound travels at 1130 feet per second). // This gives the distance travelled by the ping, outbound and return, // so we divide by 2 to get the distance of the obstacle. // See: https://www.parallax.com/package/ping-ultrasonic-distance-sensor-downloads/ return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { // The speed of sound is 340 m/s or 29 microseconds per centimeter. return microseconds / 29 / 2; } Nous nous sommes rendus compte lorsque nous avons voulu faire fonctionner notre montage avec les quatre pompes que la pompe 4 ne fonctionnait pas. Nous l'avons testĂ©e toute seule et elle ne fonctionnait toujours pas. En essayant de la changer avec une des trois autres pompes qui nous restait nous avions toujours le mĂȘme problĂšme et sommes restĂ© assez longtemps bloquĂ© dessus. Au final en essayant de refaire deux montages sĂ©parĂ©s avec deux pompes sur des platines diffĂ©rentes puis de les assembler ensemble sur une seule platine et un seule arduino, nous avons fini par avoir un montage fonctionnel associĂ© Ă  un code fonctionnel. En parallĂšle, nous travaillons sur le montage de la structure : Prise de mesures rĂ©elles et dĂ©coupes des 1er planches. Nous cherchons le materiel le plus adaptĂ© pour crĂ©e le cadre de notre machine. Nous avons choisi du bois car lĂ©ger et facile d’accĂšs et facilement dĂ©coupable et donc assemblable. Nous avons optĂ© pour du bois de 7mm afin d’assurer l’intĂ©gritĂ© de la machine. Plusieurs options : rails, clous, colle, dĂ©coupage pour entrelacement du bois, vis
 Peu de vis avaient une taille adaptĂ© Ă  notre taille de bois, en effet soit elles Ă©taient au bon diamĂštre mais trop longues, soit Ă  la bonne longueur mais beaucoup trop large. (suite...) Nous travaillons donc avec la dĂ©coupeuse laser pour les dĂ©coupes concernant le bac de rĂ©cupĂ©ration, les planches de la structure (pour les façonner Ă  la bonne taille et faire les trous nĂ©cessaires pour faire passer nos Ă©lĂ©ments comme les tuyaux reliĂ©s aux pompes par exemple). La machine Ă  gravure est aussi utilisĂ©e pour notre le QR code amenant Ă  notre site, mais aussi pour la plaquette comportant le nom de notre groupe et nos noms. Nous nous sommes Ă©normĂ©ment aidĂ© de la dĂ©coupeuse laser pour couper nos planches. Nous avons utilisĂ© 7 planches principales ; -3 planches de 22,5 x 50 cm, une en arriĂšre qui peut s’ouvrir, les deux autres sur les cĂŽtĂ©s. -1 planche de 22,5 x 45,4 cm, pour placer notre Ă©quipement, pompes, arduino, breadboard. -2 planches de 22,5 x 30 cm, une pour placer nos bouteilles et l’autre pour placer notre capteur sonore. -1 planche de 22,5 x 13,1 cm, pour placer la carte Ă©lectronique. Nous avons Ă©galement dĂ©coupĂ© des trous pour faire passer nos tuyaux en travers, 4 trous ont Ă©tĂ© fait et chacun d’eux a un diamĂštre de 0,9 cm, quant Ă  nos pompes nous avons dĂ©cidĂ© de les coller directement sur la planche oĂč nous avons placer la breadboard et l’arduino. Un cinquiĂšme trou de 1,8 cm de diamĂštre a Ă©tĂ© conçu pour que nous puissions rĂ©unir tous nos tuyaux Semaine du 6 FĂ©vrier : Pour rĂ©aliser notre machine, nous avons dĂ©cidĂ© de partir sur 4 boissons diffĂ©rentes : eau, jus de pomme, Coca et Whisky. Nous avons donc utilisĂ© 4 pompes diffĂ©rentes et 4 boutons poussoirs. Notre but Ă©tait d’avoir au moins un mĂ©lange parmi les diffĂ©rentes boissons, nous avons donc optĂ© pour un mĂ©lange whisky coca qui est contrĂŽlĂ© par un seul bouton quant aux trois autres boutons eux vont permettre de donner les boissons sans mĂ©lange ; eau, jus de pomme, Coca. Concernant le code, comme nous avions besoin d'un capteur dĂ©clenchant une action nous avions donc fait en sorte de mettre en place deux conditions pour que notre machine fonctionne. Appuyer sur le bouton est obligatoire pour utiliser la machine mais aussi cette condition doit ĂȘtre accompagnĂ©e par une autre condition qui est d'ĂȘtre Ă  une distance bien spĂ©cifique du capteur sonar pour que le gobelet se remplisse. Si les deux conditions ne sont pas respectĂ©es alors rien ne s’écoule des tuyaux. Pour une question de simplicitĂ© d’accĂšs et d’esthĂ©tique nous avons soudĂ© les boutons poussoirs sur une carte Ă©lectronique (circuit imprimĂ©). Il nous faut ensuite y souder des fils de connexions qui pourront ensuite ĂȘtre reliĂ©s Ă  la platine. Attention Ă  ĂȘtre attentif aux placements des fils en comparant l'endroit et l'envers. En effet, en suivant le montage initial, nous savons que le fil GND est en haut Ă  droite, le fil 5V est en haut Ă  gauche et le fil pour le pin digital est Ă  en bas Ă  droite. Donc pour souder correctement en gardant ces emplacements, ils nous faut souder notre fil noir (GND) en haut Ă  gauche, le fil blanc (5V) en haut Ă  droite et le fil bleu (digital) en bas Ă  gauche. Comme montrĂ© dans la photo ci-dessous : Nous pouvons ensuite relier les fils Ă  la platine. Il est donc possible de voir l'agencement de nos pompes et de leurs tuyaux dans notre machine. Les bouteilles se trouvant en dessous de la planche. (photo ?). Jeudi 9 FĂ©vrier : Le jour de la prĂ©sentation, les derniĂšres retouches sont faites ; le montage du bac d’écoulement, les derniĂšres planches sont mises en place. Nous effectuons nos gravures pour le QR code et celle de prĂ©sentation du projet. Nous avons rencontrĂ© un problĂšme avant la prĂ©sentation, la breadboard a cessĂ© de fonctionner, nous Ă©tions obligĂ©s de refaire les branchements, deux des pompes utilisĂ©es n’étaient pas assez puissante, le tuyau utilisĂ© avait une longueur de 1 m ce qui n’était pas assez long (par exemple nous n’avons pas pu faire rentrer complĂštement nos tuyaux dans les bouteilles ; consĂ©quence trĂšs peu de liquide sortait du tuyau.) Nous devons aussi adapter le code au vu de la puissance des pompes. Nous rappelons que les pompes 2 et 3 ne sont pas assez puissante pour pomper n'importe quel liquide. Et nous devons nous rattraper uniquement en utilisant les pompes 4 et 5 correspondant respectivement au whisky et au jus de pomme. const int pingPin = 10; const int pumpPin2 = 2; // // le relais est connectĂ© Ă  la broche de la carte Adruino const int pumpPin3 = 3; // // le relais est connectĂ© Ă  la broche de la carte Adruino const int pumpPin4 = 4; // // le relais est connectĂ© Ă  la broche de la carte Adruino const int pumpPin5 = 5; // // le relais est connectĂ© Ă  la broche de la carte Adruino const int bouton1 = 6; const int bouton2 = 7; const int bouton3 = 8; const int bouton4 = 9; boolean boutonappuye1; boolean boutonappuye2; boolean boutonappuye3; boolean boutonappuye4; boolean proche; void setup() { // initialize serial communication: Serial.begin(9600); // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pumpPin2, OUTPUT); pinMode(pumpPin3, OUTPUT); pinMode(pumpPin4, OUTPUT); pinMode(pumpPin5, OUTPUT); ; pinMode(bouton1,INPUT); pinMode(bouton2,INPUT); pinMode(bouton3,INPUT); pinMode(bouton4,INPUT); } void loop() { // establish variables for duration of the ping, and the distance result // in inches and centimeters: long duration, inches, cm; // The same pin is used to read the signal from the PING))): a HIGH pulse // whose duration is the time (in microseconds) from the sending of the ping // to the reception of its echo off of an object. pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // convert the time into a distance inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.print(cm); Serial.print("cm"); Serial.println(); boutonappuye1 = digitalRead(bouton1); Serial.println(boutonappuye1); boutonappuye2 = digitalRead(bouton2); Serial.println(boutonappuye2); boutonappuye3 = digitalRead(bouton3); Serial.println(boutonappuye3); boutonappuye4 = digitalRead(bouton4); Serial.println(boutonappuye4); proche = (cm<3); digitalWrite(pumpPin2, HIGH); digitalWrite(pumpPin3, HIGH); digitalWrite(pumpPin4, HIGH); digitalWrite(pumpPin5, HIGH); if (boutonappuye1 && proche) { digitalWrite(pumpPin4, LOW);// la pompe Ă  whisky remplit le verre delay(10000); digitalWrite(pumpPin4, HIGH);// la pompe Ă  whisky s'arrĂȘte digitalWrite(pumpPin2, LOW);// la pompe Ă  coca remplit le verre delay(40000); digitalWrite(pumpPin2, HIGH);// la pompe Ă  coca s'arrĂȘte } else { digitalWrite(pumpPin4, HIGH); // la pompe Ă  eau s'arrĂȘte digitalWrite(pumpPin2, HIGH);// la pompe Ă  eau s'arrĂȘte } if (boutonappuye2 && proche) { digitalWrite(pumpPin5, LOW);// la pompe Ă  jus de pomme est amenĂ© au verre delay(60000); digitalWrite(pumpPin5, HIGH); } else { digitalWrite(pumpPin5, HIGH);// la pompe s'arrĂȘte } if (boutonappuye3 && proche){ digitalWrite(pumpPin3, LOW);// la pompe Ă  eau remplit le verre delay(10000); digitalWrite(pumpPin3, HIGH);// la pompe Ă  eau s'arrĂȘte } else { digitalWrite(pumpPin3, HIGH); // la pompe Ă  eau s'arrĂȘte } if (boutonappuye4 && proche) { digitalWrite(pumpPin2, LOW);// la pompe Ă  coca remplit le verre delay(5000); digitalWrite(pumpPin2, HIGH);// la pompe Ă  coca s'arrĂȘte } else { digitalWrite(pumpPin2, HIGH); // la pompe Ă  coca s'arrĂȘte } } long microsecondsToInches(long microseconds) { // According to Parallax's datasheet for the PING))), there are 73.746 // microseconds per inch (i.e. sound travels at 1130 feet per second). // This gives the distance travelled by the ping, outbound and return, // so we divide by 2 to get the distance of the obstacle. // See: https://www.parallax.com/package/ping-ultrasonic-distance-sensor-downloads/ return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { // The speed of sound is 340 m/s or 29 microseconds per centimeter. return microseconds / 29 / 2; } Il nous faut donc 1 minute d'activitĂ© de notre pompe 5 pour pouvoir remplir Ă  moitiĂ© notre verre de 33 cl, ce qui corroborent notre hypothĂšse que les pompes ne sont pas assez performantes. Mardi 14 fĂ©vrier : Nous sommes revenus ce mardi pour apporter quelques finitions au projet. Il fallait notamment refermer la structure avec la planche du haut pour pouvoir cacher les branchements.  Elle avait Ă©tĂ© dĂ©coupĂ© un peu plus grande que prĂ©vue, nous avons donc du la repasser Ă  la dĂ©coupeuse laser pour enlever 1 mm dans la largeur et 5 mm dans la longueur. Au vu des problĂšmes de pompes, nous avions comme objectif de changer les pompes 2 et 3 qui ne fonctionnaient pas assez contre d'autres qui seraient Ă©ventuellement assez puissantes. En testant les 3 pompes supplĂ©mentaires qui n'Ă©taient pas initialement utilisĂ©es, aucunes d'entre elles ne permettaient de pomper du liquide. La dĂ©cision a Ă©tĂ© prise de se limiter Ă  deux pompes fonctionnelles et donc deux boutons. Le montage final comporte deux pompes, la pompe 4 reliĂ© au coca et la 5 au jus de pomme. Le coca est servi lorsque nous appuyons sur le bouton 1 et le bouton 2 est pour le jus de pomme. En testant Ă  nouveau les pompes, nous avons dĂ©cidĂ© de changer les temps de "delay", car en effet pour un temps de fonctionnement de 25000 ms ou 25 s, nous avons environ 12,5 cl de boisson versĂ©, ce qui nous a semblĂ© adaptĂ© pour diffĂ©rents volume de verre. const int pingPin = 10; const int pumpPin4 = 4; // // le relais est connectĂ© Ă  la broche de la carte Adruino const int pumpPin5 = 5; // // le relais est connectĂ© Ă  la broche de la carte Adruino const int bouton1 = 6; const int bouton2 = 7; boolean boutonappuye1; boolean boutonappuye2; boolean proche; void setup() { // initialize serial communication: Serial.begin(9600); // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pumpPin4, OUTPUT); pinMode(pumpPin5, OUTPUT); ; pinMode(bouton1,INPUT); pinMode(bouton2,INPUT); } void loop() { // establish variables for duration of the ping, and the distance result // in inches and centimeters: long duration, inches, cm; // The same pin is used to read the signal from the PING))): a HIGH pulse // whose duration is the time (in microseconds) from the sending of the ping // to the reception of its echo off of an object. pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // convert the time into a distance inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.print(cm); Serial.print("cm"); Serial.println(); boutonappuye1 = digitalRead(bouton1); Serial.println(boutonappuye1); boutonappuye2 = digitalRead(bouton2); Serial.println(boutonappuye2); proche = (cm<5); if (boutonappuye1 && proche) { digitalWrite(pumpPin4, LOW);// la pompe Ă  eau remplit la bouteille delay(25000); digitalWrite(pumpPin4, HIGH);// la pompe s'arrĂȘte } else { digitalWrite(pumpPin4, HIGH);// la pompe s'arrĂȘte } if (boutonappuye2 && proche) { digitalWrite(pumpPin5, LOW);// la pompe Ă  coca remplit la bouteille delay(25000); digitalWrite(pumpPin5, HIGH);// la pompe s'arrĂȘte } else { digitalWrite(pumpPin5, HIGH);// la pompe s'arrĂȘte } } long microsecondsToInches(long microseconds) { // According to Parallax's datasheet for the PING))), there are 73.746 // microseconds per inch (i.e. sound travels at 1130 feet per second). // This gives the distance travelled by the ping, outbound and return, // so we divide by 2 to get the distance of the obstacle. // See: https://www.parallax.com/package/ping-ultrasonic-distance-sensor-downloads/ return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { // The speed of sound is 340 m/s or 29 microseconds per centimeter. return microseconds / 29 / 2; } RĂ©gulation du taux d'humiditĂ© UE 803 - Optimisation et ContrĂŽle des ProcĂ©dĂ©s - Master 2 - IngĂ©nierie Chimique Projet ExpĂ©rimental Arduino Objectif du projet : RĂ©ussir Ă  rĂ©guler un flux d'air sec et un flux de d'air humidifiĂ© Ă  l'aide d'un barboteur pour rĂ©guler le taux d'humiditĂ© dans l'air Ă  l'aide de 2 pompes et du logiciel Arduino. Pourquoi avons-nous choisi ce projet ? La rĂ©gulation de l'humiditĂ© de l'air est un procĂ©dĂ© trĂšs utilisĂ© en industrie pour rĂ©aliser des analyses qualitatives mais aussi dans le but de tester la rĂ©sistance de certains produits Ă  l'humiditĂ© notamment en industrie. Liste du matĂ©riel : 2 x Électrovannes pour l'air 2 x Tuyaux hermĂ©tiques pour le montage qui seront dĂ©coupĂ©s en plusieurs morceaux 1 x Barboteur maison 1 x Capteur d’humiditĂ© 2 x Pompes 1 x Carte Arduino 2 x bouteilles 1 x paquet de riz 2 x relais fils Ă©lectrique pour raccorder les appareils entre eux - RĂ©alisation d'un schĂ©ma prototype du montage (28/10/2022) On a rĂ©alisĂ© un premier schĂ©ma du montage afin d'Ă©tudier les Ă©quipements dont nous aurions besoin pour rĂ©aliser notre projet. - RĂ©alisation du support du projet (12/01/2023) Sur cette premiĂšre image on peut voir support qui a Ă©tĂ© assemblĂ© Ă  partir de bois recycler. - RĂ©alisation du barboteur (12/01/2023)                                   Afin de rĂ©aliser notre barboteur nous utilisons une bouteille de soda sur laquelle nous rĂ©alisons 2 trous : le 1er en bas de la bouteille qui est la sortie d'air humide et le second en haut de la bouteille au niveau du bouchon pour l'entrĂ©e gaz sec. Les trous ont Ă©tĂ© rĂ©alisĂ©s Ă  l'aide de la perceuse Ă  colonne qui nous permet d'avoir plus de prĂ©cision pour la rĂ©alisation de nos trous. Pour humidifier l'air il entre par le haut de la bouteille dans un tube qui bullera dans l'eau pour l'humidifier. - RĂ©alisations des relais pour le contrĂŽle des pompes (12/01/2023) Des relais ont Ă©tĂ© ajoutĂ©s afin de pouvoir contrĂŽler les pompes individuellement en fonction du signal envoyĂ© par la carte arduino. - RĂ©alisation du montage Arduino / Code (26/01/2023) Code que nous avons trouvĂ© et qui a Ă©tĂ© testĂ© : */ #include #define brocheDeBranchementDHT 6 // La ligne de communication du DHT22 sera donc branchĂ©e sur la pin D6 de l'Arduino #define typeDeDHT DHT22 // Ici, le type de DHT utilisĂ© est un DHT22 (que vous pouvez changer en DHT11, DHT21, ou autre, le cas Ă©chĂ©ant) // Instanciation de la librairie DHT DHT dht(brocheDeBranchementDHT, typeDeDHT); // ======================== // Initialisation programme // ======================== void setup () { // Initialisation de la liaison sĂ©rie (pour retourner les infos au moniteur sĂ©rie de l'ordi) Serial.begin(9600); Serial.println("Programme de test du DHT22"); Serial.println("=========================="); Serial.println(); // Initialisation du DHT22; dht.begin(); } // ================= // Boucle principale // ================= void loop () { // Lecture des donnĂ©es float tauxHumidite = dht.readHumidity(); // Lecture du taux d'humiditĂ© (en %) float temperatureEnCelsius = dht.readTemperature(); // Lecture de la tempĂ©rature, exprimĂ©e en degrĂ©s Celsius // VĂ©rification si donnĂ©es bien reçues if (isnan(tauxHumidite) || isnan(temperatureEnCelsius)) { Serial.println("Aucune valeur retournĂ©e par le DHT22. Est-il bien branchĂ© ?"); delay(2000); return; // Si aucune valeur n'a Ă©tĂ© reçue par l'Arduino, on attend 2 secondes, puis on redĂ©marre la fonction loop() } // Calcul de la tempĂ©rature ressentie float temperatureRessentieEnCelsius = dht.computeHeatIndex(temperatureEnCelsius, tauxHumidite, false); // Le "false" est lĂ  pour dire qu'on travaille en °C, et non en °F // Affichage des valeurs Serial.print("HumiditĂ© = "); Serial.print(tauxHumidite); Serial.println(" %"); Serial.print("TempĂ©rature = "); Serial.print(temperatureEnCelsius); Serial.println(" °C"); Serial.print("TempĂ©rature ressentie = "); Serial.print(temperatureRessentieEnCelsius); Serial.println(" °C"); Serial.println(); // Temporisation de 2 secondes (pour rappel : il ne faut pas essayer de faire plus d'1 lecture toutes les 2 secondes, avec le DHT22, selon le fabricant) delay(2000); } On rĂ©alise les premiers branchements des 2 pompes sur la carte arduino ainsi que le capteur d'humiditĂ© qui nous a d'ailleurs posĂ© un peu problĂšme car le capteur possĂšde 4 branches et nous n'avons la possibilitĂ© que de brancher 4 branches nous avons donc demander de l'aide Ă  monsieur Pulpytel pour nous aider pour ce branchement. Suite Ă  ça nous avons recherchĂ© le code afin de faire fonctionner le capteur d'humiditĂ© et pouvoir rĂ©cupĂ©rer les valeurs. Code que nous avons rĂ©alisĂ© : #include #include #include #define brocheDeBranchementDHT 6    // La ligne de communication du DHT22 sera donc branchĂ©e sur la pin D6 de l'Arduino#define typeDeDHT DHT22             // Ici, le type de DHT utilisĂ© est un DHT22 (que vous pouvez changer en DHT11, DHT21, ou autre, le cas Ă©chĂ©ant)// Instanciation de la librairie DHTDHT dht(brocheDeBranchementDHT, typeDeDHT);int objectif;const int relais_pompe1 = 3;const int relais_pompe2 = 4;// ========================// Initialisation programme// ========================void setup () { // Initialisation de la liaison sĂ©rie (pour retourner les infos au moniteur sĂ©rie de l'ordi)  Serial.begin(9600);  Serial.println("Programme de test du DHT22");  Serial.println("==========================");  Serial.println();  pinMode(BROCHE_CAPTEUR, INPUT_PULLUP);  pinMode(relais_pompe1,OUTPUT);  pinMode(relais_pompe2,OUTPUT); // Initialisation du DHT22;  dht.begin();} // =================// Boucle principale// =================void loop () { // Lecture des donnĂ©es  float tauxHumidite = dht.readHumidity();              // Lecture du taux d'humiditĂ© (en %)  float temperatureEnCelsius = dht.readTemperature();   // Lecture de la tempĂ©rature, exprimĂ©e en degrĂ©s Celsius printf("quel est le taux d'humiditĂ© souhaitĂ© ?"); scanf("%d",&objectif);  // VĂ©rification si donnĂ©es bien reçues  if (isnan(tauxHumidite) || isnan(temperatureEnCelsius)) {    Serial.println("Aucune valeur retournĂ©e par le DHT22. Est-il bien branchĂ© ?");    delay(2000);    return;         // Si aucune valeur n'a Ă©tĂ© reçue par l'Arduino, on attend 2 secondes, puis on redĂ©marre la fonction loop()  }  // Calcul de la tempĂ©rature ressentie  float temperatureRessentieEnCelsius = dht.computeHeatIndex(temperatureEnCelsius, tauxHumidite, false); // Le "false" est lĂ  pour dire qu'on travaille en °C, et non en °F // Affichage des valeurs  Serial.print("HumiditĂ© = "); Serial.print(tauxHumidite); Serial.println(" %");  Serial.print("TempĂ©rature = "); Serial.print(temperatureEnCelsius); Serial.println(" °C");  Serial.print("TempĂ©rature ressentie = "); Serial.print(temperatureRessentieEnCelsius); Serial.println(" °C");  Serial.println();  // Temporisation de 2 secondes (pour rappel : il ne faut pas essayer de faire plus d'1 lecture toutes les 2 secondes, avec le DHT22, selon le fabricant)  delay(2000);  while(tauxHumidite!=objectif){if(tauxHumidite ne rien faire b- Suivre l'Ă©volution d’un mĂ©andre -> prĂ© tracer un chemin dans le sable 13- Lancer l’expĂ©rience en branchant la pompe. C’est parti ! 14- Lorsque votre expĂ©rience est conclue, dĂ©brancher la pompe. 15- Laisser l’eau du delta s’évader dans le bac de dĂ©cantation (attendre 5 minutes). Pas d’inquiĂ©tudes si du sable est emportĂ©. 16- S’il vous l’est demandĂ©, rĂ©aliser des coupes. 17- Retirer de la table le tuyau d’alimentation en eau. 18- Retirer l’eau du bac de dĂ©cantation. 19- Ajuster les pieds de la table de sorte que le pendage soit nul. 20- MĂ©langer grossiĂšrement le sable, de sorte que le groupe suivant puisse dĂ©buter l’expĂ©rience avec un sable hĂ©tĂ©rogĂšne et sans avoir connaissance du rĂ©sultat attendu. Conclusion et perspectives Notre objectif avec ce projet Ă©tait de concevoir un systĂšme de modĂ©lisation de rĂ©seau fluviatile pour un coĂ»t plus raisonnable que le modĂšle EmRiver. Il devait ĂȘtre suffisamment petit pour ĂȘtre utilisĂ© en plusieurs exemplaires dans la mĂȘme salle de classe, mais assez grand pour ĂȘtre observable par un groupe de 4 Ă©lĂšves ; l’eau et le “sable” devaient ĂȘtre conservĂ©s dans le systĂšme avec un circuit fermĂ©. Tout d’abord, au terme de ce projet, nous avons une expĂ©rience qui fonctionne et nous pouvons observer des phĂ©nomĂšnes intĂ©ressants avec. Nous avons d’abord utilisĂ© une table en bois de 75 x 50 x 10 cm, bĂąchĂ©e pour Ă©viter la dĂ©formation et les fuites mais nous pensons qu’utiliser une table plus grande, de 120 x 60 x 15 cm serait plus judicieux, pour pouvoir former plus de mĂ©andres (plus de sable que ce que nous avons utilisĂ© sera nĂ©cessaire). Pour amĂ©liorer la table/bac, utiliser un autre matĂ©riau pourrait contrer les problĂšmes d'Ă©tanchĂ©itĂ© : plexiglass sur mesure (solide, impermĂ©able, transparent, mais d’autant plus cher que des plaques de 8 mm d’épaisseur seraient idĂ©ales), bac en plastique (moins esthĂ©tique mais beaucoup moins coĂ»teux) ou garder du bois mais peint, verni ou avec une bĂąche de qualitĂ© (bĂąche ETM par exemple). Acheter des pieds ajustables similaires Ă  ceux que nous avons fabriquĂ©s seraient aussi indiquĂ©. La circulation d’eau pourrait elle aussi ĂȘtre amĂ©liorĂ©e, notamment selon deux aspects. PremiĂšrement, la pompe que nous utilisons est Ă  dĂ©bit trop important et inconstant : la remplacer par une pompe plus petite et/ou ajouter un dĂ©bit-mĂštre rĂ©glable pour contrĂŽler finement le dĂ©bit serait utile. En second lieu, le systĂšme de dĂ©cantation Ă  deux bacs fonctionne bien mais il est difficile de rĂ©cupĂ©rer le sable car celui-ci est mouillĂ© ou collĂ© aux parois. Une solution serait de placer un grillage horizontal assez haut dans le premier bac, de maniĂšre Ă  retenir le sable au-dessus du niveau de l’eau et ainsi lui permettre de sĂ©cher. Enfin, les impressions 3D sont fonctionnelles et suffisantes, mais souvent peu solides ; nous pourrions les imprimer en rĂ©sine mais les dĂ©formations Ă©ventuelles risquent d’empĂȘcher certaines piĂšces d’ĂȘtre complĂ©mentaires. RĂ©imprimer l’EDU avec une fente externe moins longue pourrait aussi ĂȘtre utile mais pas nĂ©cessaire, tout comme raccourcir la sortie d’eau. Bibliographie [1] « Emriver Stream Tables & Hydraulic Flumes ». Emriver, https://emriver.com/. Remerciements Un grand merci Ă  Loic Labrousse et Ă  Pierre ThĂ©ry qui nous ont aidĂ© et encadrĂ© tout au long du projet. Merci Ă©galement a Damien Do Couto qui nous a fait un retour sur la manip et sur son utilisation possible en TP. Merci aussi Ă  l'Ă©quipe du Fablab Polytech qui nous a appris Ă  utiliser les imprimantes 3D pour les impressions de piĂšces. Carnet de bord SĂ©ance 0 (vendredi 20 janvier) : PrĂ©sentation de l’UE et du projet sable. Nous avons visitĂ© le fablab puis nous avons fait un brainstorming sur comment concevoir la table et son systĂšme hydraulique avec les diffĂ©rents paramĂštres Ă  prendre en compte. SĂ©ance 1 (vendredi 27 janvier) : TEST 1 → bac Ă  tester en bois recouvert bĂąche, connaĂźtre dimensions idĂ©ales et syst hydro ouvert pbm : avec la quantitĂ© de sable, quelle Ă©paisseur ? Est-ce qu’on voit assez de phĂ©nomĂšne avec cette Ă©paisseur ? rapports L/l de la boĂźte pour optimiser les phĂ©nomĂšnes ? Savoir le volume de sable qu’on a et celui nĂ©cessaire. -> Taille de la boĂźte. Avoir notre propre grille de tailles de grains (savoir la granulomĂ©trie de chaque type de grain). IdĂ©e finale : savoir les dimensions de la boĂźte qu’on va prendre. Il nous fallait faire une rĂ©vision du diamĂštre des sables mis Ă  notre disposition, en vue de vĂ©rifier si les valeurs fournies par le site sont en adĂ©quation avec ce que nous disposons (rapport qualitĂ©). Jaune : 1,4 mm de diamĂštre. Blanc : 1 mm. Noir : 0,7 mm. Rouge : 0,4 mm. Toutes les particules ont la mĂȘme masse volumique, Ă©gale Ă  1,5 g/mL. Donc si on prend une table de 75*50 centimĂštres, il faut 28,125 kg de sable. Rouge : plus petit que prĂ©vu, avec 90% environ entre 250 et 200 micromĂštres. Noir : majoritĂ© entre 630 et 425 = plus petit que prĂ©vu (0,7). Blanc : 50% de plus grand que 630 micromĂštres, 50% entre 630 et 425. = plus petit que prĂ©vu (1 mm). Jaune : majoritĂ© supĂ©rieure Ă  1,4 et les plus petits ne passent pas le filtre Ă  630 micromĂštres = Ă  peu prĂšs la bonne taille. Donc au sein de la mĂȘme couleur, on a une granulomĂ©trie hĂ©tĂ©rogĂšne. De plus, la plupart des grains sont globalement plus petits que les valeurs donnĂ©es (tout sauf le jaune). La courbe granulomĂ©trique qui a rĂ©sultĂ© de la sĂ©ance n’est pas assez prĂ©cise car nous nous intĂ©ressions seulement Ă  oĂč s'arrĂȘtait la majoritĂ© des grains. objectifs sĂ©ance 2 : -Avec un prototype de bac, tester les Ă©coulements d’eau pour savoir l’épaisseur de sable Ă  mettre -Il faudrait re-tamiser les diffĂ©rents sables pour pouvoir faire notre propre courbe granulomĂ©trique en cumulĂ© (les tailles de grains observĂ©es diffĂšrent de celles indiquĂ©es). SĂ©ance 2 (vendredi 3 fĂ©vrier) : EtanchĂ©itĂ© du bac (Kathy + Dan) Loic Labrousse nous a fait un prototype de table pour tester les Ă©coulements d’eau. La prioritĂ© a Ă©tĂ© de rendre la table Ă©tanche. AprĂšs avoir mesurĂ© toute la surface du bac Ă  couvrir et donc les dimensions de la bĂąche Ă  utiliser, nous avons collĂ© du scotch double face pour coller la bĂąche sur la table. Cela nous a pris plus de temps que prĂ©vu en raison de la prĂ©caution lors de l’utilisation du scotch double face, les points les plus critiques Ă  Ă©tanchĂ©ifier Ă©tant les angles. Avant AprĂšs L’autre possibilitĂ© est d’avoir directement une table en plexiglass ce qui ĂŽterait cette Ă©tape d'Ă©tanchĂ©ification mais ça coĂ»te cher. Il n’y a plus qu’à tester vraiment la table avec de l’eau la semaine prochaine. Selon le site emriver.com qui prĂ©sente les modĂšles dont nous nous inspirons en version cheap, l'angle d’inclinaison de la table est de 3 degrĂ© et celui-ci doit pouvoir varier entre 0 et 3,5. Ce qui veut donc dire qu’on doit pouvoir surĂ©lever un cĂŽtĂ© de la table jusqu’à 6 cm environ. Donc l’autre objectif de la prochaine sĂ©ance sera de voir comment on pourra le faire. CrĂ©ation des piĂšces pour entrĂ©e et sortie d'eau (Alice + Amaury) Pendant cette sĂ©ance nous avons aussi dĂ©couvert le logiciel Openscad avec lequel nous avons tentĂ© de crĂ©er le systĂšme de sortie d’eau du bac. L’idĂ©e Ă©tait de faire une sorte de vis creuse que l’on ferait tourner d’un tour (360°) pour modifier la hauteur de 1cm. Le trou d’évacuation d’eau Ă©tant au bout de cette vis, cela permet donc de modifier et contrĂŽler la hauteur d’eau au niveau de la zone du delta. La premiĂšre version du code est la suivante : SORTIE D'EAU (cliquer sur le triangle pour voir le code) // valeurs vis externe color1 = "LightBlue" h0 = 100 r0 = 22 fn = 36 tr2 = // vis externe difference(){ union(){ color(color1) cylinder(h0, r0, r0, true, $fn = fn); translate([0, 0, 49]) color(color1) cylinder(2.9, 28, 28, true, $fn = 36); translate([0, 0, -62.5]) color(color1) cylinder(25, 16, 22, true); translate([0, 0, -87.5]) color(color1) cylinder(25, 16, 16, true); } cylinder(101, 19, 19, true, $fn = 36); translate([0, 0, -62.5]) cylinder(26, 13, 19, true); translate([0, 0, -87.5]) cylinder(26, 13, 13, true); linear_extrude(height = 100, center = true, convexity = 10, twist = 3600) translate([20, 0, 0]) circle(r = 1.5); } // vis interne difference(){ union(){ translate([0, -17.5, 70]) color("Pink") cylinder(30, 1.5, 1.5, true); translate([0, 0, 85]) rotate(a=[90, 90, 0]) color("Pink") cylinder(38, 1.5, 1.5, true); translate([0, 17.5, 70]) color("Pink") cylinder(30, 1.5, 1.5, true); translate([0, 0, 2.5]) color("Pink") cylinder(105, 19, 19, true, $fn = 36); //    cylinder(100, 21.3, 21.3, true, $fn = 36); linear_extrude(height = 100, center = true, convexity = 10, twist = 3600, $fn = 36) translate([20, 0, 0]) circle(r = 1.3); } translate([0, 0, 2.5]) cylinder(106, 16, 16, true, $fn = 36); linear_extrude(height = 100, center = true, convexity = 10, twist = 3600, $fn = 36) translate([20, 0, -2.6]) rotate([90, 0, 0]) circle(r = 1.3); } Cependant, nous avons Ă©tĂ© confrontĂ©s Ă  un problĂšme inattendu : en Ă©tirant le cercle pour rĂ©aliser le filetage de vis, celui-ci s’est aplati, ce qui donnait un filetage extrĂȘmement fin et fragile. Pour remĂ©dier Ă  ce problĂšme, nous avons tentĂ© plusieurs approches : Ă  ce jour (07/02), la rĂ©flexion est encore en cours. HypothĂšses : 1) Essayer de prendre une sphĂšre et de d'utiliser la fonction linear_extrude pour allonger un objet 3D. RĂ©sultat : la fonction linear_extrude ne supporte pas les objets 3D. 2) RĂ©duire l’échelle de l’ensemble pour voir si l’objet Ă©tait “plus rond” Ă  plus petite Ă©chelle. RĂ©sultat : pas plus rond, c’est liĂ© Ă  comment marche la fonction. En effet, linear extrude empile juste des formes 2D (=extrusion de la forme 2D d’origine) en les dĂ©plaçant les unes par rapport aux autres en fonction du twist : ici un cercle + un cercle lĂ©gĂšrement dĂ©calĂ© au-dessus + un autre cercle encore dĂ©calĂ© au-dessus ... Donc grand twist = grand dĂ©calage entre les formes = faible Ă©paisseur quelle que soit l’échelle. 3) Obtenir la crĂȘte souhaitĂ©e en ajoutant un cylindre lĂ  oĂč elle devrait ĂȘtre, puis en soustrayant Ă  ce cylindre, via la fonction difference(), des spirales obtenues par linear_extrude. RĂ©sultat : mĂȘme problĂšme que pour crĂ©er directement la crĂȘte, c’est Ă  dire que twist trop grand = crĂȘte trop fine. Autrement dit, on va pas passer la nuit (et 50 lignes de programme) Ă  virer des spirales. 4) On part sur 4 crĂȘtes sur la vis (on adapte donc la forme de la vis externe). On augmente ainsi le pas de vis pour Ă©paissir la crĂȘte = crĂȘtes plus rĂ©sistantes. On ajoute donc : linear_extrude(height = 100, center = true, convexity = 10, twist = tw1, $fn = 36) translate([20, 0, 0]) circle(r = 1.3); linear_extrude(height = 100, center = true, convexity = 10, twist = tw1, $fn = 36) translate([0,20, 0]) circle(r = 1.3); linear_extrude(height = 100, center = true, convexity = 10, twist = tw1, $fn = 36) translate([-20, 0, 0]) circle(r = 1.3); linear_extrude(height = 100, center = true, convexity = 10, twist = tw1, $fn = 36) translate([0, -20, 0]) circle(r = 1.3); RĂ©sultat : ça marche 
 mais 4 crĂȘtes sont inutiles ici (?), car les contraintes sont faibles sur la vis (sinon, utiles pour la soliditĂ© de l’ensemble je crois). On enlĂšve 2 crĂȘtes, pour ne garder que : linear_extrude(height = 100, center = true, convexity = 10, twist = tw1, $fn = 36) translate([20, 0, 0]) circle(r = 1.3); linear_extrude(height = 100, center = true, convexity = 10, twist = tw1, $fn = 36) translate([-20, 0, 0]) circle(r = 1.3); 08/02/2023 AprĂšs 4 tentatives, on a un modĂšle qui tient la route. Maintenant, place au softcoding :) Et voilĂ  le code digne de ce nom, oĂč toutes les tailles et translations sont dĂ©finies selon la hauteur du grand cylindre bleu : //CODE NECESSAIRE POUR IMPRIMER LES 2 PIECES //valeurs gĂ©nĂ©rales colorext= "LightBlue"; colorint= "Pink"; fn= 36; //On notera que ces 3 valeurs ne servent qu'Ă  l'aspect visuel : la couleur ne sera pas nĂ©cessaire Ă  l'impression, et la dĂ©finition permettra un rendu plus harmonieux (et des cercles plus ... ronds). //valeurs gros cylindre (servent de base Ă  toutes les autres valeurs, surtout hbigtube) hbigtube= 100; rbigtube= 0.22*hbigtube; //valeurs vide gros cylindre hemptybigtube =1.01*hbigtube; remptybigtube= 0.19*hbigtube; twistroom= 9*hemptybigtube; //explication : on veut que pour accueillir la crĂȘte de la vis, la rainure ( "room" dans les noms de valeurs) fasse toute la longueur du gros cylindre ("bigtube"). Donc on aurait twistroom= 5.4 (parce que 540° de twist)*hbigtube. // Sauf que le cylindre plat au sommet ("toptube") est posĂ© lĂ©gĂšrement plus haut que le sommet du "bigtube" ... mais pas de problĂšme ! Le tube de vide qui les rend creux ("emptybigtube") est plus grand que le "bigtube" pour rendre "bigtube" et "toptube" creux en mĂȘme temps :) // RĂ©sultat des courses : hroom = hemptybigtube permet de se simplifier la vie, en donnant hroom = 101 alors que h(bigtube+toptube)= 100.9. Ceci Ă©tant fait, on doit Ă©viter de perdre en prĂ©cision sur la rainure : en calculant le twist sur hemptybigtube, on peut garder le twist propotionnel Ă  la taille des tubes, donc toujours la mĂȘme ligne comparativement au tube. conv= 10; //CODE NECESSAIRE EN PLUS POUR IMPRIMER LE SUPPORT //valeurs piĂšce externe (support) //valeurs top cylindre transxtoptube= 0; transytoptube= 0; transztoptube= 0.49*hbigtube; htoptube= 0.029*hbigtube; rtoptube= 0.28*hbigtube; //valeurs cĂŽne et petit tube transxcone= 0; transycone= 0; transzcone= -0.625*hbigtube; hcone= 0.25*hbigtube; rconelow= 0.16*hbigtube; rconetop= 0.22*hbigtube; transxsmolcone= 0; transysmolcone= 0; transzsmolcone1= -0.79*hbigtube; transzsmolcone2= -0.87*hbigtube; transzsmolcone3= -0.95*hbigtube; hsmolcone1= 0.08*hbigtube; hsmolcone3= 0.09*hbigtube; rsmolconetop= 0.16*hbigtube; rsmolconelow1= 0.15*hbigtube; rsmolconelow3= 0.14875*hbigtube; //valeurs vide gros cylindre (les pas fondamentales) transxemptybigtube= 0; transyemptybigtube= 0; //valeurs vide cĂŽne et vide petit tube hemptycone= 0.26*hbigtube; remptyconelow= 0.13*hbigtube; remptyconetop= 0.19*hbigtube; hemptysmolcone= 0.26*hbigtube; remptysmolcone= 0.13*hbigtube; //Valeurs rainure d'insertion vis ("room") hroom= hemptybigtube; transxroom1= 0.19*hbigtube; transxroom2= -transxroom1; transyroom= 0; transzroom= 0; rroom= 0.017*hbigtube; // piĂšce externe (support) difference(){ union(){ color(colorext) cylinder(hbigtube, rbigtube, rbigtube, true, $fn = fn); translate([transxtoptube, transytoptube, transztoptube]) color(colorext) cylinder(htoptube, rtoptube, rtoptube, true, $fn = fn); translate([transxcone, transycone, transzcone]) color(colorext) cylinder(hcone, rconelow, rconetop, true, $fn= fn); translate([transxsmolcone, transysmolcone, transzsmolcone1]) color(colorext) cylinder(hsmolcone1, rsmolconelow1, rsmolconetop, true, $fn= fn); translate([transxsmolcone, transysmolcone, transzsmolcone2]) color(colorext) cylinder(hsmolcone1, rsmolconelow1, rsmolconetop, true, $fn= fn); translate([transxsmolcone, transysmolcone, transzsmolcone3]) color(colorext) cylinder(hsmolcone3, rsmolconelow3, rsmolconetop, true, $fn= fn); } cylinder(hemptybigtube, remptybigtube, remptybigtube, true, $fn = fn); translate([transxcone, transycone, transzcone]) cylinder(hemptycone, remptyconelow, remptyconetop, true, $fn= fn); translate([transxcone, transycone, transzsmolcone2]) cylinder(hemptysmolcone, remptysmolcone, remptysmolcone, true, $fn= fn); linear_extrude(height = hroom, center = true, convexity = conv, twist = twistroom, $fn= fn) translate([transxroom1, transyroom, transzroom]) circle(r = rroom); linear_extrude(height = hroom, center = true, convexity = conv, twist = twistroom, $fn= fn) translate([transxroom2, transyroom, transzroom]) circle(r = rroom); } //CODE NECESSAIRE EN PLUS POUR IMPRIMER LA VIS //valeurs piĂšce interne (vis) //valeurs cylindres anse transxlattube= 0; transylefttube= 0.175*hbigtube; transyrighttube= -transylefttube; transzlattube= 0.7*hbigtube; transxmidtube= 0; transymidtube= 0; transzmidtube= 0.85*hbigtube; rotxmidtube= 90; rotymidtube= 90; rotzmidtube= 0; hlattube= 0.3*hbigtube; rlattube= 0.03*hbigtube; hmidtube= 0.4*hbigtube; rmidtube= 0.03*hbigtube; //valeurs gros cylindre interne transxbigint= 0; transybigint= 0; transzbigint= 0.025*hbigtube; hbigint= 1.05*hbigtube; rbigint= 0.19*hbigtube; //valeurs crĂȘte vis hvis= hbigtube; rotxvis= 0; rotyvis= 0; rotzvis= -4; transxvis1= 0.19*hbigtube; transxvis2= -transxvis1; transyvis= 0; transzvis= 0; rvis= 0.013*hbigtube; //valeurs vide gros cylindre interne transxemptybigint= 0; transyemptybigint= 0; transzemptybigint= 0.025*hbigtube; hemptybigint= 1.06*hbigtube; remptybigint= 0.16*hbigtube; // piĂšce interne (vis) difference(){ union(){ translate([transxlattube, transyrighttube, transzlattube]) color(colorint) cylinder(hlattube, rlattube, rlattube, true, $fn= fn); translate([transxlattube, transylefttube, transzlattube]) color(colorint) cylinder(hlattube, rlattube, rlattube, true, $fn= fn); translate([transxbigint, transybigint, transzmidtube]) rotate(a=[rotxmidtube, rotymidtube, rotzmidtube]) color(colorint) cylinder(hmidtube, rmidtube, rmidtube, true, $fn= fn); translate([transxbigint, transxbigint, transzbigint]) color(colorint) cylinder(hbigint, rbigint, rbigint, true, $fn = fn);   rotate([rotxvis, rotyvis, rotzvis]) linear_extrude(height = hvis, center = true, convexity = conv, twist = twistroom, $fn = fn) translate([transxvis1, transyvis, transzvis]) circle(r = rvis);   rotate([rotxvis, rotyvis, rotzvis]) linear_extrude(height = hvis, center = true, convexity = conv, twist = twistroom, $fn = fn) translate([transxvis2, transyvis, transzvis]) circle(r = rvis); } translate([transxemptybigint, transyemptybigint, transzemptybigint]) cylinder(hemptybigint, remptybigint, remptybigint, true, $fn = fn); } ENTREE D'EAU //aucune idĂ©e des diamĂštres de tuyaux donc il faudra soft-coder les diam des cylindres pour ajuster selon le tuyau mais en gros j'pense c'est pas mal union(){ difference(){ rotate([0, 65, 0])cylinder(40, 5, 12); translate([-1, 0, 0])rotate([0, 65, 0])cylinder(42, 3, 10); translate([45, 0, -24])cylinder(52, 10, 10);} difference(){ translate([30, 0, 15.5]) rotate([0, 90, 0])cylinder (30, 12, 12); translate([29, 0, 15.5]) rotate([0, 90, 0])cylinder(30, 9, 9); translate([45, 0, -27.5])cylinder(48, 10, 10);} } difference(){ translate([45, 0, -23])cylinder(50, 12, 12); translate([45, 0, -24])cylinder(52, 10, 10); translate([29, 0, 15.5]) rotate([0, 90, 0])cylinder(32, 10, 10);} AprĂšs avoir soft codĂ© ce petit bijou d'inspiration, on le sĂ©pare en 2 fichiers puisqu'il y a 2 piĂšces Ă  imprimer : en effet, il faut pouvoir faire tourner le robinet pour que l'eau arrive dans le systĂšme avec un certain angle. Les 2 piĂšces sont maintenues grĂące Ă  un Ă©lĂ©ment supplĂ©mentaire sur le tube traversant la paroi de la table ; cet Ă©lĂ©ment vient s'encastrer dans le tube mobile et permet ainsi de le maintenir. SĂ©ance 3 (10/02) Dan et Kathy Nous avons dans un premier temps vĂ©rifiĂ© la fonctionnalitĂ©/qualitĂ© de la petite pompe Ă  eau que Pierre nous a fourni. Il en rĂ©sulte que : Elle fonctionne, Le dĂ©bit de propulsion de l’eau est rĂ©glable (du plus ou moins fort dĂ©bit), Son efficacitĂ© est maximale lorsqu’elle est complĂštement immergĂ©e dans l’eau, Nous l’avons munie d’un Ă©pais tube polyurĂ©thane plus long que l’initial. En effet, la longueur du tube permet d’atteindre l’orifice situĂ© Ă  l’avant du bac. Le systĂšme hydraulique sera en circuit fermĂ©. L’eau Ă  la sortie de la table servira Ă  garder la pompe immergĂ©e. Cependant, la pompe Ă  notre disposition fonctionne au branchage. Autrement dit, dĂšs que l'engin est branchĂ©, il se met en marche. Or, ce n’est absolument pas pratique, et sĂ»rement pas professionnel dans un cadre pĂ©dagogique. Il faudra donc Ă  un moment ou un autre penser Ă  y insĂ©rer un systĂšme d’interrupteur manuel classique, ou alors changer de pompe. Nous avons dans un second temps tester l’étanchĂ©itĂ© de la table prĂ©cĂ©demment mise sous bĂąche (cf sĂ©ance du 03/02/2023). Pour ce faire, nous avons rempli un gros bidon d’eau du robinet que nous avons dĂ©versĂ© dans le bac. Il en rĂ©sulte que : Environ 99% de la table est Ă©tanche. La bĂąche que nous avions placĂ©e est efficace. L’essai a rĂ©vĂ©lĂ© une petite lacune dans la bĂąche, nous l’avons comblĂ© avec du ruban adhĂ©sif. Notons qu'au niveau du trou d'Ă©vacuation de l’eau, les tuyaux n’étant pas encore disposĂ©s, de l’eau Ă  pĂ©nĂ©trer le bois. Cela met en Ă©vidence l’importance d’une Ă©tanchĂ©itĂ© sans faille. En effet, comme on le voit sur l’image ci-dessous, l’eau a imbibĂ©e le bois et s’est rĂ©pandue en aurĂ©ole. Dans un troisiĂšme temps, nous avons rĂ©flĂ©chi Ă  un systĂšme pratique, efficace et peu coĂ»teux qui permettrait d’ajuster la pente de la table (plusieurs valeurs prĂ©dĂ©finies possibles). Nous avons pensĂ© Ă  un systĂšme simple de pieds ajustables pour les deux pieds situĂ©s au niveau de la future entrĂ©e d’eau qui nous permettrait d’avoir jusqu’à 6 cm de battement du pied (donc jusqu'Ă  3,5° de pente de la table). SchĂ©ma thĂ©orique du pied Ă  hauteur ajustable : Pour Ă©quilibrer l’ajout, nous remplacerons donc les deux autres pieds de la table par des pieds simples (non ajustables) de mĂȘme longueur. Cette augmentation de la hauteur des 4 pieds permet dans un mĂȘme Ă©lan de rĂ©gler un souci : alias la difficultĂ© d’accĂšs au dessous de la table. En effet, la table initiale est bien trop basse pour manipuler pompe, tuyaux
 On a donc fait les deux pieds plus grands dont l’objectif Ă©tait de les rendre creux et rentrer un tube en mĂ©tal qui plus ou moins enfoncĂ© permettrait l'Ă©lĂ©vation d’un cĂŽtĂ© de la table. ProblĂšme : on ne peut pas faire un trou dedans avec la perceuse Ă  scie Ă  cloche. RĂ©sultat aprĂšs la scie Ă  cloche sur le pied de gauche On a donc opter pour percer et dĂ©couper des morceaux de bois de 2 cm d’épaisseur qu’on collera ensuite ensemble. Le tube en mĂ©tal passera dedans. On a fait plusieurs trous mais on s’est arrĂȘtĂ©s car la batterie de la perceuse Ă©tait morte. Perspectives : A la prochaine sĂ©ance, il nous faudra poursuivre et finaliser les pieds de table, puis les incruster Ă  cette derniĂšre. Ensuite, avec la balance que Pierre nous aura apportĂ©, nous pourrons peser la masse de sable totale dont nous disposons. SĂ©ance 3 (17/02) Alice et Amaury (partie inutile au final) Aujourd’hui, nous cherchons Ă  prĂ©parer le bac de dĂ©cantation oĂč arriveront l’eau et les grains de sable transportĂ©s une fois sortis du plateau de modĂ©lisation. ProblĂ©matique 1 : Ă©viter que les tuyaux se baladent sous la pression de l’eau. On va donc 
 faire des piĂšces Ă  imprimer, pour changer :) How it looks : Cette piĂšce sera placĂ©e sur le bord du bac de dĂ©cantation et maintiendra le tuyau amenant l’eau Ă  la modĂ©lisation, tuyau qui passera par le trou cylindrique de diamĂštre 1,5 cm. D’ailleurs, on ne le voit pas sur cette capture d’écran mais une encoche est prĂ©sente pour venir placer la piĂšce directement sur le bord du bac de dĂ©cantation. Pour ce qui est de l’eau sortant de la table de modĂ©lisation, on se demande s’il faut vraiment un tuyau ou si laisser tomber l’eau directement serait viable. Autrement dit, est-ce que ça gicle partout si on met pas de tuyau ? Etant donnĂ© que la sortie d’eau aura une hauteur assez stable (c’est l’autre cĂŽtĂ© de la table qui monte ou descend pour former la pente), ne pas mettre de tuyau est viable uniquement si la hauteur de base n’est pas trop importante 
 reste Ă  tester la limite. Contrainte 2 : Ă©viter de renvoyer du sable dans le systĂšme/de boucher la pompe. En bref on veut que le bac de dĂ©cantation 
 dĂ©cante. Tout ça en sachant que la pompe ne fonctionne de maniĂšre optimale que si elle est complĂštement immergĂ©e (il faut donc garantir une hauteur d’eau relativement importante, d’au moins 10 cm) et que si la longueur de tube entre la pompe et l’entrĂ©e d’eau est trop importante, on n’aura plus assez de pression d’eau. Notre idĂ©e de base Ă©tait d’entourer la pompe d’un grillage au maillage suffisamment petit pour empĂȘcher le sable d’entrer, mais ce serait assez peu pratique Ă  fabriquer. On peut faire plus simple nĂ©anmoins : on place un grillage de mĂȘme maillage mais cette fois-ci, on le prend de la largeur et hauteur du bac, et on le place de maniĂšre Ă  sĂ©parer le bac de dĂ©cantation en 2. On se retrouve ainsi avec une zone oĂč l’eau est chargĂ©e en sable, et une autre oĂč elle n’en contient plus et oĂč se trouve la pompe ; le grillage vertical permet au sable de dĂ©canter et de peu s’accumuler en hauteur. Dimensions du bac de dĂ©cantation : Assez grand pour ĂȘtre divisĂ© en 2, avec assez de place derriĂšre le grillage pour mettre la pompe et une quantitĂ© d’eau suffisante. Donc on pourrait partir sur 70 cm de long*20 cm de large*20 cm de haut ; le grillage serait placĂ© aprĂšs 50 cm (par exemple), laissant un cube de 20 cm de cĂŽtĂ© oĂč l’eau serait prĂ©levĂ©e par la pompe. Pour des raisons de simplicitĂ©, nous n'avons au final pas utilisĂ© ce modĂšle. Il nous a suffi de percer 2 bidons, l'un accueillant l'eau provenant de la table et l'autre contenant la pompe renvoyant l'eau dans le systĂšme. Ces deux bidons ont Ă©tĂ© reliĂ©s par un tube pour que l'eau puisse circuler, avec des joints pour Ă©tanchĂ©ifier l'ensemble. Conception de la table Nous avons continuĂ© ce que nous avions fait la semaine derniĂšre c’est-Ă -dire que nous avons refait tous les pieds de la table en plus long et plus gros, dont les deux Ă  hauteur ajustable. Nous avons fait des trous de chaque cĂŽtĂ© de la barre (entre ceux dĂ©jĂ  prĂ©existants) ainsi qu’un dans le bois pour pouvoir faire passer une tige Ă  travers tous les trous Les trous sont espacĂ©s tous d’environ 1,5 cm ce qui fait, par trou, une diffĂ©rence de 0,86° dans la pente de la table. Alice a codĂ© des cales Ă  mettre sous le pied en fonction de l'intensitĂ© de l’inclinaison. Pour la version finale nous choisirons sĂ»rement un espacement qui permettra de changer la pente de 1, 2 ou 3° (ce sera plus simple pour les expĂ©riences). Aperçu des diffĂ©rents composants du pied ajustable (bois creux + barre d’acier trouĂ©e) RĂ©sultat final de la table vue Ă  l’envers La prochaine fois : Il reste 3 trous a faire dans une des barres d’acier et normalement la table sera prĂȘte Ă  ĂȘtre testĂ©e avec de l’eau et du sable. SĂ©ance 4 du 24/02 Alice & Amaury Lors de cette sĂ©ance, les objectifs Ă©taient de contrĂŽler le rendu des premiĂšres impressions. Observations : - la poignĂ©e de la vis interne est trop fragile - il faut faire attention au coefficient de dilatation lors de l'impression : les piĂšces censĂ©es s'emboĂźter ont un problĂšme de diamĂštre. Pour rĂ©soudre ces deux problĂšmes nous avons donc modifiĂ© les piĂšces et leurs dimensions dans open scad et lancĂ© des rĂ©impressions. - la vis externe ne rentre pas dans le trou de la planche. Solution: limer. Par ailleurs nous avons profitĂ© de cette sĂ©ance pour coder des piĂšces pour le tuyau reliant les deux bacs sous la table (voir partie de Kathy & Dan) car les piĂšces en mĂ©tal achetĂ©es n'avaient pas les bonnes dimensions entre elles. Soit elles seront rĂ©-achetĂ©es soit nous imprimerons les piĂšces codĂ©es. Update final : cette partie est inutile aussi car les piĂšces en mĂ©tal sont utilisĂ©es. Dan et Kathy On a fini les trous dans l’acier, donc les pieds rĂ©glables, c’est rĂ©glĂ©. On s’est ensuite attardĂ© sur comment faire le bac de dĂ©cantation avec la pompe. Pierre nous a ramenĂ© 2 bidons et au lieu de les coller on a prĂ©fĂ©rĂ© faire un trou dans les deux et les relier par un tube (les essais ont rĂ©vĂ©lĂ© aprĂšs que l'Ă©tanchĂ©itĂ© de ce passage Ă©tait bof bof). On a aussi enlevĂ© une partie du haut d’un des bidons pour pouvoir mettre la pompe dedans et faire passer le tuyau. Ensuite le moment tant attendu : celui de tester les Ă©coulements d’eau sur la table avec le fameux ‘sable’, c'est-Ă -dire les paillettes de plastique. On a mis le ‘sable’ blanc, celui de plus grosse granulomĂ©trie et une espĂšce de latte en plastique inclinĂ©e pour empĂȘcher le sable de partir dans le trou d’évacuation de l’eau et pour faire la limite avec le delta. Au final on l’a retirĂ© ça ne servait Ă  rien car l’eau et le sable passaient par en dessous Et finalement le systĂšme de dĂ©cantation en dessous. SchĂ©ma de la circulation d'eau dans le systĂšme Ça ne s’est pas du tout passĂ© comme prĂ©vu mĂȘme en inclinant la table : -On a dĂ» diminuer le dĂ©bit avec une pince sur le tuyau sortant sinon peu importe le rĂ©glage de dĂ©bit de la pompe c'Ă©tait trop fort alors qu’on observait un changement de dĂ©bit quand on a testĂ© la pompe toute seule. -L’eau au lieu de couler ne faisait qu’imbiber et creuser un trou dans le sable -On devait rajouter de l'eau dans le bac de la pompe vu que l'eau sur la table ne voulait pas descendre et en plus la pompe avait du mal Ă  rester immergĂ©e. Le comportement du sable en question Ă©tait trĂšs bizarre et on se demande si c’est pas dĂ» au fait que justement ce ne soit pas du vrai sable. Pourtant aux US ça marche donc on sait pas pourquoi. - en augmentant le dĂ©bit finalement ça coulait et ça nous a creusĂ© un chemin dans le ‘sable’ mais au final on a eu une inondation par terre -Du 'sable' arrivait dans le bac de la pompe risquant de boucher celle-ci Et gros problĂšme : le 'sable' COLLE BEAUCOUP TROP PARTOUT donc trÚÚs compliquĂ© pour nettoyer derriĂšre (y en a mĂȘme qui s'est collĂ© sur le haut du bidon de dĂ©cantation). A amĂ©liorer : On va utiliser du sable de quartz au prochain essai pour voir si le comportement des particules est diffĂ©rent de celles en plastique SĂ©ance 5 (10/03) On a pris du sable de quartz pour comparer au comportement du sable plastique qu’on a utilisĂ© y a deux semaines et avec le mĂȘme dĂ©bit on a rĂ©ussi Ă  avoir assez rapidement un rĂ©seau en tresse et un petit mĂ©andre ! Pour voir les granulomĂ©tries et lesquelles seraient prĂ©fĂ©rentiellement emportĂ©es par le courant on pensait tamiser le sable et colorer les diffĂ©rentes granulomĂ©tries qu’on aurait. Sauf que les sacs de sable Ă  disposition Ă©taient mouillĂ©s donc on en a sĂ©chĂ© une partie, ce qui a pris assez longtemps, pour au final se rendre compte que le sable Ă©tait plus petit que la plus petite des granulomĂ©tries de ‘sable plastique’. Donc la prochaine fois on va devoir utiliser du sable plus grossier (et le tamiser) pour retrouver des granulomĂ©tries Ă©quivalentes aux ‘sables plastiques’. Autre rĂ©flexion : tout le sable Ă©tait imbibĂ© d’eau donc ça ressemblait plus Ă  une plage qu’à un modĂšle analogique sur plusieurs km. Penser Ă  la distance que reprĂ©sente la table dans la vraie vie et consĂ©quemment changer les granulomĂ©tries suivant si dans la vraie vie ça reprĂ©sente un grain de sable, un caillou, ou une roche. SĂ©ance du 17/03 En terme de code : on a du recoder une des piĂšce d'entrĂ©e d'eau car les dimensions n'Ă©taient pas bonnes et le code original a Ă©tĂ© effacĂ© pour une raison inconnue. Le code pour la partie de l'entrĂ©e d'eau fixĂ©e dans la planche : fn = 90;rtube = 12.5;htube = 50;r1cone = 12.5;r2cone = 5.5;hcone = 10;transzcone = 30;hpetitcone = 8;r1petitcone = 5;r2petitcone = 5.5;transzpetitcone1 = 38;transzpetitcone2 = 46;transzpetitcone3 = 54;rvidetube = 10.5;hvidetube = htube + 1;transzvidetube = -0.99;r1videcone = 10.5;r2videcone = 3.5;hvidecone = hcone + 1;transzvidecone = 28.5;rvidepetitcone = 4;hvidepetitcone = 3*hpetitcone+1.1;transzvidepetitcone = 46;transxcle = 12.5;transzcle = -21.5;hcle = 3;rcle = 2; difference(){    union(){        cylinder(htube, rtube, rtube, true, $fn = fn);        translate([0, 0, transzcone]) cylinder(hcone, r1cone, r2cone, true, $fn = fn);        translate([0, 0, transzpetitcone1]) cylinder(hpetitcone, r2petitcone, r1petitcone, true, $fn = fn);         translate([0, 0, transzpetitcone2]) cylinder(hpetitcone, r2petitcone, r1petitcone, true, $fn = fn);         translate([0, 0, transzpetitcone3]) cylinder(hpetitcone, r2petitcone, r1petitcone, true, $fn = fn);        translate([transxcle, 0, transzcle]) cylinder(hcle, rcle, rcle, true, $fn = fn);    }    translate([0, 0, transzvidetube]) cylinder(hvidetube, rvidetube, rvidetube, true, $fn = fn);    translate([0, 0, transzvidecone]) cylinder(hcone, r1cone, r2cone, true, $fn = fn);    translate([0, 0, transzvidepetitcone]) cylinder(hvidepetitcone, rvidepetitcone, rvidepetitcone, true, $fn = fn);} Pour contrĂŽler plus facilement l'arrivĂ©e d'eau et ne pas avoir autant d'Ă©lan Ă  l'entrĂ©e du bac nous avons dĂ©cidĂ© de tenter de coder une Energy Dissipator Unit (EDU). Code pour l'EDU fn = 36;htubeext = 50;rtubeext = 25;htubeint = 35;rtubeint = 15;hbase = 2;transzbase = -2;rbase = rtubeext;hvidetubeext = 51;rvidetubeext = 23;transzvidetubeext = -0.5;hvidetubeint = 36;rvidetubeint = 13;transzvidetubeint = -0.5;rsphere = 3.5;transxsph = 14;transysph = 0;transzsph = 5;hcone = 24;r1cone = 0;r2cone = 15;transxcone = -25;transycone = 0;transzcone = 20;hcyl = 20;rcyl = 3;transxcyl = -24;transycyl = 0;transzcyl = 10;rsphext = 3;transzsphext = 10; //basetranslate([0, 0, transzbase])cylinder(hbase, rbase, rbase, $fn = fn); //tubeintdifference(){cylinder(htubeint, rtubeint, rtubeint, $fn = fn);union(){translate([0, 0, transzvidetubeint]) cylinder(hvidetubeint, rvidetubeint, rvidetubeint, $fn = fn);translate([transxsph, transysph, transzsph]) sphere(rsphere, $fn = fn);    }} //tubeextdifference(){cylinder(htubeext, rtubeext, rtubeext, $fn = fn);union(){translate([0, 0, transzvidetubeext]) cylinder(hvidetubeext, rvidetubeext, rvidetubeext, $fn = fn);translate([transxcone, transycone, transzcone])cylinder(hcone, r1cone, r2cone, $fn = fn);    translate([transxcyl, transycyl, transzcyl]) cylinder(hcyl, rcyl, rcyl);    translate([transxcyl, 0, transzsphext]) sphere(rsphext, $fn = fn);}} A tester lors de la prochaine sĂ©ance. Pour la table LoĂŻc nous a expliquĂ© que le phĂ©nomĂšne qu'on observe avec le tri "inverse" de nos particules est l'effet granola, pas basĂ© sur de la sĂ©dimentologie classique.  La loi de Stockes et les autres grands principes de sĂ©dimentologie s'appliquent quand il y a uniquement des interactions particule/fluide or ici on n'a que transport de fond pris en compte et non le transport par le fluide, d’oĂč l'effet granola. Par ailleurs ici on est sur un modĂšle Ă  grande Ă©chelle, et les petites particules passent au fond par transport de fond, consĂ©quence des interactions entre particules. On a un problĂšme de sĂ©grĂ©gation dans les flux granulaires selon la vitesse du courant et la taille particules. Cependant Ă  la fin des expĂ©riences en faisant des coupes dans le delta on observe des laminations et du tri granulomĂ©tries (couches alternes Ă  la fin du mĂ©andre). Par ailleurs il faut tester le dĂ©bit et trouver une meilleure façon de le contrĂŽler. Il faut le calculer Ă  la sortie du tuyau et voir Ă©ventuellement pour un robinet. Dans emriver, ils ont un EnergyDissipatorUnit Ă  la sortie du robinet pour rĂ©gler le dĂ©bit : l'eau tombe dedans et sort en "inondation" (pas de  vitesse initiale = pas la petite mare sous le robinet) . Il faut comprendre le fonctionnement de cette piĂšce et la coder Ă©ventuellement. DĂ©bit pompe : 7sec pr 500mL en bloquant pas le tuyau : 71,4 mL/sec. En bloquant : 500mL en 34sec donc dĂ©bit de 14,7mL/sec et ce sans la piĂšce de sortie d’eau. Besoin rĂ©-imprimer pour tester avec la vraie piĂšce. Nous nous sommes demandĂ© aussi s'il ne faudrait pas "tricher" et diriger le dĂ©part de l'eau ? Il faut aussi travailler Ă  l'identification des paramĂštres responsables de la rĂ©ussite de l'expĂ©rience pour sa reproductibilitĂ©. On doit aussi trouver un pied pour mieux filmer. Au final tout marche bien quand on tasse pas ! Beaux mĂ©andres et changements naturels en quelques minutes. Nous avons remarquĂ© la prĂ©sence de fuites. Prochaines sĂ©ances  : --> amĂ©liorer les prises de vue pour comparer chaque test, dire quel paramĂštre change, jour, date, Ă©chelle , 
 et toujours mĂȘme angle --> Potentiellement faire une Time lapse --> RĂ©flĂ©chir aux proportions de couleurs etc --> Coder edu --> Qu’est-ce qu’on fait du sable mouillĂ© ? Grand tamis pour Ă©gouter ? Comment sĂ©cher de telles quantitĂ©s pour pas moississement, 
 laver le sable ? SĂ©ance du 24/03 D'un point de vue pĂ©dagogique, qu’est-ce que les Ă©tudiants vont voir ? Qu’est-ce qu’ils vont mesurer ? On a besoin des distances pour faire des mesures et en photo : distorsion = besoin Ă©chelle pour corriger photos/vidĂ©os, mais on peut aussi optimiser le placement de la camĂ©ra pour limiter la distorsion. 5 cm = 500m IRL Il faut aussi faire une notice explicative, comme un tuto (avec toutes les Ă©tapes pour le poly des Ă©tudiants), avec des photos de comment et des instructions. On doit donner les proportion optimales (poids de chaque quantitĂ© de sable mise). Pour la pĂ©dagogie on pourrait faire un bac un peu plus long (120cm*65cm) pour que ça rentre sur une paillasse. Si il y a un besoin que ça soit plus long on peut augmenter la longueur et diminuer la largeur mais si on veut Ă©tudier amĂ©nagement territoire c’est plus intĂ©ressant que ça soit ce ratio (maison, barrage, 
). Pour la vis de sortie d'eau, il faudrait faire un filetage plus gros pour que ce soit plus facile Ă  manipuler. Le but Ă©tant de soit pas toucher Ă  vis pour pas modifier le dĂ©bit et modĂ©liser un systĂšme stationnaire ou augmenter le delta et lĂ  observer l’effet du changement niveau eau (rĂ©gression, etc) pour un autre exercice (voir les mouvements du delta). Une autre expĂ©rience possible est d'ajouter de l’eau en bas pour mimer arrivĂ©e dans une mer/ocĂ©an, verra-t'on une accelĂ©ration du processus ? Il faudrait calculer la hauteur de sable et d'eau optimale selon la pente pour voir des mĂ©andres. Par ailleurs, il ne faut pas dĂ©passer 10mL/sec de dĂ©bit pour la pente maximum. On a remarquĂ© qu'il fallait mouiller le sable au prĂ©alable pour Ă©viter l'absorption de l'eau. Aussi, on a tentĂ© de tracer un chemin initial pour guider le flux mais au final ça reste influencĂ© par dynamique fluviatile ! SĂ©ance du 07/04/23 On a demander un devis pour avoir un bac en plexiglass mais le prix est trop Ă©levĂ©. On a achetĂ© une pompe rĂ©glable Ă  plus faible dĂ©bit (max 200L/h), tests pas concluants. SĂ©ance 14/04/23 On a fait un test en trouvant un moyen d'avoir un dĂ©bit stable avec la pompe de dĂ©part : mettre le tuyau dans un Ă©tau pour diminuer le dĂ©bit (0,5cm d'Ă©cartement). On a pesĂ© la quantitĂ© de sable qu'il restait et on en a dĂ©duit qu'on a mis 10,61kg de sable dont tout le jaune Ă  notre disposition (1,63kg), 6,65 de blanc, 1,55kg de noir et 0,78kg de rouge. Loic nos avait proposĂ© de rajoutzr du blanc mais en comparant les proportions de chaque couleur on pense qu'il n'est pas recommander de rajouter du blanc vu que c'est celui qui part en 1er (on va rien voir aprĂšs s'il y a que du blanc). Tentative d'Ă©tanchĂ©ifier la table en bois avec du platique thermocollable. Impossible a faire avec un seul grand rectangle. On a donc coupĂ© des petits rectangles (1 pour le fond et 4 pour les bords) Ă  coller/souder entre eux aux niveau des angles et coins. On a pas eu le temps de finir mais ça a l'air pas trop mal. DerniĂšre sĂ©ance 21/04/23 Le plastique thermocollable ça ne fonctionne pas c'est trop gondolĂ©. On a aussi essayĂ© de faire un pochoir pour que tout le monde ait les mĂȘmes mĂ©andres mais ça tasse le sable. On a tentĂ© de faire une expĂ©rience juste avec du blanc et du noir. 1,6 kg de noir, sur 6,25 kg avant l’expĂ©rience. -> On a utilisĂ© 4,65 kg, soit 74,4%. 1,9 kg de blanc, sur 9,6 kg avant l’expĂ©rience. -> On a utilisĂ© 7,7 kg, soit 80,2%. Donc on a utilisĂ© 37,7% de noir et 62,3% de blanc. RĂ©sultats en surface trĂšs faciles Ă  visualiser mĂȘme avec 2 couleurs. En revanche, il est trĂšs difficile de distinguer l’enchaĂźnement des phases de blanc/noir lorsqu’on fait une coupe dans le delta : il faudrait donc au moins 3 couleurs pour obtenir un signal plus satisfaisant. Attention pour ça : ne pas utiliser du rouge, il reste en surface et n’apporte pas d’information intĂ©ressante. Turbococco v.2 Informations Tenue du wiki : Pablo Fava Contact : pablo.fava@etu.sorbone-universite.fr Etudes : Licence TroisiĂšme annĂ©e MĂ©canique - Sciences de la Terre Dates du Projet : du 4/02 au 31/04 encadrants : LoĂŻc Labrousse et Pierre Thery Dans le Cadre de l'ISTEP, dirigĂ© par Fabrice Minoletti Contexte Mise en contexte : les coccolithophores sont de trĂšs bons indicateurs car ce sont des algues qui sont dans la zone de mĂ©lange pour pouvoir faire la photosynthĂšse, Ă  l'inverse des foraminifĂšres qui sont des organismes qui attendent majoritairement sous la zone de mĂ©lange. Les coccolithophores sont donc plus adaptĂ©s comme marqueur de la tempĂ©rature passĂ©e. ProblĂšme : leur taille de l'ordre du micromĂštre rend leur isolement par filtrage complexe. Le protocole mis au point par Fabrice Minoletti et son Ă©quipe consiste donc Ă  faire vibrer une micro membrane filtrante Ă  l'aide d'une cuve Ă  ultrasons. Le filtre Ă©tant trĂšs fin, l'opĂ©ration s'Ă©tend sur des laps de temps consĂ©quents. L'idĂ©e est donc d'automatiser le remplissage du cylindre et d'ajouter une agitation pour faciliter le filtrage. Objectifs - TransfĂ©rer le montage prĂ©cĂ©dent sur une Arduino nano 33ioT et crĂ©er une application dans le cloud arduino pour contrĂŽler le montage Ă  distance - rĂ©aliser une sĂ©rie de tests pour dĂ©terminer l'efficacitĂ© de l'agitation de la solution et du filtrage - faciliter la rĂ©plication du montage. ReprĂ©sentation graphique du montage rĂ©alisĂ©e par IsmaĂ«l MatĂ©riel 1 carte arduino nano 33ioT deux capteurs de niveau d'eau un moteur un shield moteur cĂąbles arduino bouchons et fixations et impression 3D pompes smartphone Machines utilisĂ©es imprimantes 3D fer Ă  souder perceuse manuelle Construction (Fichiers, photos, code, explications, paramĂštres d'usinage, photos, captures d'Ă©cran...) Ce que l'on a rĂ©cupĂ©rĂ© Tout le montage fonctionne autour d'une carte Arduino. GrĂące au groupe aillant travaillĂ© sur le projet l'an dernier, la structure du modĂšle est dĂ©jĂ  opĂ©rationnelle. La carte Arduino est reliĂ©e Ă  4 composants : une pompe, un moteur agitateur et deux capteurs de niveau. Le principe gĂ©nĂ©ral est d'aider la filtration par la micro membrane et d'automatiser son remplissage. Ainsi, deux concepts sont importants : lorsque le capteur positionnĂ© en bas du tube ne dĂ©tecte plus de solution, la pompe est activĂ©e pour un remplissage jusqu'Ă  ce que le capteur haut dĂ©tecte le niveau d'eau. sur une boucle de 120 secondes, le moteur est activĂ© pendant les 5 premiĂšres secondes afin de remettre les particules en suspension et dĂ©sencombrer la membrane filtrante. Comment on souhaite le transformer Afin d'avoir davantage de possibilitĂ©s, nous avons transfĂ©rĂ© le montage sur une carte Arduino 33ioT, qui aura pour plus tard la possibilitĂ© de communiquer avec Arduino Cloud et ainsi ĂȘtre pilotĂ©e Ă  distance par un smartphone. ConnectĂ©e Ă  un Shield moteur, elle permet de ne pas avoir de pin board. Journal de bord - AvancĂ©e du projet Ă  chaque Ă©tape, difficultĂ©s rencontrĂ©es, modifications et adaptations 10/02/2023 On commence Ă  transfĂ©rer le projet de l'Arduino Uno vers la nano mais on se rend vite compte qu'on n'a pas la bonne Arduino nano, il nous faut la 33ioT.  Fabrice la commande pour la semaine suivante. ça nous bloque beaucoup parce qu'on ne peut pas commencer l'application non plus mais on est Ă  peu prĂšs certain.e.s que tout fonctionne en-dehors de cela donc la session de la semaine suivante devrait ĂȘtre assez efficace. 17/02/2023 IsmaĂ«l a rĂ©ussi Ă  souder l'Arduino 33IOT et tout fonctionne. Seul problĂšme : les capteurs ne dĂ©tectent pas la prĂ©sence d'eau. On essaie de serrer + les vis, sinon il faudra peut-ĂȘtre changer de capteur ou trouver une autre solution. En attendant on doit modĂ©liser la piĂšce manquante pour que l'hĂ©lice soit plus solide et voir si on a une tige de longueur suffisante pour passer sous le niveau du capteur bas. On a rĂ©glĂ© le problĂšme en changeant les capteurs. Ils sont un peu moins rĂ©actifs mais ça ne gĂȘne pas le fonctionnement global donc on les garde. On a modĂ©lisĂ© la piĂšce aux bonnes dimensions, mais on n'a pas de tige assez longue pour les nouveaux tubes du laboratoire. Pierre ThĂ©ry va en commander Ă  nouveau ou alors on peut en fabriquer une en tiges de mĂ©tal mais on pense que ça ne sera pas assez rigide. Photo du systĂšme total fonctionnel. LĂ©ger problĂšme d'Ă©tanchĂ©itĂ© au bas du tube mais ça devrait se rĂ©soudre avec les tubes plus grands. On a donc pu commencer Ă  fouiller un peu pour crĂ©er l'application de contrĂŽle Ă  distance. On a Ă©tabli les fonctionnalitĂ©s nĂ©cessaires avec Fabrice : - bouton dĂ©marrer le processus total - bouton allumer et Ă©teindre la pompe - bouton allumer et Ă©teindre le moteur agitateur - bouton Ă©teindre tout le systĂšme il faut Ă©galement refaire la soudure de la Arduino nano 33ioT 24/03/2023 AprĂšs une sĂ©rie de tests par TĂ©a, rĂ©sultats assez Ă©tranges, globalement la filtration est moins rapide avec agitation moteur. On a  rentrĂ© les rĂ©sultats sur excel pour les analyser plus nettement : Les temps les plus longs sont atteints lorsque le tube est agitĂ© par un moteur. Cela nous pose vraiment problĂšme car le projet serait Ă  moitiĂ© inefficace. On Ă©tablit les sources d'erreurs potentielles : - la position dans la cuve pourrait influer car il y a 3 sources d'ultrasons pour 4 emplacements - le sens de rotation de l'hĂ©lice du moteur On lance donc l'impression d'un bouchon avec emplacement moteur supplĂ©mentaire pour pouvoir faire plusieurs essais en parallĂšle et plus facilement identifier le problĂšme. 31/03/2023 ProblĂšme avec les impressions de la semaine passĂ©e, on n'avait pas pris en compte la dilatation lors de l'impression donc le moteur ne rentre pas dans l'emplacement prĂ©vu. On recommence l'impression aux bonnes dimensions Entre temps, TĂ©a a refait des tests avec une membrane plus petite et une nouvelle cuve. Cette fois-ci l'agitation moteur permet bien un filtrage nettement plus rapide. Cela rend donc caduque le besoin d'un nouveau bouchon avec emplacement moteur. VoilĂ  les graphiques obtenus avec les donnĂ©es de TĂ©a : De plus, les lames au microscope sont beaucoup moins polluĂ©es de particules sans intĂ©rĂȘt. Nous n'avons pas eu le temps de rĂ©itĂ©rer suffisamment l'expĂ©rience et s'assurer que le rĂ©sultat serait identique Ă  chaque rĂ©pĂ©tition. Cela peut ĂȘtre un bon axe de perfectionnement du systĂšme. 14/04/2023 Nouvel objectif : rendre tout le systĂšme pilotable Ă  distance grĂące au Arduino ioT Cloud On transfĂšre le code dĂ©jĂ  créé pour la carte Arduino et on l'adapte aux exigences du cloud. Beaucoup de problĂšmes de compilations, utilisation de Chat GPt4 pour les rĂ©soudre. Il reste quelques problĂšmes, on espĂšre les rĂ©soudre avant l'oral :  le code compile mais les moteurs ne s'activent pas lors de l'activation des widgets sur l'application arduino Codes Openscad N.B : ajuster les dimensions pour prendre en compte la modification Ă  l'impression hĂ©lice agitation moteur $fn=100; nbPales=6; rAxeRot=1.5; rIntTub=32/2; rTube=18; //color("red") //render() translate([0,0,1]) { difference() { cylinder (h = 2, r=rIntTub, center=true); cylinder (h = 3, r=rIntTub-1, center=true); } } difference() { union (){ linear_extrude(height = 10, twist = 10, slices = 60) { //circle(r=5); for(i = [0 : 1 : nbPales]) { rotate(a = i*360/nbPales) { square(size = [rIntTub, 1]); } } } cylinder (h = 15, r=4, center = false); } translate([0,0,7.5]){ linear_extrude(height = 15, twist = 0, slices = 60){ translate ([0,0,3.5]) { square(size = [5, 2],center=true);//rectangle 1 rotate (a=90){ square(size = [5, 2],center=true); } //cylinder (h = 30, r=rAxeRot); }}}} /* translate ([0,0,-1]) { cylinder (h = 30, r=rAxeRot); } */ tige complĂšte $fn=100; nbPales=6; rAxeRot=1.5; rIntTub=32/2; rTube=18; //color("red") //render() translate([0,0,1]) { difference() { cylinder (h = 2, r=rIntTub, center=true); cylinder (h = 3, r=rIntTub-1, center=true); } } difference() { union (){ linear_extrude(height = 10, twist = -10, slices = 60) { //circle(r=5); for(i = [0 : 1 : nbPales]) { rotate(a = i*360/nbPales) { square(size = [rIntTub, 1]); } } } cylinder (h = 147, r=3, center = false); } translate([0,0,140]){ cylinder (h = 30, r=0.5); /*translate([0,0,7.5]){ linear_extrude(height = 15, twist = 0, slices = 60){ translate ([0,0,3.5]) { square(size = [3.8, 1],center=true);//rectangle 1 rotate (a=90){ square(size = [3.8, 1],center=true);*/ }} //vincent mouchi claire lix //NB : le trou pour connexion moteur Ă©tait un peu trop faible, Ă  agrandir bouchon avec pas de vis et insert moteur $fn=100; hInt=20; l=80; diam=42.3; /* color("red") translate ([-diam/2,-0.5,-hInt/2]) { cube([diam,1,20], center=false); } color("green") render() translate ([-l/2,-0.5,5]) { cube([l,1,4], center=false); } color("blue") render() difference () { difference () { cylinder (d=60, h=10); cylinder (d=45, h=10); } translate ([-l/2,3,-l/2]) {cube([l,l,l], center=false);} translate ([-l/2,-l-3,-l/2]) {cube([l,l,l], center=false);} } */ translate ([0,0,-1]) { difference () { cylinder (d=50, h=3); translate ([0,0,-0.5]) {cylinder (d=3, h=5);} } } SVL42Cap (); extend_mot(); difference(){ cylinder(d=16,h=2,center=true); cylinder(d=3,h=2,center=true);} module extend_mot (){//extension pour insertion moteur difference (){ translate([0,0,-14])cylinder (d=50,h=14); translate([0,0,-14])cylinder(d=21,h=10); translate([0,0,-4]) cylinder(d=16,h=4); } } /*difference () { // Pour observer une coupe SVL42Cap (); union () { translate ([-l/2,5,-l/2]) {cube([l,l,l], center=false);} translate ([-l/2,-l-5,-l/2]) {cube([l,l,l], center=false);} } }*/ module SVL42Cap () { difference () { cylinder (d=50, h=hInt); moduleInt (); } difference () { // sommet du capuchon color("red") render() union () { cylinder (d=50, h=1.5); difference () { cylinder (d=50, h=1.5); cylinder (d=3, h=2); } } //translate ([-15,2,-5]) {cylinder (d=1, h=10);} //translate ([-15,0,-5]) {cylinder (d=1, h=10);} //translate ([-15,-2,-5]) {cylinder (d=1, h=10);} } } module moduleInt () { translate ([0,0,hInt]) { difference () { cylinder (d=45, h=3, center=true); cylinder (d=37, h=4, center=true); } } metric_thread (diameter=diam+4, pitch=4, length=hInt, internal=true, thread_size=2, groove=true, angle=10, leadin=0); translate ([0,0,-0.5]) { cylinder (d=diam, h=hInt+1); } } /*module extension_moteur (){ difference (){ cylinder (d=50,h=10, center=true); cylinder(d=21,h=10, center=true); } difference(){ cylinder(d=50,h=4, center=true); cylinder(d=16,h=4, center = true);} }*/ /* metric_thread (diameter=8, pitch=1, length=4, internal=true); diameter - outside diameter of threads in mm. Default: 8. pitch - thread axial "travel" per turn in mm. Default: 1. length - overall axial length of thread in mm. Default: 1. internal - true = clearances for internal thread (e.g., a nut). false = clearances for external thread (e.g., a bolt). (Internal threads should be "cut out" from a solid using difference ()). n_starts - Number of thread starts (e.g., DNA, a "double helix," has n_starts=2). See wikipedia Screw_thread. thread_size - (non-standard) axial width of a single thread "V" - independent of pitch. Default: same as pitch. groove - (non-standard) subtract inverted "V" from cylinder (rather than add protruding "V" to cylinder). square - Square threads (per https://en.wikipedia.org/wiki/Square_thread_form). rectangle - (non-standard) "Rectangular" thread - ratio depth/(axial) width Default: 1 (square). angle - (non-standard) angle (deg) of thread side from perpendicular to axis (default = standard = 30 degrees). taper - diameter change per length (National Pipe Thread/ANSI B1.20.1 is 1" diameter per 16" length). Taper decreases from 'diameter' as z increases. leadin - 0 (default): no chamfer; 1: chamfer (45 degree) at max-z end; 2: chamfer at both ends, 3: chamfer at z=0 end. leadfac - scale of leadin chamfer (default: 1.0 = 1/2 thread). */ /* * ISO-standard metric threads, following this specification: * http://en.wikipedia.org/wiki/ISO_metric_screw_thread * * Copyright 2017 Dan Kirshner - dan_kirshner@yahoo.com * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * See . * * Version 2.3. 2017-08-31 Default for leadin: 0 (best for internal threads). * Version 2.2. 2017-01-01 Correction for angle; leadfac option. (Thanks to * Andrew Allen .) * Version 2.1. 2016-12-04 Chamfer bottom end (low-z); leadin option. * Version 2.0. 2016-11-05 Backwards compatibility (earlier OpenSCAD) fixes. * Version 1.9. 2016-07-03 Option: tapered. * Version 1.8. 2016-01-08 Option: (non-standard) angle. * Version 1.7. 2015-11-28 Larger x-increment - for small-diameters. * Version 1.6. 2015-09-01 Options: square threads, rectangular threads. * Version 1.5. 2015-06-12 Options: thread_size, groove. * Version 1.4. 2014-10-17 Use "faces" instead of "triangles" for polyhedron * Version 1.3. 2013-12-01 Correct loop over turns -- don't have early cut-off * Version 1.2. 2012-09-09 Use discrete polyhedra rather than linear_extrude () * Version 1.1. 2012-09-07 Corrected to right-hand threads! */ // Examples. // // Standard M8 x 1. // metric_thread (diameter=8, pitch=1, length=4); // Square thread. // metric_thread (diameter=8, pitch=1, length=4, square=true); // Non-standard: long pitch, same thread size. //metric_thread (diameter=8, pitch=4, length=4, thread_size=1, groove=true); // Non-standard: 20 mm diameter, long pitch, square "trough" width 3 mm, // depth 1 mm. //metric_thread (diameter=20, pitch=8, length=16, square=true, thread_size=6, // groove=true, rectangle=0.333); // English: 1/4 x 20. //english_thread (diameter=1/4, threads_per_inch=20, length=1); // Tapered. Example -- pipe size 3/4" -- per: // http://www.engineeringtoolbox.com/npt-national-pipe-taper-threads-d_750.html // english_thread (diameter=1.05, threads_per_inch=14, length=3/4, taper=1/16); // Thread for mounting on Rohloff hub. //difference () { // cylinder (r=20, h=10, $fn=100); // // metric_thread (diameter=34, pitch=1, length=10, internal=true, n_starts=6); //} // ---------------------------------------------------------------------------- function segments (diameter) = min (50, ceil (diameter*6)); // ---------------------------------------------------------------------------- // diameter - outside diameter of threads in mm. Default: 8. // pitch - thread axial "travel" per turn in mm. Default: 1. // length - overall axial length of thread in mm. Default: 1. // internal - true = clearances for internal thread (e.g., a nut). // false = clearances for external thread (e.g., a bolt). // (Internal threads should be "cut out" from a solid using // difference ()). // n_starts - Number of thread starts (e.g., DNA, a "double helix," has // n_starts=2). See wikipedia Screw_thread. // thread_size - (non-standard) axial width of a single thread "V" - independent // of pitch. Default: same as pitch. // groove - (non-standard) subtract inverted "V" from cylinder (rather than // add protruding "V" to cylinder). // square - Square threads (per // https://en.wikipedia.org/wiki/Square_thread_form). // rectangle - (non-standard) "Rectangular" thread - ratio depth/(axial) width // Default: 1 (square). // angle - (non-standard) angle (deg) of thread side from perpendicular to // axis (default = standard = 30 degrees). // taper - diameter change per length (National Pipe Thread/ANSI B1.20.1 // is 1" diameter per 16" length). Taper decreases from 'diameter' // as z increases. // leadin - 0 (default): no chamfer; 1: chamfer (45 degree) at max-z end; // 2: chamfer at both ends, 3: chamfer at z=0 end. // leadfac - scale of leadin chamfer (default: 1.0 = 1/2 thread). module metric_thread (diameter=8, pitch=1, length=1, internal=false, n_starts=1, thread_size=-1, groove=false, square=false, rectangle=0, angle=30, taper=0, leadin=0, leadfac=1.0) { // thread_size: size of thread "V" different than travel per turn (pitch). // Default: same as pitch. local_thread_size = thread_size == -1 ? pitch : thread_size; local_rectangle = rectangle ? rectangle : 1; n_segments = segments (diameter); h = (square || rectangle) ? local_thread_size*local_rectangle/2 : local_thread_size / (2 * tan(angle)); h_fac1 = (square || rectangle) ? 0.90 : 0.625; // External thread includes additional relief. h_fac2 = (square || rectangle) ? 0.95 : 5.3/8; tapered_diameter = diameter - length*taper; difference () { union () { if (! groove) { metric_thread_turns (diameter, pitch, length, internal, n_starts, local_thread_size, groove, square, rectangle, angle, taper); } difference () { // Solid center, including Dmin truncation. if (groove) { cylinder (r1=diameter/2, r2=tapered_diameter/2, h=length, $fn=n_segments); } else if (internal) { cylinder (r1=diameter/2 - h*h_fac1, r2=tapered_diameter/2 - h*h_fac1, h=length, $fn=n_segments); } else { // External thread. cylinder (r1=diameter/2 - h*h_fac2, r2=tapered_diameter/2 - h*h_fac2, h=length, $fn=n_segments); } if (groove) { metric_thread_turns (diameter, pitch, length, internal, n_starts, local_thread_size, groove, square, rectangle, angle, taper); } } } // chamfer z=0 end if leadin is 2 or 3 if (leadin == 2 || leadin == 3) { difference () { cylinder (r=diameter/2 + 1, h=h*h_fac1*leadfac, $fn=n_segments); cylinder (r2=diameter/2, r1=diameter/2 - h*h_fac1*leadfac, h=h*h_fac1*leadfac, $fn=n_segments); } } // chamfer z-max end if leadin is 1 or 2. if (leadin == 1 || leadin == 2) { translate ([0, 0, length + 0.05 - h*h_fac1*leadfac]) { difference () { cylinder (r=diameter/2 + 1, h=h*h_fac1*leadfac, $fn=n_segments); cylinder (r1=tapered_diameter/2, r2=tapered_diameter/2 - h*h_fac1*leadfac, h=h*h_fac1*leadfac, $fn=n_segments); } } } } } // ---------------------------------------------------------------------------- module metric_thread_turns (diameter, pitch, length, internal, n_starts, thread_size, groove, square, rectangle, angle, taper) { // Number of turns needed. n_turns = floor (length/pitch); intersection () { // Start one below z = 0. Gives an extra turn at each end. for (i=[-1*n_starts : n_turns+1]) { translate ([0, 0, i*pitch]) { metric_thread_turn (diameter, pitch, internal, n_starts, thread_size, groove, square, rectangle, angle, taper, i*pitch); } } // Cut to length. translate ([0, 0, length/2]) { cube ([diameter*3, diameter*3, length], center=true); } } } // ---------------------------------------------------------------------------- module metric_thread_turn (diameter, pitch, internal, n_starts, thread_size, groove, square, rectangle, angle, taper, z) { n_segments = segments (diameter); fraction_circle = 1.0/n_segments; for (i=[0 : n_segments-1]) { rotate ([0, 0, i*360*fraction_circle]) { translate ([0, 0, i*n_starts*pitch*fraction_circle]) { //current_diameter = diameter - taper*(z + i*n_starts*pitch*fraction_circle); thread_polyhedron ((diameter - taper*(z + i*n_starts*pitch*fraction_circle))/2, pitch, internal, n_starts, thread_size, groove, square, rectangle, angle); } } } } // ---------------------------------------------------------------------------- module thread_polyhedron (radius, pitch, internal, n_starts, thread_size, groove, square, rectangle, angle) { n_segments = segments (radius*2); fraction_circle = 1.0/n_segments; local_rectangle = rectangle ? rectangle : 1; h = (square || rectangle) ? thread_size*local_rectangle/2 : thread_size / (2 * tan(angle)); outer_r = radius + (internal ? h/20 : 0); // Adds internal relief. //echo (str ("outer_r: ", outer_r)); // A little extra on square thread -- make sure overlaps cylinder. h_fac1 = (square || rectangle) ? 1.1 : 0.875; inner_r = radius - h*h_fac1; // Does NOT do Dmin_truncation - do later with // cylinder. translate_y = groove ? outer_r + inner_r : 0; reflect_x = groove ? 1 : 0; // Make these just slightly bigger (keep in proportion) so polyhedra will // overlap. x_incr_outer = (! groove ? outer_r : inner_r) * fraction_circle * 2 * PI * 1.02; x_incr_inner = (! groove ? inner_r : outer_r) * fraction_circle * 2 * PI * 1.02; z_incr = n_starts * pitch * fraction_circle * 1.005; /* (angles x0 and x3 inner are actually 60 deg) /\ (x2_inner, z2_inner) [2] / \ (x3_inner, z3_inner) / \ [3] \ \ |\ \ (x2_outer, z2_outer) [6] | \ / | \ /| z |[7]\/ / (x1_outer, z1_outer) [5] | | | / | x | |/ | / | / (x0_outer, z0_outer) [4] | / | / (behind: (x1_inner, z1_inner) [1] |/ | / y________| |/ (r) / (x0_inner, z0_inner) [0] */ x1_outer = outer_r * fraction_circle * 2 * PI; z0_outer = (outer_r - inner_r) * tan(angle); //echo (str ("z0_outer: ", z0_outer)); //polygon ([[inner_r, 0], [outer_r, z0_outer], // [outer_r, 0.5*pitch], [inner_r, 0.5*pitch]]); z1_outer = z0_outer + z_incr; // Give internal square threads some clearance in the z direction, too. bottom = internal ? 0.235 : 0.25; top = internal ? 0.765 : 0.75; translate ([0, translate_y, 0]) { mirror ([reflect_x, 0, 0]) { if (square || rectangle) { // Rule for face ordering: look at polyhedron from outside: points must // be in clockwise order. polyhedron ( points = [ [-x_incr_inner/2, -inner_r, bottom*thread_size], // [0] [x_incr_inner/2, -inner_r, bottom*thread_size + z_incr], // [1] [x_incr_inner/2, -inner_r, top*thread_size + z_incr], // [2] [-x_incr_inner/2, -inner_r, top*thread_size], // [3] [-x_incr_outer/2, -outer_r, bottom*thread_size], // [4] [x_incr_outer/2, -outer_r, bottom*thread_size + z_incr], // [5] [x_incr_outer/2, -outer_r, top*thread_size + z_incr], // [6] [-x_incr_outer/2, -outer_r, top*thread_size] // [7] ], faces = [ [0, 3, 7, 4], // This-side trapezoid [1, 5, 6, 2], // Back-side trapezoid [0, 1, 2, 3], // Inner rectangle [4, 7, 6, 5], // Outer rectangle // These are not planar, so do with separate triangles. [7, 2, 6], // Upper rectangle, bottom [7, 3, 2], // Upper rectangle, top [0, 5, 1], // Lower rectangle, bottom [0, 4, 5] // Lower rectangle, top ] ); } else { // Rule for face ordering: look at polyhedron from outside: points must // be in clockwise order. polyhedron ( points = [ [-x_incr_inner/2, -inner_r, 0], // [0] [x_incr_inner/2, -inner_r, z_incr], // [1] [x_incr_inner/2, -inner_r, thread_size + z_incr], // [2] [-x_incr_inner/2, -inner_r, thread_size], // [3] [-x_incr_outer/2, -outer_r, z0_outer], // [4] [x_incr_outer/2, -outer_r, z0_outer + z_incr], // [5] [x_incr_outer/2, -outer_r, thread_size - z0_outer + z_incr], // [6] [-x_incr_outer/2, -outer_r, thread_size - z0_outer] // [7] ], faces = [ [0, 3, 7, 4], // This-side trapezoid [1, 5, 6, 2], // Back-side trapezoid [0, 1, 2, 3], // Inner rectangle [4, 7, 6, 5], // Outer rectangle // These are not planar, so do with separate triangles. [7, 2, 6], // Upper rectangle, bottom [7, 3, 2], // Upper rectangle, top [0, 5, 1], // Lower rectangle, bottom [0, 4, 5] // Lower rectangle, top ] ); } } } } Code Arduino nano par IsmaĂ«l #include const unsigned long equivalence_ms_s=1000; // constante pour la convertion des ms en s unsigned long heure_start_ms, heure_start_sec; // variables pour stocker l'heure du dĂ©but en ms et s unsigned long heure_delay_ms, heure_delay_sec; // variables pour stocker l'heure du retard en ms et s void setup() { Serial.begin(9600); // initialisation de la communication sĂ©rie Ă  9600 bites par s //Establishing the communication with the motor shield if (controller.begin()) { Serial.print("MKR Motor Shield connected, firmware version "); Serial.println(controller.getFWVersion()); } else { Serial.println("Couldn't connect! Is the red led blinking? You may need to update the firmware with FWUpdater sketch"); while (1); } // Reboot the motor controller; brings every value back to default Serial.println("reboot"); controller.reboot(); delay(500); M1.setDuty(0); M2.setDuty(0); } int remplissage=1; // variable "remplissage" qui vaut 1 par dĂ©faut int chrono = 0; // variable "chrono" qui vaut 0 par dĂ©faut void loop() { int sensorValue0 = analogRead(A7); // lit la valeur analogique reçue en A0, envoyĂ©e par le capteur BAS int sensorValue1 = analogRead(A2); // lit la valeur analogique reçue en A2, envoyĂ©e par le capteur HAUT //Serial.println(sensorValue1); Serial.println(sensorValue0); float voltage0 = sensorValue0 * (5.0 / 1023.0); // conversion de la valeur analogique (de 0 Ă  1023) en voltage (de 0 Ă  5V) - capteur BAS float voltage1 = sensorValue1 * (5.0 / 1023.0); // conversion de la valeur analogique (de 0 Ă  1023) en voltage (de 0 Ă  5V) - capteur HAUT //Serial.println(voltage0); //Serial.println(voltage1); ||||||||| if (remplissage == 1) { // si le niveau d'eau est sous le capteur du HAUT, alors : if ((voltage0< 2.5) & (voltage1 < 2.5)) { // si le capteur BAS ne dĂ©tecte pas l'eau, alors : M1.setDuty(20); //On fait tourner le moteur Ă  20% M2.setDuty(100); // On fait tourner la pompe Ă  fond remplissage = 1; // on reste dans cette boucle } if ((voltage0> 2.5) & (voltage1 < 2.5)) { // si le capteur BAS ne dĂ©tecte pas l'eau, alors : M1.setDuty(20); // On fait tourner le moteur Ă  20% M2.setDuty(100); // On fait tourner la pompe Ă  fond } if ((voltage1 > 2.5)&(voltage0>2.5)){ // si le capteur HAUT dĂ©tecte l'eau, alors : M1.setDuty(0); // On coupe le moteur M2.setDuty(0); // On coupe la pompe remplissage=0; // on entre dans la boucle suivante heure_start_ms = millis(); // dĂšs que le capteur HAUT dĂ©tecte l'eau, lecture de l'heure du dĂ©but en ms heure_start_sec = (heure_start_ms/equivalence_ms_s); chrono = 0; // conversion des ms en s } } if (remplissage == 0) { // si le niveau d'eau est au dessus le capteur HAUT, alors : if (voltage0 > 2.5) { // si le niveau d'eau est au dessus le capteur BAS, alors if (chrono <= 5) { // si le chrono est < 5 s, alors : M1.setDuty(20); // "pas de courant" en sortie 2 : le circuit est fermĂ© dans la carte relais, le moteur fonctionne M2.setDuty(0); heure_delay_ms = millis(); // lecture du retard en ms heure_delay_sec = (heure_delay_ms/equivalence_ms_s); // conversion des ms en s chrono = heure_delay_sec - heure_start_sec; // calcul du chrono = (heure du dĂ©but - heure du retard) remplissage = 0; } if ((chrono <= 60) & (chrono > 5)) {// si le chrono est > 5 s, alors : M1.setDuty(0); // On eteint le moteur M2.setDuty(0); // On eteint la pompe heure_delay_ms = millis(); // lecture de l'heure du retard en ms heure_delay_sec = (heure_delay_ms/equivalence_ms_s); // conversion des ms en s chrono = heure_delay_sec - heure_start_sec; // calcul du chrono = (heure du dĂ©but - heure du retard) remplissage = 0; } if (chrono > 60) { // si le chrono > 10 s, alors : chrono = 0; // le chrono est remis Ă  0 heure_start_ms = millis(); // l'heure du dĂ©but est remis Ă  jour en ms heure_start_sec = (heure_start_ms/equivalence_ms_s); // conversion des ms en s remplissage = 0; } } if (voltage0 < 2.5) { remplissage = 1; } } //Serial.println(remplissage); |||||||||||||||||| } // ferme void loop Remerciements Un grand merci Ă  Fabrice Minoletti de nous avoir accueillis dans son laboratoire et de nous avoir fait confiance pour la rĂ©alisation de son projet. Merci Ă  LoĂŻc Labrousse pour sa disponibilitĂ© et Ă  Pierre Thery pour son soutien en toute situation. Merci enfin et Ă©videmment Ă  IsmaĂ«l et TĂ©a de constituer cette Ă©quipe efficace avec qui il a fait bon de travailler.ModĂšles Cristallins ModĂ©lisation des systĂšmes cristallins Comment rendre la comprĂ©hension de leurs Ă©lĂ©ments de symĂ©tries plus visuels ? Camille Labbey et Alexandre Dubois Encadrants : LoÏc Labrousse, Pierre Thery, Mathieu ChassĂ© Sommaire I- Introduction II- Objectif du projetIII- Journal de bordIV- Projet et rĂ©sultats finaux     a. SystĂšmes cristallins classiques     b. SystĂšmes cristallins avec Ă©lĂ©ments de symĂ©tries     c. Fichiers stl des modĂšles avec Ă©lĂ©ments de symĂ©tries     d. Fichiers stl des modĂšles classiques     e. Fichiers des patrons pour la dĂ©coupeuse vinyle     f. Code complet OpenscadV- Annexe : Logiciels et machines utilisĂ©es                                                                                                                                                VI- BibliographieVII- Remerciements I- Introduction A l'Ă©chelle microscopique, les atomes sont ordonnĂ©s de façon prĂ©cise et pĂ©riodique dans les solides.  La plus petite entitĂ© permettant de dĂ©crire un solide est appelĂ©e maille. Il en existe sept : triclinique, monoclinique, orthorhombique, hexagonal, rhomboĂ©drique, quadratique et cubique. Ce sont des hexaĂšdres. Toutes les mailles sont caractĂ©risĂ©es par trois longueurs d'arĂȘtes et les trois angles les sĂ©parant. Dans cette UE, notre but est de rĂ©aliser des reproductions des mailles pour que les Ă©tudiants puissent mieux les visualiser et s'entrainer Ă  voir et Ă  trouver les Ă©lĂ©ments de symĂ©tries. En effet, ce sont ces Ă©lĂ©ments qui rĂ©gissent les propriĂ©tĂ©s macroscopiques. Il en existe de plusieurs sortes : axes, plans miroirs et translations. Ici, nous ne nous intĂ©ressons qu'aux axes et aux plans miroirs. SchĂ©ma d'une maille (quelconque) II- Objectif du projet Nous devons rĂ©aliser plusieurs sets de systĂšmes cristallins Ă  but pĂ©dagogiques. Certains seront sans Ă©lĂ©ments de symĂ©tries et d'autres avec Ă©lĂ©ments de symĂ©tries. Ces modĂšles serviront dans le cadre d'un TP de cristallographie/minĂ©ralogie en licence de Sciences de la Terre. III- Journal de bord Journal de bord 27/01/2023 Aujourd'hui, nous voyons avec le professeur ce qu'il souhaite pour le projet. Nous devons rĂ©aliser cinq sets d'entrainements et cinq sets de corrections. Pour cela , nous allons principalement utiliser l'impression 3D que ce soit avec de l'acide polyactique (PLA) ou de la rĂ©sine. Les deux nĂ©cessitent des fichiers au format stl. Nous sommes partis sur des modĂšles de 6cmx6cm. Nous avons commencĂ© par visualiser avec Vesta certains minĂ©raux pour dĂ©couvrir leur structure. Nous avons alors remarquĂ© que nous pouvions faire les fichiers stl Ă  partir de Vesta.  Cependant, il n'Ă©tait pas possible de faire les axes de symĂ©tries. Dans un premier temps, nous allons recrĂ©er les mailles primitives Ă  l'aide d'Openscad pour rĂ©aliser une base de donnĂ©es utilisable par les Ă©tudiants oĂč ils pourront modifier les paramĂštres de mailles Ă  leur guise. Une fois la base de donnĂ©e constituĂ©e, nous pourrons ajouter les Ă©lĂ©ments de symĂ©tries sur les mailles. Nous partirons sur des gravures pour reprĂ©senter les Ă©lĂ©ments de symĂ©tries. Pour la semaine prochaine, il serait bien que nous testions les impressions 3D et le flocage. C'est une technique qui nous permettrait de rajouter les Ă©lĂ©ments de symĂ©tries sur les polygones. 03/02/2023 Camille a rĂ©alisĂ© un code pour que les Ă©lĂšves de M. ChassĂ© puissent retrouver les systĂšmes cristallins. Ce code est censĂ© marcher pour tous les systĂšmes. C'est Ă  dire qu'en rentrant les paramĂštres a, b, c, alpha, bĂȘta et gamma, le logiciel Openscad sera capable de recrĂ©er la maille voulue. Pendant ce temps, Alexandre a imprimĂ© les premiers modĂšles en PLA et a codĂ© le systĂšme monoclinique avec ses Ă©lĂ©ments de symĂ©tries afin de savoir comment cela pourrait rendre (prise en main, poids, taille). Openscad a permis de fabriquer les fichiers stl mais il a fallu ensuite les rentrer dans IdeaMaker pour les rendre compatibles avec les imprimantes du Fablab, organiser le plateau, la qualitĂ© d'impression et Ă©ventuellement agrandir ou rĂ©trĂ©cir les modĂšles. Les imprimantes PLA se situent dans l'espace prototypage. PremiĂšre impression en PLA : deux systĂšmes monocliniques 07/03/2023 Nous avons lancĂ© les impressions des systĂšmes quadratiques, monocliniques et orthorhombiques avec des Ă©lĂ©ments de symĂ©tries. Il Ă©tait compliquĂ©, juste avec Openscad, de bien ajuster les tailles des axes ou des miroirs par rapport Ă  celle de la maille. Cette impression Ă©tait un test pour savoir Ă  quel point les Ă©lĂ©ments doivent ĂȘtre gros. 08/02/2023 Lorsque les modĂšles Ă  imprimer deviennent complexes, il est parfois nĂ©cessaire d'utiliser des supports pour stabiliser la structure et donner un sol sur lequel l'imprimante peut construire sa rĂ©alisation. Les impressions de la semaine derniĂšre ont ratĂ© vraisemblablement Ă  cause de la mauvaise gestion des supports. Soit ils n'y en avaient pas assez, soit ils Ă©taient trop fins. Echec de l'impression de quatre modĂšles : deux quadratiques et deux orthorhombiques Seuls les monocliniques ont Ă©tĂ© Ă©pargnĂ©s. Cependant les axes sont minuscules, ce qui les rend extrĂȘmement fragiles et les miroirs font brouillons. De plus, il y a une erreur dans le codage de ces monocliniques. En effet, ils n'ont pas Ă©tĂ© dĂ©finis Ă  partir des paramĂštres a, b, c, alpha, bĂȘta et gamma mais Ă  partir de coordonnĂ©es dont certaines erronĂ©es. PremiĂšres impressions avec axes de symĂ©tries 10/02/2023 Nous avons relancĂ© des impressions PLA des systĂšmes monoclinique (avec les bonnes dimensions cette fois-ci), quadratique et orthorhombique. Nous avons allongĂ© et grossi les axes. Sur les impressions ci-dessous, plusieurs choses peuvent ĂȘtre remarquĂ©es. DĂ©jĂ , le monoclinique est un test de reprĂ©sentation inversĂ©e. Au lieu de faire ressortir les axes, nous les avons creusĂ©s et au lieu de graver le miroir, nous l'avons fait ressortir. Cette visualisation ne sera pas gardĂ©e. Ensuite, pour les deux autres modĂšles, la forme des axes varie. En effet, celle-ci est codifiĂ©e et correspond Ă  la valeur de l'axe. S'il permet de faire 2 rotations, il sera ovale, un triangle, 4 un carrĂ© et 6 un hexagone. Enfin, il manque quelques plans miroirs sur le quadratique. Rendez-vous et bilan de l'avancĂ©e du projet Nous nous sommes alors entretenus avec M. ChassĂ©. La taille de ces modĂšles lui convenait. En outre, nous pouvions voir sur le monoclinique les traces d'un marqueur pour tableau qu'il a effectuĂ©. Notre professeur souhaitait que ses Ă©tudiants puissent dessiner sur les futurs modĂšles d'entrainements puis effacer. Pour cette raison, les impressions finales d'entrainements seront blanches pour mieux voir l'encre. Par ailleurs, les premiĂšres impressions ont Ă©tĂ© conçues en exagĂ©rant les proportions de maniĂšre Ă  ĂȘtre le plus explicite possible. Elles ne sont pas, pour cette raison, reprĂ©sentatives de la rĂ©alitĂ©. M. ChassĂ© nous a demandĂ© de caler les paramĂštres des modĂšles sur les dimensions de certains minĂ©raux existant pour Ă©viter les erreurs de reprĂ©sentation et de proportion. Il nous a prĂ©cisĂ© ensuite de faire attention Ă  la longueur des axes. M. Labrousse a approuvĂ© cette idĂ©e en ajoutant que des axes longs seraient fragiles. A prĂ©sent, il existe deux versions des programmes Openscad pour les Ă©tudiants afin qu'ils puissent visualiser les modĂšles en ligne. Programme n°1 : Programme n°2 : Nous repartons donc aujourd'hui avec beaucoup d'objectifs : vĂ©rifier s'il est possible d'effacer le marqueur des impressions PLA comme rĂ©sine, tester l'Ă©thanol pour savoir s'il endommage les impressions car ce solvant permet d'enlever les marqueurs, faire des impressions rĂ©sines, essayer avec M. ThĂ©ry la lisseuse, un instrument chauffant pour lisser nos productions, regarder si avec la dĂ©coupeuse vinyle, coller des stickers afin d'Ă©crire sur les modĂšles est envisageable, voir si nous pouvons, Ă  l'aide de la dĂ©coupeuse Ă  eau, recouvrir nos productions de plexiglas, terminer toutes les corrections. Actuellement, il nous manque les systĂšmes rhomboĂ©drique, cubique et hexagonale. Par ailleurs, il est envisagĂ©, sous rĂ©serve que nous terminions rapidement, de reproduire des mailles de minĂ©raux existants, de coder les modĂšles avec les motifs (atomes ou molĂ©cules) dedans. 12/02/2023 Les systĂšmes classiques sont tous terminĂ©s pour les modĂšles simples (voir SystĂšmes cristallins classiques) et une partie des modĂšles avec axes aussi. (voir SystĂšmes cristallins avec symĂ©tries). Nous avons testĂ© la lisseuse. Elle a dĂ©formĂ© notre modĂšle. A la place, M. ThĂ©ry nous a proposĂ© d'utiliser la dĂ©coupeuse vinyle pour coller un papier Velleda sur nos impressions en PLA afin d'avoir les formes parfaites. Cela nĂ©cessiterait l'utilisation du logiciel Inkscape pour avoir le chemin vectoriel. Il faut juste vĂ©rifier les dimensions du film pour savoir s'il est compatible avec la dĂ©coupeuse. Nous pourrions Ă©galement tester de lisser la surface avec du sable chauffĂ© puisque le fer chauffĂ© dĂ©forme notre structure. Enfin, plusieurs personnes nous ont conseillĂ©s de faire un trou universel dans les modĂšles puis de laisser les Ă©tudiants trouver quels axes correspondent Ă  quelles cavitĂ©s. Mais nous n'avons pas gardĂ© cette proposition pour plusieurs raisons. D'abord, souvent les axes s'entrecroisent au centre de la maille. Pour Ă©viter qu'ils ne se gĂȘnent, il aurait fallu les raccourcir de façon prĂ©cise. Mais le principal problĂšme rencontrĂ© concerne le maintien des axes au sein de la structure. Nous aurions dĂ» crĂ©er un systĂšme de clefs et de serrures pour Ă©viter que les axes ne tombent en manipulant le modĂšle. 17/02/2023 Lorsqu'un minĂ©ral est trouvĂ© dans la rĂ©alitĂ©, sa forme ne correspond pas forcĂ©ment Ă  sa maille primitive. Il a pu ĂȘtre dĂ©coupĂ© selon des plans bien prĂ©cis. On parle alors de troncature. Ci-dessous, il s'agit de la rĂ©alisation de troncatures pour le systĂšme cubique. Essai de troncature du systĂšme cubique (cubo-octaĂ©dre) : Essai de troncature du systĂšme cubique avec symĂ©tries (cubo-octaĂ©dre): Au sein de la facultĂ©, les impressions rĂ©sine dĂ©pendent du Fablab de biologie/chimie. Il a fallu se rendre au Fablab biologie Ă  l'atrium pour demander des informations sur l'imprimante rĂ©sine mais il Ă©tait fermĂ©. Camille est allĂ©e faire un tour au Fablab chimie pour savoir s'il Ă©tait possible de lancer une impression rĂ©sine du systĂšme cubique avec axes de symĂ©tries. Cependant, le responsable du Fablab de chimie, a expliquĂ© que les impressions doivent ĂȘtre lancĂ©es le jeudi. La rĂ©sine est un fluide qui se polymĂ©rise sous l'effet des UV. Il faut stopper manuellement la rĂ©action pour Ă©viter des dĂ©gĂąts sur les produits. Si les impressions Ă©taient lancĂ©es les vendredis soirs, au retour du week-end, elles seraient abimĂ©es ainsi que le matĂ©riel. Camille enverra un mail ce week-end Ă  Simon Lanis afin de convenir d'une date. Egalement, il serait bien d'Ă©crire sur des Ă©chantillons de rĂ©sine afin de savoir si nous pouvons effacer le marqueur. Comme les BIC Velleda sont les plus compliquĂ©s Ă  enlever, nous allons faire nos essais de dessins avec. L'impression du systĂšme cubique en haute rĂ©solution avec une coque trĂšs fine et un remplissage de 15% a pu ĂȘtre lancĂ©e. Il s'agit de la premiĂšre impression haute rĂ©solution effectuĂ©e. Si au toucher elles sont plus lisses et visuellement plus jolies, la durĂ©e d'impression est beaucoup plus longue. Nous pourrons ainsi disposer d'un aperçu du rendu "final" que pourrait donner les systĂšmes. En principe, l'impression devrait ĂȘtre terminĂ©e ce week-end. En parallĂšle, nous nous sommes rendu compte que les programmes servant Ă  recrĂ©er les mailles ne fonctionnaient pas pour le systĂšme rhomboĂ©drique. En effet, en comparant la taille des diagonales des faces, elles Ă©taient toutes diffĂ©rentes. Or, le rhomboĂšdre est composĂ© de 6 losanges identiques. Il fallait donc recoder ce systĂšme complĂštement puis ajouter les axes dessus. Cela signifiait Ă©galement un disfonctionnement des programmes les rendant inaptes Ă  l'enseignement.  Il s'agissait du seul systĂšme nous faisant dĂ©faut. Dans un second temps, il nous faudra rĂ©soudre les problĂšmes de surface des piĂšces, elles doivent ĂȘtre les plus lisses possibles pour Ă©viter l'absorption de l'encre au sein des porositĂ©s. La rĂ©sine pourrait ĂȘtre une solution. En effet, si le film Velleda ne tient pas ou bien s'il est abĂźmĂ© par les Ă©tudiants, le projet ne sera pas viable sur le long terme. Les axes de symĂ©tries sont dĂ©finitivement trop fragiles. Au moindre choc, chute, transport dans une poche, ils se cassent. Il faut trouver un meilleur rapport entre longueur/Ă©paisseur des axes pour les prĂ©server au maximum. Des axes plus petits mais plus larges semblent ĂȘtre adaptĂ©s. Dans un troisiĂšme temps, nous pourrions crĂ©er deux boites avec la dĂ©coupeuse laser ou un autre appareil pour ranger proprement tous les systĂšmes. 24/02/2023 L'impression du cube a partiellement fonctionnĂ©. Les axes situĂ©s sur la face infĂ©rieure n'ont pas Ă©tĂ© correctement imprimĂ©s.  En outre, elle souffre aussi d'un dĂ©faut puisqu'elle n'est pas lisse. Cela est dĂ» au socle trop Ă©pais, difficile Ă  retirer. En temps normal, les structures supports partent relativement facilement. Cependant, ici, il a fallu utiliser un cutter Ă  ultrasons pour les couper puis limer le surplus de matiĂšre de la face postĂ©rieure. Pour les prochains essais, il serait bien d'utiliser des supports plus consĂ©quents et plus larges que la face du cube.  Le reste du modĂšle est parfaitement imprimĂ©, la surface est beaucoup mieux aboutie que les autres modĂšles et les axes plus petits devraient mieux rĂ©sister. RĂ©sultat de l'impression avec la meilleure rĂ©solution : Photos de la face ratĂ©e avant et aprĂšs limage : Cutter Ă  Ultrasons : RĂ©alisation d'essais de traces aux marqueurs sur des Ă©chantillons en rĂ©sine : Lorsque nous recevons pour la premiĂšre fois les Ă©chantillons en rĂ©sine, il nous est apparu que certains marqueurs pouvaient ĂȘtre effacĂ©s. Les marqueurs bleus et verts semblent ĂȘtre adaptĂ©s Ă  notre projet puisqu'effaçables mĂȘme aprĂšs une heure d'attente. Ainsi, l'utilisation de rĂ©sine translucide semble ĂȘtre une des solutions rĂ©pondant aux critĂšres de M.ChassĂ©. Pour la semaine prochaine, nous devons continuer Ă  chercher les axes et plans miroirs du systĂšme rhomboĂ©drique. En effet, il n'est toujours pas codĂ© de façon correcte. Par ailleurs, la boĂźte de fin de projet pourrait ĂȘtre construite Ă  la dĂ©coupeuse laser. Des crans sur les cĂŽtĂ©s de celle-ci serviraient Ă  l'assemblage de chacune de ses faces. Enfin, l'intĂ©rieur comporterait de la mousse afin de prĂ©server les impressions. 10/03/2023 Le code du systĂšme rhomboĂ©drique a enfin Ă©tĂ© trouvĂ©. Depuis plusieurs semaines, nous Ă©tions bloquĂ©s sur son automatisation au sein d'Openscad. Pour des valeurs de paramĂštres conformes Ă  la dĂ©finition du rhomboĂšdre (a=b=c, alpha=bĂȘta=gamma), les losanges obtenus diffĂ©raient les uns des autres. Nous nous en sommes rendu compte grĂące aux axes. Il Ă©tait impossible de les baser sur nos paramĂštres. Il fallait tout le temps tĂątonner au cas par cas lĂ  oĂč pour les autres systĂšmes tout est automatique. Cela nous a pris 3 semaines pour comprendre comment dĂ©finir les longueurs de ce polyĂšdre. Par ailleurs, comme ce systĂšme ne marchait pas dans les codes d'amusement des futurs Ă©tudiants Ă  cause de la complexitĂ© des coordonnĂ©es, il est plus que probable que les codes ne marchent pas non plus pour le systĂšme triclinique. Il dispose de trop de translations interdĂ©pendantes les unes des autres pour ĂȘtre aussi simple Ă  coder. Si nous disposons d'un peu de temps Ă  la fin, il pourrait ĂȘtre intĂ©ressant de trouver comment le crĂ©er dans Openscad. AprĂšs avoir testĂ© plein de variantes diffĂ©rentes, c'est finalement via la rĂ©solution d'un systĂšme Ă  deux inconnus que les translations ont Ă©tĂ© trouvĂ©es. C'est en effet le passage de la structure 2D en 3D qui posait problĂšme. D'une part le triangle rectangle entre la translation en x, la longueur a (hypotĂ©nuse) et la hauteur mais Ă©galement via les coordonnĂ©es du vecteur BE, et BD dont on a comparĂ© les normes. SchĂ©mas de la solution //variable a=6.36; alpha=46.6; //dĂ©finition des translations ralpha=alpha*3.14/180; x=a*cos(alpha/2); y=a*sin(alpha/2); x1=(y)^2; x2=(x)^2; x3=2*x; tx=(a^2-3*x1+x2)/x3; tz=sqrt(a^2-tx^2); //polyĂšdre A=[0 ,0 ,0 ]; B=[x ,y ,0 ]; C=[2*x ,0 ,0 ]; D=[x ,-y ,0 ]; E=[tx ,0 ,tz ]; F=[tx+x ,y ,tz ]; G=[2*x+tx,0 , tz]; H=[tx+x ,-y , tz]; points=[ A, B, C, D, E, F, G, H]; face=[[0,1,2,3],//sol [4,5,1,0],//au dessusi [7,6,5,4],//derriĂšre [5,6,2,1],//droite [6,7,3,2],//gauche [7,4,0,3]];//devant //vĂ©rification polyhedron(points,face); v1=B-E;// B et E v2=H-F;// F et H v3=A-F; v4=A-C; nv1=norm(v1); nv2=norm(v2); nv3=norm(v3); nv4=norm(v4); echo(nv1,"norme de v1"); echo(nv2,"norme de v2"); echo(nv3,"norme de v3"); echo(nv4,"norme de v4"); echo (tx,tz); Code pour le rhomboĂšdre Il est Ă  noter que ce code marche Ă©galement pour le cube si les angles sont Ă©gaux Ă  90°, c'est pour cela que dans la dĂ©finition du rhomboĂšdre, les angles doivent ĂȘtre diffĂ©rents de 90°. 17/03/2023 Nous avons continuĂ© la pose des axes de symĂ©tries sur le rhomboĂšdre. En parallĂšle, trois nouveaux modĂšles en PLA  ont Ă©tĂ© imprimĂ©s afin de les recouvrir de papier film Velleda. La commande que nous avions passĂ©, est arrivĂ©e la semaine derniĂšre. Enfin, le cube a Ă©tĂ© projetĂ© afin de tester sa rĂ©sistance. Certains Ă©lĂ©ments de symĂ©tries ont Ă©tĂ© cassĂ©s. Leur durĂ©e de vie est donc le principal souci pour les modĂšles de corrections. 22/03/2023 : Une impression rĂ©sine a Ă©tĂ© lancĂ©e pour les systĂšmes suivants : - cubique classique - quadratique classique - orthorhombique classique- monocline classique - triclinique classique - hexagonal classique- cubique corrigé - quadratique corrigĂ©- orthorhombique corrigĂ© Il Ă©tait initialement prĂ©vu d'imprimer le rhomboĂ©drique classique. Cependant, le fichier slt ne se chargeait pas sur le logiciel de visualisation Chitubox. L'utilisation de l'imprimante en rĂ©sine est plus technique et plus coĂ»teuse que celles utilisant le PLA. De plus, le bac doit ĂȘtre rempli de façon prĂ©cise avant l'impression pour Ă©viter d'ĂȘtre en manque de rĂ©sine pendant la fabrication des modĂšles. Ici il fallait 62ml. Les systĂšmes ont Ă©tĂ© fabriquĂ©s simultanĂ©ment Ă  l'aide d'une seule imprimante en rĂ©sine grise. Ils font environ 2cm de long. C'est plus petit que les autres impressions mais cela a permis de tous les avoir rapidement. Nous pourrions les avoir en blancs, noirs ou transparents. Ce serait bien d'essayer ces couleurs afin de les comparer. 24/03/2023: L'impression des modĂšles en rĂ©sine a durĂ© 2 heures. Elle n'a pas fonctionnĂ© pour les polygones dans la partie gauche du rĂ©cipient contenant la rĂ©sine. NĂ©anmoins, la dĂ©finition des objets est bien plus fine qu'avec l'impression Ă  filament. Ainsi les systĂšmes imprimĂ©s Ă  ce jour sont : - systĂšme cubique classique - systĂšme cubique corrigĂ©- systĂšme monoclinique classique - systĂšme orthorhombique corrigé - systĂšme hexagonal classique Photos des premiĂšres impressions en rĂ©sine Etapes de traitement pour l'impression rĂ©sine : - Enlever Ă  l'aide d'une spatule en plastique les supports collĂ©s aux films,- DĂ©crocher les systĂšmes des supports,- Transvaser le restant de rĂ©sine dans le conteneur Ă  rĂ©sine Ă  l'aide d'un filtre pour permettre de filtrer les morceaux,- Gratter Ă  l'aide d'une spatule en plastique les morceaux solides encore accrochĂ©s aux films,- Nettoyer Ă  l'aide d'un papier le bac,- Laver Ă  l'aide d'un papier et d'un solvant (propanol) le bac de rĂ©sine, - Plonger entre 5 et 15 minutes les piĂšces dans un grand volume de solvant afin d'enlever la rĂ©sine liquide rĂ©siduelle,- Sortir les piĂšces du solvant et les laisser sĂ©cher sous la hotte,- Rincer Ă  l'eau et au savon les spatules, l'entonnoir, le filtre et le support oĂč Ă©taient suspendues les impressions, - Exposer ces derniĂšres aux ultraviolets naturels ou synthĂ©tiques pour durcir les piĂšces. 24/03/2023 AprĂšs avoir rĂ©cupĂ©rĂ© les impressions en rĂ©sine, nous avons Ă©crit dessus avec un feutre Velleda vert pour savoir si elles Ă©taient effaçables. La rĂ©ponse est "non". Pourtant au toucher, les surfaces paraissaient lisses. Avec M. Labrousse, nous avons regardĂ© au microscope Ă©lectronique le trait de Velleda sur le cube en rĂ©sine. GrĂące Ă  celui-ci, nous avons vu des sillons droits apparaĂźtre au sein de la surface (grossissement x40). Elle est donc poreuse. L'encre reste dans les parties creuses du cube (grossissement x1000). Le microscope possĂšde l'option topographie. Nous en avons donc profitĂ© pour rĂ©aliser la topographie de l'Ă©chantillon. Il n'Ă©tait pas lisse Ă  cause de sa porositĂ© et possĂšde un relief. Nous pourrions Ă©ventuellement tester l'acĂ©tone ou l'Ă©thanol pour regarder si l'encre aurait pu disparaitre sans abĂźmer l'Ă©chantillon En revanche, il semblerait que les impressions en rĂ©sine sont plus rĂ©sistantes que les impressions en PLA. Nous pourrions faire les modĂšles correctifs en rĂ©sine afin de conserver les axes qui restent trop fragiles. Grossissements du cube x40 et x1000 Topographie d'une surface du cube L'image supĂ©rieure droite montre la coupe sur la surface du cube pour un grossissement x1000. Celle en haut Ă  gauche prĂ©sente une carte de la surface analysĂ©e en fonction de la hauteur. Le bleu vaut 0 micromĂštre et le rouge 18.  Enfin, la courbe en bas est la topographie de la surface pour un grossissement x1000. Dans un second temps, aprĂšs avoir reçu le film Velleda, nous avons pu tester la dĂ©coupeuse vinyle afin de recouvrir les modĂšles d'exercices.                                                                                                                                                              Les trois impressions en PLA noir de la semaine derniĂšre ont Ă©tĂ© recouverts de papier Velleda. Sur le logiciel Graphtec Studio, il est possible soit de reproduire les faces des modĂšles soit de crĂ©er un patron. Ici, le cube est recouvert d'un patron exactement aux bonnes dimensions. Le patron du monoclinique est lĂ©gĂšrement plus grand afin de prendre en compte les dĂ©formations dues au pliage. Le rhomboĂšdre est recouvert par 6 losanges.                                                                                                                        Les patrons semblent plus adaptĂ©s que le collage face par face. Notamment parce que l'une des faces du rhomboĂšdre  a Ă©tĂ© perdue. D'ailleurs, exagĂ©rer les proportions du patron n'est pas une bonne idĂ©e. En effet, les pliages sont disgracieux, il faut dĂ©couper ce qui dĂ©passe, ce qui n'est pas Ă©vident. MĂȘme le cutter Ă  ultrasons n'est pas pratique pour cette besogne. Il fait fondre le film et lĂ©gĂšrement le PLA.  Ces modĂšles rĂ©sistent bien mieux aux chutes depuis un bureau ou plus haut. Par ailleurs, comme le film Velleda est conçu pour ĂȘtre utilisĂ© avec des marqueurs, il n'y a aucun problĂšme pour effacer les Ă©critures. Cependant, le papier film Velleda se colle mal sur le PLA. L'usage de colle est obligatoire pour une utilisation pĂ©renne des modĂšles.  Il semblerait que la Loctite 406 adhĂšre mieux sur le plastique. Comme nous souhaitons rĂ©aliser 5 sets de 7 piĂšces, cela va prendre du temps de recouvrir l'intĂ©gralitĂ© de nos systĂšmes.  De plus, il existe dĂ©jĂ  des modĂšles d'entrainements similaires. Ils sont beaucoup plus gros mais il n'y a qu'un seul set. Ici, plusieurs groupes pourront s'exercer simultanĂ©ment. Cette solution semble ĂȘtre la plus adaptĂ©e pour notre projet mais nous en discuterons avec M. ChassĂ© lors de notre prochaine entrevue pour savoir si cela lui convient. Si tel est le cas, alors nous utiliserons du PLA blanc pour les modĂšles afin de masquer au maximum les imperfections de collage. Photo des trois modĂšles recouverts de film Velleda, le cube a des arĂȘtes de 3cm 31/03/2023 Aujourd'hui, nous avons rencontrĂ© M.ChassĂ© pour faire le point sur l'avancĂ©e du projet. AprĂšs avoir discutĂ© avec lui, nous avons dĂ©cidĂ© de faire les systĂšmes recouverts de Velleda pour les modĂšles d'exercices. A l'inverse, les modĂšles de corrections seront rĂ©alisĂ©s en rĂ©sine. Nous espĂ©rons ainsi qu'ils seront plus rĂ©sistants que les modĂšles en PLA.                                        A cette fin, nous avons dĂ©finis des dimensions prĂ©cises basĂ©es sur celles de minĂ©raux pour chaque systĂšme pour qu'ils soient facilement reproductibles en cas de perte, de casse ou de vol (fichiers stl et fichiers stl de correction). Pour Ă©viter au maximum des soucis d'impressions, nous voulions utiliser deux imprimantes pour imprimer les 35 modĂšles (7*5). Cependant, une des imprimantes n'a pas marchĂ© donc il n'y en aura que la moitiĂ© pour le moment.            Si nous parvenons Ă  terminer rapidement, nous allons ensuite rĂ©aliser une boite afin de protĂ©ger des chocs, pertes mais Ă©galement de prĂ©server la colle. 08/04/2023 Nous avons eu un problĂšme d'impression sur les 16 modĂšles lancĂ©s la semaines derniĂšre. 7 ont Ă©tĂ© imprimĂ©s mais seulement 3 ou 4 sont exploitables, les autres ont trop de dĂ©fauts pour ĂȘtre recouverts de film. De ce fait, les impressions seront lancĂ©es petit Ă  petit les unes aprĂšs les autres, ce qui nĂ©cessitera un temps considĂ©rable.                                                                    La dĂ©coupeuse vinyle aussi a Ă©tĂ© compliquĂ©e Ă  utiliser. Il a fallu demander pour la rĂ©alisation des trois tests des semaines prĂ©cĂ©dentes, l'ordinateur d'une personne ayant dĂ©jĂ  rĂ©ussi Ă  la faire fonctionner. D'autre part, comme elle est prĂ©cise au mm et les impressions Ă  + ou - 0.4 mm, il faudra voir comment cela impacte le recouvrement des modĂšles.  Par ailleurs, la quantitĂ© de film nĂ©cessaire pour la bonne rĂ©alisation du projet semble plus consĂ©quente que prĂ©vu. En ce qui concerne la colle,  le cube et le rhomboĂšdre ont Ă©tĂ© enduits de cette derniĂšre puis malmenĂ©s pendant 7 jours. Au terme de la semaine, aucun dĂ©collement n'Ă©tait repĂ©rable. 12/04/2023 Les modĂšles d'entrainements sont tous soit en cours d'impression soit terminĂ©s. Il faudra juste les recouvrir. La dĂ©coupeuse vinyle ne fonctionne pas. Le logiciel conçu pour communiquer entre la dĂ©coupeuse et un ordinateur est Graphtec Studio. Cependant, il est impossible de faire communiquer un pc avec la dĂ©coupeuse. Que ce soit celui d'Alexandre, les ordinateurs portables du Fablab ou bien la tour installĂ©e spĂ©cialement pour la dĂ©coupeuse. Pourtant celle-ci fonctionne. AprĂšs avoir testĂ© plusieurs logiciels, il semble compliquĂ© d'identifier la source du problĂšme. C'est embĂȘtant puisque la dĂ©coupeuse impacte directement le bon dĂ©roulement de notre projet. 14/04/2023 Une impression en rĂ©sine a Ă©tĂ© rĂ©alisĂ©e jeudi pour les modĂšles cristallins avec axes et plans miroirs aux bonnes dimensions. De ce fait, leur volume est plus consĂ©quent. En outre, les axes ont Ă©tĂ© Ă©paissis et leurs longueurs raccourcies afin de limiter la casse sur le long terme. Malheureusement, nous avons minimisĂ© le volume de rĂ©sine nĂ©cessaire Ă  l'impression. De ce fait, les modĂšles ont Ă©tĂ© partiellement imprimĂ©s. Pour pallier Ă  cette erreur, un nouveau rendez-vous est fixĂ© Ă  la semaine prochaine. Photo de l'Ă©chec d'impression en rĂ©sine La pose des Ă©lĂ©ments de symĂ©tries sur le systĂšme rhomboĂ©drique est terminĂ©e. C'Ă©tait le seul manquant. D'autre part, tous les modĂšles d'exercices sont imprimĂ©s. Il y a au final 7 sets de 7 piĂšces. Photo de toutes les impressions d'entrainements Avec Pierre, nous avons discutĂ© des diffĂ©rentes possibilitĂ©s pour la fabrication de la boite, sous rĂ©serve que nous disposions de temps : - boite en bois avec couvercle de plexiglass pour voir correctement les modĂšles,- mousse prĂ©dĂ©coupĂ©e reprenant la forme des impressions, - noms des modĂšles gravĂ©s sur le plexiglass. Enfin, comme la semaine derniĂšre, la dĂ©coupeuse vinyle refuse toujours de fonctionner. Nous allons devoir envisager de faire toutes les dĂ©coupes Ă  la main. Il va falloir remĂ©dier Ă  ce problĂšme au plus tard la semaine prochaine afin de commencer la pose du Velleda. Suite Ă  un nouveau rendez-vous au Fablab Chimie, les systĂšmes cristallins ont Ă©tĂ© imprimĂ©s en rĂ©sine blanche. Contrairement au premier modĂšle, nous avons Ă©paissi les axes et accentuĂ© les encoches des plans miroirs. Cependant, les modĂšles ne sont pas parfaits. En effet, on observe des modifications de l'Ă©tat de surface. Les faces ne sont pas parfaitement tabulaire dus Ă  diffĂ©rents facteurs. Tout d'abord, l'imprimante repose sur une table de laboratoire dans un endroit de passage. Ainsi, les vibrations suscitĂ©es par l'environnement ont pu ĂȘtre enregistrĂ©es sur certaines couches. De plus, les modĂšles Ă©tant denses (car ils sont pleins), il aurait fallu augmenter la densitĂ© des supports pour Ă©viter un affaissement de la matiĂšre du Ă  la gravitĂ©. Aussi, on peut remarquer des marques de supports Ă  certains endroits des figures. Pour palier Ă  ces imperfections, nous pourrions essayer d'imprimer les modĂšles sous une hĂŽte qui a la particularitĂ© d'absorber les vibrations que subit l'imprimante. Ou sinon, placer l'imprimante sous un tapis de mousse pour limiter les secousses. Concernant les supports, il faudrait trouver le bon compromis entre des supports peu denses qui ne laisseraient aucune trace sur les modĂšles et des supports denses qui permettraient un meilleur maintien. Les modĂšles ci-dessous ont Ă©tĂ© placĂ©s 2h aprĂšs impression sur le rebord d'une fenĂȘtre pour qu'ils continuent de se solidifier Ă  l'UV. ModĂšles avec Ă©lĂ©ments de symĂ©tries imprimĂ©s Ă  la rĂ©sine Visualisation des modĂšles cristallins sur Chitubox 19/05/2023 Comme les examens sont presque tous terminĂ©s, nous avons eu le temps de travailler sur le code permettant de recrĂ©er chacune des mailles. En rĂ©alitĂ©, il s'agit du code de la maille triclinique. Comme c'est elle qui dispose du plus de libertĂ© sur ses paramĂštres. La modĂ©liser rend obsolĂšte les autres code dont celui du rhomboĂšdre car nous pouvons tous les concevoir en ajoutant des contraintes sur la maille triclinique. Cependant, ce code ne marche pas pour toutes les valeurs d'angles. La difficultĂ© rencontrĂ©e pour recrĂ©er une maille provient des translations en x,y et z (tx,ty et tz) entre la face infĂ©rieure et la face supĂ©rieure. Openscad utilise huit sommets pour dĂ©duire les faces. En dĂ©finissant 4 sommets pour la face infĂ©rieure et 4 pour la supĂ©rieure, cela revient Ă  dupliquer la face infĂ©rieure avec une translation identique en x,y et z pour les 4 points supĂ©rieurs. Dans le code, comme A possĂšde pour coordonnĂ©es (0,0,0), le point E Ă  pour coordonnĂ©es les translations. AprĂšs avoir dĂ©finit les trois Ă©quations pour les trois inconnus, il suffit de les rĂ©soudre. Cependant, tz  n'admet pas de solutions pour certaines valeurs. Si, dans le code (voir IV f.) , il vaut : sqrt(c^2+a^2-2*a*c*cos(180-beta)-ty^2-(a+tx)^2) La solution la plus simple de tz est : tz= sqrt(c^2-ty^2-tx^2); (Les deux expressions sont Ă©quivalentes et donnent le mĂȘme rĂ©sultat mais dans la recherche de la suppression de la racine pour tz, nous avons tentĂ© de trouver d'autres solutions.) Or ty et tx dĂ©pendent des angles bĂȘta et alpha. Quand ceux-ci deviennent trop extrĂȘmes (par exemple: 90;10;10) , le rĂ©sultat de la soustraction devient nĂ©gatif ce qui empĂȘche la rĂ©solution de l'Ă©quation. Pour pallier Ă  ça, nous avons pensĂ© Ă  mettre en valeur absolue la racine mais cela crĂ©er une dĂ©formation de la maille. Comme les nombres complexes n'existent pas non plus sur Openscad, nous avons optĂ© pour un message d'erreur quand la maille ne serait pas construisible. IV- Projet et rĂ©sultats finaux Notre projet avait pour objectif de rĂ©aliser des sets pour les Ă©tudiants des annĂ©es suivantes en minĂ©ralogie. Ainsi grĂące Ă  ces modĂšles cristallins, les Ă©tudiants pourront visualiser et manipuler les diffĂ©rentes mailles cristallines constituant la matiĂšre. MĂȘme si les mailles sans axes existaient dĂ©jĂ , que ce soit en version physique ou bien sur les logiciels, celles rĂ©alisĂ©es dans ce projet seront plus adaptĂ©es puisqu'elles seront utilisables par plusieurs groupes dans une classe contrairement aux modĂšles existants qui n'Ă©taient manipulables que par le professeur pour prĂ©senter Ă  ses Ă©lĂšves les cristaux. Notre travail s'est dĂ©composĂ© en deux parties. Tout d'abord, recrĂ©er avec Openscad les diffĂ©rentes mailles cristallines dĂ©finies par des propriĂ©tĂ©s gĂ©omĂ©triques. Pour ce faire, nous avons dĂ©fini un repĂšre en 3D ayant comme axes les arĂȘtes de longueurs a, b, c du polyĂšdre. Quant aux angles alpha, bĂȘta et gamma, ils reprĂ©sentent respectivement les angles entre (b,c), (c,a) et (a,b). Les modĂšles cristallins sont tous des hexaĂšdres composĂ©s de six faces. Nom de la maille valeurs de la longueur des axes a,b et c angles entre les axes a,b et c. Triclinique a≠b≠c alpha≠bĂȘta≠gamma Monoclinique a≠b≠c alpha=gamma=90°≠bĂȘta Orthorhombique a≠b≠c alpha=bĂȘta=gamma=90 Hexagonal a=b≠c alpha=bĂȘta=90, gamma=120 RhomboĂ©drique a=b=c alpha=bĂȘta=gamma≠90 Quadratique a=b≠c alpha=bĂȘta=gamma=90 Cubique a=b=c alpha=bĂȘta=gamma=90 Nous avons remplacĂ© les valeurs des longueurs et des angles caractĂ©ristiques du tableau par les paramĂštres de mailles de vrais minĂ©raux (voir fichiers stl). - Dimensions de la chlorite pour le monoclinique,- Dimensions de l'andalousite pour l'orthorhombique,- Dimensions du corindon pour l'hexagonal,- Dimensions de la calcite pour le rhomboĂ©drique, - Dimensions de la braunite pour le quadratique,- Dimensions de la fluorite pour le cubique. Dans un second temps, une fois les modĂšles originaux terminĂ©s, nous avons pu coder sur Openscad les Ă©lĂ©ments de symĂ©tries. a- SystĂšmes cristallins classiques SystĂšmes cristallins classiques sur Openscad SystĂšme Cubique : SystĂšme Orthorhombique : SystĂšme Quadratique : SystĂšme RhomboĂ©drique : SystĂšme Hexagonal : SystĂšme Monoclinique : SystĂšme Triclinique : b- SystĂšmes cristallins avec symĂ©tries Pour chacun des systĂšmes cristallins : - Les axes A4 sont modĂ©lisĂ©s par les losanges,- Les axes A3 sont modĂ©lisĂ©s par les triangles,- Les axes A2 sont modĂ©lisĂ©s par des ellipsoĂŻdes,- Les plans miroirs sont modĂ©lisĂ©s par des quadrilatĂšres trĂšs fins sur chaque facette puis soustrait Ă  la forme cubique initiale (fentes vertes sur la figure ci-dessous). Tous les systĂšmes possĂšdent des Ă©lĂ©ments de symĂ©tries sauf le systĂšme triclinique. SystĂšmes cristallins avec symĂ©tries sur Openscad SystĂšme Cubique : SystĂšme Orthorhombique : SystĂšme Quadratique SystĂšme hexagonal SystĂšme rhomboĂ©drique : SystĂšme monoclinique : SystĂšme Triclinique : SystĂšmes cristallins imprimĂ©s en rĂ©sine blanche c- Fichiers stl des modĂšles classiques Ces fichiers sont au format stl correspondant au format conforme pour les impressions 3D en PLA et en rĂ©sine. Fichiers stl des modĂšles classiques cubique_dim_fluorite.stl hexagonal_dim_corindon.stl monoclinique_dim_chlorite.stl orthorhombique_dim_andalousite.stl quadratique_dim_braunite.stl rhombo_dim_calcite_v2.stl triclinique V2.stl Fichiers Openscad des modĂšles redimensionnĂ©s exercice_hexagonal_2_2_3.scad exercice_monoclinique_2.5_3_3.5_70.scad exercice_orthorombique_3,5_3_2,5.scad exercice_quadratique_3_3_2,5.scad exercice_triclinique_2.5_3_3.5_80_60_70.scad exercice_cubique_3_3_3.scad exercice_rhomboĂšdrique_3_60.scad d- Fichiers stl des modĂšles avec symĂ©tries Fichiers stl des modĂšles avec symĂ©tries monoclinique_correction.stl SymĂ©trie_orthorhombique_correction .stl tiers_d'hexagonal_correction.stl hexagonal_correction.stl SymĂ©trie_quadratique_correction .stl SymĂ©trie_cubique_correction.stl RhombohĂ©drique_correction.stl e- Fichiers gstudio des patrons Fichier dĂ©coupeuse vinyle rhomboĂšdrique + triclinique + quadratique + monoclinique qui marchent.gstudio orthorombique.gstudio cube.gstudio hexagonale.gstudio f-Code complet Openscad Ce fichier permet de recrĂ©er toutes les mailles cristallines par rapport Ă  leur paramĂštres. Il marche pour les systĂšmes cubique, quadratique, rhomboĂ©drique, hexagonal, monoclinique et orthorhombique. Pour le systĂšme triclinique, il ne fonctionne pas pour toutes les valeurs d'angles. //paramĂštres de la maille a=10; b=10; c=10; alpha=90; gamma=30; beta=70; // coordonnĂ©es intermĂ©diaires et translation x=b*cos(gamma); y=b*sin(gamma); s=(2*b*c*cos(180-alpha)+x^2+y^2-b^2-2*a*c*cos(180-beta))/(2*(a-x)); ty=(x-a)*(s+c*cos(180-beta))/y; tx=s+(y*ty)/(a-x); tz=sqrt(c^2+a^2-2*a*c*cos(180-beta)-ty^2-(a+tx)^2); //vĂ©rification de la structure if (c^2+a^2-2*a*c*cos(180-beta)-ty^2-(a+tx)^2>0) { // construction des points A=[0,0,0]; B=[a,0,0]; D=[x,y,0]; C=[a+x,y,0]; E=[tx,ty,tz]; F=B+E; G=C+E; H=D+E; //construction de la maille points=[ A,B,C,D,E,F,G,H]; face=[[0,1,2,3],//sol [4,5,1,0],//au dessusi [7,6,5,4],//derriĂšre [5,6,2,1],//droite [6,7,3,2],//gauche [7,4,0,3]];//devant polyhedron(points,face); //vĂ©rification des valeurs echo("y",y); echo("x",x); echo("s",s); echo("tx",tx); echo("ty",ty); echo("tz",tz); v1=B-E;// B et E v2=H-F;// F et H v3=A-F; v4=A-C; nv1=norm(v1); nv2=norm(v2); nv3=norm(v3); nv4=norm(v4); echo(nv1,"norme de v1"); echo(nv2,"norme de v2"); echo(nv3,"norme de v3"); echo(nv4,"norme de v4"); echo(c^2-ty^2-tx^2); echo("E-H",norm(E-H)); echo("F-G",norm(F-G)); echo(tz==undef); } else //si ça ne marche pas color([1,0.8,0]){ linear_extrude(4){text("erreur",font="Comic Sans MS:style= Bold");}}; V- Annexe : Logiciels et machines utilisĂ©s Logiciels et machines utilisĂ©s Openscad Il s'agit du logiciel sur lequel nous avons passĂ© le plus de temps. Il permet de crĂ©er, visualiser et exporter au bon format les objets Ă  imprimer. C'est Ă  dire qu'il conçoit les fichiers stl pour les imprimantes 3D. Pour cela, il faut rentrer, sous forme de code les instructions. Il existe une page dans le mode d'emploi du logiciel avec des aides pour dĂ©butants "cheatsheet". Openscad marche sous la forme d'un Ă©diteur de code. Le langage utilisĂ© est C++.Il permet aussi de faire des vrais programmes avec des boucles, des fonctions mathĂ©matiques, etc... mais nous n'avons pas eu besoin d'utiliser cet aspect du logiciel. IdeaMaker Il s'agit de l'un des deux logiciels d'adaptation des fichiers stl pour les imprimantes. Celui-ci est gratuit ainsi que dĂ©veloppĂ© par la sociĂ©tĂ© ayant fourni le Fablab prototypage. Il doit ĂȘtre utilisĂ© pour les imprimantes en 3D PLA. Lorsque le fichier stl est créé, il faut ensuite, le rendre compatible avec l'imprimante. Le logiciel connait les dimensions de celle-ci afin de ne pas dĂ©passer de l'imprimante. Ensuite, il faut rĂ©arranger sur le plateau la disposition des modĂšles pour Ă©viter les chevauchements notamment. Parfois l'ajout de support est nĂ©cessaire pour maintenir la piĂšce. Comme les imprimantes n'utilisent qu'un seul fil continu, il est important de veiller Ă  toutes ses Ɠuvres. Si l'une est ratĂ©e, l'erreur se propage partout.  Par dĂ©faut, les piĂšces sont imprimĂ©es sur un socle. En fonction de la soliditĂ© de celles-ci, de leur taille et de leur forme, il est possible d'adapter son socle. Ce logiciel permet aussi de redimensionner les impressions pour gagner du temps ou pour respecter les dimensions de l'imprimante. Enfin, il permet de choisir la qualitĂ© de son impression. En effet, en PLA, plusieurs qualitĂ©s sont disponibles. Elles sont Ă  choisir en fonction du temps disponible puisqu'elles n'agissent que sur le diamĂštre du fil utilisĂ©. Une meilleure impression aura un film plus petit. Cela peut Ă©galement jouer sur le remplissage de la piĂšce afin de la rendre plus lourde ou plus solide. Impression 3D en PLA Les imprimantes ayant servi Ă  crĂ©er les modĂšles d'entrainements sont des imprimantes Raise3D Pro 2 (FDM). Elles fonctionnent avec le dĂ©pĂŽt d'un filament, de l'acide polylactique pour nous. Une fois le modĂšle créé avec Openscad et adaptĂ© Ă  l'aide d'IdeaMaker, l'imprimante peut faire son Ɠuvre. Afin d'augmenter les chances de rĂ©ussir l'impression, il est vivement conseillĂ© de surveiller le dĂ©but d'impression de l'objet souhaitĂ©. Le PLA est disponible en plusieurs couleurs, et si le projet l'avait nĂ©cessitĂ©, nous aurions pu utiliser d'autres matiĂšres.  Il est Ă  noter que des impressions Ă©chouent rĂ©guliĂšrement. Tout d'abord, il y a une lĂ©gĂšre dilatation du filament parfois. Ensuite, si les modĂšles n'ont pas Ă©tĂ© bien prĂ©parĂ©s, s'ils sont trop proches ou les supports mal mis, toute l'impression sera Ă  refaire. Ainsi, il faut ĂȘtre patient pour utiliser ce matĂ©riel qui, bien que trĂšs pratique, reste capricieux. Impression 3D en rĂ©sine Les systĂšmes cristallins avec symĂ©tries ont Ă©tĂ© imprimĂ©s Ă  l'imprimante rĂ©sine ELEGOO Saturn. Cette mĂ©thode d'impression a l'avantage d'imprimer prĂ©cisĂ©ment des objets avec des formes complexes. L'imprimante fonctionne en exposant la rĂ©sine liquide photosensible couche par couche Ă  un faisceau laser d'ultraviolets (UV). Au contact des l'UV, la rĂ©sine se solidifie pour former le modĂšle souhaitĂ©. Il faut noter que l'impression rĂ©sine requiĂšre un traitement une fois les objets imprimĂ©s. En effet, si ce traitement n'est pas rĂ©alisĂ© rapidement, les rĂ©sidus de rĂ©sine inutilisĂ©s continuent de polymĂ©riser dans le bac d'impression, ce qui abime le matĂ©riel. Il faut Ă©galement veiller Ă  mettre un peu plus de rĂ©sine dans le bac d'impression que le volume indiquĂ© par Chitubox afin d'ĂȘtre sĂ»r que les objets soient imprimĂ©s entiĂšrement. DĂ©coupeuse vinyle Plotter de dĂ©coupe Graphtec Cutting Pro sĂ©rie 9000 Il s'agit de l'appareil le moins facile d'utilisation. Il nous a fallu prĂšs d'un mois pour comprendre que seul les MacBook fonctionnaient dessus. En temps normal, il faut tout d'abord disposer son film dans l'appareil puis ajuster les tĂȘtes servant Ă  le maintenir. Ensuite, il faut dĂ©finir la zone de dĂ©marrage pour la dĂ©coupe. Il suffit, dans la thĂ©orie, de brancher son ordinateur avec le logiciel Graphtec Studio pour faire le dessin de la dĂ©coupe et l'envoyer Ă  la machine. AprĂšs, on rĂ©cupĂšre le film dĂ©coupĂ©. Il faut noter que la force et la vitesse de la lame doivent ĂȘtre rĂ©glĂ©es en amont afin de ne pas abimer le film. D'ailleurs, pour le notre, tout le papier ne devait pas ĂȘtre tranchĂ©. Juste la partie supĂ©rieure. Ensuite, il faut le dĂ©coller de la partie protectrice du film et enfin faire la pose. Cutter Ă  ultra-sons C'est un couteau amĂ©liorĂ©. La lame envoie des ondes ultra-sons permettant une dĂ©coupe sans forcer sur des surfaces peu pratiques Ă  dĂ©couper avec un cutter classique. Cependant, l'appareil chauffe trĂšs vite, il ne faut pas laisser la lame active trop longtemps. De mĂȘme, il faut faire attention puisqu'il coupe des matĂ©riaux rĂ©sistants comme le mĂ©tal. Chitubox Chitubox est un logiciel d'adaptation des fichiers stl pour les impressions 3D en rĂ©sine. C'est un slicer qui permet de convertir un fichier stl en une sĂ©rie de fines couches lisibles par l'imprimante ELEGOO Saturn. Sur le mĂȘme principe que le logiciel IdeaMaker, il permet de gĂ©nĂ©rer des supports pour maintenir les objets pendant l'impression. Le logiciel renseigne des dimensions de l'imprimante afin que nos modĂšles soient bien positionnĂ©s sur la plateau d'impression. Il est Ă©galement possible de modifier le temps d'exposition de chaque couche Ă  l'UV. Cependant, Ă  la diffĂ©rence d'IdeaMaker, il est important d'incliner les objets Ă  imprimer afin que le moins de surface de l'objet ne touche le support d'impression. En effet, plus la surface de contact entre l'objet et le plateau est grande et plus il sera difficile de dĂ©coller les piĂšces et par consĂ©quent plus il sera facile de les abimer. Graphtec Studio C'est le logiciel permettant de crĂ©er les formes pour la dĂ©coupeuse vinyle. Il s'agit de dessin vectoriel. Le logiciel est pratique d'utilisation et intuitif. Il suffit ensuite de relier son ordinateur Ă  la dĂ©coupeuse pour obtenir le rendu souhaitĂ©. Il est possible de rĂ©gler dessus les caractĂ©ristiques de force, vitesse et profondeur de la lame par l'intermĂ©diaire de ce logiciel en fonction du film insĂ©rĂ©. Microscope Keyence C'est un microscope de recherche utilisĂ© par M. Labrousse dans le cadre de son travail. Il nous a permis de visualiser les impressions rĂ©sines et de faire des topographies. Il est reliĂ© Ă  un ordinateur et il est presque entiĂšrement contrĂŽlĂ© par celui-ci. Il est plus puissant que les microscopes traditionnels puisque sa rĂ©solution est de l'ordre du micromĂštre. VI- Bibliographie Cours en ligne de cristallographie gĂ©omĂ©trique : SYMCRISCours de MatĂ©riaux inorganiques LU3CI013 VII- Remerciements Nous tenons Ă  remercier nos encadrants Monsieur LoÏc Labrousse et Monsieur Pierre Thery qui ont apportĂ© leurs soutiens ainsi que leurs idĂ©es durant la rĂ©alisation de ce projet. Merci Ă©galement Ă  Monsieur Mathieu ChassĂ© de nous avoir accordĂ© sa confiance pour la rĂ©alisation de son projet. Sans oublier, l'Ă©quipe Fablab que nous remercions pour leurs aides et leurs conseils. Cette UE Fablab, nous a permis de dĂ©couvrir de nouvelles compĂ©tences scientifiques telles que la minĂ©ralogie et la cristallographie mais Ă©galement des notions de programmation. Par ailleurs, ce projet nous a donnĂ© l'opportunitĂ© d'utiliser de nombreux logiciels (Chitubox, Ideamaker, Openscad) et machines de prototypage. Ces nouvelles compĂ©tences nous seront prĂ©cieuses dans la poursuite de nos Ă©tudes ainsi qu'au cours de notre vie professionnelle. ExpĂ©rience de Herschel Lara et Louis vous prĂ©sentent le wiki de leur projet, bonne lecture ! 0 - Introduction          Pour commencer, nous allons prĂ©senter l'expĂ©rience d'Herschel. À travers cette expĂ©rience, William Herschel, un astronome allemand du 18Ăšme siĂšcle, va mettre en Ă©vidence le caractĂšre plus Ă©nergĂ©tique des rayons infrarouges. En plaçant un prisme Ă  la lumiĂšre du soleil et Ă  l'aide de thermomĂštres placĂ©s au niveau des diffĂ©rentes couleurs, il va faire le constat suivant : plus on va vers le rouge plus la tempĂ©rature est importante. De plus, il observe que plus loin du spectre, hors du visible, dans ce que l'on appelle aujourd'hui l'infrarouge, il enregistre aussi des tempĂ©ratures plus Ă©levĂ©es; constat qui va aider par la suite Ă  la dĂ©couverte des infrarouges. Voici grossiĂšrement ce que l'on observe aprĂšs une exposition prolongĂ©e aux deux extrĂ©mitĂ©s du spectre. On note une diffĂ©rence de tempĂ©rature mais au bout d'un certains temps d'exposition. Le but de ce projet est de remettre au goĂ»t du jour cette expĂ©rience, avec comme objectif supplĂ©mentaire de pouvoir la prĂ©senter Ă  la FĂȘte de la Science. On avait donc un cahier des charges assez prĂ©cis : Il faut la rendre pĂ©dagogique et facile Ă  comprendre pour des non-initiĂ©s ou bien des futurs scientifiques, mais aussi simple Ă  mettre en place, pratique et portable. Il est Ă©galement important d'obtenir des rĂ©sultats dans diffĂ©rents environnements, comme en extĂ©rieur et ce, peu importe les conditions mĂ©tĂ©orologiques. Tout d'abord, lors de la sĂ©ance de choix des sujets, on a dĂ©jĂ  pu commencer Ă  discuter avec nos enseignants, Loic Labrousse et Pierre Thery pour prendre en main le sujet et nous aiguiller pour correctement mettre en place notre dĂ©marche scientifique. De plus, nous avons pris un rdv avec le chercheur ayant proposĂ© le sujet, M. Ehouarn Millour, pour comprendre ce qu'il souhaitait faire et comment le rĂ©aliser. Notre projet et ce wiki s'articulent de la façon suivante : Recherche sur le spectre et le support Comment prendre et analyser les donnĂ©es Commençons donc avec la premiĂšre partie sur le spectre et le support. 1 - Spectre et Support 1-a ) Le spectre         Dans un premier temps, il fallait faire apparaitre un spectre Ă  l'aide d'un prisme et d'une source de lumiĂšre Ă  l'infini, pour que la diffraction soit possible. Pour faire un rappel rapide d'optique : une source dite infinie est une source oĂč tous les rayons sont parallĂšles et vont dans la mĂȘme direction, ce qui est le cas du soleil car avec la distance ses rayons sont considĂ©rĂ©s comme tels. Pour reproduire cela, avec une source de lumiĂšre "classique", il faut une lentille convergente, connaitre son point focal et placer le prisme Ă  cet endroit comme ci-dessous : Ensuite, la lumiĂšre passe dans le prisme et il dĂ©compose la lumiĂšre blanche en ses diffĂ©rentes composantes : AprĂšs quelques tentatives plus ou moins fructueuses, Pierre Thery nous a trouvĂ© un projecteur avec tout le montage prĂ©installĂ© ce qui nous a facilitĂ© la tĂąche. Ce projecteur constituera notre source de lumiĂšre pour la suite, mais il est bon de savoir crĂ©er un spectre avec des moyens plus simples en cas d'absence de ce genre de matĂ©riel. C'est une lumiĂšre halogĂšne qui Ă©met dans toutes les longueurs d'ondes avec la rĂ©partition suivante : AprĂšs avoir comparĂ© avec les autres types de lampe, la lampe halogĂšne Ă©tait la plus adĂ©quate pour y voir des infrarouges, car ils y sont les plus prĂ©sents et se rapprochent le plus de l'homogĂ©nĂ©itĂ© de la lumiĂšre du soleil : En comparaison voici les spectres des spectres des LED "warm white" et "daylight" warm white daylight 1-b) Le support         Pour la suite nous avons créé, Ă  l'aide du logiciel de modĂ©lisation OpenScad, un support pour le prisme afin qu'il ne soit pas en contact du sol et qu'on puisse le manipuler Ă  sa base sans y laisser de trace de doigt. Nous avons Ă©galement modĂ©lisĂ© une fente pour que la lumiĂšre soit encore plus concentrĂ©e. Ces objets ont ensuite Ă©tĂ© imprimĂ© grĂące aux imprimantes 3D prĂ©sentes dans le FabLab de Jussieu. Dans le mĂȘme temps, nous avons pris une plaque de plexiglass qui nous servira de support. À l'aide d'une dĂ©coupeuse laser, nous l'avons dĂ©coupĂ© pour obtenir les dimensions dĂ©sirĂ©es (40x40 cm). En outre, afin de visualiser correctement le spectre (le plexiglass n'Ă©tant pas un matĂ©riau optimal car transparent), nous avons choisi de coller dessus un vinyle blanc. Plaque de plexiglas avant recouvrement avec un vinyle blanc. Pour que notre dispositif se maintienne correctement, nous avons aussi modĂ©lisĂ© et imprimĂ© des pieds capables de stabiliser la plaque de plexiglass : 2 - Prise et analyse des donnĂ©es   Dans cette partie, l'idĂ©e Ă©tait de remplacer les thermomĂštres utilisĂ©s par W. Herschel par des moyens plus modernes de prise de donnĂ©es, mais aussi de moderniser le support de lecture et de visualisation. 2-a) Acquisition de la tempĂ©rature          Tout d'abord il faut correctement placer les capteurs en accord avec ce que l'on doit mesurer. En effet, le premier problĂšme Ă©tait le suivant : oĂč placer le capteur des infrarouges par rapport au reste du spectre ?  Pour rĂ©pondre Ă  cette question, on utilise la loi de Bragg afin de dĂ©terminer l'endroit oĂč les infrarouges sont au maximum, comme on le voit avec le schĂ©ma ci-dessous : Il faut placer notre capteur pour les infrarouges Ă  1,4 fois la distance du spectre. Ainsi, si l'on a un spectre de 10 cm de large, la zone oĂč les infrarouges sont les plus prĂ©sents se trouve Ă  14 cm du dĂ©but du spectre (en partant du violet). Dans l'optique de moderniser la prise de donnĂ©es, aprĂšs discussion et recherches, nous nous sommes orientĂ©s vers des capteurs de tempĂ©rature de type LM35DZ : Ce sont des capteurs de tempĂ©ratures analogiques, fonctionnant entre 4 et 30 volts d'alimentations et ayant une prĂ©cision de +/- 0.5°C Ă  25°C, mais pouvant mesurer des tempĂ©ratures entre -55 et +150°C. Il dispose de plusieurs parties : un boitier noir, une broche +, une - et une sortie d'information : Il mesure la tempĂ©rature avec un capteur thermosensible dans son boitier noir et va ensuite transmettre une tension Ă©lectrique qui sert d'information, avec le calibrage de 10 mV/K : Capteurs que vous pouvez trouver Ă  l'adresse suivante : https://www.mouser.fr/ProductDetail/Texas-Instruments/LM35DZ-NOPB?qs=QbsRYf82W3F5RpWTxhXHxA%3D%3D Avec ces capteurs, il fallait de quoi traiter les donnĂ©es et les afficher. Nous avons pensĂ© Ă  une carte Arduino qui, avec un code informatique, rĂ©cupĂšre et affiche les donnĂ©es. Voici une photo pour se reprĂ©senter la carte Ă©lectronique : Pour que cela ait lieu, on doit rĂ©aliser un circuit Ă©lectronique afin de connecter tous les capteurs Ă  la carte. En effet, comme on doit montrer la diffĂ©rence de tempĂ©rature entre les rayons infrarouges et le reste du spectre, il faut placer plusieurs capteurs afin de mesurer les tempĂ©ratures Ă  diffĂ©rents endroits du spectre. Le placement des capteurs sur la plaque perforĂ©e a donc toute son importance. On a alors dĂ©cidĂ© de placer 6 capteurs qui vont nous renseigner sur les tempĂ©ratures : de l'infrarouge, du rouge, du jaune, du bleu, du violet et enfin un tĂ©moin. Passons donc Ă  la rĂ©alisation du circuit. 2-b) Circuit Ă©lectronique         AprĂšs quelques recherches, on a utilisĂ© une breadboard car elle a comme atout de pouvoir placer et retirer Ă  notre bon vouloir les composants, ce qui va nous permettre de faire le circuit avant de le souder dĂ©finitivement sur une plaque perforĂ©e. Effectivement, on n'est pas Ă  l'abris de faire des erreurs de branchement mais surtout on peut aisĂ©ment faire des essais de circuit, une dĂ©couverte pour nous. On a appris qu'il fallait les placer en dĂ©rivation, ce qui impliquait une sortie de donnĂ©es par capteur ainsi qu'une alimentation pour chacun et des condensateurs 100 nF pour ne pas surcharger le capteur. Voici un schĂ©ma du montage rĂ©alisĂ© sur fritzing, un logiciel de conception de circuit, avec : cĂąbles bleus :  sortie analogique (donnĂ©s) cĂąbles rouges et noirs : alimentation ( + et - ) composants bleus :  condensateur composants noirs :  capteur de tempĂ©rature Ceci est un schĂ©ma, si l'on souhaite mettre plus de capteurs il faut simplement ajouter un autre en suivant la mĂȘme mise en place. Cependant, si on en met trop il faudra ajouter une alimentation supplĂ©mentaire Ă  la carte pour avoir assez de courant car il est branchĂ© en USB Ă  l'ordinateur. Il faut bien veiller Ă  comment placer les capteurs dans le circuit car mal placĂ© il chauffait beaucoup (quelques lĂ©gĂšres brĂ»lures du bout du doigt ont Ă©tĂ© Ă  dĂ©plorer) il faut donc bien respecter le sens du courant.  Pour faciliter la comprĂ©hension du circuit nous avons utilisĂ© des fils blancs et noirs pour l'alimentation (respectivement + et -) et des fils de couleurs Ă  l'image du placement des capteurs sur le spectre (fil rouge pour rouge...) pour directement savoir quel fil appartient Ă  quel capteur. Voici donc le montage avant soudure : 2-c) Traitement des donnĂ©es (code)         Une fois le montage Ă©lectronique rĂ©alisĂ©, il faut que notre dispositif puisse rĂ©cupĂ©rer et afficher les donnĂ©es. Pour cela, on utilise une carte Arduino qui exĂ©cute un code que l'on Ă©crit, encore faut-il l'Ă©crire. En effet, Arduino utilise le langage C++, un langage que nous ne maĂźtrisions pas au dĂ©but de ce projet, ce qui a rendu la tĂąche un peu compliquĂ©e et qui nous a pris une bonne partie de notre temps. Avec l'aide de Loic Labrousse, Pierre Thery et de recherches sur internet, nous avons rĂ©ussi Ă  Ă©crire un code fonctionnel. Dans ce code, il fallait premiĂšrement rĂ©cupĂ©rer les donnĂ©es du capteur et les stocker dans des variables (une pour chaque tempĂ©rature souhaitĂ©e). DeuxiĂšmement, il fallait convertir la tension en tempĂ©rature et enfin afficher les donnĂ©es sous forme de courbe. En effet, ce genre de figure est adĂ©quat pour visualiser et comprendre rapidement les variations. Ici, ce qui est intĂ©ressant, c'est que l'on voit les courbes directement aprĂšs la rĂ©ception des donnĂ©es et donc on visualise les variations en temps rĂ©el. Code LM35DZ Ceci est un code qui fonctionne avec les capteurs LM35 de chez texas instrumental avec une prĂ©cision de +/- 0.5°C : int sensePin0 = A0; int sensePin1 = A1; int sensePin2 = A2;  //This is the Arduino Pin that will read the sensor output int sensePin3 = A3; int sensePin4 = A4; int sensePin5 = A5; int sensorInputIr; int sensorInputRouge;  //The variable we will use to store the sensor input int sensorInputJaune; int sensorInputVert; int sensorInputBleu; int sensorInputViolet; double tempIR; double tempRouge;  //The variable we will use to store temperature in degrees. double tempJaune; double tempVert; double tempBleu; double tempViolet; void setup() { // put your setup code here, to run once: Serial.begin(9600);  //Start the Serial Port at 9600 baud (default) pinMode(sensePin0, INPUT); pinMode(sensePin1, INPUT); pinMode(sensePin2, INPUT); pinMode(sensePin3, INPUT); pinMode(sensePin4, INPUT); pinMode(sensePin5, INPUT); } void loop() { // put your main code here, to run repeatedly: sensorInputIr = analogRead(sensePin0); sensorInputRouge = analogRead(sensePin1); sensorInputJaune = analogRead(sensePin2); sensorInputVert = analogRead(sensePin3);  //read the analog sensor and store it sensorInputBleu = analogRead(sensePin4); sensorInputViolet = analogRead(sensePin5); tempIR = (double)sensorInputIr  /1024 ; tempRouge = (double)sensorInputRouge /1024 ;  //find percentage of input reading tempJaune =  (double)sensorInputJaune /1024 ; tempVert = (double)sensorInputVert / 1024; tempBleu = (double)sensorInputBleu / 1024; tempViolet = (double)sensorInputViolet / 1024; tempIR = tempIR * 5*100;    //multiply by 5V to get voltage tempRouge = tempRouge * 5*100; tempJaune = tempJaune * 5; tempJaune = tempJaune * 100; tempVert = tempVert * 5; tempVert = tempVert * 100; tempBleu = tempBleu * 5; tempBleu = tempBleu * 100; tempViolet = tempViolet * 5; tempViolet = tempViolet * 100; Serial.print("tempIR: "); Serial.println(tempIR); Serial.print("tempRouge:"); Serial.println(tempRouge); Serial.print("tempJaune:"); Serial.println(tempJaune); Serial.print("tempVert:"); Serial.println(tempVert); Serial.print("tempBleu:"); Serial.println(tempBleu); Serial.print("tempViolet:"); Serial.println(tempViolet); delay(1000); /*Serial.print(tempIR); Serial.print(" "); Serial.print(tempRouge); Serial.print(" "); Serial.print(tempJaune); Serial.print(" "); Serial.print(tempVert); Serial.print(" "); Serial.print(tempBleu); Serial.print(" "); Serial.print(tempViolet); Serial.println(); delay (1000);*/ } Voici une photo des courbes que nous avons obtenues avec ce code : Cependant la prĂ©cision n'Ă©tait pas suffisante pour voir la diffĂ©rence de tempĂ©rature comme on le voit sur la photo. De plus, les courbes se coupent beaucoup trop pour avoir un rĂ©sultat satisfaisant. Nous avons donc chercher d'autres types de capteurs et en avons trouvĂ© avec le mĂȘme fonctionnement mais plus prĂ©cis : le LMT86LP avec une prĂ©cision de +/- 0.25°C Ă  25°C. On a refait un code car le traitement est diffĂ©rent, notamment la conversion tension / tempĂ©rature, mais, pris par le temps et la capacitĂ© Ă  refaire un code rapidement, nous n'avons pas pu le finir. Code LMT86LP Voici ici le code qui sera retravaillĂ© car ne fonctionne pas correctement actuellement. (un problĂšme au niveau de la fin et du plot, les valeurs de tempĂ©ratures sont pourtant correctes) : // crĂ©ation des variables qui vont stocker la sortie du capteur // initialisation des pins de sortie int IR = A0; int Rouge = A1; int Vert = A2; int Violet = A3; int UV = A4; int Tt = A5; int TempReadIR = 0; int TempReadR = 0; int TempReadVert = 0; int TempReadV = 0; int TempReadUV = 0; int TempReadT = 0; int TemperatureIR = 0 ; int TemperatureR = 0 ; int TemperatureVert = 0; int TemperatureV = 0; int TemperatureUV = 0  ; int TemperatureT = 0; double TIR; double TR; float TVE; float TV; float TUV; float T ; // double = float, pareil creation de variable float voltage = 0; // setup : mise en place des sorties et des configurations void setup() { Serial.begin(9600); // initie la communication avec le serial monitor // on se place Ă  9600 bauds, la sortie de bits/s ( jsp ca change quoi mais si on met autre chose ca fonctionne plus) pinMode(IR, INPUT); pinMode(Rouge, INPUT); pinMode(Vert, INPUT); pinMode(Violet, INPUT); pinMode(UV, INPUT); pinMode(T, INPUT); } // loop = ce qui va se rĂ©pĂ©ter void loop() { // ceci sont les transformations des donnĂ©s de voltage en tempĂ©rature ainsi que les prints pour faire apparaitre // sur le monitor ou le plotter // exemple de lecture de donnĂ©e du capteur analogique (1) et de la conversion en tempĂ©rature (2) TempReadIR = analogRead(IR); //  (1) TIR = (426.0 - TempReadIR) / 2.14; // (2) // la converstion Ă©tait de  (420 - T)/2.206 mais celle la fonctionne mieux Serial.print("Temperature IR is "); Serial.print(TIR); Serial.println("°C"); TempReadR = analogRead(Rouge); TR = (426.0 - TempReadR) / 2.14; Serial.print("Temperature Rouge is "); Serial.print(TR); Serial.println("°C"); TempReadVert = analogRead(TVE); TVE = (426.0 - TempReadVert) / 2.14; Serial.print("Temperature TVE is "); Serial.print(TVE); Serial.println("°C"); TempReadV = analogRead(Violet); TV = (426.0 - TempReadV) / 2.14; Serial.print("Temperature V is "); Serial.print(Violet); Serial.println("°C"); TempReadUV = analogRead(UV); TUV = (426.0 - TempReadUV) / 2.14; Serial.print("Temperature UV is "); Serial.print(TUV); Serial.println("°C"); TempReadT = analogRead(Tt); T = (426.0 - TempReadT) / 2.14; Serial.print("Temperature T is "); Serial.print(T); Serial.println("°C"); // le delay est le temps en millisecondes entre chaque mesure (Ă  modifier si nĂ©cessaire, en fonction de ce que l'on veut faire) delay(3000); } Si vous souhaitez convertir les degrĂ©s Celsius en Farenheit et l'afficher aussi, ajoutez simplement ces lignes de code : Temperature = (Temperature * 9.0 / 5.0) + 32; Serial.print("The temperature is "); Serial.print(int(Temperature)); Serial.println("F"); */ 3 - Mise en place finale Pour rendre le tout plus propre, et une fois qu'on Ă©tait sĂ»rs que le circuit soit le bon, nous avons soudĂ© le tout sur une plaque perforĂ©e avec le schĂ©ma suivant : photo d'une plaque perforĂ©e La soudure s'est avĂ©rĂ©e plus compliquĂ©e car cela faisait un certain temps que nous n'en avions pas faite et il ne fallait pas que les soudures se touchent sinon cela induirait un court circuit. De plus pour ajouter un cĂŽtĂ© esthĂ©tique nous avons fait un design de logo pour identifier notre expĂ©rience et y placer le logo du FabLab, et le nom de Sorbonne UniversitĂ©. A l'aide du logiciel Inkscape, nous avons créé et vectorisĂ© le dessin du logo ci-dessous et, avec une dĂ©coupeuse laser qui sert aussi Ă  la gravure, nous avons apposĂ© le logo sur une plaquette de bois. Nous avons collĂ© un vinyle noir par dessus et fait des trous pour faire passer les capteurs car on trouvait cela plus propre que la plaque orange. Ainsi, une fois le spectre rĂ©alisĂ©, le support montĂ© et la plaque prĂȘte, voici notre montage final : De plus, pour rendre l'information accessible facilement, nous avons fait un QR code, qui sera collĂ© sur le montage, menant Ă  cette page si des curieux veulent toutes les informations : Journal de bord Pour bien se rendre compte de notre avancĂ©e au cours du semestre, voici notre journal de bord retraçant notre parcours avec nos rĂ©ussites et Ă©checs. Il a Ă©tĂ© Ă©crit semaine aprĂšs semaine en fin de sĂ©ance par nos soins avec le plus de prĂ©cision possible. Journal de bord Semaine 0 : PrĂ©sentation des diffĂ©rents sujets, des locaux, des enjeux. Choix de notre sujet. PremiĂšre prise de contact avec le chercheur Ehouarn Millour du LMD IPSL. Travail personnel de recherches d'informations en lien avec le sujet (contexte, gamme de valeurs sur les tempĂ©ratures et sur les longueurs d'onde), premiers schĂ©mas. Semaine 1 : Premier rendez-vous avec Monsieur Millour : prĂ©sentation du cahier des charges : Objectif : refaire l'ExpĂ©rience de Herschel dans le but de la prĂ©senter Ă  la FĂȘte de la Science. PrĂ©sentation du matĂ©riel dĂ©jĂ  Ă  disposition (lampe + ampoule halogĂšne 50W, 1 prisme normal, 1 prisme grand) PremiĂšres Ă©bauches de rĂ©flexion quant aux enjeux : la lampe? comment rĂ©cupĂ©rer la tempĂ©rature? la traiter? le prisme de diffraction est-il exploitable? Recherche de capteurs de tempĂ©ratures au Fablab. ExpĂ©rimentation de l'Arduino et des thermocouples pour la rĂ©cupĂ©ration de donnĂ©es sur l'ordinateur, rĂ©alisation d'une courbe de donnĂ©e brute pour visualiser les variations de tempĂ©rature. Afin de rĂ©cupĂ©rer la tempĂ©rature, on pense Ă  une barre en plexiglass oĂč les thermocouples vont ĂȘtre placĂ©s. RĂ©alisation des premiĂšres expĂ©riences avec le prisme et observation des spectres de diffraction : rĂ©sultats peu concluants : spectres non exploitables : trop diffus, la lumiĂšre se recompose en lumiĂšre blanche : aucune prĂ©cision dans le spectre. On prĂ©voit 8 thermocouples (violet, bleu, vert, jaune, orange, rouge, IR, tĂ©moin) ou capteurs de tempĂ©ratures. Prochainement : - possĂ©der un condensateur optique - refaire l'expĂ©rience plus prĂ©cisĂ©ment - essayer de former notre Arduino - comparer avec un rĂ©seau pour voir si c'est mieux qu'un prisme Semaine 2 : Premiers pas et apprentissage du logiciel Openscad : Conception d'un support du prisme sur ce logiciel Mise en place de l'expĂ©rience approfondie, test des diffĂ©rents prismes et des lampes : lampes fournies/projecteurs Exemples de test de diffraction pour placer les thermo-couples Recherche d'une lentille auprĂšs de JP Ferreira Prochainement : - imprimer en 3D le support du prisme - avancer les recherches personnelles sur les lampes et prismes Semaine 3 : Obtention d'un spectre lumineux exploitable pour l'expĂ©rience, il Ă©tait beau. RĂ©alisation d'une fente sur le logiciel OpenScad et test d'impression 3D dans la salle Image. Test infructueux --> Direction Fablab bĂątiment Esclangon pour une nouvelle impression 3D. DurĂ©e : environ 1h15. CoĂ»t : 0,64€. Poids : 21,3g. Recherche internet des thermocouples afin de faire des tests : voir si on dĂ©tecte une variation de tempĂ©rature significative. Semaine 4 : PremiĂšre utilisation de notre super fente malheureusement elle semble trop petite : elle attĂ©nue trop la lumiĂšre et donc le spectre. On va donc garder notre "rond" qui est, on vient de l'apprendre, un embout de tuyau imprimĂ© en 3D pour l'expĂ©rience de DARCY. On a ensuite fait des tests de prise de tempĂ©rature avec les thermocouples et un code Arduino qui s'est avĂ©rĂ© plus compliquĂ© que prĂ©vu. En effet, le code a fonctionnĂ© au dĂ©part puis mystĂ©rieusement plus du tout; problĂšme que l'on essaye de rĂ©gler en ce moment avec l'aide de LoĂŻc et Pierre. On a ensuite lancĂ© l'impression de notre 2Ăšme piĂšce d'orfĂšvrerie en impression 3D : un support pour notre prisme pour ne pas l'endommager plus que de raison. DurĂ©e :  1h17. Cout : 0,37€. Poids : 12g. En somme une semaine mouvementĂ©e. Prochainement : - se renseigner sur les arduinos et les ThC, les commander. Trouver tuto pour faire un code correct qui marche. recherche internet et lien : https://www.mesurex.fr/non-classe/comment-choisir-son-thermocouple/ https://learn.adafruit.com/thermocouple/wiring-a-thermocouple https://forum.arduino.cc/t/question-sonde-thermocouple-et-larduino/130848/9 https://www.tcsa.fr/thermocouples/thermocouple-patch.html Semaine 5 : RĂ©capitulatif des choses Ă  faire : - acheter 8 thermocouples DEMANDER A PIERRE - trouver un Ă©cran en plexiglass noir (Fablab) / y faire 8 trous - s'occuper de la partie Ă©lectronique Semaine 6 : thermocouple et voir s'il faut un amplifier http://emery.claude.free.fr/arduino-capteur-temperature.html/ https://www.carnetdumaker.net/images/montage-de-lexemple-arduino-lm35/ https://www.raspberryme.com/guide-des-capteurs-de-temperature-lm35-lm335-et-lm34-avec-arduino/ Commande de capteurs de tempĂ©ratures LM35 Le capteur de tempĂ©rature LM35 est un capteur analogique de tempĂ©rature fabriquĂ© par Texas Instruments. Il est extrĂȘmement populaire en Ă©lectronique, car prĂ©cis, peu couteux, trĂšs simple d'utilisation et d'une fiabilitĂ© Ă  toute Ă©preuve. Le capteur de tempĂ©rature LM35 est capable de mesurer des tempĂ©ratures allant de -55°C Ă  +150°C dans sa version la plus prĂ©cise et avec le montage adĂ©quat, de quoi mesurer n'importe quelle tempĂ©rature. La sortie analogique du capteur est proportionnelle Ă  la tempĂ©rature. Il suffit de mesurer la tension en sortie du capteur pour en dĂ©duire la tempĂ©rature. Chaque degrĂ© Celsius correspond Ă  une tension de +10mV. La version plus prĂ©cise du LM35 (nommĂ©e "LM35A") a une prĂ©cision garantie de +/-0.5°C Ă  25°C et +/-1°C Ă  -55°C ou +150°C. Le capteur LM35 fonctionne avec n'importe quelle tension d'alimentation comprise entre 4 volts et 30 volts, ce qui permet de l'utiliser dans virtuellement n'importe quel montage numĂ©rique ou analogique. Le capteur LM35 ne fonctionne pas en dessous de 4 volts, donc oubliez l'utilisation d'un LM35 avec des cartes Arduino 3.3 volts (Due, Zero, etc), sans alimentation 5 volts externe, ça ne marche pas. Mise en Ă©vidence rapide des variations de tempĂ©rature Ă  l'aide d'un thermomĂštre classique : On voit que la tempĂ©rature est plus Ă©levĂ©e sur la photo de gauche (quand la tempĂ©rature est mesurĂ©e dans le rouge), et plus basse dans la photo de droite (dans le violet). PrĂ©paration du montage avec tous les composants nĂ©cessaires sauf les capteurs de tempĂ©ratures LM35DZ : - condensateur 100 nF - breadboard + fils - carte Arduino MĂ©ga Il reste Ă  dĂ©terminer si l'on rĂ©alise un montage en sĂ©rie ou en dĂ©rivation. Si dĂ©rivation, besoin de 8 condensateurs. Nous avons Ă©tĂ© cherchĂ© au Fablab : 8 condensateurs et un breadboard. RĂ©fĂ©rence capteurs Ă  commander : https://fr.rs-online.com/web/p/capteurs-de-temperature-et-d-humidite/8115595 Semaine 7 : On a commandĂ© les thermocouples et on les attend. En attendant, on voit pour le circuit imprimĂ© et on rĂ©pond Ă  Claude. On associe chaque couleur du spectre Ă  un cĂąble de cette mĂȘme couleur. On a vu qu'il fallait mettre tout les capteurs en dĂ©rivation ce qui complexifie le cĂąblage mais rend le traitement de donnĂ©es plus simple. source : https://forum.arduino.cc/t/multi-sensor-lm35/584761 La partie du LM35DZ qui dĂ©tecte la tempĂ©rature est appelĂ©e "Ă©lĂ©ment sensible", il s'agit d'une petite puce situĂ©e au centre du boitier en plastique noir.   Nous avons ensuite rĂ©flĂ©chi sur l’esthĂ©tique du support :  les composants seront exposĂ©s face visible pour rendre les explications plus faciles et pĂ©dagogiques. Ils seront collĂ©s sur une plaque de plexiglass avec une gravure de nos prĂ©noms pour les royalties, ainsi que le logo Fablab et celui de SU. De plus, il faut que nous rĂ©alisions un support pour maintenir la plaque de plexi Ă  la verticale pour plus de confort. AprĂšs avoir fait les tests sur breadboard, nous allons rĂ©aliser notre propre circuit imprimĂ© qu'on devra rĂ©aliser et souder nous-mĂȘme. Semaine 8 : On n'a toujours pas reçu les thermocouples. La premiĂšre commande n'a pas abouti donc il a fallu en faire une deuxiĂšme. Aujourd'hui, on va s'occuper de la plaque de plexiglass, la couper aux bonnes dimensions si besoin et aussi rĂ©aliser son support. On a Ă©tĂ© chercher la plaque qu'on a ensuite dĂ©coupĂ© au laser aux dimensions 40x40 cm. On a modĂ©lisĂ© les pieds de support et notre logo. Prochainement : imprimer le support et la gravure de notre logo. Semaine 9 : Mercredi : On a reçu les thermocouples. On a pu rĂ©aliser le montage du cĂąblage (voir photo). Malheureusement, aprĂšs de nombreuses tentatives d'Ă©critures du codage Arduino, on ne parvient pas Ă  en trouver un qui fonctionne. On a Ă©galement fini de designer notre logo (voir photo) On va maintenant aller lancer la gravure de notre logo et imprimer les supports de notre plaque. Jeudi : On est parti graver notre logo mais on va le refaire car il ne nous convenait pas parfaitement. On a aussi lancĂ© l'impression de nos supports pour tenir notre plaque de plexi mais elle a Ă©chouĂ©, nous allons donc devoir en relancer une autre. Echec de l'impression des supports de la plaque... Vendredi : Avec Loic et Pierre, nous avons mis beaucoup de temps avant de rĂ©aliser un code qui fonctionne. En effet, on pensait que notre montage manquait d'une rĂ©sistance (mĂȘme deux), que la carte Arduino MEGA 2560 ne marchait pas, ou encore qu'il y avait un problĂšme dans les branchements des fils alors qu'en rĂ©alitĂ©, le problĂšme venait seulement du monitor. Nous avons choisi un code Ă©crit par Claude (cf Le Blog de Claude) mais il est valable que pour un capteur donc nous devons le modifier pour qu'il nous renseigne les tempĂ©ratures de nos 6 capteurs. On a Ă©tĂ© rĂ©alisĂ© une deuxiĂšme fois notre gravure qui est meilleure. On a Ă©tĂ© voir StĂ©phane au Fablab pour nous aider Ă  corriger notre code Arduino. Au final, c'est avec l'aide du directeur du Fablab qu'on a pu trouver notre erreur et avoir un code qui marche. Notre erreur venait du fait que l'on avait placĂ© nos thermocouples sur tout le long de la breadboard, en oubliant que celle-ci Ă©tait divisĂ©e en deux au milieu, sĂ©parant ainsi le circuit Ă©lectrique en deux. Le directeur nous a aussi Ă©crit une partie du code permettant de visualiser les courbes de tempĂ©ratures. Donc un grand merci Ă  Christian Simon. Semaine 10 : AprĂšs deux tentatives, on a finalement, au bout de la troisiĂšme fois, rĂ©ussi Ă  graver un logo qui nous convient, avec les bonnes dimensions et le bon matĂ©riau. 2 tentatives ratĂ©es : 1 trop grande et 1 avec un contraste de couleur trop faible RĂ©ussite ! AprĂšs l'Ă©chec de la semaine passĂ©e, on a aussi finalement rĂ©ussi Ă  imprimer les pieds de support de notre plaque ! Les supports de notre plaque "L’infrarouge, d’un autre cĂŽtĂ©, est un rayon physique caractĂ©risĂ© par une action de chaleur intense et une faible Ă©nergie." "Plus la longueur d’onde IR est courte, plus le radiateur IR est « chaud » et plus sa chaleur est « transmissive », ce qui signifie qu’il peut parcourir de plus grandes distances dans des « faisceaux » plus Ă©troits." La lampe du projecteur (notre source de lumiĂšre) est une lampe halogĂšne, ce qui convient le mieux pour avoir une maximum de rayonnement infrarouge. Spectre d’une lampe halogĂšne. Il prĂ©sente une courbe rĂ©guliĂšre avec une forte proportion de rouge: la tempĂ©rature de couleur se situe entre 2800 et 3000°K (lumiĂšre chaude). La lampe Ă©met beaucoup de chaleur (rayonnement infrarouge = IR).Le spectre d’une ampoule incandescente classique est similaire, avec un dĂ©calage un peu plus marquĂ© vers le rouge. (https://www.energie-environnement.ch/maison/eclairage-et-piles/1369) On veut maintenant savoir comment placer les capteurs de tempĂ©ratures, c'est-Ă -dire Ă  quelle distance les uns des autres et surtout pour capter le maximum de tempĂ©rature dans le rayonnement IR. Pour cela, on utilise la loi de Bragg (2dsinΞ=nλ) pour dĂ©terminer Ă  quelle distance placer le capteur pour qu'il reçoive le maximum d'Ă©nergie thermique infrarouge. Calcul pour dĂ©terminer la distance couverte par le rayonnement IR le plus important. On en conclut que cette distance est 1,4 fois pour grande que celle couvrant le spectre du visible. Potentiel capteur plus prĂ©cis mais plus cher : +/- 0.1°C https://fr.farnell.com/ist-innovative-sensor-technology/tsic-501f-to92/capteur-de-temperature-10-a-60/dp/3879373 https://fr.farnell.com/ist-innovative-sensor-technology/tsic-503-to92-5v/capteur-temp-analogique-to92-3/dp/3587031 https://www.ist-ag.com/en/products/digital-temperature-sensor-ic-to93 +/- 0.25°C https://fr.farnell.com/texas-instruments/lmt86lp/temp-sensor-0-25-deg-c-to-92-3/dp/3124226RL Semaine 11 : Les nouveaux capteurs ne sont pas arrivĂ©s. On a dĂ©cidĂ© de prendre moins de capteurs mais de les placer Ă  des endroits plus stratĂ©giques : tĂ©moin, UV, violet, vert, rouge, IR. On a Ă©tĂ© prendre une plaque perforĂ©e sur lequel faire notre circuit. On y a placĂ© les capteurs et les condensateurs. SchĂ©ma de notre circuit faire le vinyle faire le circuit tester avec les nouveaux capteurs Semaine 12 : On a reçu les nouveaux capteurs de tempĂ©ratures. On a replacĂ© les capteurs sur notre plaquette car le spectre fait maintenant 5 cm. En effet, on a remarquĂ© que le spectre Ă©tait de meilleure qualitĂ©, c'est-Ă -dire que les couleurs Ă©taient plus intenses si l'on rĂ©duisait la surface d'une face du prisme, on a donc placĂ© une feuille noire sur la face en aval du prisme. Ça induit une rĂ©duction de largeur du spectre. On a Ă©tĂ© mettre un vinyle blanc sur la plaque au Fablab avec l'aide d'Alexandre. On a utilisĂ© la dĂ©coupeuse vinyle. On n'a pas rĂ©ussi Ă  faire fonctionner le code avec les nouveaux capteurs. A faire : faire fonctionner le code et faire le circuit Semaine 13 : Jeudi : On est venus pour finaliser le code, on n'arrive pas encore Ă  afficher le plot. On a Ă©galement rĂ©alisĂ© les soudures nĂ©cessaires pour notre circuit. Vendredi : On a reconfectionnĂ© le circuit et mis le vinyle noir dessus et on y a fait des trous pour laisser passer les capteurs. Aperçu du montage presque final Remerciements Nous tenons Ă  remercier dans un premier temps nos encadrants, Loic Labrousse et Pierre Thery qui ont Ă©tĂ© prĂ©sents tout au long du semestre apportant conseils, suivis mais aussi une aide logistique pour l'accĂšs aux diffĂ©rentes salles et pour les commandes de matĂ©riels. Nous remercions Ă©galement M.Ehouarn Millour qui a proposĂ© ce sujet, dans le cadre de cette UE Atelier FabLab, qui nous a de suite intĂ©ressĂ©e. Enfin, un grand merci Ă  tout ceux qui ont participĂ©, d'une part en nous prĂȘtant du matĂ©riel mais aussi en nous apportant conseils et aide dans notre dĂ©marche : l'Ă©quipe du Fablab qui nous a montrĂ© comment utiliser les diffĂ©rentes machines et le prĂȘt de certains composants Jean-Philippe Fereira pour les conseils en optique StĂ©phane Muller et Christian Simon pour l'aide sur le circuit et le code Bibliographie Voici tous les liens qui nous ont aidĂ© Ă  mener Ă  bien le projet, ainsi que des liens de commande de capteurs si vous le souhaitez : Bibliographie https://www.mesurex.fr/non-classe/comment-choisir-son-thermocouple/ https://learn.adafruit.com/thermocouple/wiring-a-thermocouple https://forum.arduino.cc/t/question-sonde-thermocouple-et-larduino/130848/9 https://www.tcsa.fr/thermocouples/thermocouple-patch.html http://emery.claude.free.fr/arduino-capteur-temperature.html https://www.carnetdumaker.net/images/montage-de-lexemple-arduino-lm35/ https://www.raspberryme.com/guide-des-capteurs-de-temperature-lm35-lm335-et-lm34-avec-arduino https://fr.rs-online.com/web/p/capteurs-de-temperature-et-d-humidite/8115595 https://forum.arduino.cc/t/multi-sensor-lm35/584761 https://fr.farnell.com/ist-innovative-sensor-technology/tsic-501f-to92/capteur-de-temperature-10-a-60/dp/3879373 https://fr.farnell.com/ist-innovative-sensor-technology/tsic-503-to92-5v/capteur-temp-analogique-to92-3/dp/3587031 https://www.ist-ag.com/en/products/digital-temperature-sensor-ic-to93 https://fr.farnell.com/texas-instruments/lmt86lp/temp-sensor-0-25-deg-c-to-92-3/dp/3124226RL https://arduino.stackexchange.com/questions/13289/arduino-uno-with-lmt86lp-temperature-sensor https://www.carnetdumaker.net/articles/mesurer-une-temperature-avec-un-capteur-lm35-et-une-carte-arduino-genuino/ https://www.energie-environnement.ch/definitions/1369-spectre-lumineux-des-lampes-d-eclairage Casagrande - Boite de cisaillement Informations : Tenue du wiki : Pierre Thery & Johane Dufour Contact : johane.dufour@etu.sorbonne-universite.fr Etudes : Licence 3 - Sciences de la Terre Date du projet : Juin 2024 Encadrant : Pierre Thery Sommaire : Introduction et objectif du projet MatĂ©riel, machines et logiciels utilisĂ©s Conception de la boĂźte de Casagrande + Codes OpenSCAD Journal de Bord 1. Introduction et objectif du projet L'objectif du projet est de reprendre la boĂźte de Casagrande utilisĂ©e les travaux pratiques de gĂ©otechnique/gĂ©ophysique niveau L3. Elle permet de mesurer la rĂ©sistance au cisaillement (cohĂ©sion C et angle de frottement interne Đ€) et notamment pour un sable humide. On reprend le projet prĂ©cĂ©dent : wiki:projet:casagrande [FablabSU] Suite aux multiples travaux pratiquĂ©s avec la prĂ©cĂ©dente version, des points d'amĂ©liorations sont Ă  prĂ©voir: CrĂ©ation de goupilles pour le remplissage de la boite, en effet le bras de levier entrainait le cisaillement avant mĂȘme la manipulation PrĂ©voir l’installation sur pied car il est plus pratique de maniper Ă  hauteur PrĂ©voir un butoir car une fois la rupture atteinte, le bras de levier de la force tangentielle descend jusqu'au sol Solidifier la structure car elle n'Ă©tait pas prĂ©vue pour une utilisation intense par des Ă©tudiants (plusieurs piĂšces cassĂ©s) A voir: inclure un dynamomĂštre pour le calcul de la force tangentielle ou d'un montage Arduino + Ă©cran + capteurs FSR400 + R=10kOhm -->https://www.instructables.com/Arduino-pressure-sensor-FSR-with-LCD-display/ 2. MatĂ©riel, machines et logiciels utilisĂ©s > MatĂ©riel nĂ©cessaire : Capteurs FSR400 Carte Arduino Uno CĂąbles Arduino Module encodeur rotatif GT055 Planche de plexiglas de 6mm d'Ă©paisseur Écran LED fablab > Machines : Trotec Speedy 360 (dĂ©coupeuse laser), Imprimante 3D, Perceuse > Logiciels : OpenSCAD, Inkscape, Arduino IDE 3. Conception de la boĂźte de Casagrande + Codes OpenSCAD > Impressions 3D : Partie Basse BoĂźte Fichier STL : AssemblageCasagrande - Casagrandeboitebasse-1-1.STL Partie Haute BoĂźte Fichier STL : AssemblageHaut2 - Casagrandeboitehaute-1.STL Bouchon BoĂźte Fichier STL : AssemblageCasagrande - Casagrandeboitebouchon-1-1.STL Porte Poulie et Poulie Fichier STL : Portepoulie.STL Poulie.STL Porte poulie et potentiomĂštre Attaches Levier (x2) Fichier STL : Attachelevierx2.STL Photo de l'assemblage gĂ©nĂ©ral de la boĂźte : > Branchement du capteur FSR400 pour la force normale σN On relie le capteur et l'Ă©cran Ă  la carte Arduino en suivant le montage suivant : Instructables.com/Arduino-pressure-sensor-FSR-with-LCD-display/ et on choisit une rĂ©sistance de 4K7 ohm lors du montage, pour avoir une valeur de poids affichĂ©e Ă  l'Ă©cran la plus fiable au poids rĂ©el possible. > Branchement de l'encodeur rotatif GT055 Afin de dĂ©terminer prĂ©cisĂ©ment le point de rupture, on utilise un encodeur rotatif qui va donner la valeur de dĂ©placement en degrĂ©s. On le branche Ă  une carte Arduino en suivant le montage suivant : Source : LEXTRONIC, 2022 (https://www.lextronic.fr/module-encodeur-rotatif-51706.html) Encodeur rotatif - Code Arduino ```cpp// DĂ©claration des variablesint CLK = 3;    // Broche CLK de l'encodeur sur la pin 3 de l'Arduinoint DT = 4;    // Broche DT de l'encodeur sur la pin 4 de l'Arduinoint encoderPosCount = 0; // valeur de dĂ©part de l'encodeur Ă  zĂ©roint CLKLast;int aVal;boolean bCW; void setup() { pinMode (CLK,INPUT);  //  Pin CLK dĂ©clarĂ©e en entrĂ©epinMode (DT,INPUT);  //  Pin DT dĂ©clarĂ©e en entrĂ©e CLKLast = digitalRead(CLK);  // Renvoi la derniĂšre valeur de l'encodeurSerial.begin (9600);} void loop() {aVal = digitalRead(CLK); if (aVal != CLKLast) { // Indique que l'encodeur tourne// Si le bouton tourne, on dĂ©terminera son sens// avec la broche DTif (digitalRead(DT) != aVal) {  // si CLK change en premier - rotation dans le sens des aiguilles d'une montreencoderPosCount ++;bCW = true;} else { // sinon c'est DT qui change en premier et la rotation va donc dans le sens inversebCW = false;encoderPosCount--; }Serial.print ("Sens de rotation: ");   // Affichera le sens de rotationif (bCW){Serial.println ("clockwise");   // sens des aiguilles d'une montre}else{Serial.println("counterclockwise");   // sens inverse} Serial.print("DegrĂ©: "); Serial.println(encoderPosCount*9);   // Affiche la position de l'encodeur - comptage des impulsions} CLKLast = aVal ;}``` > DĂ©coupe laser DĂ©coupe du Cadre Fichier svg : DĂ©coupe des bras de levier Fichier svg : Code OpenSCAD : //dimensions du bras de levier largeur = 40; //mm diametreTrou = 4; //mm nbUnites = 48; //nombre d'encoches longueur = 500; //mm longueur de la barre Ă  partir du trou //dimensions des encoches profondeurEncoche = 2; //mm var = 0; difference(){ square([longueur, largeur]); //trou translate([0, largeur/2, 0]){ circle(diametreTrou/2, $fn = 360); } //encoches for (i=[1:nbUnites]){ var = i*10; translate([var, 0, 0]){ rotate([0, 0, 45]){ square([profondeurEncoche, profondeurEncoche], center = true); } } } } //Pour la forme arrondie translate([0, largeur/2, 0]){ difference(){ circle(largeur/2); //trou circle(diametreTrou/2, $fn = 360); } } > Assemblage 4. Journal de Bord Journal de Bord 5/06 : Branchement du capteur de pression Arduino Tests de diffĂ©rentes rĂ©sistances pour avoir un poids affichĂ© Ă  l’écran (en newton et en kg) fiable. 6/06 : > CrĂ©ation d’un socle permettant de tester le capteur de force (contrainte normale) Afin de dĂ©terminer quelle rĂ©sistance on utilise pour le capteur de force, on rĂ©alise en premier lieu un socle permettant de pouvoir tester diffĂ©rents poids sur le capteur. Le capteur Ă©tant trĂšs prĂ©cis, il faut un systĂšme qui appuie parfaitement Ă  l'endroit du capteur. Code OpenSCAD pour le socle sous le capteur : cotecube = 50 ; //mm difference(){ cube([cotecube,cotecube,10]); translate([0,20,0]){ cube([25,10,3]); translate([25,5,0]){ cylinder(r=6,h=3,$fn=100); } } } Code OpenSCAD pour la partie supĂ©rieure reposant sur le capteur : cotecube = 50 ; //mm cube([cotecube,cotecube,5],true); translate([0,0,2.5]){ cylinder(r1=5,r2=4,h=5,$fn=100); } > Impression du Socle du testeur On crĂ©e le socle Ă  l’aide de l’imprimante 3D : 7/06 : > Impression de la Partie SupĂ©rieur du test  Masse Partie SupĂ©rieur du test capteur : 7.0g > RĂ©alisation de diffĂ©rents tests avec diffĂ©rentes rĂ©sistances Ă©lectriques et diffĂ©rents poids Poids rĂ©el (g) RĂ©sistance 4K7 (g) RĂ©sistance 10K (g) RĂ©sistance 3K3 (g) 428 390 800 g 425 330 527 510 833 700 1800 (?) 600 Les tests ne sont pas trĂšs cohĂ©rents mais la rĂ©sistance qui mĂšne au poids le plus fiable est celle de 4K7 ohm. 10/06 : > Dessin d’une piĂšce sur OpenSCAD pour mesurer la contrainte tangentielle mais abandon parce que ce systĂšme ne sera pas assez prĂ©cis (effets de frottements qui vont fausser la valeur donnĂ©e par le capteur). > Recherche d’un capteur de pression en S Ă  utiliser Ă  la place. 11/06 : > Branchement de l'encodeur sur une carte Arduino, oĂč on suit le montage suivant : https://www.lextronic.fr/module-encodeur-rotatif-51706.html > Code Arduino : // DĂ©claration des variables int CLK = 3; // Broche CLK de l'encodeur sur la pin 3 de l'Arduino int DT = 4; // Broche DT de l'encodeur sur la pin 4 de l'Arduino int encoderPosCount = 0; // valeur de dĂ©part de l'encodeur Ă  zĂ©ro int CLKLast; int aVal; boolean bCW; void setup() { pinMode (CLK,INPUT); // Pin CLK dĂ©clarĂ©e en entrĂ©e pinMode (DT,INPUT); // Pin DT dĂ©clarĂ©e en entrĂ©e CLKLast = digitalRead(CLK); // Renvoi la derniĂšre valeur de l'encodeur Serial.begin (9600); } void loop() { aVal = digitalRead(CLK); if (aVal != CLKLast) { // Indique que l'encodeur tourne // Si le bouton tourne, on dĂ©terminera son sens // avec la broche DT if (digitalRead(DT) != aVal) { // si CLK change en premier - rotation dans le sens des aiguilles d'une montre encoderPosCount ++; bCW = true; } else { // sinon c'est DT qui change en premier et la rotation va donc dans le sens inverse bCW = false; encoderPosCount--; } Serial.print ("Sens de rotation: "); // Affichera le sens de rotation if (bCW) { Serial.println ("clockwise"); // sens des aiguilles d'une montre }else { Serial.println("counterclockwise"); // sens inverse } Serial.print("DegrĂ©: "); Serial.println(encoderPosCount*9); // Affiche la position de l'encodeur - comptage des impulsions } CLKLast = aVal ; } Pour chaque clic : indication d’une rotation de 18 degrĂ©s. 12/06 : > Dessin du cadre sur Inkscape : Le cadre prĂ©sente une encoche pour faire passer le bras de levier et un petit rectangle qui permettra d'appuyer sur le capteur pour la force normale. 14/06 : > Arrangement du cadre sur Inkscape Pour que ce soit plus stable lors de l'utilisation. > Second test du capteur - force normale Lors des tests pour le capteur de la force normale, l'utilisation d'une rĂ©sistance de 4K7 ohm menait Ă  des poids proches de ceux rĂ©els. Bien que le capteur ne donne pas la valeur exacte, on rĂ©alise des tests avec diffĂ©rents poids pour voir si on peut trouver une relation de proportionnalitĂ© entre la valeur que le capteur nous donne et la valeur rĂ©elle : Poids rĂ©el (g) Poids avec RĂ©sistance 4K7 ohm (g) 103.3 0 200.8 140 249.2 140 454.8 410 534.3 510 840.8 740 836.1 Il faut multiplier la valeur donnĂ©e par le capteur par environ 1.3 pour obtenir la valeur de poids rĂ©elle, mais le capteur reste plutĂŽt imprĂ©cis. 20/06 : > Visser pieds pour les bras de levier sous la table > Visser socle boĂźte cisaillement et faire un trou pour vider la boĂźte du sable aprĂšs utilisation : > DĂ©coupe laser bras de levier : > DĂ©coupe cadre : 24/06 : On rĂ©alise des tests du capteur force normale avec le systĂšme entier : Poids Ă©lĂ©ments (mĂ©lĂ©ments) : > Bras : 134.2 g > Cadre : 396.4 g > Total poids bras + cadre = mĂ©lĂ©ments: 530.2 g > Piston : 48.6 g > Bouteille qu’on utilise pour la force normale meau : 857.8 g Sans ajouter la bouteille, le capteur affiche : 9.59 N et 0.89kg Calcul du facteur d'augmentation de la masse : f = L/ L : longueur entre l'articulation du bras de levier et l'encoche sur laquelle est posĂ©e la masse/la bouteillel : longueur entre l'articulation du bras de levier et l'encoche sous laquelle est glissĂ©e le cadre (fixe, 13 cm pour notre machine) Calcul de la pression : P = m*g m : masse en kg donc m = meau*f + melements g : accĂ©lĂ©ration : 9.81 m.s-2 Ici, melements = 530.2 g = 0.5302 kg et meau = 857.8 g = 0.8578 kg Calcul en N : σN placĂ© Ă  la 26iĂšme graduation donc P = (0.5302 + 26/13 x 0.8578) * 9.81 = 22.02 N = 2.24 kg --> capteur affiche moins de 1 kg σN placĂ© Ă  la 28iĂšme graduation donc P = (0.5302 + 28/13 x 0.8578) * 9.81 = 23.32 N = 2.38 kg --> mais capteur affiche moins de 1 kg On rĂ©alise d'autre tests mais le capteur reste Ă  0.60 ou 0.80 kg quelque soit la graduation oĂč on pose la bouteille --> imprĂ©cision du capteur, il ne doit pas bien capter le cadre posĂ© dessus. 26/06 : On refait les tests avec un piston diffĂ©rent qui permet au capteur de mieux fonctionner : NumĂ©ro de graduation oĂč est placĂ©e la bouteille Pas de bouteille 26e 28e 35e 40e Poids rĂ©el (N) 5.19 22.02 23.32 27.86 31.09 Poids par capteur (N) 5.37 10.36 17.07 32.03 45 Encore des incohĂ©rences dans le poids donnĂ©, on ne trouve pas relation de proportionnalitĂ© entre la rĂ©alitĂ© et les valeurs affichĂ©es par les capteur de force. On pense alors utiliser diffĂ©rents capteurs pour capter le poids de la force normale: un capteur Arceli HX711 ADC 28/06 : Branchement du nouveau capteur pour la force normale : le capteur Arceli HX711 ADC 📟 MU5MN045 - Projets prototypage Projets prototypage en groupe pour l'UE MU5MN045 - MMI Consignes Consignes du projet Faire une preuve de concept ou une maquette d’un projet que vous dĂ©finirez vous-mĂȘmes (choix du projet et thĂšme: libres). Vous documenterez l'ensemble du processus Inclure au moins deux technologies vues en atelier : conception et impression 3D / conception 2D et dĂ©coupe laser / Ă©lectronique numĂ©rique Deux approches possibles : concevoir un objet qui ressemble Ă  l’objet final (Ă©ventuellement Ă  l'Ă©chelle) ou bien un systĂšme Ă©lectronique qui simule le comportement de l’objet final (mais ça peut ĂȘtre les deux Ă  la fois) Attendus de la documentation Les Ă©lĂ©ments suivants doivent apparaĂźtre dans la documentation de votre projet : dĂ©finition du projet (besoin, utilisateurs, fonctionnalitĂ© principale, fonctionnalitĂ©s secondaires) rĂ©flexions sur la problĂ©matique et veille sur l'existant lean canvas choix techniques gestion de projet: "minimum viable product", planification et rĂ©partition des taches croquis, dimensions liste du matĂ©riel fichiers de conception et Ă©tapes de crĂ©ation des fichiers (captures d'Ă©cran) / code photos et analyse des tests, essais, erreurs photos des Ă©tapes de rĂ©alisation du prototype, paramĂštres des machines photos de l'objet final rĂ©flexions de pistes d'amĂ©lioration ou d'Ă©volution du projet sources des tutoriels, inspirations, ressources utilisĂ©es (Ă  insĂ©rer au fil de la documentation) Marine PIRUS, Ryan VICENTE & EloĂŻse CHOURAKI GrowTogether : Planting seeds of Teamwork đŸȘŽ ProblĂ©matique de dĂ©part Nous sommes partit d'un constat qui est le suivant :  Dans les entreprises, les plantes sont souvent mortes ou inexistantes parce que les employĂ©s n'ont pas le temps de les arroser. Les entreprises deviennent de moins en en moins vĂ©gĂ©talisĂ©es. Cependant, selon une Ă©tude rĂ©alisĂ©e par l’UniversitĂ© japonaise de Hyogo en 2019, avoir des plantes dans les espaces de travail diminuerait significativement l'anxiĂ©tĂ© des collaborateurs. Les plantes ont la capacitĂ© d’apaiser et de favoriser le bien-ĂȘtre des employĂ©s au travail : un rĂ©el atout pour une entreprise, car par effet ricochet cela permet aussi de limiter les risques psychosociaux, souvent facteurs de maladies ou de burn out. Il est donc d'intĂ©rĂȘt publique de trouver une solution afin de vĂ©gĂ©taliser les espaces de travail et redonner du baume au coeur aux collaborateurs. (aller plus loin) Solutions proposĂ©es et proposition de valeur Afin de rĂ©pondre Ă  ce problĂšme au sein des entreprises nous avons inventĂ© GrowTogether, Planting seeds of Teamwork. Nous avons repensĂ© la façon d'entretenir et d'arroser les plantes afin de simplifier la vie des collaborateurs. En effet, l'idĂ©e est de crĂ©er un module dotĂ© d'un capteur Ă©lectronique d'humiditĂ© et aussi d'une LED afin de prĂ©venir le propriĂ©taire de la plante lorsque sa plante manque d'eau. Le module serait Ă©galement reliĂ© Ă  la boĂźte mail du collaborateur afin qu'il soit avertit lorsque sa plante aurait besoin d'eau. De plus, ce module serait emboitable avec les autres modules et l'on pourrait l'accrocher sur le mur afin de rĂ©aliser un mur vĂ©gĂ©tal. Pour des soucis de temps et de moyen, ces deux derniĂšres features ne seront pas prototypĂ©es dans le cadre de l'UE. En plus d'apporter du "vert" dans les espaces de travail, GrowTogether permettrait Ă©galement de responsabiliser et sensibiliser les collaborateurs en rĂ©alisant par exemple des matinĂ©es "Tout le monde plante". Lors de ces matinĂ©es, les diffĂ©rents collaborateurs pourraient planter leurs propres graines et ajouter leur module sur le mur vĂ©gĂ©tal de l'entreprise. Ainsi, GrowTogether se veut ĂȘtre une solution qui vĂ©gĂ©talise les entreprises mais Ă©galement une solution qui participe pleinement Ă  la vie en entreprise en organisant des activitĂ©s de team building ludiques qui ouvriraient les yeux des collaborateurs aux enjeux de l'environnement et Ă  l'importance de la nature dans nos Ă©cosystĂšme urbains. Notre solution rĂ©ponds donc Ă  un double enjeux Ă©cologique et sociĂ©tal pour la transition Ă©cologique des entreprises actuellement au coeur des dĂ©bats (aller plus loin) Technologies Les technologies que l'on pourrait utiliser sont les suivantes : Un pot en PLA (Polylactic Acid) imprimĂ© en 3D qui contiendra l'eau (impression 3D) Un capteur d'humiditĂ© permettant de savoir quand est-ce qu'il faut arroser sa plante (Électronique) Un logo et une plaque personnalisable gravĂ©s dans du peuplier (Gravure et dĂ©coupe laser) Voyant LED permettant d'alerter le collaborateur Un capteur/rĂ©cepteur d'information (qui ne sera rĂ©alisĂ© lors de l'UE) Un pot en terre cuite qui s'insĂ©rera dans le pot imprimĂ© afin de permettre Ă  l'eau de s'infiltrer dans le substrat Concurrence Sur le marchĂ© actuel, nous avons pu identifier diffĂ©rents concurrents : Semis qui lui est direct avec les particuliers et qui propose de l'aquaponie PrĂȘt Ă  pousser qui propose des jardinieres connectĂ©s qu'il est possible de fixer sur un mur Green Inside qui est propose un service d'entretien vĂ©gĂ©tal dans les entreprises Les plantes traditionnelles ou en plastique actuellement sur le marchĂ© Avantage concurrentiel GrowTogether se dĂ©tache de la concurrence puisqu'il alerte les collaborateurs lorsque les plantes manquent d'eau. Il permet ainsi de totalement inclure les collaborateurs dans l'entretien de leur lieu de travail et les responsabilise en leur assignant une plante Ă  entretenir. De plus, au delĂ  du produit en lui-mĂȘme, GrowTogether participe au team building et sensibilise les collaborateurs aux enjeux Ă©cologiques et sociaux du moment. Planification des tĂąches DĂ©roulement du projet Phase de reflexion Dans un premier temps, comme nous l'avons dis prĂ©cĂ©demment : nous avons pensĂ© Ă  une idĂ©e et ensuite travailler sur celle ci. Pour cette phase de rĂ©flexion, nous avions dĂ©cidĂ© de regrouper toutes nos idĂ©es sur un tableau blanc pour faire un brainstorming. L'idĂ©e Ă©tait de mettre sur un support l'ensemble des idĂ©es de features que nous avons eu et de les comparer avec celle de la concurrence afin de comprendre comment nous allions pouvoir nous dĂ©marquer et affirmer notre innovation. L'idĂ©e d'un bloc modulable pour mur vĂ©gĂ©talisĂ© nous est apparue trĂšs clairement dans la tĂȘte. Nous voulions que la solution soit : Simple Frugale Facile d'accĂšs et d'entretiens Facilement incorporable dans un espace intĂ©rieur de travail Dans notre idĂ©e initiale, nous voulions rĂ©aliser un bloc (forme cubique) dans lequel nous pourrions installer directement la terre et la plante et nous voulions insĂ©rer la partie Ă©lectronique de notre prototype Ă  l'arriĂšre de ce cube. Cependant, nous nous sommes rapidement rendu compte que ce type d'agencement ne serait pas optimal pour la captation de l'humiditĂ© par le capteur. En effet, il est plus simple de dĂ©tecter un niveau d'eau bas dans un rĂ©servoir que le taux d'humiditĂ© du substrat. Nous avons donc dĂ» repenser notre prototype afin qu'il rĂ©ponde Ă  notre nouvelle idĂ©e : AprĂšs avoir imaginĂ© l'ajout de membranes en tissus ou en plastique afin de laisser passer l'eau dans le substrat sans dĂ©tremper la terre, c'est finalement sur la troisiĂšme version de prototype que nous nous sommes arrĂȘtĂ©. En effet, nous avons eu l'idĂ©e d'ajouter un pot en terre cuite non-Ă©maillĂ© dans le prototype afin de laisser diffuser l'eau vers le substrat en fonction des besoins de la plante. Phase de conception 3D du pot en PLA Pour rĂ©aliser la base de notre projet, c'est Ă  dire le pot, nous avons dĂ©cidĂ© de modĂ©liser le tout en 3D Ă  l'aide de Tinkercad puis Ideamaker. Dans les premiĂšres modĂ©lisations, nous avons allongĂ© le contenant afin de laisser pouvoir y mettre une grande quantitĂ© d'eau. Cependant, dans un soucis de masse et practicitĂ©, nous avons dĂ©cidĂ© de designer le bloc sur mesure pour un pot en terre cuite que nous avons achetĂ© Ă  Leroy Merlin. Ainsi, en accord avec les mesures du pot en terre cuite, nous avons designĂ© le pot avec : L 100 mm, l 100 mm, H 85 mm. Nous avons ensuite rĂ©alisĂ© deux orifices Ă  l'aide de cylindres afin d'insĂ©rer le pot en terre cuite et de pouvoir remettre de l'eau dans le contenant. Nous avons dĂ©cidĂ© de le rĂ©aliser en matiĂšre PLA et en couleur beige afin de rester dans les tons naturels. La piĂšce a Ă©tĂ© imprimĂ©e en remplissage 100%, 3 coques, avec un radeau et des supports (ce qui a permis d'avoir une impression parfaite dĂšs le premier coup). La piĂšce Ă  mis 20 heures Ă  ĂȘtre imprimĂ©e pour un coĂ»t estimĂ© de 6,79€ (soit 226,3g ou 75,89 m de PLA).     Comme vous pouvez le voir nous avons créé un pot qui permet d'encaster le pot en terre cuite Ă  l'intĂ©rieur de façon parfaite. L'arrachage des supports fut tortueux et il a fallu se protĂ©ger les yeux : Phase de conception 3D du compartiment électronique en PLA Il a Ă©tĂ© dĂ©cidĂ© que le circuit Ă©lectronique permettant la dĂ©tection de l'eau serait disposĂ© sous le water-tank afin de faciliter la disposition de la LED sur la face du prototype. Afin de designer ce compartiment, nous sommes parti du modĂšle 3D du pot et avons effectuĂ© quelques ajustement afin de ne garder minimiser la hauteur du compartiment en fonction des piĂšces Ă©lectroniques utilisĂ©es. Le compartiment fait donc : L 100 mm, l 100 mm et H 60 mm. Cette piĂšce a Ă©tĂ© rĂ©alisĂ©e avec un remplissage Ă  50% et 3 coques sans supports et avec une bordure pour l'adhĂ©rence. Elle s'est imprimĂ©e en 6 heures pour un prix estimĂ© de 2,34€ (77,9 g ou 26,11 m). Malheureusement, il ne restait pas assez de PLA beige pour rĂ©aliser l'impression (voir photo ci-aprĂšs) : Il a donc fallu rebondir et utiliser du PLA de couleur chocolat qui se mariait bien avec le PLA beige du pot. Voici le rĂ©sultat de l'impression : Phase de dĂ©coupe laser du Logo Avant de commencer la conception de notre logo et de notre plaque, nous avons fait des croquis pour voir quel agencement nous plaisait le plus. Finalement, nous sommes partis sur l’option 1. Nous avons dĂ©cidĂ© de dĂ©signer notre logo sur canva directement. Nous avons testĂ© plusieurs alternatives diffĂ©rentes avec des polices diffĂ©rentes et une version sans le nom de notre marque. Finalement, nous avons dĂ©cidĂ© de partir sur la derniĂšre version, sans Ă©criture, pour un look plus Ă©purĂ© et moins chargĂ©. Afin de rĂ©aliser notre logo, nous avons dĂ©cider de le dĂ©couper dans du contreplaquĂ© de peuplier de 3mm. Pour cela, nous avons tout d'abord dĂ©signĂ© le logo sur Canva avant de le vectoriser sur Inkscape en utilisant la fonction vectoriser un objet matriciel. Nous avons mis le logo en Ă©paisseur 5 er en rouge afin que les traits se coupent. Sur le logiciel, nous avons ensuite sĂ©lectionner l’intĂ©gralitĂ© de la forme > chemin > vectoriser une forme. Ce qui nous a donnĂ© ce rendu : Ensuite, nous avons insĂ©rĂ© des contours rouges en faisant objet > fond et contour >  contour pour que la machine puisse dĂ©couper les contours de la forme. Ă©paisseur : 1mm couleur :  rouge Le but Ă©tait d’avoir le logo en transparence. Pour cela on a donc laissĂ© la ligne en noir, qui sera gravĂ©/marquĂ© par la machine donc plus foncĂ© par rapport Ă  la feuille qui elle reste blanche, donc non gravĂ©. Elle gardera alors la couleur d’origine du bois. Nous avons ensuite exportĂ© notre projet inkscape sur une clĂ© usb puis importĂ© notre logo sur trotec. Pour les rĂ©glages, nous avons fait : page modĂšle : nous avons sĂ©lectionnĂ© les 2 trajectoires puis changĂ© la couleur pour les contours en rouge plus vif car le logiciel ne reconnaissait pas la couche crĂ©er la tĂąche page prĂ©parĂ©e : placement de la forme Ă  l'endroit souhaitĂ© sur la plaque de peuplier Nous avons dĂ©cidĂ© de le dĂ©couper dans du contreplaquĂ© de peuplier de 3mm afin de garder un esprit naturel. Avant l’impression, nous avons rĂ©glĂ© avec les flĂšches de la machine le point de dĂ©part du laser ainsi que la hauteur de la plaque. Voici le rĂ©sultat de notre impression (Ă  noter que la partie blanche s’enlĂšve). Nous avons ensuite retirĂ© la partie blanche extĂ©rieure pour ne garder uniquement la feuille en contraste. Nous avons ensuite collĂ© notre logo sur le pot Ă  l’aide de colle NĂ©oprĂšne quoi que nous avons rĂ©partis sur les deux faces. Afin d’avoir un rĂ©sultat plus propre nous avons retirĂ© l'excĂ©dent de colle Ă  l’aide d’un scalpel puis nous avons poncĂ© les rĂ©sidus de colle. Phase de dĂ©coupe laser de la plaque Nous avons dĂ©cidĂ© d’ajouter une plaque sur le devant de notre pot afin de rendre notre produit personnalisable. Cette plaque pourra ĂȘtre utilisĂ©e par les collaborateurs afin d’écrire leur prĂ©nom ou d’indiquer le type de plante. Comme nous voulions des dessins de plantes sur notre plaque, nous avons dĂ©cidĂ© de faire le design sur canva, comme pour notre logo. Voici la premiĂšre version de notre plaque avec des plantes et nos prĂ©noms en italique. Nous avons ensuite exporter notre design en png puis importer sur inkscape. Comme pour le logo, nous avons sĂ©lectionnĂ© puis vectoriser notre design en cliquant sur chemin > vectoriser. Malheureusement, nous n’avons pas rĂ©ussi Ă  faire ressortir les nervures des feuilles une fois notre forme vectoriser. MĂȘme en ayant fait des contrastes de couleurs sur canva, la forme ressortait unis une fois vectorisĂ© dans inkscape. Nous avons donc dĂ©cidĂ© de garder cette forme et de rĂ©aliser la plaque tout de mĂȘme pour voir le rendu. Pour dĂ©couper la forme rectangulaire de notre plaque, nous avons placĂ© un rectangle vide Ă  contour rouge Ă  l’aide des formes. Nous avons ensuite exportĂ© notre projet inkscape sur une clĂ© usb puis importĂ© notre logo sur trotec.- Nous avons dĂ©cidĂ© de le dĂ©couper Ă©galement dans du contreplaquĂ© de peuplier de 3mm afin de garder une cohĂ©rence avec le logo. Avant l’impression, nous avons rĂ©glĂ© avec les flĂšches de la machine le point de dĂ©part du laser ainsi que la hauteur de la plaque. Voici le rĂ©sultat de notre gravure : Nous n'Ă©tions pas vraiment satisfaits de cette plaque car la gravure Ă©tait trop prononcĂ©e, ce qui a entraĂźnĂ© des bavures et l’apparition d’ombre. De plus, nous avons trouvĂ© que les dessins surchargeait le design de notre pot. Nous avons donc dĂ©cidĂ© de changer de design et de partir sur un design beaucoup plus sobre. Une simple plaque en bois sans dessins avec uniquement une gravure de nos prĂ©noms en majuscule. Il fallait donc revenir Ă  la case dĂ©part! Nous avons simplement Ă©crit nos prĂ©noms dans une police simple en majuscule. Puis nous avons tracĂ© un rectangle vide Ă  contour rouge Ă©pais afin de dĂ©limiter notre plaque. Nous avons ensuite exporter notre design en png puis importer sur inkscape. Comme les fois prĂ©cĂ©dentes, nous avons sĂ©lectionnĂ© puis vectoriser notre design en cliquant sur chemin > vectoriser. Pour dĂ©couper la forme rectangulaire de notre plaque, nous avons finalement dĂ©cidĂ© de placer un rectangle vide Ă  contour rouge Ă  l’aide de l'outil forme directement inkscape. Nous avons ensuite exportĂ© notre projet inkscape en format svg sur une clĂ© USB puis importĂ© notre logo sur Trotec. Nous avons fait exactement les mĂȘmes rĂ©glages que prĂ©cĂ©demment (pour le logo) Nous avons encore une fois fais la dĂ©coupe sur du contreplaquĂ© de peuplier de 3mm. Avant l’impression, nous avons rĂ©glĂ© avec les flĂšches de la machine le point de dĂ©part du laser ainsi que la hauteur de la plaque. Voici le rĂ©sultat de notre impression Comme pour le logo, nous avons collĂ© notre plaque avec de la colle NĂ©oprĂšne. RĂ©sultat visuel du prototype Plante : Monstera deliciosa Phase de conception Ă©lectronique et de codage Pour mettre en place l'Ă©lectronique de notre prototype, nous sommes passĂ© par plusieurs phases de test. Le but de ce systĂšme est de reconnaitre la prĂ©sence et l'absence d'eau dans le contenant beige afin de d'allumer ou d'Ă©teindre une LED et, par la suite, de prĂ©venir les collaborateurs de ce besoin d'eau par mail ou par le Slack d'entreprise dans un canal dĂ©diĂ©. La complexitĂ© de la transmission de message de nous laissait pas le temps de la rĂ©aliser dans le cadre de l'UE. Nous nous sommes donc concentrĂ©s sur la reconnaissance de l'eau et l'allumage de la LED en crĂ©ant un dĂ©tecteur d'eau DIY. En effet, nous nous sommes mis au dĂ©fi de rĂ©aliser ce montage sans avoir recours Ă  un dĂ©tecteur d'eau prĂ©fabriquĂ©. À l'aide de StĂ©phane, nous avons rĂ©alisĂ© un premier circuit composĂ© de : Une Arduino Uno Un breadboard Une LED Un transistor Trois rĂ©sistances Des cĂąbles mĂąle-mĂąle Ce circuit permet d'utiliser deux cĂąbles comme capteurs. En plongeant les deux capteurs dans l'eau, le courant passe entre ces capteurs et allume la LED. Le circuit permet donc d'allumer la LED dĂšs que la prĂ©sence d'eau est dĂ©tectĂ©e. Ce circuit fonctionne sans code et mais ne permet pas d'Ă©teindre la lampe lorsque de l'eau est dĂ©tectĂ©e. Les cĂąbles bleus sont les capteurs d'eau que nous immergeons dans l'eau afin de tester le circuit. Nous nous sommes alors lancĂ©s dans des test afin de trouver le code qui nous permettrait d'obtenir le rĂ©sultat que nous souhaitions. Nous avons essayer diffĂ©rents codes en essayant de changer le circuit pour placer les capteurs d'eau sur les broches A1 et A0 : // Constantes pour les broches const int ledPin = 8; const int cable1Pin = A0; const int cable2Pin = A1; // Seuil pour la dĂ©tection de courant const int seuil = 100; void setup() { pinMode(ledPin, OUTPUT); pinMode(cable1Pin, INPUT); pinMode(cable2Pin, INPUT); // Initialisation de la LED Ă©teinte digitalWrite(ledPin, LOW); } void loop() { // Mesurer la diffĂ©rence de tension entre les deux cĂąbles int tensionDiff = abs(analogRead(cable1Pin) - analogRead(cable2Pin)); // Si la diffĂ©rence de tension est infĂ©rieure au seuil, il n'y a pas de courant if (tensionDiff < seuil) { digitalWrite(ledPin, HIGH); // Allumer la LED } else { digitalWrite(ledPin, LOW); // Éteindre la LED } // DĂ©lai pour Ă©viter la surcharge de l'Arduino delay(100); } Mais la lampe de voulait toujours pas s'allumer... // Constantes pour les broches const int ledPin = 8; const int waterSensorPin = 2; void setup() { pinMode(ledPin, OUTPUT); pinMode(waterSensorPin, INPUT_PULLUP); // Initialisation de la LED Ă©teinte digitalWrite(ledPin, LOW); } void loop() { // Lire l'Ă©tat du capteur d'eau int waterSensorState = digitalRead(waterSensorPin); // Si le capteur d'eau dĂ©tecte un niveau de tension bas, il n'y a pas de courant if (waterSensorState == LOW) { digitalWrite(ledPin, HIGH); // Allumer la LED } else { digitalWrite(ledPin, LOW); // Éteindre la LED } // DĂ©lai pour Ă©viter la surcharge de l'Arduino delay(100); } int waterSensor1 = A0; // Pin pour le premier dĂ©tecteur d'humiditĂ© int waterSensor2 = A1; // Pin pour le deuxiĂšme dĂ©tecteur d'humiditĂ© int ledPin = 8; // Pin pour la LED const int seuil = 500; // Seuil pour la dĂ©tection d'eau void setup() { pinMode(waterSensor1, INPUT); pinMode(waterSensor2, INPUT); pinMode(ledPin, OUTPUT); } void loop() { int sensorValue1 = analogRead(waterSensor1); int sensorValue2 = analogRead(waterSensor2); // Si les deux dĂ©tecteurs d'humiditĂ© dĂ©tectent de l'eau, la LED s'allume if (sensorValue1 > seuil && sensorValue2 > seuil) { digitalWrite(ledPin, HIGH); } // Si l'un des dĂ©tecteurs d'humiditĂ© ne dĂ©tecte pas d'eau, la LED s'Ă©teint else { digitalWrite(ledPin, LOW); } delay(1000); // Attendez une seconde avant de rĂ©pĂ©ter Cependant, les diffĂ©rents codes ne correspondaient pas Ă  notre montage n'arrivaient pas Ă  remplir notre objectif. AprĂšs de nombreux essais infructueux, nous avons dĂ©cidĂ© de re-basculer sur notre premier montage en incluant un code qui permettrait simplement d'allumer ou Ă©teindre une LED en fonction de la prĂ©sence ou non de courant entre les deux capteurs. Pour cela, il a fallu enlever la LED de notre circuit transistor et la rattacher Ă  une broche de l'arduino afin de la contrĂŽler indĂ©pendant sans influence du courant continu. De plus, nous avons installĂ© un cĂąble dans le circuit en A0 afin de dĂ©tecter la variation des valeurs dans le circuit. Les cĂąbles bleus sont les capteurs d'eau que nous immergeons dans l'eau afin de tester le circuit. Il a donc fallu comprendre quels signaux la prĂ©sence et l'absence d'eau envoyait Ă  l'Arduino (via A0). Pour cela, nous avons utiliser la fonction Serial.print() et nous avons identifiĂ© que lorsque l'eau Ă©tait prĂ©sente, les valeurs retournĂ©es Ă©taient infĂ©rieures Ă  1023 et que lorsque les capteurs Ă©taient immergĂ©s dans l'eau la valeur retournĂ©es Ă©tait 1023. Nous avons donc Ă©tablis le code suivant : int waterSensor1 = A0; // Pin pour le premier dĂ©tecteur d'humiditĂ© int ledPin = 8; // Pin pour la LED void setup() { pinMode(waterSensor1, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { int sensorValue1 = analogRead(waterSensor1); Serial.println(sensorValue1); //delay(500); // Si la valeur dans la broche A0 est positive alors on Ă©teint la LED : il y a de l'eau dans le tank if (sensorValue1 < 1023) { digitalWrite(ledPin, LOW); Serial.println("PrĂ©sence d'eau"); } // Si la valeur dans la broche A0 est nulle alors on allume la LED : il n'y a d'eau dans le tank else { digitalWrite(ledPin, HIGH); Serial.println("Absence d'eau"); } delay(1000); // Attendez une seconde avant de rĂ©pĂ©ter } GrĂące Ă  ce code nous avons rĂ©ussi Ă  atteindre notre objectif : lorsque de l'eau est dĂ©tectĂ©e (les deux capteurs sont submergĂ©s) la LED est Ă©teinte, lorsque de l'eau manque (au moins l'un des deux capteurs est hors de l'eau) la LED s'allume pour alerter le collaborateur du manque d'eau dans le pot. Les deux capteurs seront placĂ©s au niveau de l'extrĂ©mitĂ© basse du pot dans le rĂ©servoir afin de prĂ©venir du manque d'eau dans le substrat. Le breadboard a Ă©tĂ© remplacĂ© par un mini-breadboard. Extraits de vidĂ©o CoĂ»t du prototype et structure des revenus/coĂ»ts Impression 3D (PLA) : 2,34 + 6,79 = 9,13€ DĂ©coupe laser (Peuplier) : 0,35€ Arduino UNO : 29,40€ Breadboard : 3€ CĂąbles (14) : 0,89€ Led : 0,02€ RĂ©sistances (4) : 0,05€ Batterie : 6,9€ Pot en terre cuite : 0,90 € TOTAL : 50,64€ En industrialisant les procĂ©dĂ©s et en faisant appel Ă  de l'achat en gros lots, il est possible de faire drastiquement diminuer les coĂ»ts de production. En vendant le petit module 99,90€ et le modĂšle plus grand 149,90€, il est possible de faire une marge de plus de 50% ce qui permettra une rentabilitĂ© rapide. Structure des revenus : Les revenus de GrowTogether proviendront de la vente et de l'installation des murs vĂ©gĂ©taux dans les entreprises mais Ă©galement de l'animation des ateliers de plantation et de sensibilisation que nous procurerons Ă  l'instar des nombreuses "fresques". Structure des coĂ»ts variables : Impression des pots Achat des pots en terre cuite Achat des composants Ă©lectroniques Achat du substrat et des plantes/graines Assemblage des modules Transports Installation des murs vĂ©gĂ©taux chez les clients (jour-Homme) Intervention de sensibilisation (jour-Homme) Structure des coĂ»ts fixes : Frais administratifs ElectricitĂ© et consommables Salaires Loyers Canaux et segment client GrowTogether est un produit destinĂ© aux entreprises. Il sera donc vendu en BtoB directement aux entreprises. Les clients sont donc les Chief Office Manager des diffĂ©rentes entreprises qui cherchent Ă  animer la communautĂ© de collaborateur, les sensibiliser et vĂ©gĂ©taliser les locaux. Notre persona : IdentitĂ© : Sarah, 40 ans, Chief Office Manager d'un studio d'innovation Ă  impact, Paris Enjeux : Animer la communautĂ© d'employĂ©s et d'entrepreneurs qui rĂ©sident dans les locaux, permettre de facilement mettre en place des Ă©vĂšnements communautaires pour les rĂ©sidents et de maniĂšre frĂ©quente, on-boarder les nouveaux arrivants avec une activitĂ© engageante, apporter des connaissances sur la transition Ă©cologique et les bon gestes Ă  sa communautĂ©, apporter de la vĂ©gĂ©tation dans les locaux sans avoir besoin de s'en occuper Besoin : Un solution clĂ©-en-main et facilement dĂ©ployable sans trop d'organisation et avec un suivi et un entretien facile. Claire Huang & Servane Pellerin & Soamalala Rajaonarison : Power Grip Power Grip DĂ©finition du projet Besoin : Power Grip est un petit gadget portable et pratique qui peut ĂȘtre posĂ© sur une table pour y agripper son sac et charger son tĂ©lĂ©phone. Il rĂ©pond Ă  3 besoins Conserver un tĂ©lĂ©phone chargĂ© Garder un sac propre et Ă  portĂ©e de main Se libĂ©rer de ses affaires Utilisateurs : Le produit est conçu pour les personnes en dĂ©placement et momentanĂ©ment Ă  une table, qui ont besoin d'une solution pratique pour garder leur tĂ©lĂ©phone chargĂ© tout en dĂ©posant leur sac quelque part. FonctionnalitĂ© principale : PowerGrip est Ă©quipĂ© d'une technologie de charge par induction qui permet de charger facilement les tĂ©lĂ©phones portables compatibles avec cette technologie. FonctionnalitĂ©s secondaires : Porte-sac RĂ©flexions sur la problĂ©matique et veille sur l'existant DĂ©sir de garder son sac propre et donc d’éviter de le poser au sol dans les restaurants, les bar, le lieux de travail et espaces de coworking mais aussi de l’avoir Ă  vue d’Ɠil pour ne pas se le faire voler. NĂ©cessitĂ© d’avoir un tĂ©lĂ©phone chargĂ©, notamment en fin de journĂ©e, la pĂ©riode la plus propice Ă  ĂȘtre dans un bar ou dans un restaurant. Produits concurrents : non existants Produit de substitution : Sac Ă  dos/main avec chargeur sans fil WENIG Antivol Sac Ă  Dos Ordinateur Portable 15.6 Pouces Homme ImpermĂ©able avec USB Charging Port Sac Ă  Dos d'affaires Sac Ă  Dos Fonctionnel Sac a Dos PC Portable pour Loisirs/Affaire/Scolaire Noir : Amazon.fr: Informatique marcello Sac Ă  Dos Convient Ă  l'Ordinateur de 15.6 Pouces ElĂ©gant Sac Ă  Dos pour Ordinateur Portable Sac DĂ©contractĂ© ImpermĂ©able avec USB pour College Voyage Affaires (15,6 Pouces, Gris) : Amazon.fr: Informatique Nordace Siena Sac Ă  dos intelligent, 19 l, avec port de charge USB, bleu (Bleu) - Siena : Amazon.fr: Mode KROSER Sac Ă  Dos pour Ordinateur Portable 15.6" Sac Ă  Dos pour Ordinateur Scolaire ÉlĂ©gant avec Port de Chargement USB Sac ImpermĂ©able pour Voyage/Affaires/CollĂšge/Femme/Homme Noir : Amazon.fr: Informatique Support de chargeur sans fil WILIT Lampe de Chevet Tactile avec Chargeur sans Fil pour Chambre Ă  Coucher, Veilleuse Tactile avec 3 Niveaux de LuminositĂ© : Amazon.fr: Luminaires et Éclairage Hoidokly Chargeur sans Fil 2 en 1 Chargeur Induction Station de Charge Compatible avec Galaxy S22/S21/S20/Note 20/10, iPhone 14/14 Plus/13/12 Pro/12/11, Galaxy Watch/Active/Buds/Gear 3, AirPods Pro : Amazon.fr: High-Tech Spigen SteadiBoost Chargeur sans Fil Rapide 15W CertifiĂ© Qi Compatible avec 12 Mini 12 Pro Max iPhone SE 2020 11 11 Pro 11 Pro Max XR XS XS Max X 8 8 Plus Galaxy S20 S10 Note 20 Ultra10 et Plus : Amazon.fr: High-Tech yootech Chargeur sans Fil Rapide, 7,5W pour iPhone 14 13 12 11 Pro Max/SE 2022/XS/XR/8 Plus, AirPods 3/Pro, 10W Max pour Samsung Galaxy S22/S21/S10E/S9/S8,Note 20/10/9/8, Huawei Mate/P30 Pro, Xiaomi : Amazon.fr: High-Tech Crochet pour sac Ă  main Flybloom Crochet de sac de sac Ă  main pliable multifonctionnel Crochet de sac pour femme Crochet de table Collection de cintre de table : Amazon.fr: Mode kwmobile 2X Crochet de Sac Ă  Main - Accroche Sac Pliable en mĂ©tal - Porte-Sac pour Table ou Bureau Suspension Sac Ă  Main - dorĂ© : Amazon.fr: Mode Lean canvas ProblĂšmes : Le dĂ©chargement des batteries : les tĂ©lĂ©phones portables sont devenus un Ă©lĂ©ment essentiel de la vie quotidienne, mais leur batterie a souvent du mal Ă  tenir toute la journĂ©e. La sĂ©curitĂ© : mettre son sac par terre ou sur le dossier de sa chaise nous empĂȘche souvent de garder un oeil sur celui ci et de s’assurer qu’il n’est pas volĂ© L’hygiĂšne : lorsqu’il ne reste plus de place sur une chaise pour poser son sac et qu’il ne tient pas sur le dossier, il n’y a pas d’autres possibilitĂ©s que de le poser par terre, alors que le sol peut ĂȘtre assez sale La mobilitĂ© : lorsque l’on souhaite garder son sac sous les yeux mais ne pas le poser par terre, il est possible de le garder sur ses genoux mais cela empĂȘche alors d’ĂȘtre libre de ces mouvements. Public cible : principalement constituĂ© de personnes qui sont souvent en dĂ©placement, comme les Ă©tudiants, les professionnels, les personnes actives en gĂ©nĂ©ral. Il est Ă©galement adaptĂ© aux personnes qui utilisent leur tĂ©lĂ©phone frĂ©quemment et qui ont besoin d'une charge supplĂ©mentaire pour Ă©viter de se retrouver avec une batterie faible en cours de journĂ©e. Proposition de valeur : chargeur par induction avec fonction d'arrĂȘt automatique pour Ă©viter la surchauffe, complĂ©tĂ© d’un crochet Ă  dĂ©plier pour accrocher son sac Ă  une table Choix techniques Chargeur Ă  induction : design Ă©purĂ© et moderne, pas de cĂąble Ă  transporter, possibilitĂ© de convenir Ă  plusieurs modĂšles de tĂ©lĂ©phone, lĂ©ger et petit Crochet mobile/pliable : gain de place par rapport Ă  un une tige fixe Gestion de projet: "minimum viable product", planification et rĂ©partition des taches MVP Power Grip est un petit gadget portable et pratique Ă  2 fonctionnalitĂ©s : porte sac & chargeur Ă  induction pour tĂ©lĂ©phones. RĂ©troplanning / Gantt TĂąches 03/04 04/04 05/04 02/05 RĂ©union d'Ă©quipe X VĂ©rification des matĂ©riaux pour le MVP X Prototype du design de la poignĂ©e pour sac Ă  main X Conception du plan de fabrication (3D + numĂ©rique) X Fabrication des prototypes de la poignĂ©e X Test des prototypes de la poignĂ©e pour sac Ă  main X Montage des poignĂ©es pour sac Ă  main X Finalisation du MVP X RACI TĂąches Claire Servane Soamalala DĂ©finition du projet I I RA RĂ©flexions sur la problĂ©matique I RA I Veille sur l'existant RA I I Lean canvas I I RA Choix techniques I RA I Minimum viable product I I RA Planification et rĂ©partition des tĂąches R I RA Croquis, dimensions I RA I Liste du matĂ©riel I RA I Fichiers de conception et Ă©tapes de crĂ©ation des fichiers RA I I Photos et analyse des tests, essais, erreurs I I RA Photos des Ă©tapes de rĂ©alisation du Prototype, paramĂštres des machines RA I I Photos de l'objet final I I RA RĂ©flexions de pistes d'amĂ©lioration ou d'Ă©volution du projet R RA R R : Responsible (rĂ©alisateur)A : Accountable (approbateur)C : Consulted (consultĂ©)I : Informed (informĂ©) Croquis, dimensions Liste du matĂ©riel Du filament plastique Une imprimante 3D Une plaque d'expĂ©rimentation Une led Une plateforme arduino Deux piles Des cĂąbles dupont Fichiers de conception et Ă©tapes de crĂ©ation des fichiers Nous avons rĂ©alisĂ© 2 prototypes dont le premier est ci-dessous : Le deuxiĂšme prototype a suivi les mĂȘmes Ă©tapes de rĂ©alisation sur Tinkercad (https://www.tinkercad.com/things/lTgHbqMT8DC-mighty-uusam/edit?sharecode=gPrPGVCC4Aa3jOVLArQieHRkd-AaASd89fib65j9t3w), en commençant par crĂ©er une base ronde qui doit reprĂ©senter le chargeur par induction et la partie qui sera posĂ©e sur la table. Pour cela, nous avons utilisĂ©e la forme de disque et lui avons donnĂ© les dimensions suivantes : 2cm d'Ă©paisseur ; 8cm de diamĂštre ; Nous avons aussi dessinĂ© une petite encoche destinĂ©e Ă  reprĂ©senter le port de chargement USB-C du chargeur. Par la suite, nous avons dessinĂ© une forme supposĂ©e reprĂ©senter le crochet qui pincera la table et permettra au sac de tenir. Ses dimensions sont les suivantes : 1,5 cm d'Ă©paisseur ; 6,5 cm de hauteur ; 1,5 cm de large entre les 2 lignes parallĂšles, espace qui correspond Ă  la partie qui "pince" la table. Nous avons ensuite fusionnĂ© cette forme avec le disque initial pour former la structure principale. Finalement, nous avons dessinĂ© la petite encoche qui dans le cadre de notre prototype, doit permettre d'allumer une led lorsque le tĂ©lĂ©phone sera posĂ© sur le disque. Le prototype final ressemble Ă  celui-ci : Photos et analyse des tests, essais, erreurs A l'origine, nous comptions pour reprĂ©senter le chargeur Ă  induction sur notre prototype, utiliser un capteur de distance. Celui-ci devait allumer une led lorsque le tĂ©lĂ©phone serait posĂ© sur la base ronde pour reprĂ©senter le chargement, et laisser la led Ă©teinte dans les autres cas. Pour cela, nous avions Ă©crit le code suivant : const int trigPin = 8; const int echoPin = 11; const int LED = 4; // defines variables long duration; int distance; void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input pinMode(LED, OUTPUT); Serial.begin(9600); // Starts the serial communication } void loop() { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds  duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); if (distance <= 250) {  digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } } On nous a ensuite conseillĂ© de faire quelque chose de plus simple, sans capteur de distance. Nous avons dĂ©cidĂ© de toujours utiliser une led mais d'utiliser un systĂšme de fermeture de circuit lorsque le tĂ©lĂ©phone est sur la plateforme ronde Ă  l'aide d'une petite languette montrĂ©e plus haut dans la partie conception. Avec le poids du tĂ©lĂ©phone, la languette doit se baisser et permettre la connexion entre 2 plaques de cuivre, ce qui doit fermer le circuit et allumer la led, Ă©teinte lorsqu'il n'y a pas de tĂ©lĂ©phone. Photos des Ă©tapes de rĂ©alisation du prototype, paramĂštres des machines En complĂ©ment de la partie plastique rĂ©alisĂ©e par impression 3D, nous avons rĂ©alisĂ© le circuit avec la led que nous avions prĂ©vu, d'abord sans les bandes en cuivre puisque l'impression n'Ă©tait pas finie, puis avec. Prix de fabrication Impression 3D (PLA)QuantitĂ© : 82,8g/30,75mPrix total de l'impression : 2,48€Breadboard = 3€CĂąble = 0,25€ (pour 4)/ 0,19€ (pour 3)Led = 0,02€Scotch de cuivre = 0,05€ (1cm^2) Prix total du prototype = 5,99€ Photos de l'objet final Version V0 Version V1 : RĂ©flexions de pistes d'amĂ©lioration ou d'Ă©volution du projet Plusieurs amĂ©liorations sont possible : Rendre la partie destinĂ©e Ă  ĂȘtre le crochet "pliable" pour pouvoir l'entourer autour de la base ronde lorsqu'on la met dans son sac ; Afficher le pourcentage de batterie restant sur notre produit, peut ĂȘtre Ă  l'aide de petits points lumineux ; Proposer un systĂšme de personnalisation du design sur la surface de la batterie 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 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 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. 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 : 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 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Ă© : 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 #include #include 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 #include #include 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 la dĂ©monstration de notre prototype est en piĂšce jointe. 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. 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. 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 boĂźte que nous avons designĂ©e. Nous 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. Pour 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. 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. Impressions Fichiers de conception et Ă©tapes de crĂ©ation des fichiers (captures d'Ă©cran) / code https://cyberweb.cite-sciences.fr/wiki/doku.php?id=projets:generateur_de_boites : permet de gĂ©nĂ©rer la boĂźte https://www.becquet.fr/derouleur-papier-toilette-en-bambou-p222419 : inspiration pour le design et donne une idĂ©e des dimensions de la structure en bois : L.18*l.10*H.14 cm https://www.cdiscount.com/bricolage/sanitaire-salle-de-bain/porte-rouleau-papier-toilettes-asofty-derouleur-p/f-1661005-ann4811630277986.html : pour ĂȘtre certain des dimensions, et on voit qu’on va plutĂŽt ĂȘtre sur du L.18*l.10*H.7 cm Les codes sont directement ajoutĂ©s dans la partie Électronique NumĂ©rique. Les fichiers de nos conceptions sont en piĂšces jointes. Photos et analyse des tests, essais, erreurs Lors de la premiĂšre 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. Voici la photo de la premiĂšre tige : Les erreurs rencontrĂ©es au niveau des codes sont directement dans la partie Électronique NumĂ©rique. Photos de l'objet final 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 KHADA - fine tableware [Adrien, Mouna, Hatice] Le projet KHADA propose de la vaisselle de table de luxe pour les particuliers et professionnels du domaine du luxe, de l'hĂŽtellerie et de la restauration. 📑 I/ Le projet    💬 A - Besoins et problĂ©matique > Les tendances et les goĂ»ts des consommateurs Ă©voluent. > Les phĂ©nomĂšnes de mode influencent le consommateur selon les saisons. > Les consommateurs tendent vers une consommation plus durable et accordent plus d'attention Ă  leur impact environnemental. > Le minimalisme, ou la volontĂ© de ne possĂ©der que l'essentiel, est  un mouvement en vogue. > Que cela soit chez un professionnel ou un particulier, les espaces de rangement sont limitĂ©s. => Story-telling : l'idĂ©e nous est venue alors que nous Ă©tions tous les trois en plein dĂ©mĂ©nagement. D'une part, nous avons rĂ©alisĂ© que nous possĂ©dons beaucoup de vaisselle ce qui n'est pas pratique. D'autre part, nous apprĂ©cions quand mĂȘme acheter de la nouvelle vaisselle si son design est beau afin de varier la dĂ©coration de nos tables. Et ce, mĂȘme si elle nous encombre plus. 💡 B - L'offre 1) Le produit et sa valeur ajoutĂ©e ASSIETTE > Pour rĂ©pondre Ă  ces diffĂ©rentes problĂ©matiques, nous avons pensĂ© Ă  dĂ©velopper le produit suivant : Images gĂ©nĂ©rĂ©es par l'IA DALL-E avec la phrase "assiette carrĂ©e digitale" > En apparence, l'assiette n'aura effectivement pas beaucoup de diffĂ©rences par rapport Ă  une assiette classique. Cependant, la particularitĂ© rĂ©sidera dans le fait de pouvoir changer le design de sa vaisselle sans devoir acheter plusieurs sets. Il saura mĂȘme possible d'opter pour des designs animĂ©s. A ce sujet, certains restaurant proposent dĂ©jĂ  du video mapping sur leurs tables pour offrir une expĂ©rience unique Ă  leurs clients. TABLETTE > Pour pouvoir changer les designs des assiettes, l'utilisateur aura Ă  sa disposition une tablette fournie avec l'achat de la vaisselle. Ainsi, cela invitera de tĂ©lĂ©charger une application sur le smartphone de toutes les personnes qui seront amenĂ©es Ă  utiliser cette vaisselle. Images retrouvĂ©es sur Google Images, et nos plus grandes sources d'inspiration COUVERTS > Nous avons Ă©galement pensĂ© Ă  vendre des couverts dont le manche serait amovible et personnalisable, composĂ© d'un liquide spĂ©cial qui brille lorsqu'on le secoue. Cela est un peu Ă  l'image des boules Ă  neige. POSITIONNEMENT > Le premier objectif sera de proposer de l’art de table haute gamme avec un design avant-gardiste. C'est pour cela que nous avons fait le choix de devoir utiliser une tablette. Le positionnement de notre marque se veut ĂȘtre Ă©levĂ©. > Le second consiste Ă  susciter un effet waouh chez le consommateur. 2) La cible > Les fine restaurants (hĂŽtels ou indĂ©pendants) et les maisons de luxe > Les particuliers de la haute catĂ©gorie socio-professionnelle > Les Ă©vĂšnements de luxe/artistiques/culturels 3) Plus concrĂštement Voici quelques rĂ©ponses aux questions qui pourraient ĂȘtre soulevĂ©es par un tel produit : > L'assiette sera-t-elle assez Ă©tanche pour passer au lavage ? Totalement, le verre autour de l'Ă©cran sera soudĂ© de façon Ă  ĂȘtre hermĂ©tique Ă  l'eau. > Comment recharger l'Ă©cran de l'assiette lorsque celui-ci n'aura plus de batterie ? La recharge se fera tout simplement par induction en posant l'assiette sur son support appropriĂ©. > Comment notre marque sera-t-elle rentable si nous ne vendons qu'une seule fois nos produits ? En plus de la vente (ou location), nous pourrons faire des bĂ©nĂ©fices sur la rĂ©paration des produits lorsque ceux-ci s'abiment, la vente et la conception des designs uniques sur la boutique en ligne ou encore le dĂ©veloppement de la gamme avec le temps (nouvelles assiettes, bols, saladiers, plateaux, prĂ©sentoirs, verres, accessoires dĂ©coratifs de table et d'intĂ©rieur, etc).    📍C - Positionnement et marchĂ© 1) Prix > Nous proposons un lot de 36 piĂšces comprenant de la vaisselle de diffĂ©rentes dimensions et la tablette pour sĂ©lectionner le design Ă  2500 euros. 2) Concurrence > Au niveau de la concurrence, seule une start-up, Eatense, s'est lancĂ©e dans la production d'assiettes rectangulaires basĂ©e sur le mĂȘme principe en 2018. Toutefois, cette marque vise un marchĂ© plus global comme les particuliers et se veut donc ĂȘtre accessible (design modifiable via nos smartphones) avec un prix infĂ©rieur (env 150 €). Images retrouvĂ©es sur Google Images > Tandis que KHADA vise un marchĂ© plutĂŽt BtoB dans le domaine du service et de la restauration et le BtoC pour une catĂ©gorie socio-professionnelle plus aisĂ©e. > Parmi les autres concurrents indirects, nous pouvons citer toutes les marques d'arts de table qu'il existe actuellement sur le marchĂ© mais elles ne rĂ©pondent pas aux mĂȘmes problĂ©matiques que nous. đŸ’» II/ La thĂ©orie ⚙ A - Choix des composantes techniques > Rappelons la dĂ©finition d'un Minimum Viable Product (MVP). Il s'agit d'une version fonctionnelle et Ă©lĂ©mentaire du produit. > Pour notre MVP, par soucis de complexitĂ© et de manque de temps/moyens Ă  disposition, nous avons donc dĂ©cidĂ© de concevoir une assiette dont le design serait changĂ© par des feuilles de papier au lieu d'un Ă©cran. Nous opterons pour les techniques : D'impression 3D : pour la base de l'assiette, la tĂȘte de la fourchette ainsi que le bouchon du manche De dĂ©coupe laser : pour le haut transparent de l'assiette Un petit circuit Ă©lectronique avec des LEDS : pour simuler un Ă©cran en illuminant l'intĂ©rieur de l'assiette, faute d'avoir un rĂ©el Ă©cran. => idĂ©e donnĂ©e par nos encadrants đŸ—’ïž B - Quelques croquis 1) L'assiette Tout d'abord, voici les premiĂšres esquisses de l'assiette : > Nous souhaitions imprimer en 3D un boĂźtier sans couvercle (avec un cĂŽtĂ© vide pour insĂ©rer la feuille de papier) de forme carrĂ©e de 25x25 cm et d'une hauteur de 2 cm pour mettre de la marge pour la bande de LED qui mesure 1.5 cm d'Ă©paisseur. > Nous pensions ensuite dĂ©couper avec le laser une planche transparente de PVC que nous collerions dessus. > Les dimensions ont Ă©tĂ© choisies pour calquer avec la rĂ©alitĂ©. > Ainsi, nous avons fait le design sur Thinkercad (avec un bloc puis fonction perçage): 2) La fourchette Voici le premier croquis de la fourchette : > Pour prototyper les couverts, nous avons imaginĂ© une fourchette donc le manche serait un morceau de tuyau rempli d'un liquide colorĂ© pailletĂ©/marbrĂ© pour mimer l'effet visuel que le produit final aurait. > Le haut de la fourchette serait fait d'un matĂ©riau diffĂ©rent et un bouchon relierait les deux parties. > Pour ce faire, nous souhaitions utiliser un morceau de tuyau retrouvĂ© dans le Fablab pour la base et imprimer les deux autres Ă©lĂ©ments en 3D. Nous les avons modĂ©lisĂ©s sur Thinkercad : > Pour le haut de la fourchette, nous avions d'abord eu l'ambition de la dessiner nous mĂȘme sur Inkscape : > Puis, nous avons rĂ©alisĂ© qu'il serait prĂ©fĂ©rable d'importer une image de Google, de la vectoriser et de l'imprimer. Le rendu serait plus rapide, joli et efficace :   Avant vectorisation                                                       AprĂšs vectorisation 📒 C - Liste de matĂ©riel V1 > Voici tout le matĂ©riel nĂ©cessaire Ă  notre prototype avec les dimensions et les rĂ©fĂ©rences : tuyau de 8 cm filament pour l'impression 3D plaque dorĂ©e pour la dĂ©coupe laser plaque plexi transparente pour la dĂ©coupe laser 20 cm de LED circuit pour le LED papier colorĂ© et designs divers imprimĂ©s colle ciseaux eau + colorants alimentaire/peinture + paillette/vernis Ă  ongles les fichiers sur clĂ© USB pour lancer les impressions/dĂ©coupes gravures đŸ› ïž III/ L'expĂ©rimentation đŸ—“ïž A - L'organisation du projet > Cela fut trĂšs compliquĂ© de trouver une organisation alliant notre alternance entreprise/universitĂ©, nos horaires de travail et celles d'ouverture du Fablab. > Pour ce faire, nous avons créé un groupe Whatsapp et nous avons Ă©tabli un planning fixant les jalons nĂ©cessaires Ă  l'avancĂ©e, de notre projet (de la conception du prototype Ă  la prĂ©paration de notre prĂ©sentation finale). Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche 03 - J1 IdĂ©ation : brainstorming de l'idĂ©e CrĂ©ation d'esquisse et conception 3D 04 -J2 Adrien nous rejoint Observation des matĂ©riaux que nous pouvons utiliser, rĂ©itĂ©ration de la conception/impression du prototype 05 - Lancement de des impression 3D et dĂ©coupe laser + assemblage 06 - Repartir au Fablab si nĂ©cessaire 07 08 09 - deadline Elaboration de la partie stratĂ©gie marketing, business et industrialisation 10 11 12 13 14 15 16 - deadline/meeting visio PrĂ©paration des designs test 17 18 19 20 21 22 23 24 25 26 27 28 - deadline Finir le wiki et le diapo 29 30 - rĂ©union S'entrainer pour l'oral 01 02 : ORAL 🎯 B - RĂ©sultats > Dans la pratique, voici comment s'est dĂ©roulĂ© notre projet ... Visualisons ensemble nos pĂ©ripĂ©ties. 1) Impressions 3D > Le mercredi 05 avril, nous avons lancĂ© une premiĂšre impression 3D. Cependant, elle n'a pas fonctionnĂ© et malheureusement nous n'avons pas pu en connaĂźtre les raisons car les encadrants avaient dĂ©jĂ  tout rangĂ©. Ainsi, le 02 mai, nous avons lancĂ© une seconde impression 3D. => Modification de l'assiette : Nous avons optĂ© pour la version avec les 4 bord couverts (et non plus 3) en pensant que ce serait plus pratique pour cacher les fils du circuit Ă©lectronique. > Voici les diffĂ©rentes Ă©tapes pour imprimer en 3D, illustrĂ©es par les photographies ci-dessous : Importer les fichiers sur le logiciel de l'imprimante de l'ordinateur de la salle d'impression. VĂ©rifier la bonne disposition des Ă©lĂ©ments sur la plaque de l'imprimante. RĂ©gler les paramĂštres (densitĂ©, matĂ©riau, etc). TransfĂ©rer sur une imprimante disponible. Lancer l'impression. A noter : nous souhaitions lancer l'impression des trois Ă©lĂ©ments sur la mĂȘme imprimante mais le logiciel ne pouvait pas le faire. De ce fait, nous avons lancĂ© deux impressions : une avec le haut de la fourchette et une autre pour le bouchon et le manche. > Malheureusement, les impressions ont encore Ă©chouĂ©. Seul le haut de la fourchette a bien Ă©tĂ© imprimĂ©. Nous avons donc dĂ©cidĂ© d'improviser en bricolant notre produit. 2) DĂ©coupe laser et gravure du logo > Puisqu'il Ă©tait impossible en terme de timing de relancer une impression 3D, nous avons dĂ©cidé d'utiliser la plaque correspondant Ă  la base de l'assiette qui Ă©tait dĂ©jĂ  imprimĂ©e. Ainsi, du matĂ©riel et du temps seraient Ă©conomisĂ©s. > Nous avons donc dĂ©cidĂ© d'imprimer 4 bandes rectangulaires sur une plaque miroir et ainsi graver notre logo sur les cĂŽtĂ©s. > Pour cela, nous dĂ©signons ces Ă©lĂ©ments depuis le logiciel Trotec.         Quant au logo, nous l'avions prĂ©cĂ©demment rĂ©alisĂ© sur Canva puis vectoriel sur Inkscape. > Tout d'abord, nous avons rĂ©alisĂ© un test sur un morceau qui nous servira par la suite pour notre fourchette (nous ne gĂąchons rien !). > Nous validons la dĂ©coupe et la gravure ! 3) Circuit Ă©lectronique > Pour le circuit Ă©lectronique, nous avons programmĂ© un circuit de LED de 9 diodes avec un effet arc-en ciel pour pouvoir tester le PoC sans utiliser plus de matĂ©riel que prĂ©vu. > Le branchement Arduino n'est pas la partie la plus compliquĂ©e. Il nĂ©cessite : Une Carte Arduino UNO R3 3 fils MĂąle vers MĂąle Un ruban LED NeoPixel de 9 diodes. > Maintenant, il reste Ă  produire le code pour permettre l'Ă©clairage l'aide Ă  l'aide de la bibliothĂšque Adafruit_NeoPixel. CODE #include > Ceci est une bibliothĂšque spĂ©ciale utilisĂ©e pour contrĂŽler les pixels NeoPixel. Elle doit ĂȘtre installĂ©e Ă  partir du gestionnaire de bibliothĂšques Arduino. #define PIN 2 #define NUMPIXELS 9 > Ces deux lignes dĂ©finissent les constantes pour le code. PIN est le numĂ©ro de la broche sur laquelle la bande de LED est connectĂ©e (broche 2 dans ce cas) et NUMPIXELS est le nombre total de LEDs sur la bande (9 dans ce cas). Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); > Ici, nous crĂ©ons un objet pixels qui est une instance de la classe Adafruit_NeoPixel. Cet objet nous permettra de contrĂŽler la bande de LED. Les paramĂštres de ce constructeur sont le nombre de pixels, le numĂ©ro de la broche Ă  laquelle ils sont connectĂ©s, et le type de bande de LED. int delayval = 100; > C'est le dĂ©lai entre le changement de couleur de chaque LED (en millisecondes). int redColor = 0; int greenColor = 0; int blueColor = 0; > Ces trois variables contiennent les valeurs actuelles pour les couleurs rouge, verte et bleue. Elles seront modifiĂ©es plus tard dans le code. void setup() { pixels.begin(); Serial.begin(9600); } > La fonction setup() est appelĂ©e une fois au dĂ©marrage. pixels.begin() initialise la bande de LED et Serial.begin(9600) initialise la communication sĂ©rie Ă  un dĂ©bit de 9600 bauds. void loop() { setColor(); for(int i=0;i La fonction loop() est appelĂ©e en boucle aprĂšs setup(). Elle commence par appeler setColor() qui choisit une nouvelle couleur alĂ©atoire. Ensuite, elle parcourt chaque pixel de la bande, change sa couleur et affiche le rĂ©sultat. Ensuite, elle attend pendant delayval millisecondes avant de passer Ă  la LED suivante. Une fois qu'elle a parcouru toutes les LEDs, elle recommence Ă  zĂ©ro. void setColor(){ redColor = random(0, 255); greenColor = random(0,255); blueColor = random(0, 255); Serial.print("red: "); Serial.println(redColor); Serial.print("green: "); Serial.println(greenColor); Serial.print("blue: "); Serial.println(blueColor); } > Enfin, la fonction setColor() gĂ©nĂšre une couleur alĂ©atoire en choisissant une valeur alĂ©atoire pour le rouge, le vert et le bleu. Ensuite, elle imprime ces valeurs sur le port sĂ©rie. Ceci peut ĂȘtre utile pour le dĂ©bogage ou simplement pour savoir quelle couleur est actuellement affichĂ©e. SOUDURE > L'utilisation d'une bande NeoPixel ne permet pas de simples Plug&Play. Il faut donc souder nos fils Ă  la bande de pixels. > Pour cela, un atelier soudure s'impose en suivant les Ă©tapes suivantes : Chauffer le soudeur Ă  hauteur de 250°C. Elonger les 3 fils en laissant 3cm de dĂ©couvert. Souder le 5V sur le 5V, le GND sur le GND et le pin 2 sur le Din.Attention Ă  bien prendre la bande LED par le Din et pas le Dout. Le Dout sert Ă  connecter la bande en sortie. Penser Ă  bien recouvrir les fils dĂ©nudĂ©s avec l'Ă©tain. 📩 C - Le produit final > Avec les Ă©lĂ©ments que nous avons Ă  disposition, nous passons Ă  l'assemblage avec les moyens de bord. > A nouveau, nous avons quelques imprĂ©vus : Pas de paillettes ni de vernis Ă  ongles pailletĂ© Ă  disposition (petit problĂšme logistique) : nous essayons alors avec du fard Ă  paupiĂšre pailletĂ© et de la peinture acrylique ainsi que du gel nettoyant visage (plus visqueux donc moins de risque qu'avec de l'eau). La colle forte japonaise ne tient pas le plastique et la plaque miroir -> nous utilisons alors le pistolet Ă  colle (qui fait des dĂ©gĂąts laids mais au moins cela colle) Nos designs imprimĂ©s sur papier A4 qui sont trop petits pour notre assiette de 25cm de largeur. > RĂ©sultat final : Nous avons estimĂ© le coĂ»t de revient de ce prototype V1 : - Base de l'assiette : 3 euros (estimĂ© par l'imprimante 3D) - Haut de la fourchette : 33 cts (estimĂ© par l'imprimante 3D) - Bordure miroir : 4 euros - Arduino : 4,5 euros - Fils Ă©lectriques + LEDs : 1 euro - Composants restants : 1 euro => TOTAL : 13,83 euros 💭 IV/ Perspectives d'amĂ©lioration et Ă©volution > Voici quelques pistes d'amĂ©lioration et rĂ©flexions pour notre projet. ✖ A - RĂ©glementation > Il est important de se renseigner sur la rĂ©glementation en vigueur dans le secteur de commercialisation de notre produit. Dans notre situation, il s'agit d'un produit qui sera directement en contact avec des produits alimentaires. La lĂ©gislation sanitaire est donc stricte Ă  ce sujet. > Les articles ci-dessous regroupent les principales exigences concernant notre produit : https://www.economie.gouv.fr/dgccrf/Fiche-generale-relative-a-la-reglementation-des-ma https://www.contactalimentaire.fr/fr/normes-referentiels-contact-alimentaire ♻ B - Économie circulaire > Notre objectif est de s'inscrire en tant qu'entreprise Ă©co-responsable sur notre marchĂ©. Nous mettons un point d'honneur Ă  nous impliquer dans une dĂ©marche plus durable avec une Ă©conomie circulaire. Rappelons que celle-ci consiste Ă  produire des biens et des services de maniĂšre durable en limitant la consommation et le gaspillage des ressources et la production des dĂ©chets. > Notre produit nĂ©cessitĂ© l'utilisation d'Ă©crans dont la production et la conservation impliquent une empreinte carbone Ă©levĂ©e. Nous souhaitons donc, d'une part, utiliser des Ă©crans de tablettes et ordinateurs recyclĂ©s pour notre produit et d'autre part, recycler les nĂŽtres. De plus, les couverts seraient Ă©galement faits en plastique ou verre recyclĂ©s. ⏱ C - Et ensuite ? > Pour accroĂźtre notre dĂ©veloppement, nous avons pensĂ© Ă  collaborer avec des artistes et graphistes pour proposer des gammes uniques. Ainsi, certaines marques pourraient avoir des designs Ă  leur effigie. Exemples : Diner de lancement d'une nouvelle collection d'une marque de haute couture RĂ©ception mariage dans un hĂŽtel Rassemblement d'associations dans la lutte contre le cancer > Concernant la chaĂźne de distribution, de production et de rĂ©paration, nous allons faire appel Ă  un prestataire tel que ESQUISSE afin d'ĂȘtre accompagnĂ©s par des experts du milieu. En effet, il faut s'assurer de respecter la rĂ©glementation en matiĂšre de remplacement de piĂšces usagĂ©es, d'Ă©change ou encore de rĂ©paration. Pour la distribution, nous devons nous assurer que notre produit sera facilement reproductible Ă  grande Ă©chelle. INARI : CĂ©cile DIEVAL, Ann-Rachel NGAMBI, et Nathacha SUBAKARNAN Projet INARI VariĂ©tĂ© - Gain de place - PraticitĂ© - Effet de surprise INARI, le tableau connectĂ© qui permet de changer d'ambiance au cours de la journĂ©e ! Logo INARI (source : Canva) : Le mot INARI fait rĂ©fĂ©rence au renard d'INARI, trĂšs rĂ©putĂ© dans la culture japonaise pour sa ruse et son intelligence. 1. dĂ©finition du projet a. besoin Lassitude et dĂ©sir de changement peuvent survenir aprĂšs un certain temps. En utilisant un cadre connectĂ©, cela ne pose aucun souci : l'image affichĂ©e sur le tableau change automatiquement et s'Ă©teint lorsque personne n'est pas prĂ©sente dans la piĂšce. La dĂ©coration intĂ©rieur est un secteur prometteur. Chaque annĂ©e, environ 1,3 million de logements sont vendus, offrant ainsi de nombreuses opportunitĂ©s pour repenser et renouveler la dĂ©coration de sa maison ; et 46 % des acheteurs de produits de dĂ©coration renouvellent au moins une fois par an des Ă©lĂ©ments de leur piĂšce Ă  vivre. De plus, plus de la moitiĂ© des Français achĂštent des produits de dĂ©coration plusieurs fois par an, et plus de 10 % d'entre eux achĂštent des produits de dĂ©coration tous les mois. Parmi les produits de dĂ©coration les plus achetĂ©s, on trouve des objets tels que des miroirs, des cadres, ...                                De plus, les Français dĂ©pensent une part importante de leur budget pour l’ameublement de leur maison, c'est le premier poste de dĂ©pense, 44 %. Par ailleurs, il peut y avoir d'autres raisons pour lesquelles une personne peut vouloir avoir un tableau qui change d'image : - Ambiance : un tableau qui change d'image peut aider Ă  crĂ©er une ambiance particuliĂšre dans une piĂšce en fonction de la couleur gĂ©nĂ©rale choisie. Par exemple, des couleurs chaudes comme le rouge, l'orange et le jaune peuvent crĂ©er une atmosphĂšre chaleureuse et accueillante, tandis que des couleurs plus fraĂźches comme le bleu et le vert peuvent crĂ©er une atmosphĂšre plus calme et relaxante. - DĂ©coration : un tableau qui change d'image peut ĂȘtre utilisĂ© comme Ă©lĂ©ment de dĂ©coration pour ajouter de la couleur et de l'intĂ©rĂȘt visuel Ă  une piĂšce. - Humour : pour le plaisir et l'amusement. - FonctionnalitĂ© : le changement d'image comme un indicateur de tempĂ©rature ou comme une horloge de changement d'heure. De plus, un cadre photo qui change d'images est pratique, car il vous permet de changer facilement les photos affichĂ©es sans avoir besoin de faire de travaux supplĂ©mentaires : retirer le cadre du mur ou de le manipuler. b. utilisateurs Nos utilisateurs cible sont, en B2C, les adultes actifs de 25 Ă  44 ans. c. fonctionnalitĂ© principale Un tableau qui change d'image tout au long de la journĂ©e, avec sa banque d'image utilisateur personnelle. L'Ă©cran s'Ă©teint lorsqu'il n'y a personne dans la piĂšce et fonctionne en basse Ă©nergie. Il s'adapte Ă©galement Ă  la luminositĂ© ambiante pour un effet le plus rĂ©aliste possible. d. fonctionnalitĂ©s secondaires Un tableau qui change d'image tout au long de la journĂ©e, via une base de donnĂ©es prĂ©chargĂ© de 30 000 tableaux. 2. problĂ©matique et concurrence a. rĂ©flexions sur la problĂ©matique INARI est un tableau qui : - satisfait tous les goĂ»ts : art contemporain, moderne, ancien, ... - "empĂȘche" le rachat sans cesse de nouveaux tableaux - est peu consommateur en Ă©nergie, car son Ă©clairage est fait Ă  base de LED La consommation d’une ampoule LED Quelques chiffres : - le marchĂ© de la dĂ©coration d'intĂ©rieur reprĂ©sente 13,2 milliards € - les classes moyenne investissent dĂ©sormais dans la dĂ©coration intĂ©rieur - les français dĂ©pensent 532 € pour leur dĂ©coration intĂ©rieure hors ameublement - les 25-44 ans est la tranche d'Ăąge qui achĂštent le plus de dĂ©coration DĂ©coration : les 11 chiffres Ă  retenir sur ce marchĂ© en plein boom b. veille sur l'existant En matiĂšre de ventes : - la part du secteur du meuble et de la dĂ©coration sur Internet continue de croĂźtre, reprĂ©sentant dĂ©sormais plus de 10 % du marchĂ© (Amazon 34,6 %, Ikea 21,6 % et Cdiscount 19,9 %). - plus de la moitiĂ© des consommateurs de dĂ©coration utilisent le rĂ©seau social Pinterest pour planifier leurs achats (bien devant Instagram ou Facebook). En matiĂšre de concurrents direct, nous avons (classĂ© du plus chĂšre au moins chĂšre) : - Meural par Netgear Son prix : 699,99 € Sa fonction : un tableau qui change d'image, soit avec des images personnel ou Ɠuvres avec un banque de donnĂ©es d'images Son Ă©cran : Ă©cran LCD Son affichage : full HD - Samsung TV the Frame Son prix : 499 € Sa fonction : un tableau et TV combinĂ©. Le cadre photo un tableau qui change d'image, soit avec des images personnel ou Ɠuvres avec un banque de donnĂ©es d'images, qui s'Ă©teint lorsque vous ĂȘtes parti grĂące Ă  un capteur de mouvement Son Ă©cran : Ă©cran QLED Son affichage : full LED - Lenovo Smart Frame Son prix : 387,55 € Sa fonction : un tableau qui change d'image avec des images personnel Son Ă©cran : Ă©cran IPS Son affichage : full HD - Amazon Echo Show 15 Son prix : 289,99 € (mais plus petite taille que les concurrents) Sa fonction : un tableau qui change d'image avec des images personnel et qui permet d'organiser son quotidien Son Ă©cran : Ă©cran LCD Son affichage : full HD En matiĂšre de concurrents indirect, nous avons : - Art Design Story Son prix : 1 250 € Sa fonction : un tableau historique (Ă©vĂ©nement sportif, Ɠuvre de maĂźtres,...) qui regroupe des Ă©motions et les souvenirs sportifs les plus marquants. L'utilisateurs a besoin de scanner des points du tableau pour connaĂźtre ces dĂ©tails. Son Ă©cran : pas d'infos Son affichage : pas d'infos La grande famille d'Ă©cran LCD : QLED, IPS,... 3. lean canvas Pour le pricing nous avons choisi notre prix en rapport au cout de revient ainsi qu'en rapport avec la conccurence. INARI coutera donc entre 199,90€ Ă  499,90€ pour un tableau de 32" Ă  50". Nous proposons Ă©galement un service de location Ă  9,99 € par mois permettant d'avoir accĂšs Ă  plus de 30 000 Ɠuvres. DĂ©tails sur nos KPIs : Les indicateurs clĂ©s de performance (KPIs) sont des mesures quantitatives qui permettent de suivre la performance d'une entreprise. Voici nos indicateurs clĂ©s de performance que l'on peut utiliser pour mesurer les actions de notre start-up : Chiffre d'affaires : Le chiffre d'affaires est l'un des indicateurs clĂ©s de performance les plus importants pour mesurer la rĂ©ussite financiĂšre d'une entreprise. Il mesure le montant total des ventes de l'entreprise sur une pĂ©riode donnĂ©e. Marge bĂ©nĂ©ficiaire : La marge bĂ©nĂ©ficiaire mesure la rentabilitĂ© de l'entreprise en comparant le montant des bĂ©nĂ©fices nets rĂ©alisĂ©s sur une pĂ©riode donnĂ©e avec le chiffre d'affaires de cette mĂȘme pĂ©riode. C'est un indicateur clĂ© de performance important pour les entreprises qui souhaitent mesurer leur rentabilitĂ©. CoĂ»t d'acquisition client (CAC) : Le coĂ»t d'acquisition client mesure le montant dĂ©pensĂ© par l'entreprise pour acquĂ©rir un nouveau client. C'est un indicateur clĂ© de performance important pour les entreprises qui cherchent Ă  mesurer l'efficacitĂ© de leurs campagnes marketing. Taux de conversion : Le taux de conversion mesure le pourcentage de visiteurs du site web de l'entreprise qui effectuent une action souhaitĂ©e, comme l'achat d'un produit ou la souscription Ă  un service. C'est un indicateur clĂ© de performance important pour les entreprises qui cherchent Ă  mesurer l'efficacitĂ© de leur site web. Taux de rĂ©tention client : Le taux de rĂ©tention client mesure la capacitĂ© de l'entreprise Ă  conserver ses clients existants sur une pĂ©riode donnĂ©e. C'est un indicateur clĂ© de performance important pour les entreprises qui cherchent Ă  mesurer leur capacitĂ© Ă  fidĂ©liser leur clientĂšle. 4. choix techniques Dans ce projet, nous nous sommes limitĂ© et nous avons choisi des matĂ©riaux Ă  disposition dans le FabLab, des matĂ©riaux simple et facile Ă  trouver 5. gestion de projet Nous avons dĂ©cidĂ© de segmentĂ© le projet en cinq phases (dans l'ordre chronologique de nos tĂąches Ă  effectuer) : Cadrage - Conception - RĂ©alisation - ClĂŽture - Documentation Dans ce projet, seul la tĂąche documentation peut se faire indĂ©pendamment des autres, sinon il faut attendre que la tĂąche d'avant soit terminĂ© afin de commencer la suivante JALON 0 : tĂąche cadrage DĂ©but de la tĂąche : 03/04 dĂ©but matin Fin de la tĂąche : 03/04 fin matin - IdĂ©ation > Tous MĂ©thode Brainstorming - Dessin d'un croquis sur un tableau > Tous JALON 1 : tĂąche conception DĂ©but de la tĂąche : 03/04 aprem Fin de la tĂąche : 03/04 soir - Electronique-circuit (Tinkercad) > CĂ©cile - Electronique-code (Arduino) > Ann-Rachel/CĂ©cile - Logo tableau INARI (Inskape) > Ann-Rachel/Nathacha - Traitement de l'image (Photoshop) > Ann-Rachel - Cadres tableau INARI (Trotec) > Nathacha - BoĂźte 2D pour cacher l'Ă©lectronique Ă  l'intĂ©rieur (Boxes.py) > Ann-Rachel/Nathacha Une fois la conception fini, on passe Ă  l'impression et aux tests. JALON 2 : tĂąche rĂ©alisation dĂ©coupe Laser DĂ©but de la tĂąche : 04/04 matin Fin de la tĂąche : 04/04 matin - Cadres tableau INARI > Ann-Rachel/Nathacha/CĂ©cile - Gravure logo > Nathacha - CarrĂ©es pour faire 1 cm de largeur et 1,5 cm de hauteur > Ann-Rachel/Nathacha - BoĂźte 2D > Ann-Rachel/Nathacha Ă©lectronique DĂ©but de la tĂąche : 02/05 dĂ©but matin Fin de la tĂąche : 02/05 fin matin - RĂ©alisation et test circuit Ă©lectronique > Ann-Rachel/CĂ©cile - Soudure de deux ruban LED entre eux > Nathacha JALON 3 : tĂąche clĂŽture DĂ©but de la tĂąche : 02/05 dĂ©but aprem Fin de la tĂąche : 02/05 fin aprem - Assemblage de l'ensemble > Tous JALON 4 : tĂąche documentation DĂ©but de la tĂąche : 03/04 matin Fin de la tĂąche : 04/05 aprem Tout au long du projet - Page Wiki FabLab > CĂ©cile Si vous souhaitez exĂ©cuter notre projet ; vous pouvez pour plus de prĂ©cisions utiliser le diagramme Gantt comme planificateur de projet ou la matrice RACI (nous n'avions pas besoin de ces outils de gestion car nos tĂąches Ă©tait rapide et fait dans la journĂ©e sur des jours clĂ©s) 6. croquis 7. liste du matĂ©riel avec dimensions a. conception 2D (du fond du tableau au devant du tableau) - LiĂšge (fond du tableau) : 20 cm de largeur et 25 cm de hauteur (dont logo de marque : mettre les dimensions) - Vinyle de couleur noir : 15 cm de largeur et 25 cm de hauteur - Plexiglas : 20 cm de largeur et 25 cm de hauteur, avec gravure au centre : 10 cm de largeur 15 cm de hauteur - Bois : 20 cm de largeur, 25 cm de hauteur et 3mm d'Ă©paisseur avec ouverture au centre : 10 cm de largeur 15 cm de hauteur (dont logo renard INARI gravĂ© : 3 cm de hauteur et 3 cm de largeur) + 8 rectangles de 1 x 1,5 x 0,6cm - Acrylique : 20 cm de largeur et 25 cm de hauteur avec ouverture au centre : 16 cm de largeur et 21 cm de hauteur - BoĂźte 2D en Wood Cork 3mm : 19 cm de longueur, 13 cm de largeur et 10 cm de hauteur avec ouverture au centre : sur la face avant 3 x 5 cm, 3 x 3 cm sur la face gauche et un de 3 x 3 sur la face du haut qu'on a du agrandir en 3 x 6 cm, pour que les fils puissent passer Prix : 10 € b. Ă©lectronique - Capteur HC-SR04 (de distance) - Carte Arduino - Fils - Appareil de soudure - Ruban LED ws2812b : 20 cm Prix : 40 € Prix total tableau : 80 € (50 € prix de construction du tableau et 30 € pour la main-oeuvre, gestion publicitĂ©, ...) c. assemblage - Pistolet Ă  colle chaude - Ruban double face - Colle Ă  bois - Colle nĂ©oprĂšne 8. photos des Ă©tapes de rĂ©alisation du prototype a. partie dĂ©coupe laser tableau - Image tableau INARI via le logiciel Trotec Premier test de petite taille : 1. Conception 2. Impression 3. Sortie de l'imprimante Faire attention Ă  bien placer le point en haut Ă  gauche et attendre que la machine laser ne fasse plus de bruit pour sortir son impression sous risque de se faire brĂ»ler Nous nous sommes rendu compte que notre image Ă©tait trop nĂ©gatif, donc flou, nous utiliserons le mode nĂ©gatif lĂ©ger pour notre "vrai impression" Image du tableau INARI traitĂ©e (source : Kelogsloops) : - Cadres tableau INARI via le logiciel Trotec MĂȘme dĂ©marche que image tableau INARI RĂ©sultat image et cadre tableau : - Gravure logo via la logiciel Inskape MĂȘme dĂ©marche que image tableau INARI - CarrĂ©s de support  x 2 (1 cm de largeur et 1,5 cm de hauteur) via le logiciel Trotec 1. Impression 2. Assemblage avec colle de bois 3. CrĂ©ation Ă©paisseur du tableau afin de faire passer la LED plus tardivement b. partie Ă©lectronique - Simulation du circuit Ă©lectronique via le logiciel Tinkercad Image du montage pour ruban de 6 LED : Pour exĂ©cuter le code : Installer Arduino, tĂ©lĂ©charger la bibliothĂšque Adafruit neopixel et chercher le code appropriĂ© (dans file > example). Brancher le fils noir sur ground et le rouge sur 5 volt, for pour dĂ©finir le nombre de LED et GRB pour la couleur de la LED. Code pour ruban de 6 LED : #include // Define the LED strip parameters#define NUM_LEDS 6 // nous avons 6 LED sur le ruban #define LED_PIN 13 // le ruban de LED est branchĂ© sur la PIN 13 Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800); // Define the HC-SR04 parameters#define TRIGGER_PIN 9#define ECHO_PIN 10 long duration;int distance; void setup() {  // Start the serial communication  Serial.begin(9600); // Initialize the LED strip  strip.begin();  strip.show(); // Initialize all pixels to 'off' // Initialize the HC-SR04  pinMode(TRIGGER_PIN, OUTPUT);  pinMode(ECHO_PIN, INPUT);} void loop() {  // Trigger a pulse to the HC-SR04  digitalWrite(TRIGGER_PIN, LOW);  delayMicroseconds(2);  digitalWrite(TRIGGER_PIN, HIGH);  delayMicroseconds(10);  digitalWrite(TRIGGER_PIN, LOW); // Measure the duration of the pulse  duration = pulseIn(ECHO_PIN, HIGH); // Calculate the distance  distance = duration * 0.034 / 2; // Print the distance to the serial monitor  Serial.print("Distance: ");  Serial.print(distance);  Serial.println(" cm"); // Update the LED strip  if (distance <= 30) { // le ruban LED s'allume si on se place Ă  une distance infĂ©rieur ou supĂ©rieur Ă  30 mĂštres devant le tableau   for (int i = 0; i < NUM_LEDS; i++) {      strip.setPixelColor(i, strip.Color(255, 150, 120)); // pour dĂ©finir la couleur    }  } else {    for (int i = 0; i < NUM_LEDS; i++) {      strip.setPixelColor(i, strip.Color(0, 0, 0));    }  } // Show the updated LED strip  strip.show();} - Simulation du circuit Ă©lectronique en rĂ©el via le logiciel Arduino - RĂ©alisation en rĂ©el du circuit Ă©lectronique via le Arduino Lors du test, nous nous sommes rendu compte que 6 LED n'Ă©tait pas suffisant pour Ă©clairer le tableau alors nous avons dĂ©cidĂ© de mettre 12 LED. Nous sommes passĂ© par une soudure de deux rubans LED entre eux. Code pour ruban de 12 LED : #include // Define the LED strip parameters#define NUM_LEDS 12 // nous avons 12 LED sur le ruban #define LED_PIN 13 // le ruban de LED est branchĂ© sur la PIN 13 Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800); // Define the HC-SR04 parameters#define TRIGGER_PIN 9#define ECHO_PIN 10 long duration;int distance; void setup() {  // Start the serial communication  Serial.begin(9600); // Initialize the LED strip  strip.begin();  strip.show(); // Initialize all pixels to 'off' // Initialize the HC-SR04  pinMode(TRIGGER_PIN, OUTPUT);  pinMode(ECHO_PIN, INPUT);} void loop() {  // Trigger a pulse to the HC-SR04  digitalWrite(TRIGGER_PIN, LOW);  delayMicroseconds(2);  digitalWrite(TRIGGER_PIN, HIGH);  delayMicroseconds(10);  digitalWrite(TRIGGER_PIN, LOW); // Measure the duration of the pulse  duration = pulseIn(ECHO_PIN, HIGH); // Calculate the distance  distance = duration * 0.034 / 2; // Print the distance to the serial monitor  Serial.print("Distance: ");  Serial.print(distance);  Serial.println(" cm"); // Update the LED strip  if (distance <= 15) { // le ruban LED s'allume si on se place Ă  une distance infĂ©rieur ou supĂ©rieur Ă  30 mĂštres devant le tableau   for (int i = 0; i < NUM_LEDS; i++) {      strip.setPixelColor(i, strip.Color(255, 90, 0)); // pour dĂ©finir la couleur    }  } else {    for (int i = 0; i < NUM_LEDS; i++) {      strip.setPixelColor(i, strip.Color(0, 0, 0));    }  } // Show the updated LED strip  strip.show();} Image de rĂ©alisation de la soudure : 1. Allumer l'appareil de soudure Ă  300°C 2. Utiliser la clĂ© pour effilochĂ© l'extrĂ©mitĂ© du fils 3. Chauffer l'Ă©tain qui servira ensuite Ă  chauffer les fils afin d'effectuer la soudure via fusion des matĂ©riaux 4. Utiliser l'Ă©tain pour faire un point chaud Ă  deux endroit diffĂ©rents : Ă  l'extrĂ©mitĂ© du ruban LED et Ă  l'extrĂ©mitĂ© du fils Ă  fixer sur le ruban LED 5. Faire un point chaud Ă  un endroit spĂ©cifique : sur l'extrĂ©mitĂ© du ruban LED et du fils fixĂ© sur le ruban LED pour les assembler ensemble 6. RĂ©sultat 7. Collage des LED sur le Tableau INARI Ne pas oublier de mettre des gants, des lunettes de protection Image du montage Ă©lectronique : c. partie dĂ©coupe laser boĂźte 2D 1. Conception Trotec 2. Impression d. assemblage 1. Assemblage boĂźte 2D Avant assemblage, on test le programme informatique pour savoir s'il fonctionne toujours : 2. Assemblage tableau 9. photos de l'objet final 1. Tableau INARI 2. Tableau INARI en fonctionnement 10. rĂ©flexions de pistes d'amĂ©lioration ou d'Ă©volution du projet Du MVP au produit fini : - avec un algorithme IA changeant l'image en fonction de l'heure - avec un Ă©cran matte anti-reflet, adaptable en fonction de la luminositĂ© ambiante Perspectives : - ajouter Ă  l'algorithme l'option de changement d'image en fonction de la tempĂ©rature ou de la musique - ajouter des choix de cadre diffĂ©rents Aussi, nous aurions voulu utiliser un capteur PIR Ă  la place du capteur dĂ© dĂ©tection HC-SR04. Car le capteur de dĂ©tection PIR permet un dĂ©tection plus large sur les cĂŽtĂ©s alors qu'avec le capteur HC-SR04, il faut se mettre bien devant. Seulement, le FabLab n'avait pas de capteur PIR dans ces stocks. 11.  sources des tutoriels, inspirations, ressources utilisĂ©es (Ă  insĂ©rer au fil de la documentation) Les donnĂ©es et statistiques sur le marchĂ© de la dĂ©coration d'intĂ©rieur - modelesdebusinessplan.com Le gaspillage, c’est aussi pour les objets du quotidien - ConsoGlobe Business Model Canva - BPI France El Distributo, le distributeur de formule anhydre El Distributo est un packaging permettant de distribuer les formules anhydre dans le milieu de la cosmĂ©tique. Voici un lien permettant de comprendre notre offre de valeur et le contexte du marchĂ© : https://www.canva.com/design/DAFfOwwd1y8/MnoBcbNvZZsxAk6cHHQp9Q/edit?utm_content=DAFfOwwd1y8&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton 1) Conception 3D Dans un premier temps nous nous somme rendu sur Tinkercad pour la conception 3D de notre produit afin de pouvoir mettre en place une impression 3D de nos prototypes. Nous avons estimer qu'un packaging de 16 cm Ă©tait acceptable pour l'utilisation que nous allons en faire. Nous avons donc dans un premier temps modĂ©lisĂ© un cylindre de 15 cm de haut et de 5 cm de diamĂštre. Puis nous allons le modĂ©liser un autre cylindre qui nous permettra de percer le premier. Nous allons alors sĂ©lectionnĂ© les deux cylindre et cliquer sur union. Pour contrĂŽler la distribution des formules nous allons modĂ©lisĂ© une visse sans fin qui permettra de distribuer la formule avec un mouvement de rotation. Nous modĂ©lisons ensuite des rectangles qui vont permettre de rattacher la visse au cylindre. Nous les avons ensuite placĂ© sur le cylindre et avons cliquĂ© sur union. Nous avons ensuite modĂ©lisĂ© un fond pour notre cylindre lĂ©gĂšrement plus Ă©pais que notre visse pour laisser passer la bonne dose de produit (ni trop ni pas assez). Le client (marque de cosmĂ©tique) pourra ajuster la taille de ce fond pour qu'il y ait un trou plus ou moins grand en fonction de la formule et des besoins des consommateurs (soin, maquillage ou coloration) Nous avons ensuite modĂ©lisĂ© un deuxiĂšme cylindre, identique au premier sans la visse. Ce deuxiĂšme cylindre accueillera la formule. Nous avons ensuite modĂ©liser un pot pour rĂ©ceptionner la formule qui tomberait dedans. Nous avons ensuite importĂ© les fichiers en format STL sur Idea Maker. nous avons choisir une haute qualitĂ©, avec une densitĂ© de 15% car notre produit n'a pas besoin d'ĂȘtre hyper solide pour son usage. Nous n'avons pas besoin de support mais nous avons besoin d'une aide Ă  l'adhĂ©rence. cliquer sur slice Nous avons donc commencer l'impression aprĂšs avoir exporter le fichier sous format G code et mit sur une clef USB puis mit sur l'imprimante avec un filament Pro PLA blanc - voir si l'impression a rĂ©ussi aprĂšs les 16h : Impression rĂ©ussie ! 2) Une PLV pour mettre en valeur notre produit On a importĂ© sur Inskape le logo El Distributoau format png On a ensuite sĂ©lectionnĂ© la forme, puis on a fait  Chemin -> Vectoriser un objet matriciel Objet-> Fond et contour-> Fond Uni rouge RĂ©glage Ă©paisseur : 0,5 mm Nous l'avons ensuite exportĂ© sous format .svg Sur Trotec on importe le logo au format svg On sĂ©lectionne les couches nĂ©cessaires On a fait crĂ©er la tache, on a placĂ© le logo sur la plaque, on a ensuite sĂ©lectionnĂ© le matĂ©riel (peuplier 3mm, on rĂšgle la hauteur de la plaque et la position du laser avec les flĂšches de la machine) Une fois que c'est fait, on fait "produire" (rĂ©sultat final) Projet final - Justine LANNI & Jacqueline YOGENDRAN ... đŸ§Ș UE LABEL VERT Label vert: La larve mangeuse de plastique Nom : LE TOQUIN Juliette, SOUFIANI Noha, BOUATIR Fatima Ezzahraa, FERNANDES PEREIRA AlizĂ©e Projet : La larve Galleria Mellonella mangeuse de plastique (PS/PEBD) Cadre: UE Label Vert 2 (2022/2023) Introduction: Le plastique est une matiĂšre qui pollue Ă©normĂ©ment et elle se retrouve bien trop souvent dans l’environnement.  Le problĂšme qui se pose est la dĂ©gradation totale ou partielle du plastique. On souhaite donc au travers de notre projet prĂ©senter une nouvelle mĂ©thode de dĂ©gradation du plastique qui est encore en cours de dĂ©veloppement. En effet, des recherches rĂ©centes ont essayĂ© de dĂ©terminer la capacitĂ© de certaines larves Ă  dĂ©grader le plastique. Objectif : Notre projet a pour but d’étudier l’efficacitĂ© de l'une des larves Ă©tudiĂ©es, la larve Galleria Mellonella, Ă  dĂ©grader le plastique et de pouvoir comparer les diffĂ©rents rĂ©sultats. Dans notre cas, nous prendrons deux types de plastiques diffĂ©rents: du polyĂ©thylĂšne basse densitĂ© (PEBD) et du polystyrĂšne (PS). En effet, nous cherchons donc Ă  mettre en confrontation nos diffĂ©rentes expĂ©riences. Etude bibliographique et documentation CrĂ©ation d'un poster ExpĂ©rience au Fablab (Biologie-Chimie et Prototypage) Galleria mellonella (Gm) est une espĂšce de Lepidoptera dans la famille Pyralidae. NommĂ©e teigne de ruche, c'est une larve que l'on utilise principalement pour la pĂȘche. Son cycle de dĂ©veloppement varie de 4 semaines Ă  6 mois selon les conditions et comprend 4 phases (Ɠuf, larve, nymphe et adulte). C'est dans les alentours de mars qu'elle se dĂ©veloppe et atteint son pic autour d’aoĂ»t. Dans le cadre de ce projet, nous allons nous intĂ©resser seulement Ă  son stade de larve. ExpĂ©rimentation/Manipulation: I/ Protocole expĂ©rimental: PrĂ©paration des tests + tĂ©moin Fablab prototypage : 1. Broyer les bouteilles en PEBD Fablab de biologie/chimie: 2. Nettoyer les bĂ©chers/erlenmeyers/cristallisoirs Ă  l'Ă©thanol 3. Faire des copeaux de cire d'abeille Ă  l'aide d'un Ă©conome/scalpel 4. Émietter le PS en petits morceaux 5. Avant toutes prĂ©parations, peser les rĂ©cipients, le PEBD, le PS, les copeaux de cire, et les larves Ă  l'aide d'une balance de pesĂ©e 6. Mises en places des tests/tĂ©moins* : TĂ©moin: BĂ©cher de 500 ml + 10.85 g de cire + 43 larves Gm (18.855 g) Test 1: BĂ©cher de 250 ml (90,5968g) + 10.85 g de cire + 34 larves Gm (15.9 g) + 0.7 g de PS Test 2: BĂ©cher de 250 ml (118,57g) + 10.85 g de cire + 36 larves Gm (15.5419 g) + 10.8 g de PEBD (broyĂ©) Test 3: Erlenmeyer de 250 ml (134,4g) + 36 larves Gm (16.05g)  + 17.15 g de PEBD (broyĂ©) Test 4: Erlenmeyer de 250 ml (134,6g) + 44 larves Gm (20,27g)  + 1 g de PS Test 5: Cristallisoir de 795 g + 29 larves Gm (14.6296 g) + 2,6301 g de PEBD (film alimentaire). Le cristallisoir est recouvert par son couvercle en verre. Test 6: Cristallisoir de 991.84 g + 10.88 g de cire + 38 larve Gm (18.1318 g) + 2.7634 g de PEBD (film alimentaire). Le cristallisoir est recouvert par son couvercle en verre. Test 7: BĂ©cher de 800 ml (243.38 g) + 38 larves Gm (18.547 g) + 1.0735 g de PS 7.  Mettre les tests/tĂ©moin dans une grosse boĂźte en plastique que l'on mettra dans une salle close, sans lumiĂšre, Ă  22-23°C. * rĂ©cipients couverts avec du papier aluminium rempli de petits trous MatĂ©riel nĂ©cessaire Ă  la rĂ©alisation de nos expĂ©riences: Fablab de Biologie: 350 larves Gm vivantes, bloc de cire d'abeille, 1 bĂ©cher de 500 ml, 2 bĂ©chers de 250 ml, 2 erlenmeyers de 250 ml, 2 cristallisoirs, papier aluminium alimentaire, une Brucelles en plastique, plaque de polystyrĂšne, 2 bouteilles en PEBD, thermomĂštre mercure, scalpel, Ă©conome Fablab de Chimie: Accessoire ATR diamant, Ă©thanol de nettoyage Fablab prototypage: broyeuse II/ Observations : DĂ©but & fin d’expĂ©riences Dates, T(°C), TĂ©moin Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7 27/03/2023, 14h40, 22°C 8 mortes 8 mortes 10 mortes X X X X X 29/03/2023, 16h21, 23°C 6 mortes 1 morte 4 mortes 12 mortes 9 mortes X X X 31/03/2023, 9h57, 23°C 4 mortes* 5 mortes 1 morte* 8 mortes* + perte de PE 13 mortes* X X X 03/04/2023, 11h17, 22°C 2 mortes * 0 morte 5 mortes * 5 mortes 10 mortes X X X 05/04/2023, 11h, 22.5°C 0 morte * 0 morte * 0 morte * 0 mortes 6 mortes X X X 07/04/2023, 12h, 24°C 0 morte 2 mortes 0 morte 1 morte 0 morte X X X 11/04/2023, 13h53, 23°C 1 morte 0 morte 0 morte * 1 morte 1 morte 2 mortes X X 13/04/2023, 10h30, 23°C 0 morte 0 morte 0 morte 0 morte 0 morte 1 morte 1 morte 1 morte  (+1 cocon) 14/04/2023, 14h, 22,5°C 0 morte 0 morte 1 morte 0 morte 1 morte 1 morte 0 morte 5 mortes 18/04/2023, 13h20, 23,5°C 1 morte 1 morte 1 morte 4 mortes 1 morte 1 morte 1 morte 8 mortes 23/03/2023, 12h, 23°C: mise en place du tĂ©moin et des tests 1 et 2 ( arrivĂ©e des larves depuis 2j (au frais)) 27/03/2023, 14h50, 22°C: mise en place des tests 3 et 4 (arrivĂ©e jour mĂȘme) 07/04/2023, 12h, 24°C: mise en place du test 5 (arrivĂ©e des larves la veille (au frais)) 11/04/2023, 15h15, 23°C: mise en place des tests 6 et 7 (arrivĂ©e des larves le 6/04/23 (au frais)) 03/05/2023 - 05/04/2023: diminution forte de la cire * prĂ©sence de soie III/ RĂ©sultats fin d’expĂ©rience TĂ©moin Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7 DurĂ©e 3 semaines et 1 jour 3 semaines et 1 jour 3 semaines et 1 jour 2 semaines et 6 jours 2 semaines et 6 jours 1 semaine 5 jours 5 jours DĂ©but 43 larves Gm : 18.855 g 34 larves Gm: 15.9 g 36 larves Gm :  15.5419 g 36 larves Gm : 16.05 g 44 larves Gm : 20,27 g 29 larves Gm : 14.6296 g 38 larve Gm : 18.1318 g 38 larves Gm : 18.547 g Fin 20 larves vivantes : 6.4352g et un cocon 17 larves vivantes: 6.1753g 14 larves vivantes: 4.7291g et un cocon 5 larves vivantes: 1,712g 2 vivantes: 0.7676g et un cocon 23 vivantes: 10.462g et un cocon 35 vivantes: 14.966g et un cocon 23 larves vivantes: 9.647g et un cocon Total de larve(s) morte(s) 23 mortes (12.4498g) 17 mortes (9.7247g) 22 mortes (10.8128g) 31 mortes (14.338g) 42 mortes (19.5024g) 6 mortes (4.1676g) 3 mortes (3.1658g) 15 mortes (8.9g) Photos expĂ©riences TĂ©moin + Test 1 + Test 2 Test 3 Test 4 Test 5 Test 6 Test 7 TĂ©moin + Test 1 Ă  7 IV/ Analyses expĂ©rimentales Analyse Statistique & Biologique TĂ©moin Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7 % en masse de larve Gm morte 66.03 % 61.16 % 69.57 % 89.33 % 96.21% 28.49 % 17.46 % 47.99 % Forte diminution de cire dans les test 1 & test 2 Ă  contrario de la quantitĂ© des plastiques (PS, PEBD broyĂ©, PEBD film) 18/04/2023: Larves trĂšs actives dans les test 5 & test 7 Analyse IR en ATR Nom du plastique PEBD PS Pics CaractĂ©ristiques Alcane Elongation C-H:  2850-3000 cm-1 (forte intensitĂ©) DĂ©formation C-H: 1350-1480 cm-1 (moyenne intensitĂ©) Alcane (voir Ă  gauche) Aromatique Elongation C-H: 3000-3100 cm-1 (moyenne intensitĂ©) DĂ©formation C-H: 680-900 cm-1 (forte intensitĂ©) Elongation C=C:  1500-1650 cm-1 (forte intensitĂ©) Spectres IR (31/03/2023) Spectres IR (18/04/2023) EXPLOITATION DES RESULTATS Statistique & Biologique Cire + plastique (PS/PEBD) : % de larves mortes proches --> car larves on plus mangĂ© la cire que le plastique Plus de larves mortes en prĂ©sence de PS seul IR en ATR Comparaison du spectre IR du PEBD avec les deux spectres des "Larves test 2" et celui des "Larves test 3": Nous pouvons observer que les pics caractĂ©ristiques du PEBD ne sont pas prĂ©sents sur les spectres des larves, dont les tests sont composĂ©s de PEBD. Pour illustrer ce propos, nous pouvons relever que les 2 pics de forte intensitĂ© Ă  2800 cm-1 et 2900 cm-1 prĂ©sent sur le spectre IR du PEBD, ne sont pas observable sur sur les spectre du test 2 et 3. Comparaison du spectre IR du PS avec les deux spectres des "Larves test 1" et celui des "Larves test 4": MĂȘme observation que celle pour le PEBD: nous n'observons pas de pics caractĂ©ristiques du PS sur les spectres des larves. Comparaison du spectre IR des "Larves du tĂ©moin" avec tous les autres spectres des larves: Les spectres des larves sont tous similaires malgrĂ© leurs conditions diffĂ©rentes. Comparaison du spectre des plastiques de dĂ©part (PEBD, PS, film plastique) avec les plastiques de fin d’expĂ©rience: Ce sont les mĂȘmes. CONCLUSION Notre expĂ©rience a permis l’étude et l’observation du dĂ©veloppement des larves Galleria Mellonella. Celles exposĂ©es uniquement aux plastiques s’en sont nourries et semblent anormalement plus grandes et grosses que celles se nourrissant aussi de cires. La spectroscopie IR en ATR ne prĂ©sente pas de rĂ©sultats concluants, car elle ne permet pas de obtenir une analyse de caractĂ©risation assez prĂ©cise.  La prĂ©sence de rĂ©sidus de PS et PEBD nous est donc indiscernable. Les rĂ©sultats observĂ©s peuvent avoir Ă©tĂ© causĂ© par de nombreux paramĂštres que nous avons du changer comparer Ă  ceux Ă©tablit dans les articles de rĂ©fĂ©rences. Ainsi nous avons utilisĂ© des plastiques (PEBD et PS) non stĂ©rilisĂ©s, effectuer des analyses IR en ATR, effectuer nos tests dans des bĂ©chers/erlenmeyers/cristallisoirs. Or eux, dans leurs cas, le plastiques avaient Ă©tĂ© stĂ©rilisĂ©s avant son introduction dans les tests Ă  partir d’éthanol, ils ont caractĂ©risĂ© leurs Ă©lĂ©ments Ă  travers des analyses plus prĂ©cisent de l'ATR: FTIR, GC-MS ou l'imagerie hyperspectral. BIBLIOGRAPHIE Lou, Yu, et al. « Biodegradation of Polyethylene and Polystyrene by Greater Wax Moth Larvae ( Galleria Mellonella L.) and the Effect of Co-Diet Supplementation on the Core Gut Microbiome ». Environmental Science & Technology, vol. 54, no 5, mars 2020, p. 2821‑31. DOI.org (Crossref), https://doi.org/10.1021/acs.est.9b07044 Yang, Jun, et al. « Evidence of Polyethylene Biodegradation by Bacterial Strains from the Guts of Plastic-Eating Waxworms ». Environmental Science & Technology, vol. 48, no 23, dĂ©cembre 2014, p. 13776‑84. DOI.org (Crossref), https://doi.org/10.1021/es504038a Cassone, Bryan J., et al. « Role of the Intestinal Microbiome in Low-Density Polyethylene Degradation by Caterpillar Larvae of the Greater Wax Moth, Galleria Mellonella ». Proceedings of the Royal Society B: Biological Sciences, vol. 287, no 1922, mars 2020, p. 20200112. DOI.org (Crossref), https://doi.org/10.1098/rspb.2020.0112 Bombelli, Paolo, et al. « Polyethylene Bio-Degradation by Caterpillars of the Wax Moth Galleria Mellonella ». Current Biology, vol. 27, no 8, avril 2017, p. R292‑93. ScienceDirect, https://doi.org/10.1016/j.cub.2017.02.060. SynthĂšse de nanoparticules d'argent Ă  partir de peaux de fruits (gr 5) Informations Mouna Karihila, Julia Krystyanczuk, Isabelle Zheng, Meline Zheng mouna.Karihila@etu.sorbonne-universite.fr , julia.Krystyanczuk@etu.sorbonne-universite.fr, isabelle.Zheng@etu.sorbonne-universite.fr, meline.zheng.1@etu.sorbonne-universite.fr L3 Chimie et Double-Majeure Chimie-Biologie 30 septembre 2022 - 22 avril 2023 Contexte Les nanoparticules d'argent (AgNPs) sont dĂ©jĂ  utilisĂ©s dans certains de nos produits cosmĂ©tiques comme les sprays dĂ©sinfectants, et sont particuliĂšrement intĂ©ressantes pour leurs propriĂ©tĂ©s antibactĂ©riennes et antifongiquesÂč. En revanche, les phytonanoparticules d’argent issues d’une synthĂšse verte Ă  partir de dĂ©chets alimentaires procurent Ă  ces particules des effets supplĂ©mentaires tels qu’un fort pouvoir rĂ©ducteur pour lutter contre le stress oxydant dĂ» Ă  un excĂšs d'espĂšces rĂ©actives Ă  l'oxygĂšneÂČ. En effet, cela peut causer des maladies comme le cancer mais est aussi Ă  l'origine du vieillissement cutanĂ© car les radicaux libres dĂ©gradent le collagĂšne et font apparaĂźtre ce qu'on appelle des ridesÂł. Les AgNPs ont la particularitĂ© de percer la membrane bactĂ©rienne et de s'infiltrer pour se fixer sur les composants cellulaires internes essentiels leur empĂȘchant ainsi la prolifĂ©ration de la colonie bactĂ©rienne. Une bactĂ©rie anĂ©antie par l'argent est capable de condamner des bactĂ©ries vivantes atteignant Ă  une mortalitĂ© jusuq'Ă  99,99% qu'on appelle "l'apocalypse zombie" induit par l'effet de l'argent⁎. Objectifs On souhaite alors, dans notre expĂ©rience, synthĂ©tiser des nanoparticules d'argents Ă  partir de peaux de fruits. Pour cela, on s'est basĂ©e sur un protocole retrouvĂ© sur des articles scientifiques. On va prendre des peaux de fruits de banane et d'agrumes, ici l'orange et la clĂ©mentine. On va caractĂ©riser nos produits de synthĂšse par spectroscopie UV-visible et par infrarouge. Protocole PrĂ©lever environ 0,2 g de zeste d'orange et laver avec de l'eau dĂ©sionisĂ©e. Broyer Ă  l'aide d'un mĂ©langeur domestique, puis remuer pendant environ 20 min dans 50 ml d'eau Ă  50 °C. Laisser refroidir Ă  tempĂ©rature ambiante. Filtrer et garder l’extrait aqueux. PrĂ©parer 7,5 mL de solution d'amidon soluble Ă  5 % (pourcentage/volume) avec 6 mL d'extrait aqueux Ajouter 20 mL de AgNO3 Ă  0,01 M. Ajuster le pH jusqu’à atteindre un pH autour de 14 Ă  l’aide d’une solution aqueuse de 2 M KOH. La solution devient progressivement noire, ce qui indique la formation de nanoparticules d'argent. Centrifuger avec de l’eau dĂ©sionisĂ©e puis 1 fois avec l’acĂ©tone ou Ă©thanol Ă  6 000 tr/min pendant 15 min. // PrĂ©caution Ă  prendre ! // AgNO3 0,01 M : corrosif, lĂ©sions occulairesKOH : corrosif MatĂ©riel Amidon soluble de PROLABO Peaux d'orange, de clĂ©mentine et de banane Balance et Coupelle pour peser MĂ©langeur domestique (Blender) Bain Marie + spatule pour mĂ©langer (→ Eau Ă  50°C) Eprouvette graduĂ©e de 50 mL BĂ©cher de 100/250 mL Pipette jaugĂ©e de 20 mL Filtre Ă  cafĂ© Entonnoir (pour solide et liquide) Pipettes Pasteur pH mĂštre (papier pH) Centrifugeuse Bidon de rĂ©cupĂ©ration pour mĂ©taux lourd Cuve en qwartz pour la caractĂ©risation Mortier et pilon Pissette d'eau distilĂ©e Machines utilisĂ©es Spectroscopie UV visibleSpectroscopie FTIR-ATR Journal de bord Vendredi 24 fĂ©vrier 2023 ≈ 2h au FablabTout d'abord, nous avons sĂ©chĂ© nos peaux d'orange/clĂ©mentine et banane grĂące au dessiccateur. On les a laissĂ© plusieurs jours au dessiccateur. On a prĂ©parĂ© la solution d'amidon 5% qui nous est nĂ©cessaire, avec 5g d'amidon soluble et 100 mL d'eau. De plus, on a prĂ©parĂ© notre solution aqueuse de KOH avec 11,2g de KOH solide (56,11g/mol) pour 100 mL d'eau. Lundi 6 mars 2023 ≈ 5h au Fablab Des substances macromolĂ©culaires se sont formĂ©es dans notre solution d'amidon, on doit donc refaire celle-ci Ă  chaque fois qu'on va l'utiliser. Pour cela, on va prĂ©parer 7,5 mL de solution d'amidon en utilisant 0,375 g d'amidon soluble solide avec 7,5 g d'eau. On a rĂ©ussi Ă  broyer nos peaux d'orange, de clĂ©mentine et de banane avec un mixeur. On a obtenu un solide hĂ©tĂ©rogĂšne (avec gros grains et petits grains) pour la clĂ©mentine et l'orange, quant Ă  la banane, on a continuĂ© au mortier et pilon pour avoir des grains encore plus fins. On a tout d'abord commencer avec les peaux d'orange. Pour cela, on en a prĂ©levĂ© 0,2g et on les a remuĂ© pendant 20 mins dans un bain d'eau Ă  50°C avec 50 mL d'eau distillĂ©e pour ensuite les laisser refroidir Ă  T°amb. L'extrait aqueux est filtrĂ© Ă  l'aide d'un filtre Ă  cafĂ©. Nous avons mesurĂ© les valeurs d'absorbance pour cet extrait. Dans un nouveau bĂ©cher, 6 mL de solution aqueuse ont Ă©tĂ© prĂ©levĂ©e puis 7,5 mL de solution d'amidon 5% y ont Ă©tĂ© ajoutĂ©s. Une nouvelle mesure d'absorbance a Ă©tĂ© faite. On rajoute 20mL de AgNo3 dans le mĂ©lange puis on procĂšde une autre mesure d'absorbance. Ces mesures reprĂ©sentent les zĂ©ros de nos expĂ©riences. Le pH de notre solution de dĂ©part est de 5-6. Par la suite, on a dĂ©cidĂ© aprĂšs de mesurer la valeur d'absorbance aprĂšs chaque ajout de KOH (0,5 Ă  1 mL Ă  chaque fois) jusqu'Ă  atteindre pH = 14. La mesure s'est faite Ă  l'aide de papier pH qui malheureusement ne fut pas trĂšs prĂ©cis. Suivi de KOH ajoutĂ©:- 1 mL de KOH → pH ≈ 10- 1,5 mL de KOH → pH ≈ 11- 2 mL de KOH → pH ≈ 11-12- 3 mL de KOH → pH ≈ 12- 4 mL de KOH → pH ≈ 13- 5 mL de KOH → pH ≈ 14 Une solution noire / marron est obtenue aprĂšs le premier ajout de KOH - on a bien la synthĂšse des AgNPs ! AprĂšs un premier passage Ă  la centrifugeuse Ă  6000 rtm pendant 15 mins Ă  25 °C, le surnageant obtenue est de couleur jaune, le culot est de couleur noire - ce sont nos AgNPs. On avait 3 tubes de centrifugation de 15 mL oĂč 9,3 mL de solution se trouvaient dans chaque tube. Pour bien Ă©quilibrer dans la centrifugeuse, on a ajoutĂ© un quatriĂšme tube de centrifugation avec 9,3 mL d'eau. On a alors Ă©liminĂ© le surnageant (que l'on a tout de mĂȘme gardĂ© de cĂŽtĂ©). On doit ensuite laver avec de l'eau dans chacun de nos tubes contenant les culots. C'est ainsi que l'on ajoute 9,5 mL d'eau distillĂ©e dans chaque tube. Pour la prochaine fois, il faut faire une nouvelle centrifugation avec les mĂȘmes paramĂštres que prĂ©cĂ©demment sans oublier de bien agiter les tubes avant de dĂ©marrer (ne rien ajouter dans les tubes, ils sont prĂȘts pour la centrifugeuse). Et enfin, ce lavage Ă  l'eau, rĂ©aliser un lavage Ă  l'acĂ©tone en procĂ©dant de la mĂȘme façon. Vendredi 10 mars 2023 ≈ 2h au FablabOn a commencĂ© par lancer la centrifugation Ă  6000 rtm pendant 15 mins Ă  25 °C, ce qui a permis de faire le lavage Ă  l'eau de nos particules. Puis, on a enlevĂ© le surnageant et rĂ©aliser le lavage Ă  l'acĂ©tone. On laisse sĂ©cher Ă  T°amb. On a rĂ©alisĂ© les spectres InfraRouge des diffĂ©rents peaux de fruits que nous avons grĂące Ă  la spectromĂ©trie FTIR-ATR. (Fichier Administrateur 02 (IR) → peau de banane ) En parallĂšle, on a dĂ©butĂ© ce mĂȘme protocole pour la peau de clĂ©mentine et de banane. Ainsi, on a prĂ©lever 0,2 g de chaque que l'on a remuĂ© pendant 20 mins dans un bain d'eau Ă  50°C avec 50 mL d'eau distillĂ©e pour les laisser refroidir Ă  T°amb. Pour la clĂ©mentine, l'extrait aqueux est filtrĂ© Ă  l'aide d'un filtre Ă  cafĂ©. Pour la banane, nous avons gardĂ© notre extrait aqueux avec les grains de peaux de banane. Nous avons mesurĂ© les valeurs d'absorbance pour ces deux extraits. Aujourd'hui, nous avons dĂ©butĂ© par la clĂ©mentine. 7,5 mL de solution d'amidon 5% sont ajoutĂ©s Ă  notre extrait de aqueux. On a ajoutĂ© les 20 mL de AgNO3 et on a procĂ©dĂ© aux mesures d'absorbance. ET C'EST À PARTIR DE LÀ QU'ON REMARQUE QUE L'ON A OUBLIÉ DE PRÉLEVER LES 6 ML D'EXTRAIT AQUEUX... On doit alors tout refaire mais la prochaine fois... Note pour plus tard : ne pas oublier de prĂ©lever seulement 6 mL d'extrait aqueux pour la caractĂ©risation. Ne pas prendre tout l'extrait ! On a alors dĂ©butĂ© la mesure de l'absorbance de la banane avec 6 mL d'extrait, oĂč l'on a ajoutĂ© les 20 mL de AgNO3. On a rĂ©alisĂ© une mesure d'absorbance. Par manque de temps, on a laissĂ© notre solution dans un rĂ©cipient sombre que l’on a mis au placard. Pour la prochaine fois, refaire la solution aqueuse de peau de clĂ©mentine. PrĂ©voir le chauffage (de 20 mins Ă  50°C), les 7,5 mL de solution d'amidon et les 20 mL de AgNO3. Si on est Ă  plusieurs, en parallĂšle du chauffage de 20 mins, faire les mesures d'absorbance ET de pH pour les peaux de banane.Pour faire la caractĂ©risation de la clĂ©mentine, ne pas oublier de ne prĂ©lever QUE 6 mL d'extrait aqueux. Vendredi 24 mars 2023 ≈2h On a commencĂ© par prĂ©lever 0.2g de clĂ©mentine que l’on a versĂ© dans un bĂ©cher contenant 50mL d’eau distillĂ©e. AprĂšs 20 mins de chauffage Ă  50°C, on a laissĂ© refroidir et filtrĂ© avec un filtre Ă  cafĂ©. On a prĂ©parĂ© une solution d’amidon, avec 0.382g d’amidon soluble et 7.5mL d’eau distillĂ©e. On a souhaitĂ© faire l’ATR de nos nanoparticules d’argent Ă  partir de l'extrait de peau d'orange qu'on avait laissĂ© sĂ©cher depuis la sĂ©ance prĂ©cĂ©dente. Cependant, dans nos tubes, on avait vraiment eu peu de produits, lors de notre analyse en IR, il n'y avait pas assez de nanoparticules pour recouvrir le diamant du spectromĂštre IR. Ainsi, on peut tout de mĂȘme conclure que la synthĂšse a marchĂ© grĂące Ă  notre caractĂ©risation par UV. Mais nous n'avons aucune certitude sur la 'vĂ©racitĂ©' de notre produit qu'on a formĂ©, pour cela une caractĂ©risation sous rayon X serait pertinente pour pouvoir comparer nos rĂ©sultats avec ceux prĂ©sentĂ©s sur l'article. En effet, on ne peut dĂ©terminer si ce produit correspond bel et bien Ă  nos nanoparticules d'argent qu'on souhaitait synthĂ©tiser qu'avec une caractĂ©risation UV, puisque la couleur observĂ©e peut ĂȘtre Ă©galement due Ă  la prĂ©sence de d'autres Ă©lĂ©ments. De plus, on a souhaitĂ© faire les mesures d’absorbance pour les peaux de banane. Cependant, notre solution est devenue noire, sĂ»rement dĂ» Ă  une rĂ©action d’oxydation depuis la derniĂšre sĂ©ance (temps de rĂ©action trop long - presque 2 semaines). Ainsi, on n’a pas pu rĂ©aliser nos mesures car on s'attendait Ă  obtenir une solution jaune aprĂšs ajout de AgNO3, comme prĂ©sentĂ© dans l'article. Pour finir, on a alors prĂ©levĂ© 6mL d’extrait de clĂ©mentine, oĂč on ajoute la solution d’amidon, les 20 mL d’AgNO3 pour rĂ©aliser nos mesures d’absorbance ( clĂ©mentine seule, clĂ©mentine-amidon, clĂ©mentine-amidon-AgNO3,...) Ecrire le suivi du KOH : - 1 mL de KOH → pH ≈ 9- 2 mL de KOH → pH ≈ 10- 3 mL de KOH → pH ≈ 10- 4 mL de KOH → pH ≈ 12 Pour la prochaine fois, faire les centrifugations, les diffĂ©rents lavages pour la clĂ©mentine. Peut-ĂȘtre recommencer l'expĂ©rience de la banane en fonction du temps restant. Lundi 27 mars 2023 Pour la solution de clĂ©mentine, on a prĂ©paré 3 tubes de centrifugation de 15mL -> 18,48g dans chaque tube.Equilibration avec de l'eau dans un quatriĂšme tube. On peut alors procĂ©der aux diffĂ©rentes Ă©tapes de lavage. Notre surnageant est noir. On a ensuite rĂ©alisĂ© un lavage Ă  l'eau avec un nouveau programme : 10 000 rtm pendant 15min Ă  20°C. Le surnageant est de couleur roux. On lave Ă  prĂ©sent Ă  l'acĂ©tone. On a souhaitĂ© relaver Ă  l'acĂ©tone pour avoir un meilleur lavage. En parallĂšle, on a retentĂ© notre caractĂ©risation UV avec la peau de banane en utilisant 6mL d'extrait de peau de banane, 20 mL d'AgNO3, et du KOH. Le pH initial Ă©tait de 5. Suivi du KOH : - 1 mL de KOH → pH ≈ 14On a alors arrĂȘtĂ© l'expĂ©rience, notre pH Ă©tait dĂ©jĂ  trop basique. On a supposĂ© que le KOH Ă©tait trop concentrĂ©. La couleur initialement jaune de notre extrait de banane avec l'AgNO3 est devenue noire aprĂšs ajout de KOH. On passe ainsi notre solution Ă  la centrifugeuse pour 10 000 rtm pendant 15 mins Ă  20°C . Puis on rĂ©alise un lavage Ă  l'eau de nos tubes pour la banane. On a changĂ© nos paramĂštres car nos nanoparticules sont trop lĂ©gĂšres, nĂ©cessitant ainsi plus de puissance pour centrifuger. De plus, on a perdu beaucoup de produit car nos surnageants Ă©taient foncĂ©s. On a finalement prĂ©parer des boites de pĂ©tri pour l'extrait de clĂ©mentine. Permettant le sĂ©chage de nos particules sous la hotte. A faire prochainement, la centrifugation avec l'acĂ©tone pour la banane puis boite de pĂ©tri pour banane. Les tubes sont laissĂ©s dĂ©pourvu d'acĂ©tone sur notre paillasse. Faudra ajouter acĂ©tone. Lundi 3 avril On a commencĂ© par ajouter de l'acĂ©tone dans nos tubes de centrifugation. (masse de nos tubes ≈ 18.17g). On laisse centrifuger Ă  10 000 rtm pendant 15 mins Ă  20°C. Pendant la centrifugation, on rĂ©alise l'infrarouge ATR de notre produit de clĂ©mentine. Vendredi 7 avril Dans la suite, nous avons appliquĂ© le mĂȘme protocole mais avec de l'eau au lieu de l'extrait aqueux. PrĂ©lĂšvement des mesures UV, au bout de 2 mL de KOH (2M), la solution a atteint un pH de 14. On a introduit le mĂ©lange dans 3 tubes pour centrifuger Ă  15000 rpm pendant 15min Ă  tempĂ©rature ambiante. Ensuite on a utilisĂ© le mĂȘme programme pour procĂ©der aux lavages Ă  l'eau et l'acĂ©tone. Ne pas oublier de secouer Ă  chaque lavage et s'assurer que les tubes font chacun le mĂȘme poids. Laisser sĂ©cher Ă  T°ambiante dans une boite de pĂ©tri sous hotte et caractĂ©risation ensuite par FTIR ATR. RĂ©sultats D'aprĂšs notre bibliographie, on devrait observer en UV une augmentation progressive de l'absorbance Ă  404 nm Âč, ce qui indiquerait la formation des nanoparticules d'argent. Nous n'avons pas rĂ©ussi Ă  observer cela, ce qui peut ĂȘtre dĂ» Ă  la prĂ©sence d'impuretĂ©s, la solution de KOH trop concentrĂ©e ou encore le prĂ©lĂšvement d'un volume assez faible de nitrate d'argent peu concentrĂ©. Un rĂ©sultat plutĂŽt favorable, avec une augmentation progressive de l'absorbance, est observĂ© dans le cas de la peau de clĂ©mentine. Les spectres IR sont diffĂ©rents de la littĂ©rature, et nous n'observons aucun pic qui serait caractĂ©ristique Ă  une vibration de liaison impliquĂ©e dans les AgNPs. Pour complĂ©ter cette Ă©tude, il serait intĂ©ressant de rĂ©aliser : Une application sur des bactĂ©ries pour illustrer les propriĂ©tĂ©s antibactĂ©riennes et observer s'il y a potentiellement une rĂ©sistance qui s'est dĂ©veloppĂ©e contre ces particules⁔ ; Une caractĂ©risation par diffraction Rayon X, microscopie Ă  balayage Ă©lectronique ou Ă  transmission Ă©lectronique ; Une solution d'AgNO₃ plus concentrĂ©e - pour obtenir un meilleur rendement (moins de solvant). Conclusion Il est difficile de caractĂ©riser les particules d'Argent avec des outils simples et accessibles. Les caractĂ©risations effectuĂ©es ne nous permettent pas de confirmer si nous avions bien synthĂ©tisĂ© des AgNPs. La synthĂšse est complexe avec un rendement faible. L'utilisation de mĂ©taux lourds nĂ©cessite une filtration laborieuse pour rĂ©cupĂ©rer les mĂ©taux. Les risques sanitaires et environnementaux associĂ©s Ă  ces nanoparticules sont Ă©galement Ă©normes : des travaux montrent que ces nanoparticules sont particuliĂšrement nĂ©fastes pour les animaux aquatiques et terrestres, de plus les Ă©tudes sur la dangerositĂ© de ce matĂ©riau pour la peau sont encore insuffisantes⁔. Le prix est aussi non nĂ©gligeable, la solution de AgNO₃ est trĂšs coĂ»teuse. La part des contraintes est plus importante que les bĂ©nĂ©fices, elles doivent ĂȘtre prises en compte lors de notre synthĂšse. La valorisation des dĂ©chets est certes intĂ©ressante mais l'utilisation de l'argent contrebalance cette idĂ©e de synthĂšse de AgNPs Ă  partir de peaux de fruits. Sources (1) Konwarh, R.; Gogoi, B.; Philip, R.; Laskar, M. A.; Karak, N. Biomimetic Preparation of Polymer-Supported Free Radical Scavenging, Cytocompatible and Antimicrobial “Green” Silver Nanoparticles Using Aqueous Extract of Citrus Sinensis Peel. Colloids Surf. B Biointerfaces 2011, 84 (2), 338–345. https://doi.org/10.1016/j.colsurfb.2011.01.024. (2) Paiva-Santos, A. C.; Herdade, A. M.; Guerra, C.; Peixoto, D.; Pereira-Silva, M.; Zeinali, M.; Mascarenhas-Melo, F.; Paranhos, A.; Veiga, F. Plant-Mediated Green Synthesis of Metal-Based Nanoparticles for Dermopharmaceutical and Cosmetic Applications. Int. J. Pharm. 2021, 597, 120311. https://doi.org/10.1016/j.ijpharm.2021.120311. (3) Ecocentric. Radicaux libres, vieillissement de la peau & cosmĂ©tique. Ecocentric. http://www.ecocentric.fr/blog/index/billet/13505_radicaux-libres-antioxydants-cosmetique (accessed 2023-04-10). (4) Silver turns bacteria into deadly zombies. https://www.science.org/content/article/silver-turns-bacteria-deadly-zombies (accessed 2023-04-10). (5) Exposition aux nanoparticules d’argent : mise Ă  jour des connaissances. Anses - Agence nationale de sĂ©curitĂ© sanitaire de l’alimentation, de l’environnement et du travail. https://www.anses.fr/fr/content/exposition-aux-nanoparticules-d%E2%80%99argent-mise-%C3%A0-jour-des-connaissances (accessed 2023-04-07). (5) Exposition aux nanoparticules d’argent : mise Ă  jour des connaissances. Anses - Agence nationale de sĂ©curitĂ© sanitaire de l’alimentation, de l’environnement et du travail. https://www.anses.fr/fr/content/exposition-aux-nanoparticules-d%E2%80%99argent-mise-%C3%A0-jour-des-connaissances (accessed 2023-04-07). https://doi.org/10.1016/j.colsurfb.2011.01.024 https://doi.org/10.1016/j.colsurfa.2010.07.024 🍏 UE MU5BIQ01 - Nutrition, QualitĂ© et SantĂ© Mesure du curdling sur du lait de pois-chiche - Yofi Projet rĂ©alisĂ© en Co-Working avec Yofi par : Guillaume Camara, NoĂ©mie Dubar, Aydan Gun, Etienne Porquier Un phĂ©nomĂšne de "curdling" dans la boisson vĂ©gĂ©tale Tarte enrichie en protĂ©ines - AppĂ©toque 1 Projet rĂ©alisĂ© en Co-Working avec AppĂ©toque par : Laura Segalas,  Mohammed Bedrane, Meryem Hadjili, Wissal Mansouri Nouvelle formulation de tarte enrichie en protĂ©ines pour les sĂ©niors Informations Laura Segalas /  Mohammed Bedrane / Meryem Hadjili / Wissal Mansouri Laura.segalas@etu.sorbonne-universite.fr / Mohammed.bedrane@etu.sorbonne-universite.fr / Meryem.hadjili@etu.sorbonne-universite.fr / wissalmansr@gmail.com Master 2 : Nutrition QualitĂ© et SantĂ© 02/12 - 16/12 Contexte La société Appétoque a fait le constat qu’il existe une grande insatisfaction concernant l’alimentation des seniors. Ils apprécient peu les produits enrichis qui leurs sont proposés et ne les terminent pas, ce qui a deux conséquences majeures : l’apport nutritionnel prévu par le personnel médical n’est pas atteint et cela génère énormément de gaspillage alimentaire. Objectifs CrĂ©ation d’une tarte enrichie en protĂ©ine pour les personnes ĂągĂ©es qui souffrent de problĂšme de dĂ©nutrition et de mastication. La tarte doit ĂȘtre Ă  texture adaptĂ©e et doit contenir un goĂ»t intense en fruit. IMG_6341.HEIC MatĂ©riel Une balance Un mixeur Des bols Des cuillĂšres et des couteaux Un four Une casserole Des moules Papier cuisson Des poches Ă  douilles Un ciseau Un crayon Ă  papier Une Marise Flan enrichi en protĂ©ines - AppĂ©toque 2 Projet rĂ©alisĂ© en Co-Working avec AppĂ©toque par : LĂ©a Fernandes, Antoine Jin, Lucie Casanelli, Imane Mahmoudi DĂ©veloppement d’un flan enrichi Ă  destination des personnes ĂągĂ©es CARNET DE BORD - APPETOQUE 2 PHASE 1 : CONCEPTION ET MISE EN ROUTE DU PROJET 14/09 : Recherches pour se familiariser avec le sujet Envoi d’un document de la start-up prĂ©sentant le projet Ă  notre demande afin que nous puissions commencer Ă  nous prĂ©parer pour la premiĂšre rĂ©union Recherches sur : La start-up, leur produit et l’équipe Les besoins nutritionnels de la population de sĂ©niors Une rapide Ă©tude de marchĂ© et des pistes pour l’enrichissement et l’adaptation des textures Des idĂ©es pour le flan (goĂ»ts, texture etc) 20/09 : PremiĂšre rĂ©union avec AppĂ©toque PrĂ©sentation du projet et de la start-up PrĂ©sentation du cahier des charges SupplĂ©mentation en protĂ©ines (minimum 10g/100g) SupplĂ©mentation en un autre nutriment Pas d’ingrĂ©dients synthĂ©tiques Sans pate + texture homogĂšne AdaptĂ© aux troubles de la dĂ©glutition et de la mastication RĂ©sistant Ă  la congĂ©lation Emballage recyclable => contrainte Ă  traiter si le temps le permet Action Ă  mettre en place : crĂ©er une roadmap, lors des expĂ©rimentations crĂ©er un document permettant le suivi PHASE 2 : RECHERCHES BIBLIOGRAPHIQUES 20/09 : DĂ©but des recherches bibliographiques SupplĂ©mentation en protĂ©ines chez les sujets ĂągĂ©es Isolat de lactosĂ©rum Farine de lupin SupplĂ©mentation en un autre nutriment et/ou fibres - potentiellement : Algues / camu-camu (vitamine C) Son de blĂ© (fibres) Lait (apport consĂ©quent en calcium) Ajout d’une source de matiĂšre grasse (omĂ©ga3) RĂ©glementation sur les allĂ©gations “riche en” et “source de” Protocole expĂ©rimentations sur les textures Prendre en compte les difficultĂ©s de mastication des sĂ©niors HomogĂ©nĂ©itĂ© du produit Texture mixĂ©e Ă  vĂ©rifier selon le protocole de la cuillĂšre (IDDSI 4) SurgĂ©lation/congĂ©lation + rĂ©glementations sanitaires RĂ©glementations tempĂ©rature RĂ©glementation hygiĂšne 06/10 : DeuxiĂšme rĂ©union avec AppĂ©toque VĂ©rification des premiĂšres pistes de recherche Questions sur l’isolat de lactosĂ©rum, sur la surgĂ©lation, sur l’allĂ©gation en fibres et ses consĂ©quences sur la texture Discussion sur les possibles supplĂ©mentations en un autre nutriment NĂ©cessitĂ© de mettre en place les premiĂšres recettes rapidement 06/10 : DĂ©but des recherches sur les recettes Elaboration de nombreuses recettes qui pourrait convenir pour le projet Calculs des macro- et micronutriments pour chacune des recettes avec un tableau Excel afin de connaĂźtre leurs valeurs nutritionnelles 16/10 : Mise en commun des diffĂ©rentes recettes Recette classique enrichie avec isolat de lactosĂ©rum Recette avec farine de lupin enrichie avec isolat de lactosĂ©rum Test de la recette classique de flan sans isolat RĂ©sultat : bonne texture mais un nouveau problĂšme est relevĂ© : la peau du flan qui se forme (probablement suite Ă  la coagulation entre le lait et l’oeuf avec la chaleur) et qui est donc une nouvelle contrainte Ă  traiter 17/10 : TroisiĂšme rĂ©union Questions sur les allĂ©gations (rĂ©glementations Ă  utiliser), sur le problĂšme de la peau en surface (pistes : cuire au bain marie, Ă  basse tempĂ©rature, en couvrant le flan ou chercher une autre recette) PrĂ©sentation de nos idĂ©es et de nos recettes → validĂ©s Favorise l’idĂ©e de la supplĂ©mentation en calcium ou vitamine C, importance de ne pas rĂ©duire trop l’apport calorique de notre flan (Ă©viter les Ă©dulcorants Ă  la place du sucre par exemple) car les personnes ĂągĂ©es surtout en cas de dĂ©nutrition ont besoin de cet apport en calorie 20/10 : Envoi de la liste d’ingrĂ©dients Ă  AppĂ©toque pour vĂ©rification 24/10 : Confirmation de la liste d’ingrĂ©dients par AppĂ©toque 25/10 : Envoi de la liste d’ingrĂ©dients au Fablab 02/11 : Toujours en attente d’un date potentielle de livraison afin de pouvoir commencer les expĂ©rimentations (toutes les recettes que nous souhaitons expĂ©rimenter sont dĂ©jĂ  prĂȘtes) 22/11 : QuatriĂšme rĂ©union Discussion autour d’ingrĂ©dients pour la supplĂ©mentation en protĂ©ines et en calcium Discussion autour des expĂ©rimentations et de la rĂ©daction du rapport PHASE 3 & 4 : EXPÉRIMENTATIONS ET RÉDACTION DU RAPPORT 28/11 : RĂ©ception de l’isolat de lactosĂ©rum, passage de la commande du reste des denrĂ©es + rĂ©union avec AppĂ©toque avec prĂ©sentation du labo et point sur l’avancement 29/11 : PremiĂšre expĂ©rimentation de la recette du flan classique - Test 1 Variables modifiĂ©es : diminution de la maĂŻzena Ă  50g au lieu de 100g cuisson avec un aluminium pour limiter la formation de peau Conclusion : texture tranchĂ©e et trĂšs aqueuse Attention : une seule variable devra ĂȘtre modifiĂ©e pour les tests suivants car on ne sait pas lequel a eu un impact prĂ©cisĂ©ment. 01/12 : Test n°2 Variable modifiĂ©e : recette classique - diminution de la tempĂ©rature de cuisson (160°C) Conclusion : problĂšme d’homogĂ©nĂ©itĂ© mais texture moins aqueuse. Visuel plus attrayant, peau sur le dessus presque absente 02/12 : CinquiĂšme rĂ©union Discussion autour des problĂšmes rencontrĂ©s lors des premiĂšres expĂ©rimentations et discussion des solution : ajout des protĂ©ines Ă  la fin de la recette, ajout de quantitĂ© de protĂ©ines progressivement, mesure de la tempĂ©rature de cuisson, etc 03/12 : Test n°3 Variable modifiĂ©e : recette classique - isolat ajoutĂ© juste avant l’enfournement et non dans le lait qui chauffe Conclusion : bien meilleure texture, proche du flan mais trop compact toujours, goĂ»t des protĂ©ines trop prĂ©sent 05/12 : Test n°4 Variable modifiĂ©e : recette classique - quantitĂ© d’isolat de lactosĂ©rum Conclusion : pĂąte trĂšs liquide avant cuisson pour toutes les quantitĂ©s, plus la quantitĂ© augmente plus le goĂ»t de l’isolat resort mais pas de grosse diffĂ©rence dans la texture 06/12 : Test n°5 et 6 Test n°5 : Variable modifiĂ©e : recette classique - temps de cuisson lors de la 2e chauffe moins important pour pas que la prĂ©paration prenne trop Conclusion : mĂ©lange plus homogĂšne mais toujours trĂšs liquide Test n°6 : Variable modifiĂ©e : recette classique - cette fois le lait utilisĂ© pour diluer les protĂ©ines sera directement du lait des 1L nĂ©cessaires au flan et pas du lait ajoutĂ© en plus du lait de base Conclusion : flan rĂątĂ© avec trop d’alvĂ©oles mais sĂ»rement liĂ© Ă  la prĂ©paration 09/12 : Test n°7 Variable modifiĂ©e : recette classique - test d’une nouvelle mĂ©thode de cuisson : le bain-marie Conclusion : meilleure texture obtenue jusqu’à prĂ©sent mais la texture est encore beaucoup trop dense pour un flan 12/12 : Test n°8 Variable modifiĂ©e : Ÿ de la maĂŻzena utilisĂ© Conclusion : recette classique - texture redevient tranchĂ© comme avant, la maĂŻzena est indispensable dans notre recette 13/12 : Test n°9 Variable modifiĂ©e : recette classique - rĂ©duction de la tempĂ©rature de cuisson (150°C) Conclusion : texture homogĂšne mais toujours trop compact 14/12 : SixiĂšme rĂ©union Discussion autour des problĂšmes de textures : idĂ©e d’utiliser seulement des jaunes d’oeufs ou de la crĂšme Discussion autour des rĂ©sultats obtenus IdĂ©e de faire une recette de flan/crĂšme aux oeufs 16/12 : Test n°10 Variable modifiĂ©e : recette classique - utilisation uniquement des jaunes d’oeufs et plus des blancs d’oeufs Conclusion : texture homogĂšne mais toujours compact, couleur jaune qui se rapport du flan et goĂ»t de l’isolat de lactosĂ©rum masquĂ©e 20/12 : Test n°11 Variable modifiĂ©e : recette classique - remplacement de ÂŒ du lait par de la crĂšme liquide Conclusion : toujours une texture compact, mais le goĂ»t de la protĂ©ine est encore une fois bien masquĂ© 27/12 : Test n°12 Variable modifiĂ©e : crĂšme aux oeufs - expĂ©rimentation d’une nouvelle recette de crĂšme renversĂ©e Conclusion : texture lisse et beaucoup moins compact, trĂšs proche de la texture d’un flan classique. 28/12 : Test n°13 Variable modifiĂ©e : crĂšme aux oeufs - variation de la quantitĂ© de MG avec utilisation d’un lait entier Conclusion : lait entier apporte une sensation plus farineuse au flan 28/12 : Test n°14 Variable modifiĂ©e : crĂšme aux oeufs - diminution de la tempĂ©rature de cuisson (160°C) Conclusion : texture plus onctueuse et plus du tout de sensation farineuse 28/12 : Test n°15 Variable modifiĂ©e : expĂ©rimentation de la recette avec farine de lupin Conclusion : flan beaucoup trop compact, colle aux dents et pas du tout adaptĂ© Ă  notre projet, goĂ»t des pois chiches trop prĂ©sent 03/01 : Test n°16 Variable modifiĂ©e : crĂšme aux oeufs - expĂ©rimentation dans un grand moule Conclusion : 50mL d’eau semble trop car de l’eau est ressortie du flan et cette sensation d’eau sur le flan est prĂ©sente en bouche. De plus, le flan ne tient pas au dĂ©moulage 03/01 : SeptiĂšme rĂ©union Discussion Ă  propos de l’avancĂ©e du projet Confirmation de la recette de flan/crĂšme aux oeufs Mis en place d’un questionnaire sur diffĂ©rents critĂšres regroupĂ©s en 3 catĂ©gories : Visuel Texture GoĂ»t 04/01 : AvancĂ© du rapport : Introduction, chapitre 1 et 2 globalement rĂ©digĂ©s et envoyĂ©s Ă  AppĂ©toque pour avoir un premier retour 05/01 : Test n°17 Variable modifiĂ©e : crĂšme aux oeufs - rĂ©duction de l’eau Ă  30mL Conclusion : dĂ©moulage correct, plus beaucoup d’eau mais un peu sur le papier cuisson 07/01 : Test n°18 Variable modifiĂ©e : crĂšme aux oeufs - modification de la tempĂ©rature Ă  180°C Conclusion : expĂ©rimentation qui a nĂ©cessitĂ© plus de temps de cuisson mais ne relĂąche pas d’eau et texture de flan correct 09/01 : Test n°19, 20, 21, 22 Test n°19 : Variable modifiĂ©e : crĂšme aux oeufs - remplacement d’⅓ de l’eau servant Ă  diluer l’isolat par du jus de carotte afin de donner une couleur plus jaune/orangĂ©e Conclusion : rĂ©sultat avec une couleur proche du rose saumon plĂ»tot que du jaune Test n°20 : Variable modifiĂ©e : crĂšme aux oeufs - pour essayer de rendre le flan plus compact, ajout de 5g de farine Ă  la recette de flan aux oeufs (petite portion) Conclusion : dĂ©but de texture tranchĂ©e qui ne rĂ©sout pas le problĂšme de flan pas assez compact Test n°21 : Variable modifiĂ©e : crĂšme aux oeufs - pour essayer de rendre le flan plus compact, ajout de 5g de maĂŻzena Ă  la recette de flan aux oeufs (petite portion) Conclusion : dĂ©but de texture tranchĂ©e / farineuse qui ne rĂ©sout pas le problĂšme de flan pas assez compact Test n°22 : Variable modifiĂ©e : crĂšme aux oeufs - ajout de 0,35g de curcuma pour donner au flan une couleur plus jaune proche du flan classique (petite portion) Conclusion : flan beaucoup trop jaune et couleur Ă©loignĂ©e du flan classique. Grains de curcuma remontant Ă  la surface. GoĂ»t du curcuma prĂ©sent Test n°23 : Variable modifiĂ©e : crĂšme aux oeufs - recette du test 17 avec ajout de curcuma (0,35g max) mais moins que le test 22 Conclusion : couleur du flan toujours trĂšs jaune, texture inchangĂ©e recette finale 17 rĂ©alisĂ©e de nouveau 10/09 : DĂ©gustation en aveugle avec questionnaire de test sensoriel en prĂ©sence d’AppĂ©toque et de l’autre groupe travaillant avec AppĂ©toque. PrĂ©sentation de 3 flans : Flan pĂątissier classique Flan sans coloration Flan avec coloration au curcuma 11/09 : Validation de la recette finale et rĂ©daction des derniĂšres parties du rapport + envoi Ă  AppĂ©toque pour d’éventuelle modifications 18/09 : Rendu du rapport Sauce vĂ©gĂ©tale Ă  haute valeur nutritionnelle - CasaVeg 1 Projet rĂ©alisĂ© en Co-Working avec CasaVeg par : DĂ©veloppement d’une sauce Ă  haute valeur nutritionnelle Ă  partir de produits vĂ©gĂ©taux Cahier de bord Casa Veg’ 1 24/08 : RĂ©union zoom de prĂ©sentation de la startup et du projet de dĂ©veloppement d’une sauce Ă  haute valeur nutritionnelle, faite Ă  partir de produits vĂ©gĂ©taux, avec l’équipe de Casa Veg et l’équipe de travail 13/09 : RĂ©union de rĂ©introduction au sein de la startup pour dĂ©finir les axes de recherches : super-aliments : graines de cĂ©rĂ©ales (tournesol, lin, chia), plantes : orties, argousier Huiles essentielles et hydrolats, eau de cuisson Produits issus de la fermentation : drĂšche, levure de biĂšre, tanins LĂ©gumineuses : edamame, chanvre 21/09 : rĂ©union n°1 zoom Point fait sur les 4 axes de recherches, redĂ©finition de certaines problĂ©matiques. Poursuite des recherches bibliographiques sur ces sources protĂ©iques vĂ©gĂ©tales ou sources bioactives de nutriments. 28/09 : rĂ©union n°2 zoom Poursuite des recherches et prĂ©sentation de celles-ci Ă  la startup. 07/10 : rĂ©union n° 3 en zoom, prĂ©paration de la prĂ©sentation de nos rĂ©sultats de recherches Ă  la fondatrice de casa Veg’. → Mettre les conclusions de la prĂ©sentation et des pistes prĂ©sentĂ©es : poursuite ou non des recherches des pistes avancĂ©es. 27/10 : rĂ©union n°4 en prĂ©sentiel → PrĂ©paration d’une prĂ©sentation pour faire un rĂ©sumĂ© sur l’état de nos recherches actuelles et faire un point : poursuite ou arrĂȘt des pistes, aspects positifs et nĂ©gatifs de l’utilisation de ces ingrĂ©dients. → rĂ©union annulĂ©e :( start up n’a pas le temps 04/11 : rĂ©union n°5 en zoom Fermeture de 3 axes de recherche sur 4 : rĂ©sumĂ© des recherches faites jusqu’à cette date sur les huiles essentielles et hydrolats, les super-aliments (graines de cĂ©rĂ©ales (tournesol, lin, chia), plantes : orties, argousier et chanvre, edamame). Poursuite et amĂ©lioration de l’axe des produits de fermentation (drĂšche et levure de biĂšre). On dĂ©finit un projet plus prĂ©cis : dĂ©velopper une pĂąte qui sert pour la base de la sauce des Green Boc’ Casa Veg’ ou bien pouvant ĂȘtre commercialisĂ©e par Casa Veg’ pour d’autres industriels. Nouvelles recherches Ă  faire sur : les procĂ©dĂ©s de fermentation et lactofermentation, les propriĂ©tĂ©s organoleptiques et technico physiques de l’oeuf afin de pouvoir le remplacer dans les prĂ©parations matrice protĂ©ique des produits de fermentation (drĂšche, levure de biĂšre) les champignons locaux (parfois peu connus) riches en protĂ©ines avec une matrice intĂ©ressante d’un point de vue physique gĂ©ographie des ressources possibles 10/11 : rĂ©union n°6 en zoom, avec le groupe mer Topo fait par la start-up sur le processus de l’innovation, des diffĂ©rentes pistes Ă  aborder lors du mapping (gĂ©ographie, marchĂ©, nutrition, propriĂ©tĂ©s de l’aliment), les diffĂ©rentes problĂ©matiques rencontrĂ©es, et les solutions possibles Ă  apporter. PrĂ©sentation et mise en pratique de la matrice de calcul de l’indice chimique pour la teneur en acide aminĂ©s des sources protĂ©iques trouvĂ©es afin de pouvoir les associer dans un plat PrĂ©paration Ă  la rĂ©union de mi-parcours du PST. → DĂ©finition et rĂ©partition des diffĂ©rents nouveaux axes de recherche dans le groupe et poursuite des recherches. 21/11 : RĂ©union de mi-parcours du projet PrĂ©sentation orale de 5min sur l’avancĂ©e du projet et des recherches : introduction de la startup, mise en contexte du projet : adĂ©quation du projet avec les valeurs de la startup : Ă©cologie, circuit court, tendance Ă  la consommation du vĂ©gĂ©tal, repas dĂ©jĂ  prĂȘts. Composition du plat et de la sauce. objectifs souhaitĂ©s et problĂ©matiques : envie d’augmenter la valeur nutritionnelle de la sauce pour optimiser les besoins en protĂ©ines et en acides aminĂ©s essentiels. Par consĂ©quent, la problĂ©matique est de trouver les aliments issus du rĂšgne vĂ©gĂ©tal, locaux et qui peuvent rĂ©pondre Ă  la problĂ©matique. diffĂ©rents axes de recherches mis en Ă©vidence : les protĂ©ines vĂ©gĂ©tales, les graines et olĂ©agineux, les huiles essentielles et hydrolats et enfin les co-produits de fermentation (permettent de limiter le gaspillage en utilisant des co-produits de fermentation souvent jetĂ©s et non utilisĂ©s). perspectives et poursuite du projet : poursuite du projet sur l’axe des co-produits de fermentation pour des raisons tendancielles sur le marchĂ©, mais aussi Ă©cologique avec la revalorisation de produits considĂ©rĂ©s comme dĂ©chets. Objectif de retrouver les propriĂ©tĂ©s physico-chimiques de l'Ɠuf pour rĂ©aliser la constitution de la pĂąte “universelle” de la sauce Ă  intĂ©grer Ă  plusieurs plats. Discussion autour du projet : propositions de diffĂ©rentes pistes d’amĂ©lioration et de recherches comme les okara de laits vĂ©gĂ©taux, les champignons sĂ©chĂ©s, les tourteaux olĂ©agineux (aussi des co-produits d’agriculture Ă  revaloriser), la lactofermentation ou autre types de fermentation. Avec la startup, redĂ©finition d’axes de recherches pour la pĂąte, et poursuite des veilles bibliographiques rĂ©alisĂ©es. Objectif : trouver un protocole expĂ©rimental Ă  mettre en place pour trouver les meilleures caractĂ©ristiques de la pĂąte. Recherche des matrices protĂ©iques et en acides aminĂ©s des produits pour pouvoir faire les meilleures associations possibles entre les produits et avoir la meilleure composition. → Tester les processus de fermentation sur l’okara, le shiitake, les tourteaux : seule : produit + eau et sel avec la mĂ©thode de la fermentation du sakĂ© avec ajout de bactĂ©ries pour la lactofermentation 28/11 : rĂ©union zoom n°7 : choix des protocoles d’expĂ©rimentations → SchĂ©ma des expĂ©riences : 30/11 : rĂ©union zoom n°8 Mise Ă  jour du protocole d’expĂ©rimentation : Fermentation selon les protocoles trouvĂ©s pour chaque ingrĂ©dient tourteau de noix levain de farine de blĂ© (contrĂŽle positif) levain de tourteaux sans fermentation (contrĂŽle) shiitake : lactofermentation avec lactobacillus sans fermentation (contrĂŽle) autre drĂšche : avec ajout de micro organismes (bacillus) qui produisent des enzymes spĂ©cifiques capables de dĂ©grader les fibres prĂ©sentes dans la drĂšche. avec ajout d’enzymes spĂ©cifiques supplĂ©mentaires : laccases ou amylases sans fermentation (contrĂŽle) → avec chacune des 3 conditions de fermentation et de contrĂŽle : rĂ©alisation d’un test de Bradford (ou autre test capable de mesurer la teneur en protĂ©ine) Avec le levain de tourteaux de noix : ajout de chaque ingrĂ©dient individuellement selon des proportions calculĂ©es en fonction de l’indice chimique (pour avoir une complĂ©mentaritĂ© parfaite de tous les acides aminĂ©s essentiels). → rĂ©alisation d’un test de Bradford pour la teneur en protĂ©ines Ă  chaque ajout d’ingrĂ©dient (shiitake, drĂšche, cĂ©rĂ©ale, lĂ©gumineuse) → test organoleptique (texture, goĂ»t, couleur
) Ă  chaque ajout d'ingrĂ©dients pour adapter les proportions possibles aussi. + Trouver le sourcing de tous les Ă©lĂ©ments nĂ©cessaires pour faire les expĂ©rimentations 01/12 : Discussion avec la start-up, par soucis de temps et d’approvisionnement, on dĂ©cide de laisser de cĂŽtĂ© le tourteau Ă©galement et de garder la drĂšche et le shiitake qui sont faciles Ă  sourcer. Appel avec La Pintine pour parler du projet, ils sont emballĂ©s et veulent bien goĂ»ter pour Ă©ventuellement faire un partenariat avec casa veg. 02/12 : Discussion avec la start-up : pour des raisons Ă©conomiques, abandon de la fermentation du shiitake avec des souches lactobacillus plantarum et remplacement par une fermentation avec des grains de kĂ©fir d’eau (plus abordable) et par des starter de tempeh. Nouveau schĂ©ma d’expĂ©rimentation : 06/12 : discussion avec la startup RĂ©cupĂ©ration de la farine de drĂšche en magasin. Pas de farine de drĂšche disponible dans le point de vente mentionnĂ© par La Pintine (font de la farine de drĂšche dans le 93). Abandon de la piste de la fermentation de la drĂšche avec Bacillus Subtilis pour des raisons Ă©conomique et de temps au niveau logistique des commandes et des durĂ©es de livraison. Pour la drĂšche : fermentation en levain, fermentation avec du kĂ©fir 7%, fermentation tempeh 1% et contrĂŽle sans ajout de souche de fermentation. 07/12 : dĂ©but de la fermentation de la drĂšche en levain : 40 g de farine + 40 mL d’eau + 1 cĂ s de miel et 20 g de farine et 20 mL d’eau dans des pots plus petits 1 cĂ c de miel + contrĂŽle positif de levain fait Ă  la farine de blĂ© dans les mĂȘmes conditions (40 g de farine et 40 mL d’eau et 20 g de farine et 20 mL d’eau). Conservation des levains Ă  tempĂ©rature ambiante, et rĂ©hydratation chaque jour jusqu’à ce qu’il double de volume. 09/12 : rĂ©union en prĂ©sentiel Ă  la fac avec la startup et les 2 groupes du projet Casa Veg Terre et Mer. Revue des diffĂ©rents protocoles prĂ©vus, des quantitĂ©s Ă  utiliser et des diffĂ©rentes conditions et rĂ©plicats. 12/12 - 16/12 : RĂ©alisation des diffĂ©rents protocoles de fermentations sur la farine de drĂšche et le shiitake sĂ©chĂ© selon les conditions ci-dessus. 13/12 : au Fablab Mise Ă  fermenter des diffĂ©rentes conditions : StĂ©rilisation des erlenmeyers utilisĂ©s pour la fermentation pendant 5 min dans de l’eau bouillante. Mixage du shiitake sĂ©chĂ© jusqu’à obtention de la farine : 3 sachets de 40 g → 120 g de farine obtenue MĂ©lange de 120 g de farine de shiitake avec de l’eau jusqu’à obtenir la consistance d’une pĂąte → ajout 800 mL d’eau = poids final : 918,30 g. RĂ©partition de 35 g de cette pĂąte dans 9 erlenmeyers (3 rĂ©plicats pour les 3 conditions) Pour la condition kĂ©fir : ajout de 7% de kĂ©fir = 2,45 g de kĂ©fir par erlenmeyer Pour la condition tempeh : ajout de 1% de tempeh = 0,35 g de tempeh par erlenmeyer Pour la condition contrĂŽle : pas d’ajout d’agent de fermentation Fermeture des erlenmeyers avec du papier. MĂ©lange de 120 g de farine de drĂšche avec de l’eau jusqu’à obtenir la consistance d’une pĂąte → ajout de 260 mL d’eau = poids final : RĂ©partition de 35 g de cette pĂąte dans 9 erlenmeyers (3 rĂ©plicats pour les 3 conditions) Pour la condition kĂ©fir : ajout de 7% de kĂ©fir = 2,45 g de kĂ©fir par erlenmeyer Pour la condition tempeh : ajout de 1% de tempeh = 0,35 g de tempeh par erlenmeyer Pour la condition contrĂŽle : pas d’ajout d’agent de fermentation Fermeture des erlenmeyers avec du papier. ⇒ Fermentation pendant 48h (dĂ©but le 13/12 Ă  16H) 14/12 : au fablab RĂ©alisation de la gamme Ă©talon pour la dĂ©termination de la teneur en protĂ©ines selon la mĂ©thode de Bradford : 15/12 : au fablab RĂ©alisation des tampons pour l’extraction protĂ©ique → pas de matĂ©riel mis Ă  disposition, donc pas de possibilitĂ© de rĂ©aliser le tampon en amont. Mise en trempage des pois chiches pour la cuisson le lendemain. 16/12 : au fablab Fin des fermentations de 48h pour le shiitake et la drĂšche. Des contaminations de mycĂ©lium prĂ©sentes dans les conditions de drĂšche avec du tempeh et dans le contrĂŽle de la drĂšche → non exploitable. RĂ©alisation du tampon d’extraction dans la glace : Tampon phosphate 100mM, pH 7,8 + 0,1 mM EDTA + 1,25 mM PEG 4000. Puis ajout DTT Dans les mortiers : mise de 3mL de tampon d’extraction froid et une pincĂ©e de PVP, et broyage rapide avec 1 g de produit de fermentation. RĂ©partition des broyats dans 2 tubes eppendorf 1,5mL. Centrifugation 11000 rpm pendant 15 min Ă  4°C RĂ©cupĂ©ration du surnageant dans des tubes eppendorf 1,5 mL et conservation dans la glace. DĂ©but d’extraction protĂ©ique sur des colonnes Sephadex G25 P10, mais finalement non utilisĂ©e : → Directement dosage des protĂ©ines Ă  partir du surnageant par spectrophotomĂ©trie : Volume surnageant : 5 ”L Volume d’eau : 795 ”L Volume rĂ©actif de Bradford : 200 ”L RĂ©alisation de 2 rĂ©plicats pour chaque condition (manque de temps supplĂ©mentaire) Ă  une absorbance de 595 nm. RelevĂ© des DO pour chaque condition. Cuisson des pois chiche pendant 1h, et du quinoa pendant 15 min. RĂ©alisation d’une pĂąte Ă  partir de la meilleure condition de fermentation (celle contenant le plus de protĂ©ine), Ă  diffĂ©rentes proportion des mĂ©langes de drĂšche, shiitake, pois chiche et quinoa : 10% drĂšche + 15% shiitake + 25% pois chiche + 50% quinoa 10% drĂšche + 10% shiitake + 30% pois chiche + 50% quinoa 10% drĂšche + 5 % shiitake + 35% pois chiche + 50% quinoa 21/12 : Analyse des rĂ©sultats des DO obtenues pour le shiitake, la drĂšche et les fermentations. Augmentation de la quantitĂ© en protĂ©ine uniquement pour le shiitake avec une fermentation au kĂ©fir par rapport au contrĂŽle. Pas d’augmentation de la teneur en protĂ©ine pour la drĂšche fermentĂ©e ni pour le levain. PossibilitĂ© de refaire les relevĂ©s de DO et de la gamme Ă©talon Ă  la rentrĂ©e pour vĂ©rifier les donnĂ©es, car elles ont Ă©tĂ© rĂ©alisĂ©es rapidement. Depuis le 21/12 : rĂ©daction du mĂ©moire.Conservation des algues lactofermentĂ©es - CasaVeg 2 Projet rĂ©alisĂ© en Co-Working avec CasaVeg par : Flora Desse, Luna Guillon, Lucie Mary, Estelle Pires DĂ©termination de la valeur nutritionnelle de diffĂ©rentes algues lactofermentĂ©es aux grains de kĂ©fir PROJET SCIENTIFIQUE ET TECHNIQUE “Nutrition and Health” Septembre 2022 - Janvier 2023 CARNET DE BORD Start-up Partenaire : Casa Veg’ PrĂ©sentĂ© par Flora DESSE, Luna GUILLON, Lucie MARY & Estelle PIRES Master de Sciences et Technologies Mention Biologie IntĂ©grative et Physiologie Parcours-type : Nutrition, QualitĂ© et SantĂ© Responsables du parcours : Pr. VĂ©ronique BĂ©rĂ©ziat & Pr. Khadija El Hadri-Zegouagh ReprĂ©sentants de la BU : M. Julien Prost et Mme. Lorette Bonnetain 24 aoĂ»t 2022 PremiĂšre prise de contact avec Odile CastagnĂ© (crĂ©atrice de la start-up) et HĂ©lĂšne Vanlerberghe (alternante, ancienne M2 NQS) via zoom. PrĂ©sentation de la start-up et du projet 7 sept. 2022 Rencontre physique au centre oĂč se trouve la start-up avec Odile CastagnĂ© et HĂ©lĂšne Vanlerberghe. Discussion autour du projet : dĂ©finition des axes de recherche Premiers axes de recherche : Histoire de la consommation des algues - La filiĂšre algues en France et dans le Monde - Les algues bretonnes - Les algues mĂ©diterranĂ©ennes 8 sept. 2022 au 14 sept. 2022 Recherches bibliographiques sur nos axes de recherche. PrĂ©paration d’un compte-rendu avec : “Executive Summary” et dĂ©tails pour chaque axe. Le CR est envoyĂ© la veille de la rĂ©union Ă  HĂ©lĂšne Vanlerberghe et dĂ©posĂ© sur un drive partagĂ© 15 sept. 2022 RĂ©union avec HĂ©lĂšne Vanlerberghe via zoom. Discussion autour de nos recherches Orientation vers d’autres axes (La composition des algues - Le rĂ©gime mĂ©diterranĂ©en - Le rĂ©gime d’Okinawa - Le pouce-pied) et approfondissements des premiers 16 sept. 2022 au 28 sept. 2022 Recherches bibliographiques sur nos axes de recherche. PrĂ©paration d’un compte-rendu avec : “Executive Summary” et dĂ©tails pour chaque axe. Le CR est envoyĂ© la veille de la rĂ©union Ă  HĂ©lĂšne Vanlerberghe et dĂ©posĂ© sur un drive partagĂ© 29 sept. 2022 RĂ©union physique avec Odile CastagnĂ© et HĂ©lĂšne Vanlerberghe. Discussion autour de nos recherches Orientation vers d’autres axes (L’iode - La lactofermentation - Profils en acides aminĂ©s des algues - Les plantes marines - Etang de Thau) et approfondissements des autres 30 sept. 2022 au 5 oct. 2022 Recherches bibliographiques sur nos axes de recherche. PrĂ©paration d’un compte-rendu avec : “Executive Summary” et dĂ©tails pour chaque axe. Le CR est envoyĂ© la veille de la rĂ©union Ă  HĂ©lĂšne Vanlerberghe et dĂ©posĂ© sur un drive partagĂ© 6 oct. 2022 RĂ©union avec HĂ©lĂšne Vanlerberghe via zoom. Discussion autour de nos recherches DĂ©finition des axes Ă  prĂ©senter sur un Powerpoint pour la prochaine rĂ©union Approfondissements des axes : Algues en Bretagne et MĂ©diterranĂ©e - Conservation des algues - Lactofermentation 7 oct. 2022 au 25 oct. 2022 Recherches bibliographiques sur nos axes de recherche et prĂ©paration de la prĂ©sentation Powerpoint pour la prochaine rĂ©union. PrĂ©paration d’un compte-rendu avec : “Executive Summary” et dĂ©tails pour chaque axe. Le CR est envoyĂ© la veille de la rĂ©union Ă  HĂ©lĂšne Vanlerberghe et dĂ©posĂ© sur un drive partagĂ© PrĂ©paration d’une prĂ©sentation Powerpoint sur les axes : Histoire de la consommation des algues (utilisation ancestrale en Asie, place des algues en France, rĂ©gime nordique) - La filiĂšre des algues (principaux usages des algues en France, projet “porphyra”, benchmark des fournisseurs) - La sĂ©lection des algues (tableau des qualitĂ©s nutritionnelles des algues dĂ©shydratĂ©es, comparaison algues dĂ©shydratĂ©es vs. fraĂźches, recettes, comparaison rĂ©gimes mĂ©diterranĂ©en et Okinawa, algues et plantes de MĂ©diterranĂ©e, Ă©tang de Thau, spiruline) 26 oct. 2022 RĂ©union physique avec Odile CastagnĂ© et HĂ©lĂšne Vanlerberghe. PrĂ©sentation du Powerpoint et discussion autour de nos recherches 10 nov. 2022 RĂ©union avec HĂ©lĂšne Vanlerberghe + groupe Terre via zoom. Mise au point calcul de l’indice chimique PrĂ©sentation “Innover en alimentaire” Discussion autour de la rĂ©union de mi-parcours du 21 nov. 2022 avec l’équipe pĂ©dagogique du master 11 nov. 2022 au 20 nov. 2022 Recherches bibliographiques sur nos axes de recherche et prĂ©paration de la rĂ©union de mi-parcours. Recherches sur : mĂ©lange de paillettes d’algues avec lĂ©gumineuses et olĂ©agineux Recherches sur : conservation des algues fraĂźches et dĂ©shydratĂ©es Recherches sur : la lactofermentation des algues Recherches sur : profils en acides aminĂ©s de la spiruline PrĂ©paration des informations et du diaporama pour la rĂ©union de mi-parcours 21 nov. 2022 RĂ©union de mi-parcours au Fablab de SU en prĂ©sence d’HĂ©lĂšne Vanlerberghe, Odile CastagnĂ© (CasaVeg’) et Khadija El-Hadri, Christophe Bailly, Isabelle Guillas (Ă©quipe pĂ©dagogique du master). PrĂ©sentation de 5 min : CasaVeg’ - ProblĂ©matique et Objectifs - État d’avancement - Perspectives Discussion : demande de prĂ©cisions sur la prĂ©sentation de la startup, contact Algorapolis (producteur de spiruline Ă  Paris), prĂ©cision sur la pollution des algues, prĂ©cision sur les bienfaits des algues, prĂ©cision sur l’explication de l’intĂ©gration des algues au plat 21 nov. 2022 RĂ©union rapide de dĂ©brief post-mi-parcours et prochains objectifs avec Odile CastagnĂ© et HĂ©lĂšne Vanlerberghe + groupe Terre. Poursuite des recherches sur les procĂ©dĂ©s d’optimisation de la biodisponibilitĂ© des nutriments dans les algues Programmation d’une rĂ©union le 28 nov. 2022 pour prĂ©senter le plan expĂ©rimental 22 nov. 2022 Recherches bibliographiques. Recherches sur : biodiversitĂ© des algues et intĂ©rĂȘt Ă©cologique de l’aquaculture intĂ©grĂ©e Calculs des indices chimiques et complĂ©mentaritĂ© en acides aminĂ©s algues/lĂ©gumineuses/cĂ©rĂ©ales Recherches sur : le profil en acides aminĂ©s de l’oeuf, l’utilisation de l’oeuf en cuisine, les substituts de l’oeuf Recherches sur : fournisseurs de spiruline le plus prĂšs possible (abandon Algorapolis → liquidation judiciaire) Recherches sur : la crise marine 22 nov. 2022 Point tĂ©lĂ©phonique avec HĂ©lĂšne Vanlerberghe en fin de journĂ©e (Estelle Pires). Faire le calcul des proportions lĂ©gumineuses/cĂ©rĂ©ales/algues : quelle quantitĂ© d’algues Ă  mettre pour compenser les manques ? Essayer de trouver un producteur de spiruline au plus prĂšs de Paris : partir de Paris et Ă©largir le pĂ©rimĂštre petit Ă  petit Trouver les conditions de culture de la spiruline pour savoir si on peut en faire nous-mĂȘmes La criste marine a-t-elle un effet sur la santĂ© ? Est-elle intĂ©ressante dans l’écosystĂšme ? RĂ©flĂ©chir Ă  la mise en place de tests organoleptiques 23 nov. 2022 Recherches bibliographiques. Recherches sur : pollution et toxicitĂ© des algues (risques chimiques) Recherches sur : les lĂ©gumineuses et cĂ©rĂ©ales utilisĂ©es chez CasaVeg’ Recherches sur : l’utilisation des algues comme substrat de fermentation, les conditions optimales de fermentation des algues, Poursuite des recherches sur : la criste marine Recherches sur : les conditions de culture de la spiruline Premier appel avec le contact de Bord Ă  Bord fourni par Odile CastagnĂ© : pas de rĂ©ponses mais direction vers d’autres contacts 23 nov. 2022 Point tĂ©lĂ©phonique avec HĂ©lĂšne Vanlerberghe en fin de journĂ©e (Luna Guillon). Abandon de la criste marine Comment amĂ©liorer la qualitĂ© de la spiruline ? Recherches sur l’association entre algues et okara Les algues qui nous intĂ©ressent sont-elles produites en aquaculture intĂ©grĂ©e ? La texture "gluante" de l’algue rĂ©hydratĂ©e peut ĂȘtre intĂ©ressante 24 nov. 2022 Recherches bibliographiques. Recherches sur : pollution et toxicitĂ© des algues (risques microbiologiques et physiques) Recherches sur : la lactofermentation des algues et des lĂ©gumes, les bienfaits de cette lactofermentation Mise en place de protocoles de fermentation : avec sel uniquement, avec des grains de kĂ©fir Second appel avec Bord Ă  Bord : peu de rĂ©ponses, demande de poser les questions par mail → envoi du mail avec l’ensemble des questions, notamment la demande des fiches techniques des algues Recherches sur : rĂ©gime danois → 5g d’algues/jour seulement Ă  cause de la concentration en iode 25 nov. 2022 Point tĂ©lĂ©phonique avec HĂ©lĂšne Vanlerberghe en dĂ©but de journĂ©e (Lucie Mary). Trouver des informations sur la ferme Ă  spiruline proche de Cherbourg Trouver un pourcentage de sucre prĂ©sent dans les algues suffisant pour la fermentation Mettre en place le plan expĂ©rimental pour le GreenLab : que teste-on et pourquoi ? Quelles conditions ? 25 nov. 2022 Recherches bibliographiques. RĂ©ponse au mail : rĂ©ponses obtenues pour quelques questions, pas de fiches techniques disponibles donc pas de valeurs de concentrations pour les diffĂ©rents acides aminĂ©s des algues proposĂ©es En Bretagne : culture de wakamĂ© et laitue de mer, pour le reste il s’agit d’algues sauvages cueillies Ă  la main Des analyses de contamination des algues sont rĂ©alisĂ©es et publiĂ©es rĂ©guliĂšrement Fermentation avec grains de kĂ©fir sans sel possible 25 nov. 2022 Point tĂ©lĂ©phonique avec HĂ©lĂšne Vanlerberghe en fin de journĂ©e (Flora Desse). Qu’est-ce qui permet Ă  un ingrĂ©dient d’ĂȘtre fermentescible ? Quelle est la diffĂ©rence entre les ingrĂ©dients fermentescibles et non fermentescibles ? Poursuivre le plan expĂ©rimental pour la rĂ©union du 28 nov. 2022 28 nov. 2022 RĂ©union avec Odile CastagnĂ© et HĂ©lĂšne Vanlerberghe via zoom. PrĂ©sentation de l’avancement des recherches Ă  Odile CastagnĂ© PrĂ©sentation des protocoles de fermentation des algues : avec sel uniquement, avec grains de kĂ©fir et avec L.plantarum ProcĂ©dĂ© de lactofermentation des algues par grains de kĂ©fir → validĂ© comme innovant Explication de la pĂąte Ă  dĂ©velopper : mĂ©lange de 3 Ă©lĂ©ments dont l’algue pour former une pĂąte utilisable pour former Ă  la fois une sauce et Ă  la fois un aliment solide (ex. falafel) Faire une fiche technique d’élaboration de la pĂąte : Ă©tablir un trio, les temps de cuissons et les procĂ©dĂ©s Ă  mettre en place 29 nov. 2022 au 30 nov. 2022 Recherches et mise en place de la fiche technique. SĂ©lection de 3 trios pour la pĂąte : spiruline/okara de soja/quinoa, spiruline/okara de soja/riz blanc, spiruline/okara de soja/sarrasin, laitue de mer/okara de soja/sarrasin Protocoles de fabrication de l’okara (pour la pĂąte) et du lait de soja (pour la sauce) Protocoles de fermentation de la laitue de mer (avec sel, grains de kĂ©fir et L.plantarum) Sourcing des fournisseurs de chaque ingrĂ©dient IdĂ©es de recettes : sauce avec mĂ©lange pĂąte + lait de soja ; boulette type “arancini” marin 1 dĂ©c. 2022 RĂ©union avec HĂ©lĂšne Vanlerberghe en dĂ©but de journĂ©e via zoom. Abandon de l’okara → trop peu intĂ©ressant face aux autres lĂ©gumineuses SĂ©lection des trios : spiruline/pois chiches/riz brun et laitue de mer/pois chiches/riz brun Faire les calculs d’indices chimiques des duos : algue/pois chiches et algues/riz brun La fermentation est-elle possible sur la spiruline dĂ©shydratĂ©e → rĂ©hydratĂ©e ? Etablir le schĂ©ma des expĂ©riences : rĂ©sumĂ© visuel 1 dĂ©c. 2022 Recherches, calculs et rĂ©alisation des schĂ©mas d’expĂ©riences. Evaluation des complĂ©mentaritĂ©s entre algue/pois chiches et algues/riz brun Fermentation sur spiruline dĂ©shydratĂ©e → rĂ©hydratĂ©e validĂ©e Recherches sur : lactofermentation par L.plantarum → problĂ©matique de conditions de culture trop contraignantes Discussion avec HĂ©lĂšne de la fermentation via des starter de tempĂ© Mise au point et envoi des schĂ©mas d’expĂ©rimentations suivant : 2 dĂ©c. 2022 RĂ©daction de la nouvelle fiche technique. Protocoles de fermentation de la laitue de mer et de la spiruline aux grains de kĂ©fir (3 conditions) Protocoles de fermentation de la laitue de mer et de la spiruline aux starter de tempĂ© (3 conditions) Protocole de mesure de la concentration protĂ©ique des algues (mĂ©thode de Bradford) Recette pour la pĂąte (diffĂ©rents mĂ©langes) Questionnaire organoleptique 13 dĂ©c. 2022 au 16 dĂ©c. 2022 ExpĂ©rimentations au Greenlab de Sorbonne UniversitĂ© 13 dĂ©c. 2022 Lancement des fermentations pour 48h d’incubation. Formation des pĂątes d’algues : 100g de spiruline en poudre + 220 mL d’eau de source et 100g de laitue de mer fraĂźche + 200 mL d’eau de source Fermentation des pĂątes de laitue de mer et de spiruline aux grains de kĂ©fir (x3) Fermentation des pĂątes de laitue de mer et de spiruline aux starter de tempĂ© (x3) 14 dĂ©c. 2022 et 15 dĂ©c. 2022 Passage au GreenLab pour surveiller les fermentations et prĂ©parer les tampons d’extraction des protĂ©ines. Fermentation : 24h Fermentation : 48h 16 dĂ©c. 2022 ArrĂȘt des fermentations, extractions des protĂ©ines et dosages des protĂ©ines par la mĂ©thode de Bradford + analyses organoleptiques des pĂątes. Extraction des protĂ©ines par broyage pour toutes les conditions Mesure de la concentration protĂ©ique des algues (dosage via la mĂ©thode de Bradford) PrĂ©paration de la pĂąte avec riz basmati complet et pois chiche Questionnaire organoleptique ArrĂȘt des fermentations et extractions des protĂ©ines par broyage Mesure de la concentration protĂ©ique des algues via un dosage par la mĂ©thode de Bradford PrĂ©paration des pĂątes algues/riz basmati complet/pois chiches + analyses organoleptiques 17 dĂ©c. 2022 au 18 janv. 2023 RĂ©daction et envoi du mĂ©moire ainsi que de ce carnet de bord + prĂ©paration de la soutenance orale du 26 janv. 2023. Analyses statistiques des rĂ©sultats des dosages protĂ©iques : la fermentation de la spiruline en poudre par les grains de kĂ©fir augmente significativement la concentration protĂ©ique de la cyanobactĂ©rie. Les autres rĂ©sultats ne sont pas significatifs. 26 janv. 2023 Soutenance orale du projet en prĂ©sence d’Odile CASTAGNE et HĂ©lĂšne VANLERBERGHE (startup Casa Veg’) et VĂ©ronique BEREZIAT et Christophe BAILLY (rapporteurs et membres de l’équipe pĂ©dagogique). FIN DU PROJET. Kombucha de fruits - Archipel Projet rĂ©alisĂ© en Co-Working avec Archipel par : Juliette Bayot, Karen Kayat, Jade Abittan, Aleksandar Mitrovic, Lucie Poupineau RĂ©alisation d'un kombucha sans thĂ©, bio, local et de saison NOVEMBRE : LUNDI 14 RĂ©alisation de kombucha Ă  partir de feuilles de framboisier, verveine, thĂ© MERCREDI 16 VĂ©rification du pH VENDREDI 18 VĂ©rification du pH JEUDI 24 RĂ©alisation d’une deuxiĂšme production de kombucha Ă  partir de feuilles de framboisier, verveine et thĂ© en duplicats. Augmentation de la durĂ©e d’infusion de 10 minutes pour les feuilles de framboisier et verveine Prise du pH J-0 LUNDI 28 Pour la premiĂšre production de kombucha: J-14 VĂ©rification du pH Titrage d’aciditĂ© (mesurer l’aciditĂ© totale) Suivi de l’alcool (distillation fractionnĂ©e + mesurer le taux d’alcool) Pour la deuxiĂšme production de kombucha: J-4 VĂ©rification du pH DÉCEMBRE : RĂ©daction du mĂ©moire JEUDI 1er DeuxiĂšme production J-7: VĂ©rification du pH Titrage d’aciditĂ© (mesure de l’aciditĂ© totale) JEUDI 8 Pour la deuxiĂšme production de kombucha: J-14 VĂ©rification du pH Titrage d’aciditĂ© (mesurer l’aciditĂ© totale) Suivi de l’alcool (distillation fractionnĂ©e + mesurer le taux d’alcool) JANVIER : RĂ©daction du mĂ©moire MARDI 10 RĂ©alisation d’une derniĂšre production de kombucha Ă  partir de feuilles de framboisier et de verveine Prise du pH MERCREDI 18 Mise en bouteille des kombuchas rĂ©alisĂ©s le 10/01 đŸ§« UE 564 dĂ©marche expĂ©rimentale (Bio) Quels sont les effets d'une induction d'oestrogĂšne et de progestatif de synthĂšse sur le comportement et la survie du gammare ? Le contexte de notre expĂ©rience : L'Ă©chec du nano-plastique : Notre premier sujet ne se concentrait pas sur la pollution des riviĂšres aux hormones sexuelles mais sur la fragmentation du microplastique de polyĂ©thylĂšne en nanoplastique par les gammares de l'Oise. Notre question s'originait dans l'article suivant : https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7393071/ Les auteurs remarquent qu'une espĂšce de gammare : Gammarus duebeni, est capable de fragmenter le microplastique (polyĂ©thylĂšne) en nano plastique. Ce phĂ©nomĂšne pose des enjeux environnementaux importants car le nano plastique est toxique et peut s'infiltrer dans les cellules.AprĂšs avoir commencĂ© Ă  mettre en place le plan expĂ©rimental et fais des recherches sur les gammares (ou les pĂ©cher, comment les stocker et les maintenir en vie les temps de l'expĂ©rience...) nous avons abordĂ© plusieurs questions pratiques concernant les techniques de mesures de la quantitĂ© de plastique Ă  la fin de l'expĂ©rience. Ce point a Ă©tĂ© le premier problĂšme dans la mise en place de notre plan expĂ©rimental car nous avions plusieurs idĂ©es en thĂ©orie (utiliser un filtre Ă  nano ou micro particules, observation aprĂšs Ă©vaporation ou centrifugation), mais dont nous ne connaissons pas l'efficacitĂ©. De plus nous n'Ă©tions pas sĂ»r d'avoir le matĂ©riel nĂ©cessaire au greenlab. Pour tester nos techniques, il a fallu produire nous mĂȘme le microplastique. Pour cela, nous avons dĂ©coupĂ© Ă  la main le haut de bidons de polyĂ©thylĂšne (que nous rĂ©utiliserons plus tard pour notre expĂ©rience sur les hormones sexuelles stĂ©roĂŻdiennes) avant de les broyer. Pour faire cela, nous comptions utiliser un ultra-turax, qui fut un Ă©chec. N'ayant pas rĂ©ussi Ă  produire du micro plastique ni Ă  rĂ©pondre Ă  toutes nos problĂ©matiques et ayant dĂ©jĂ  perdu du temps, nous avons dĂ©cidĂ© de modifier notre sujet pour s'intĂ©resser Ă  l'effet d'hormones sexuelles (ƓstrogĂšne + progestatif de synthĂšse) sur le comportement d'une population de gammares de l'Oise. Plan expĂ©rimental : Nous utilisons des pilules contraceptives de concentration de 30 microgrammes d'oestradiol par pilule. La concentration d'Ɠstradiol dans chaque cuve est la variable indĂ©pendante de nature quantitative discrĂšte. 3 conditions expĂ©rimentales sont testĂ©es : - ContrĂŽle : aucune modification des paramĂštres - Low : Faible concentration d'oestradiol (7,5 microg/L soit 1/2 pilule par cuve) - High : Forte concentration d'oestradiol (75 microg/L soit 10x plus soit 5 pilules par cuve) Chaque condition est rĂ©pliquĂ©e 6 fois, nous avons donc un total de 18 cuves. O utre la concentration d'oestradiol  elles ont toutes les mĂȘmes paramĂštres :-2L d'eau d'Oise -OxygĂ©nation par bulleur - 6 gammares ( 4 choisis alĂ©atoirement et 1 couple prĂ©sentant un comportement prĂ©-copulatoire : gammare mĂąle intelligent au dos d'une femelle) -3 granules broyĂ©es de nourriture pour crevette Les cuves sont disposĂ©es de sortes Ă  ce qu'aucune ne soit Ă  cĂŽtĂ© d'une condition similaire afin de randomiser et d'Ă©viter que les facteurs extĂ©rieurs n'influencent uniquement les cuves d'une condition, induits par une fenĂȘtre (lumiĂšre et aĂ©ration ) et une porte (prĂ©sence humaine) Nous avons fait un relevĂ© de rĂ©sultats Ă  3 reprises, chacune espacĂ©es d'une semaine et sans condition modificatrice Ă  part le rajout de nourriture. Cela nous permet d'observer l'Ă©volution de la modification du comportement des gammares au cours du temps. Dates des relevĂ©s : 24/11, 01/12, 08/12 Nous observons 3 variables dĂ©pendantes  -Survie des gammares (quantitative discrĂšte ) -Temps de comportement prĂ©-copulatoire ( quantitative continue ) -MobilitĂ© ( quantitative discrĂšte ) Protocole : PrĂ©paration de l'expĂ©rience : Pour commencer, nous avons pĂȘchĂ© les gammares dans l'Oise Ă  Orry-la-Ville et nous avons rĂ©cupĂ©rĂ© l'eau (18 L pour les cuves + quelques litres en plus pour rĂ©aliser les mesures). Nous avons utilisĂ© 18 bidons de polyĂ©thylĂšne de 5L pour en faire des cuves. Pour cela, nous avons coupĂ© le haut. Puis nous avons rempli ces cuves de 2L d'eau de l'Oise chacune et nous les avons disposĂ©es (voir schĂ©ma du plan expĂ©rimental). Afin d'oxygĂ©ner les cuves, nous avons rĂ©alisĂ© un montage en sĂ©rie avec des bulleurs cylindriques. Les gammares ont Ă©tĂ© rĂ©partis alĂ©atoirement dans les cuves, avec 6 gammares par cuve dont un couple. Nous les avons nourris avec de la crevettes pour nourriture et nous avons ajoutĂ© les pilules : une demi pour les cuves condition Low et 5 pour les cuves condition High. Afin qu'elles puissent ĂȘtre rĂ©duites dans l'eau des cuves, nous avons broyĂ©s chacune de pilules en fine poudre Ă  l'aide d'un mortier que nous avons rincĂ© Ă  l'eau claire entre chaque cuve. Pilules contraceptives pour la condition High, avant et aprĂšs broyage par un mortier Mesures : Nous avons rĂ©alisĂ© les mĂȘmes mesures Ă  trois reprises : le 24 novembre et les 1er et 8 dĂ©cembre. Nous avons Ă  chaque fois comptĂ© le nombre de gammares morts par cuves, ainsi que le nombre de couples, c'est-Ă -dire les gammares qui sont associĂ©es ensemble. Pour filmer les dĂ©placements, nous avons utilisĂ© 6 boĂźtes en verre plastifiĂ© de 15×15 cm. Sous ces boĂźtes, nous avons placĂ© du papier quadrillĂ© avec des carreaux de 1×1 cm (technique provenant de Vellinger et al. 2012). Nous avons rempli les boĂźtes avec 100 mL d'eau de l'Oise que nous avions en plus. Nous avons transfĂ©rĂ© les gammares de 6 cuves dans les boĂźtes, tout en gardant la mĂȘme rĂ©partition que dans les cuves. Nous les avons agitĂ©s avec une baguette en bois le plus rapidement possible afin qu'ils ont subi les mĂȘmes perturbations puis nous avons attendu 1 minute avant de commencer l'enregistrement. Chaque vidĂ©o dure 1 minute. Nous avons refait la mĂȘme chose Ă  2 reprises pour avoir toutes les cuves. Nous avons ensuite regardĂ© les vidĂ©os et comptĂ© le nombre de carreaux que chaque gammare traverse en prenant un point de repĂšre sur le corps du gammare. Dispositif de prise de mesures de la mobilitĂ© des gammares pour 6 cuves Journal de bord : Rapport du 6/10/2022 et 12/10/2022 - 1Ăšre et 2Ăšme sĂ©ances en groupe Nous avons dĂ©fini les enjeux de notre premier plan d'expĂ©rience sur la dĂ©gradation du micro plastiquĂ© en nano. Nous avons aussi des recherches sur le mode de vie et la biologie des gammares : Les gammares vivent en eau douce pour la plupart des espĂšces, dans des eaux entre 2 et 20°C. Ils supportent bien les changements de pH (entre 4 et 9,9) et la pollution dans une certaine mesure. En revanche, ils ont besoin d'une eau bien oxygĂ©nĂ©e. Ils se nourrissent de dĂ©tritus organiques ou bien inorganiques, dont notamment des feuilles mortes. Les juvĂ©niles peuvent aussi ĂȘtre cannibales s'ils n'ont pas assez de nourriture. La reproduction Ă  lieu toute l'annĂ©e, chaque femelle peut avoir jusqu'Ă  6 "portĂ©es" par an. Les juvĂ©niles sont la forme majoritaire toute l'annĂ©e, leur croissance dure 2 Ă  3 semaines l'Ă©tĂ©, elle est ralentie en hiver. L'espĂ©rance de vie des gammares est entre 1 et 2 ans. La densitĂ© est maximale en septembre puis dĂ©croĂźt pour atteindre la minimale en fĂ©vrier-mars. Cela pose une limite : il ne faut pas trop tarder avant d'aller nous procurer nos gammares. Enfin nous avons dĂ©terminĂ© le lieu de pĂȘche : Le lavoir d'Orry-La-Ville en Picardie, alimentĂ©es par l'Oise. Rapport du 20/10/2022 Nous sommes rendus compte que notre expĂ©rience Ă©tait bien trop compliquĂ©e Ă  mener avec nos moyens et nos dĂ©lais, donc nous avons dĂ» modifier notre problĂ©matique. Nous avons dĂ©passĂ© la majoritĂ© de la sĂ©ance Ă  rĂ©flĂ©chir Ă  de nouvelles problĂ©matiques, mais qui pourraient toujours se concentrer sur la pollution aux microplastiques des riviĂšres. Nous avons reçu notre matĂ©riel :-18 cuves dans lesquelles nous allons contenir nos gammares-Des bulleurs que nous allons monter en sĂ©rie Rapport du 27/10/2022 Thomas est allĂ© faire du repĂ©rage et rĂ©cupĂšre des gammares dans le lavoir le matin mĂȘme. Au Fablab nous avons dĂ©coupĂ© transversalement le haut de nos 18 cuves, broyer les morceaux de polyĂ©thylĂšne ainsi rĂ©cupĂ©rĂ©s, puis grĂące Ă  l'ultra turax on crĂ©er des micro plastiques entre 20 et 40 microm (pour qu'ils passent dans nos filtres). Malheureusement l'ultra turax n'a pas fonctionnĂ© sur nos plastiques. Fautes de moyen nous avons du passer Ă  notre plan de secours et dĂ©cider d'une autre problĂ©matique Nous nous interessons maintenant Ă  l'effet d'une forte quantitĂ© d'ƓstrogĂšne sur une population de gammares. On en retrouve dans nos riviĂšres Ă  cause de la pollution par le rejet de pilules contraceptives et par nos urines. Chez les poissons, cette hormone entraĂźne des phĂ©nomĂšnes de fĂ©minisation. Moins d'Ă©tudes ont Ă©tĂ© accordĂ©es quant Ă  son effet sur les arthropodes mais on peut hypothĂ©tiser qu'il y en a et c'est ce que nous allons chercher Ă  prouver. Rapport du 27/10/2022 Nous nous sommes rendus au greenlab pour vĂ©rifier que les gammares pĂ©chĂ©es par Thomas Ă©taient toujours vivantes. Nous avons observĂ© leur comportement (comportement prĂ©-copulatoire, prĂ©sence de nouvelles larves, comportement d'accrochages ...) et j'ai testĂ© les protocoles (quelle taille de quadrillage ressort le mieux Ă  la vidĂ©o, plutĂŽt utiliser un quadrillage ou une alerte graduĂ©e pour la mesure en hauteur, les vidĂ©os filmĂ©es au tĂ©lĂ©phone sont elles exploitables..)AprĂšs tous ces tests, nous avons dĂ©couvert que l'expĂ©rience et la prise et l'analyse de donnĂ©es Ă©taient rĂ©alisables. Rapport du 17/11/2022 Lucie, Thomas et Hugo se sont donnĂ©s rendez-vous le matin pour prendre le ter vers la picardie : direction le lavoir ! Nous sommes partis avec 9 bidons de 5L, que nous avons chacun remplis d'eau du lavoir. Cela nous fait donc un total de 45L. Pour remplir nos 18 cuves de 2L il nous faut 36L, ce qui nous laisse 9L de cĂŽtĂ© pour les rinçages et les mesures.A l'aide  d'Ă©puisettes nous avons pĂ©chĂ©s les gammares. Ce n'Ă©tais pas difficile car une fois que nous retournions les feuilles mortes au fond du lavoir (profondeur de 30cm environ) des gammares par dizaine s'activaient. Il nous fallait un total de 108 gammares pour nos expĂ©riences. Afin d'en avoir de cĂŽtĂ© si il y avait des morts pendant le transport, des parasitĂ©s etc nous en avons pĂ©chĂ© environ 160. Nous les avons entreposĂ© dans 4 bidons diffĂ©rents pour Ă©viter les problĂšmes de densitĂ©. Nous devions prendre le ter en fin de matinĂ©es pour ramener nos gammares au campus pierre et marie curie, cependant tous les transports ont Ă©tĂ© interrompus, nous sommes restĂ©s bloquĂ©s et arrivĂ©s sur paris qu'aux environs de 21h. Nous avons entreposĂ©s les bidons chez Thomas pour la nuit. Capture de gammares au lavoir d'Orry-la-ville Rapport du 18/11/2022Nous avons ramenĂ©s les bidons au campus et disposĂ©s les gammares dans les 18 cuves. Aucune gammare n'est mort durant le transport (yes !). Nous avons pu lancĂ© le protocole : broyer les pilules et les introduire dans les cuves High et Low. Nous avons aussi nourris nos gammares Ă  l'aide de granules pour crevettes, elles aussi broyĂ©es au mortier. 26/11/2022, 01 et 08/12/2022Nous avons fait les mesures de rĂ©sultats selon le protocole dĂ©taillĂ© plus haut Mois de dĂ©cembreNous avons analysĂ© les vidĂ©os afin de crĂ©er notre jeu de donnĂ©e pour les analyses statistiques TRUCS A SUPP Notre question s'origine dans l'article suivant : https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7393071/ Les auteurs remarquent qu'une espĂšce de gammare : Gammarus duebeni, est capable de fragmenter le microplastique (polyĂ©thylĂšne) en nano plastique. Ce phĂ©nomĂšne pose des enjeux environnementaux importants car le nano plastique est toxique et peut s'infiltrer dans les cellules. La sĂ©ance du jour nous a permis de poser les principaux enjeux de notre sujet. Gammarus duebeni est une espĂšce que l'on retrouve plutĂŽt en Irlande et dans une moindre mesure dans les eaux douces britanniques. Nous nous demandons donc si ce phĂ©nomĂšne de fragmentation peut se retrouver chez d'autres espĂšces de gammares en Ile-de-France ou dans les environs. Pour tester notre hypothĂšse, nous avons dĂ©cidĂ© de rĂ©aliser une expĂ©rience. Bien que pour le moment encore en cours de rĂ©flexion, nous rĂ©ussirons Ă  introduire des gammares dans une cuve d'eau douce et leur donner du microplastique pendant une certaine durĂ©e puis doser le nano plastique ou microplastique par la suite. Afin de rĂ©aliser notre expĂ©rimentation, nous suivrons plusieurs indications dans l'article citĂ© plus haut. Plusieurs problĂ©matiques se dĂ©clinent de suite : - Les auteurs de l'article indiquent avoir cherchĂ© au sein mĂȘme des organismes la prĂ©sence de nano plastique, ce qui peut laisser entendre que ces particules restent piĂ©gĂ©es dans les paroisses digestives des gammares. Ceci est Ă  prendre en compte pour une analyse correcte de nos particules.Nous avons pensĂ© Ă  doser la prĂ©sence de nano plastique dans l'eau, hors peut-ĂȘtre que nous n'aurons rien si on ne prend pas en compte le fait que le plastique peut encore rĂ©sider dans les gammares. Pour cela, au moins deux possibilitĂ©s sont avancĂ©es : mesurer microplastique et nano plastique et en faire le rapport afin de voir s'il manque de la matiĂšre, ou bien lyser les gammares Ă  la fin de l'expĂ©rience pour rĂ©cupĂ©rer le nano plastique (nous n'avons pas encore trouvĂ© comment faire cela). - Il y a une grande diversitĂ© de classification du microplastique et nano plastique vis-Ă -vis des tailles que cela reprĂ©sente. Nous allons surement nous rĂ©fĂ©rer Ă  la classification utilisĂ©e dans l'article pour nos mesures.- Nous ne connaissons pas la dynamique du micro- et nano plastique dans l'eau, est-ce que cela se sĂ©dimente rapidement ? Cela dĂ©pend par ailleurs de l'induction ou non d'un courant dans la cuve pour gammares. De plus, on ne sait pas comment le plastique va rĂ©agir et s'agrĂ©ger Ă  la matiĂšre organique gĂ©nĂ©rĂ©e par les gammares. L'expĂ©rience : Pour notre expĂ©rience, nous avons au moins 3 conditions diffĂ©rentes Ă  rĂ©aliser : - ContrĂŽle 1 : eau douce sans gammares - ContrĂŽle 2 : eau douce issue du lieu de capture de gammares sans gammares - Condition 1 : eau douce issue du lieu de capture de gammares avec gammares Le contrĂŽle 2 a pour objectif de vĂ©rifier que c'est bien la prĂ©sence de gammares qui permet la fragmentation du microplastique et non des micro-organismes ou des conditions spĂ©cifiques de l'eau. Le contrĂŽle 1 permet de vĂ©rifier, dans le cas ou le contrĂŽle 2 et la condition 1 montre toutes deux que le plastique est fragmentĂ©, que l'eau ne permet pas seule de fragmenter le plastique (auquel cas, on montrera alors le rĂŽle prĂ©pondĂ©rant de l'eau douce issue du lieu de capture de gammares dans le processus de fragmentation). Il pourra exister d'autres hypothĂšses concernant ce rĂ©sultat : protocole exp., matĂ©riel ou utilisĂ© autre.. Le nombre de rĂ©plicats est encore indĂ©terminĂ©, de mĂȘme que la rĂ©alisation dans le temps des manipulations.Selon nos connaissances actuelles, nous pouvons rĂ©aliser une condition d'une durĂ©e de 4 jours - temps donnĂ© par l'article auquel nous nous rĂ©fĂ©rons. On peut donc choisir de rĂ©aliser toutes les conditions en mĂȘme temps, sachant que cela peut poser un problĂšme Ă  la fin des 4 jours lorsque nous aurons toutes les manipulations Ă  faire pour doser le plastique. Dans tous les cas, il nous semble important d'essayer rapidement des manipulations autour du microplastique pour, lorsque l'expĂ©rience commencera, ĂȘtre confiant sur la mĂ©thode que nous aurons choisie pour le mesurer. Il faut donc prĂ©voir d'acheter du microplastique (polyĂ©thylĂšne ?) rapidement. Pour la semaine prochaine : Notre groupe Ă©tant composĂ© de 5 personnes, nous sommes rĂ©partis les recherches autour du sujet. 1. Le mode de vie des gammares  2. Le plastique et sa dĂ©gradation 3. Le repĂ©rage des lieux pour capturer les gammares 4. La logistique autour de notre expĂ©rimentation 5. La gestion d'un planning pour rĂ©aliser l'expĂ©rience 6. Le plan d'expĂ©rience/protocole L'ensemble des informations sera ici ajoutĂ©. Il semble aussi important de se fixer la semaine prochaine sur la forme de la cuve et sa fabrication pour essayer rapidement de mesurer le microplastique dans un environnement qui sera proche - voir identique - Ă  celui que nous utiliserons au cours de l'expĂ©rimentation. De mĂȘme, il serait utile de se fixer un dĂ©lai pour rĂ©aliser l'expĂ©rience afin d'avancer Ă  la bonne vitesse. Le plastique et sa dĂ©gradation La premiĂšre question Ă  laquelle rĂ©pondre est le choix du plastique Ă  utiliser. Dans l'expĂ©rience de l'article dont nous nous inspirons, le plastique utilisĂ© est le polyĂ©thylĂšne car il s'agit de l'un des polymĂšres les plus courants dans les produits de soins personnels et, par consĂ©quent, dans les systĂšmes aquatiques (par la pollution). De plus il est probable qu'il soit consommĂ© par les gammares car sa densitĂ© et infĂ©rieure Ă  celle de l'eau, il flotte donc en surface, et les gammares sont capables de  collecter de la nourriture Ă  la surface de l'eau, y comprend des lentilles d'eau flottantes.Nous avons donc dĂ©cidĂ© d'utiliser aussi ce plastique, quant Ă  la taille des morceaux Ă  introduire dans les cuves il s'agirait d'Ă©lĂ©ments de 15 Ă  40 micromĂštre de diamĂštre. pour nous en fournir nous comptons soit sur : -Nous en fournissons directement au fablab -Acheter un rouleau sur internet puis le dĂ©couper nous mĂȘme grĂące Ă  une micro broyeuse -Ou grĂące Ă  une ponceuse suivi d'un tri par filtre pour ne sĂ©lectionner que les tailles qui nous intĂ©ressent Techniques de mesures de la quantitĂ© de plastique Ă  la fin de l'expĂ©rience : Nous sommes passĂ©s par diffĂ©rentes idĂ©es, pour compter/dĂ©terminer la quantitĂ© de nano ou micro plastique Ă  la fin de l'expĂ©rience et ainsi conclure sur la question de la fragmentation du microplastique par nos gammares. Dans tous les cas, nous souhaitons faire des observations au microscope pour avoir un support visuel sur lequel se baser. Il faudra aussi faire des Ă©tudes statistiques. Nous pensons aussi pouvoir colorer les microplastiques afin de faciliter l'observation, notamment si nous faisons une lyse des gammares -Filtre Ă  nano ou micro particules. On prĂ©lĂšve des petits volumes d'eau de la cuve qu'on filtre puis on compte/pese la quantitĂ© de fragments trouvĂ©s et on compare Ă  ce qui a Ă©tĂ© introduit initialement. -Evaporation : On prĂ©lĂšve v puis on fait s'Ă©vaporer l'eau : il reste les micro et nano plastiques et dedans on mesure la masse / compte + obs microscope. Si il ya des fragmentations on observe un plus grand nombre de fragments et ils seront plus petits -Centrifugation : On prĂ©lĂšve v et on fait centrifuger : dans le culot il y aura des micro et dans le surnageant de nano -> facilite le comptage La logistique autour de notre expĂ©rimentation Taille et fonctionnement des cuves : 2L avec bulleur pour oxygĂ©ner les cuves (montage en sĂ©rie pour utiliser moins de bulleur) Faire du microplastique : Ultra turax pour "mixer" Ă  haute vitesse le plastique et obtenir des micro particules (mais taille non contrĂŽlable) ou utiliser une ponceuse pour avoir de la "poussiĂšre" de plastique qui fera office de micro particules (mais pareil, taille incontrĂŽlable) Transport et stockage des gammares : Transport dans des bouteilles en plastique transparentes industrielles contenant l'eau du milieu de l'organisme et dĂ©pĂŽt des gammares le plus vite possible dans les cuves sur le campus Pierre et Marie Curie.PrĂ©voir, en plus, des bouteilles contenant uniquement l'eau du milieu oĂč Ă©volue l'organisme pour ne pas manquer de liquide dans les cuves Nourriture pour gammares : gammares --> dĂ©tritivores --> nourriture pour poisson/crevettes suffira Gestion d'un planning pour l'expĂ©rimentation / protocole / plan d'expĂ©rimentation Suite Ă  divers Ă©changes et rĂ©flexions, nous sommes en train de construire le plan d'expĂ©rimentation (qui doit ĂȘtre fini pour le 20 octobre). Il est prĂ©fĂ©rable pour des questions pratiques, et de maximisation de la randomisation, de rĂ©aliser notre expĂ©rimentation en plusieurs temps successifs tout en conduisant nos diffĂ©rentes conditions en parallĂšles. Nous avons 3 conditions (4 si nous dĂ©cidons de tester une condition contrĂŽle en plus : a savoir eau claire + gammare sans introduction de plastique - dans le but de vĂ©rifier que les gammares ne rejettent pas naturellement du nano plastique dans l'environnement). La durĂ©e d'une condition est de 4 jours (l'intervalle entre les mises en place des 4 jours d'expĂ©rimentation est nommĂ© rotation).Nous allons donc rĂ©aliser une fraction de chaque condition en parallĂšle des autres, et de rĂ©pĂ©ter ces fractions tous les 4 jours jusqu'Ă  avoir assez de mesures pour une analyse statistique viable. Si l'on souhaite rĂ©aliser 15 rĂ©pĂ©titions de chaque conditions, on se retrouve Ă  15x3 ou 15x4 : soit 45 ou 60 mesures au total. Dans le cas des 3 conditions, nous aurions besoin idĂ©alement de 15 cuves pour gammares. On peut alors faire 5 mesures par condition en parallĂšle et rĂ©aliser ainsi l'expĂ©rience en 3 rotations soit 12 jours au total. Dans le cas des 4 conditions, nous aurions besoin idĂ©alement de 16 cuves pour gammares. On peut alors faire 4 mesures par condition en parallĂšle et rĂ©aliser ainsi l'expĂ©rience en 4 rotations soit 16 jours au total. Sachant qu'il nous faudra randomiser Ă  la fois les emplacements des conditions Ă  chaque rotation et les expĂ©rimentateurs venant s'occuper des gammares et des cuves vides. Globalement, il reste la question des gammares : - Doit-on les chercher Ă  chaque rotation dans la riviĂšre ou bien les stocker en attendant leur mise en cuve ? Il semble que dans les deux cas, cela pose des limites concernant l'interprĂ©tation des rĂ©sultats. La solution la plus pratique est tout de mĂȘme le stockage. Il faut par ailleurs faire attention Ă  la possible prĂ©sence d'un parasite du gammare, et qui rĂ©duit son ressentiment. - Combien de fois les nourrir avant les 4 jours, combien de fois par jour ? On note ici une information encore jamais explicite dans le document : les gammares, une fois l'expĂ©rience acquise (donc durant les 4 jours d'expĂ©rimentation) ne sont pas nourries.Le dĂ©but de l'expĂ©rimentation est consĂ©cutif Ă  une induction de microplastique de type polyĂ©thylĂšne dans toutes les cuves. Rapport du 24/11/2022 AprĂšs rĂ©flexion, on va mesurer : MobilitĂ© en longueur : on pose chaque lot de 5 individus sur une feuille quadrillĂ©, on filme leurs mouvements et on compte le nombre de fois qu'ils changent de carreaux. On fait qql secondes de vidĂ©os et plusieurs rĂ©pliques pour chaque vu. On capturera 30 secondes de vidĂ©os pour chaque cuve s'il y a beaucoup de mouvement durant la prise ou alors 1 minute si les gammares ne bougent pas beaucoup. Nombres de gammares liĂ©s : le fait que certains gammares se dĂ©placent Ă  2 traduit un comportement reproducteur qui pourra nous permettre probablement de faire un lien entre concentration d'hormone et comportement reproducteur. Nombre de mort par cuves : survie des gammares Nous ne savons pas encore si nous allons indivisualiser nos observations par rapport Ă  chaque gammare dans la cuve ou alors faire une moyenne des donnĂ©es obtenues de chaque cuve, on penche plus pour une moyenne voiture, statistiquement c'est plus simple Ă  traiter, mais il ya quand mĂȘme des dĂ©saventages. On a commencĂ© Ă  faire les mesures. On a prĂ©levĂ© les gammares dans 6 cuves alĂ©atoirement pour les mettre dans 6 boites ( XxY ) remplies avec 100 mL d'eau de la riviĂšre posĂ©es sur des feuilles cadriĂ©es (1cm=1carreau). Il y a donc 6 gammares par cuves. On a mis des objets opaques autour des boites pour Ă©viter que les gammares ne soient trop autorisĂ©es pendant l'enregistrement par la lumiĂšre. On a mis le tĂ©lĂ©phone Ă  une hauteur de X cm de maniĂšre Ă  enregistrer les 6 cuves en mĂȘme temps.On agit les gammares avec une baguette en bois aprĂšs qu'on les ait tous mis dans les cuves, on laisse reposer 2 minutes et enfin on enregistre la vidĂ©o pendant 1 minute. On a fait tous les enregistrer aujourd'hui, cela fait donc 3 minutes d'enregistrement en tout pour 24 cuves Ă  observer. L'effet d'un polluant (Bouillie bordelaise) sur Physarum polycephalum (Blob). ( contacts : Rafael.Huertas@etu.sorbonne-universite.fr ; clement.beouch.1@etu.sorbonne-universite.fr ; Lucie.Mazzola@etu.sorbonne-universite.fr ; mona.grelet@etu.sorbonne-universite .fr )    Dans le cadre de l'UE LU3SV564 intitulĂ©e "DĂ©marche scientifique et application Ă  l'Ă©cologie" nous avons comme projet d'Ă©tudier le blob, Physarum policephalum, et notamment de voir la rĂ©action et les effets qu'ont les polluant sur lui. Sur cette page vous allez trouver des guides sur la maintenance de cette espĂšce, ainsi que l'avancĂ©e de notre projet qui a beaucoup Ă©voluĂ© durant le semestre. Guide pour commencer un Ă©levage de blob (c'est trĂšs simple) : MatĂ©riels : un sclĂ©rote de blob ( la souche MALU marche trĂšs bien) une pipette avec de l’eau des boĂźtes de pĂ©tri de l’agar-agar une balance une spatule des flocons d’avoine BIO Explications :    Pour pouvoir commencer votre Ă©levage de blob, il vous faut dans un premier temps prĂ©parer le milieu dans lequel vous allez les maintenir. Pour cela il vous faut prĂ©parer des boĂźtes de pĂ©tri avec de l’agar Ă  2%. Essayez de prĂ©parer plusieurs boĂźtes dĂšs le dĂ©but pour pouvoir anticiper les futures multiplications, le blob se dĂ©veloppe trĂšs vite. Pour conserver les boĂźtes de pĂ©tris, placez-les dans un frigo.    AprĂšs avoir coulĂ© les boĂźtes avec votre agar chauffĂ©, laissez-les refroidir mais attention Ă  ne pas perdre l’humiditĂ© des boĂźtes. Une fois que les boĂźtes ont refroidi, vous pouvez positionner le sclĂ©rote sur l’agar. Pour pouvoir rĂ©activer le blob, il faut humidifier le papier sur lequel il est positionnĂ©. Attention, il ne faut pas mettre directement l’eau sur le blob, mais bien sur le papier Ă  cĂŽtĂ©. De plus, seules quelques gouttes suffisent (2-3 suivants la taille du sclĂ©rote), il ne faut pas noyer le blob ou inonder la boĂźte. AprĂšs avoir fait cela, refermez la boite et positionnez la Ă  l’obscuritĂ© (le blob n’aime pas trop la lumiĂšre).    Pour le nourrissage, je vous conseille de ne pas en mettre le jour oĂč vous les rĂ©veillez mais attendez plutĂŽt le lendemain pour vĂ©rifier s'ils se sont bien rĂ©veillĂ©s. En terme de quantitĂ© de flocons d’avoine Ă  mettre, la premiĂšre semaine vous pouvez mettre quelques flocons dans la boĂźte Ă  l’aide d’une pince, il ne faut pas en mettre beaucoup dĂšs le dĂ©but, c’est souvent la nourriture qui amĂšne les problĂšmes (champignons/bactĂ©ries). Quand vous voyez que le blob se dĂ©place de plus en plus, vous pouvez au fil des multiplications augmenter la quantitĂ© de nourriture. Guide pour faire un sclĂ©rose (c'est simple aussi) : AprĂšs avoir pris la main sur l’élevage de blob, vous allez sans doutes vouloir essayer de crĂ©er des sclĂ©rotes (Ă©tat de dormance du blob). MatĂ©riel : un blob en bonne santĂ© (sans champignons ou bactĂ©rie dans sa boite) papier-filtre (je conseille le filtre Ă  cafĂ© = 100% de rĂ©ussite) une boĂźte de pĂ©tri neuve une spatule Explications :    Le but des sclĂ©rotes est de faire rentrer son blob en dormance pour pouvoir le conserver plus longtemps ou pourquoi pas en donner pour que d'autres personnes commencent un Ă©levage.    Pour faire cela, vous allez prĂ©lever un bout de blob (assez dense si possible) et le positionner sur le papier-filtre humide. Placez le papier-filtre avec le blob dans une nouvelle boĂźte propre. Vous devez au moment oĂč le blob quitte l’agar, et se retrouve sur le papier-filtre, enlevez l’agar (pour Ă©viter qu’il n’y retourne). Une fois que le blob est sur le papier, il va petit Ă  petit se dessĂ©cher avec le papier pour devenir un sclĂ©rote.    Je vous conseille de faire tout au long de votre Ă©levage des sclĂ©rotes. En effet, une invasion de champignons peut vite arriver et donc si vous avez des sclĂ©rotes de cĂŽtĂ© vous pouvez reprendre votre Ă©levage sans problĂšme.    J’espĂšre que vous avez compris mes deux guides, vous pouvez continuer de regarder notre page, il y a des photos en plus, cela pourrait ĂȘtre plus parlant. Si vous avez des questions sur la maintenance des blobs vous pouvez me contacter je me ferais un plaisir de vous aider :) ( Rafael.Huertas@etu.sorbonne-universite.fr ) -------------------------------------------------------------------------------------------------------------------------- Rapport 14/10/2022 : Aujourd’hui nous sommes allĂ©s au GreenLab pour voir si nous pouvions rĂ©veiller des souches de Physarum polycephalum afin de pouvoir s'entraĂźner sur la maintenance de l’espĂšce. -> On peut voir ici un sclĂ©rote de blob. Une des caractĂ©ristiques de cet organisme est qu’il peut entrer en phase de dormance (qui peut durer des mois voir des annĂ©es si les conditions pour sa survie ne sont pas rĂ©unies) AprĂšs avoir rĂ©cupĂ©rĂ© des boĂźtes de pĂ©tri dĂ©jĂ  prĂ©parĂ©es avec de , nous avons rĂ©veillĂ© les souches sous une hotte pour pouvoir garder le milieu le plus stĂ©rile possible. Pour pouvoir rĂ©veiller les souches, il suffit juste d’humidifier le papier sur lequel est le sclĂ©rote. Ainsi, le blob va se rĂ©veiller et aller ensuite se balader dans la boĂźte de pĂ©tri Ă  la recherche de nourriture. Pour pouvoir surveiller le rĂ©veil et pouvoir leur donner Ă  manger, nous avons dĂ©cidĂ© de ramener les souches chez nous pendant le week-end. Rapport 17/10/2022 : Pendant le week-end, les souches se sont bien rĂ©veillĂ©es mais se dĂ©placent trĂšs lentement, voire stagnent sur le papier.  Nous avons dĂ©posĂ© les blobs au Greenlab pour voir s' ils reprennent une croissance normale. Rapport 19/10/2022 : Nous sommes venus au laboratoire pour voir comment allaient les blobs. Les deux souches ne se dĂ©veloppent plus du tout et prennent une couleur blanchĂątre synonyme de mort de l’organisme. Plusieurs facteurs pourraient expliquer cela : les tempĂ©ratures, les conditions ne sont pas adĂ©quates pour le dĂ©veloppement de l’organisme; le transport des blobs pourrait aussi expliquer cet Ă©vĂ©nement (choc thermique); oĂč simplement le fait que les sclĂ©rotes n’étaient pas fiables
 On voit sur cette photo que les souches ne se dĂ©veloppent plus et sont de couleur blanche. On a donc dĂ©cidĂ© de rĂ©veiller trois autres souches de localitĂ©s diffĂ©rentes prĂ©sentes dans le stock de sclĂ©rotes du laboratoire, 2 blobs “Malu” du CNRS et une souche “Mikado” japonais qui est connue pour ĂȘtre trĂšs rapide. AprĂšs avoir choisi les souches Ă  rĂ©veiller, il faut donc prĂ©parer le milieu dans lequel nous allons les maintenir. Pour cela, il nous faut de l’agar agar et de l’eau que nous allons monter Ă  Ă©bullition et ensuite verser dans les boĂźtes de pĂ©tri le mĂ©lange lorsqu’il est encore chaud.                                         Gauche : L'Agar Agar, c'est ce qu'on utilise pour prĂ©parer nos boite de petri; Droite : Boite de petri aprĂšs avoir coulĂ© l'agar Je me suis entraĂźnĂ© Ă  faire la prĂ©paration pour quelques boĂźtes de pĂ©tri avec pour ratio 1g d’agar pour 100ml d’eau. J' ai ensuite prĂ©parĂ© d’autres boĂźtes avec le mĂ©lange que M.Hubert m'avait prĂ©parĂ© au prĂ©alable. PrĂ©paration de plusieurs boites de pĂ©tri sous la hotte Une fois que l'agar a refroidi, nous pouvons poser les sclĂ©rotes dessus et les humidifier afin de rĂ©veiller les blobs. Voici Ă  quoi ressemble la boite de petri lorsqu'on dĂ©marre le rĂ©veil d'un blob Nous les avons ensuite enfermĂ©s avec du papier aluminium pour pouvoir les garder dans l'obscuritĂ© (car les blobs grandissent plus vite dans l'obscuritĂ©), en attente de leur rĂ©veil afin de les nourrir par la suite. Pour information, pour les nourrir, nous utilisons des flocons d'avoine BIO (les blobs raffolent de l'avoine). Reportage le 20/10/2022 : Changement de problĂ©matique (Ă  expliquer)  Nous avons aussi dĂ©cidĂ© de contacter Madame Dussutour pour lui poser quelques questions afin de savoir par exemple quel rĂ©pulsif elle utilisait lors de ses expĂ©riences sur Physarum polycephalum. Reportage 21/10/2022 : Ce vendredi, nous sommes passĂ©s pour nourrir les blobs et voir leur dĂ©veloppement. Les deux souches "Malu" du CNRS, se sont rĂ©veillĂ©es trĂšs rapidement et sont dĂ©jĂ  en recherche de nourriture, j'en ai donc mis dans leur boĂźte. Quant Ă  la souche japonaise "Mikado", aucun signe de rĂ©veil sur la boite, j'ai tout de mĂȘme mis quelques flocons d'avoine pour peut-ĂȘtre "stimuler" son dĂ©placement/rĂ©veil. Rapport 22-23/10/2022 : Ce week-end, j'ai fait des tests avec des ponts sur une souche AVA que je possĂšde chez moi depuis quelques semaines pour m'entraĂźner Ă  la maintenance de l'espĂšce. J'ai pris deux Ă©chantillons de ma souche mĂšre, une passera sur un pont de 2 cm et une autre sur un pont de 4 cm. J'ai commencĂ© par crĂ©er les ponts Ă  base d'agar (les ponts Ă©tant trĂšs petits, l'agar Ă©tait plutĂŽt fragile et se cassait facilement). Pour pouvoir ĂȘtre prĂ©cis dans la dĂ©coupe j'ai fait des structures en papier afin de respecter les distances. On peut voir sur la photo les deux challengers que j'ai choisis pour faire le test ainsi que les feuilles me permettant de faire les ponts. AprĂšs avoir tout prĂ©parĂ©, je dispose les deux blobs, les ponts et l'avoine (qui symbolisent l'arrivĂ©e) sur une boĂźte de petri sĂšche afin d'Ă©viter l'Ă©vasion des blobs lors du test. J'ai prĂ©parĂ© mon appareil photo sur un trĂ©pied et j'ai dĂ©cidĂ© de prendre des photos toutes les 30 minutes pour voir l'avancĂ©e des blobs
 dĂ©part annoncĂ© Ă  11h pile (samedi). On peut voir sur la vidĂ©o des images de 11h Ă  23h du samedi (toutes les 30 minutes environ) et la toute derniĂšre image est Ă  8h30 le dimanche. Plusieurs problĂšmes/imperfections sont Ă  relever. Tout d'abord, on peut voir dans la vidĂ©o que le blob perd beaucoup trop de temps Ă  descendre de sa plateforme d'origine, les quantitĂ©s d'agar agar n'Ă©tant pas les mĂȘmes (il faudra faire attention Ă  cela lors des vraies expĂ©riences que nous prĂ©voyons de faire). Il y a ensuite les facteurs lumiĂšre et tempĂ©rature qui entrent en jeu, en 12h de dĂ©placement (le samedi), il y avait un peu de lumiĂšre dans la piĂšce et surtout une tempĂ©rature de 19 Ă  20 °C, alors que de 23h Ă  8h30, la piĂšce Ă©tait plongĂ©e dans le noir Ă  une tempĂ©rature allant de 17°C Ă  18°C. On voit que le blob s'est dĂ©placĂ© beaucoup plus rapidement la nuit que le jour, il faudra garder les mĂȘmes conditions dans nos futurs tests. ( Il faut savoir que cette souche AVA est censĂ©e ĂȘtre au top de sa forme Ă  24°C) Nous voulions partir sur des ponts de 4 cm de longueur et 1 cm de largeur mais avec mes tests, je pense qu'il serait plus judicieux de faire des ponts de 2 cm de longueur et 1 cm de largeur. Ce sera plus simple Ă  faire et plus rapide Ă  traverser pour le blob. D'autre part, je pense que le blob du pont Ă  4 cm Ă©tait moins dĂ©veloppĂ© de base que celui du pont Ă  2 cm. Il faut donc aussi s'assurer que les blobs sont tous dĂ©veloppĂ©s au mĂȘme niveau. Image du test avec le pont de 2 cm de longueur Image du test avec le pont de 4 cm de longueur Image montrant le problĂšme des diffĂ©rentes hauteurs des plateformes d'agar On ne peut pas vraiment se baser sur mes tests car j'ai commis beaucoup trop d'erreurs. Mais pour le dĂ©placement de 23h Ă  8h30 :                  Image du test Ă  23h le samedi                                                             Image du test Ă  8h30 le dimanche On voit que sur une durĂ©e de 9h30, le blob a presque traversĂ© l'entiĂšretĂ© du pont de 2 cm. De plus on peut voir en dessous de la boite que le blob Ă©tait arrivĂ© depuis un bon moment (je pense que le blob a mis moins de 8h pour faire toute la traversĂ©e). Le temps que mettrait le blob nous inquiĂ©tait pour le bon dĂ©roulement de nos tests, mais si on rĂ©alisait de bonnes conditions, le blob peut faire en quelques heures le dĂ©placement. On voit sur cette image que le blob est dĂ©jĂ  sur la plateforme depuis un certain temps... Choses Ă  retenir pour les prochains tests : maintenir les mĂȘmes conditions tout au long du test faire attention Ă  la quantitĂ© d'agar entre les diffĂ©rentes plateformes avoir des blobs dĂ©veloppĂ©s au mĂȘme niveau. Rapport mois de Novembre : Pendant le mois de novembre, nous avons bien avancĂ© sur nos recherches. Dans un premier temps, nous avons accĂ©lĂ©rĂ© notre maniĂšre de multiplier nos souches de blobs. En effet, nous avons suivi la technique mise en place par Mme Dussutour, il s’agit de doubler presque tous les deux jours la colonie en coupant la moitiĂ© de la boĂźte. Mais avec cette technique vient l'arrivĂ©e de plusieurs problĂšmes comme l’invasion de champignons, bactĂ©ries impactant nos blobs
 Voici un florilĂšge de photos des meilleures contaminations que nous avons eu : Mais malgrĂ© tout cela nous avons tout de mĂȘme rĂ©ussi Ă  multiplier notre souche : PrĂ©paration de toutes nos boites de pĂ©tri avant de multiplier nos blobs On peut voir ici la mĂ©thode mise en place pour multiplier au plus vite nos blobs. Chaque souche est coupĂ©e en deux pour ĂȘtre remise dans une autre boite. Nous nous sommes ensuite intĂ©ressĂ©s au polluant auquel le blob pourrait ĂȘtre confrontĂ© dans son milieu naturel. En effet, en s’inspirant de l’étude de Mme Dussutour, nous nous sommes demandĂ© si le blob pouvait, comme avec le sel, acquĂ©rir une rĂ©sistance Ă  un polluant qu’il pourrait rencontrer et l'empĂȘcher d’accĂ©der Ă  sa nourriture dans la nature. Nous avons donc cherchĂ© diffĂ©rents polluants qu'il pourrait ĂȘtre intĂ©ressant de tester sur nos blobs pour voir comment ils rĂ©agissent. Nous avons donc pensĂ© Ă  la bouillie bordelaise, au cuivre, au plastique ou encore au sel de dĂ©neigement. Ensuite nous avons lancĂ© des tests sur ces polluants.  ( nous avons pensĂ© Ă  d’autres polluants comme la nicotine, le fer ou encore tout type de carburant mais nous avons fait avec ce qu’on avait a disposition dans le laboratoire et ce qui Ă©tait le plus simple Ă  utiliser.) Nous avons donc fait plusieurs prĂ©parations d'agar avec les diffĂ©rents polluants. Nous les avons coulĂ©es dans des boites carrĂ©s pour pouvoir ensuite faire des ponts. Nous avons ensuite prĂ©parĂ© les diffĂ©rents tests : On peut voir que pour la BB (bouillie bordelaise), le blob a essayĂ© de traverser mais n'est pas allĂ© jusqu'au bout. Pour le test avec le plastique, on voit que le blob passe facilement, en effet il ne fait qu'Ă©viter le plastique et se dĂ©place normalement sur l'agar donc ce test n'est pas trĂšs intĂ©ressant. Pour le cuivre et le sel, on voit que le blob n'essaye mĂȘme pas de toucher le pont, il fuit directement vers l'opposĂ©. Nous avons ensuite fait un deuxiĂšme test pour dĂ©terminer quel polluant serait le plus intĂ©ressant Ă  observer, nous avons donc retenu la BB. Pendant la recherche du polluant, nous avons aussi cherchĂ© un moyen de pouvoir enregistrer en direct le dĂ©placement du blob. De pouvoir faire des photos toutes les 30 minutes pour pouvoir aprĂšs faire des timelapses et voir le dĂ©placement des blobs sur les ponts. Nous avons appris l'existence d’un outil que possĂšde le Fablab pouvant nous ĂȘtre utile pour faire cela: la Rasberry. Nous avons aussi cherchĂ© une boĂźte pouvant garder l’humiditĂ© pour les tests et en mĂȘme temps pouvant faire office de support pour la camĂ©ra. Voici notre premiĂšre installation pour faire nos tests : Pour faire nos premiers tests, nous avons Ă©tĂ© obligĂ©s de faire 4 tests dans une mĂȘme boĂźte pour pouvoir voir tous nos tests sur la camĂ©ra. Nous devons faire ces tests sur 15 blobs diffĂ©rents quotidiennement sur 5 jours pour observer un apprentissage et une possible amĂ©lioration Ă  la recherche de nourriture. Fin novembre, nous avons eu nos premiers rĂ©sultats sur nos tests, on peut les voir sur l'image de droite.                                  Ces tests nous ont permis de voir plusieurs problĂšmes... Dans un premier temps, la proximitĂ© entre les tests est un problĂšme car les participants prĂ©fĂšrent fusionner entre eux plutĂŽt que de traverser le pont. Ensuite, il y a le problĂšme de la lumiĂšre, on sait que le blob n'aime pas la lumiĂšre mais pour avoir des bonnes photos nous avons dĂ» mettre des lampes pendant toute la durĂ©e du test. Les blobs seraient donc stressĂ©s par la lumiĂšre ce qui les empĂȘcherait de traverser le pont. On peut voir sur cette photo que les blobs vont directement se fusionner entre eux. On peut tout de mĂȘme voir que certains blobs essayent ou ont essayĂ© de passer sur les ponts. De plus on a observĂ© que nous nous Ă©tions trompĂ© sur les concentrations de BB dans les ponts. Ainsi, nous devons donc faire des nouveaux tests en corrigeant toutes nos erreurs. Voici le timelapse de nos tests : Timelapse Tests BB (avec une erreur concentration) Choses Ă  retenir pour les prochains tests : Chercher un moyen de faire des tests sĂ©parĂ©ment pour obliger les blobs Ă  aller sur le pont Garder de l'obscuritĂ© lors des tests pour limiter les stress qu'ont les blobs. Rapport dĂ©but dĂ©cembre : AprĂšs avoir observĂ© nos premiers rĂ©sultats, nous avons dĂ» trouver un autre moyen de faire notre expĂ©rience tout en conservant un taux de stress minimal pour le blob. Nous avons donc cherchĂ© une autre “boĂźte” pour faire nos tests ainsi qu’un moyen de pouvoir contrĂŽler la luminositĂ© Ă  l’intĂ©rieur. Notre premiĂšre idĂ©e Ă©tait d’utiliser des minuteurs sur nos lampes, mais aprĂšs en avoir parlĂ© Ă  Steve, nous avons trouvĂ© une machine nous permettant de remplir toutes nos demandes : le Phytotron. Voici notre nouvelle installation, nous avons donc changĂ© notre boĂźte en plastique pour un Phytotron. Cette machine nous permet de contrĂŽler la tempĂ©rature ainsi que la luminositĂ© dans la boĂźte. Ainsi nous pouvons allumer les lumiĂšres exclusivement lors de la prise de photo et le reste du temps le blob est dans l’obscuritĂ©, qu’il prĂ©fĂšre pour se dĂ©velopper.  On voit sur cette photo comment nous avons fait l’installation Ă  l’intĂ©rieur. Nous n'avons conservĂ© que deux Ă©tages de grilles, une positionnĂ© en hauteur pour pouvoir mettre notre camĂ©ra, et une plus basse pour pouvoir poser nos tests. Dans un premier temps, nous avons fait nos tĂ©moins, donc nos blobs sur un pont d'agar sans polluants avec cette installation. Voici le timelapse des tĂ©moins : Timelapse TĂ©moin Nous avons ensuite fait des tests avec 21 mg de BB. En effet, avec nos prĂ©cĂ©dents tests avec 1g de BB, nous n'avons pas eu de rĂ©sultats concluants. (Voir timelapse = Timelapse tests Bouillie Bordelaise 1g) Peut ĂȘtre cela Ă©tait liĂ© Ă  la concentration de BB qui serait trop Ă©levĂ©e, nous avons donc baissĂ© la concentration. Voici le timelapse de nos test avec 21mg de BB dans les ponts : Timelapse Tests 21mg de Bouillie Bordelaise Outre nos multiples tests, notre colonie de blob se multiplie trĂšs bien depuis qu'on applique la technique de Mme Dussutour. Nous n'avons jamais eu autant de blobs que depuis ces derniers jours. L'effet des sons sur la croissance d'arabidopsis thaliana . I - Introduction Certaines personnes pensent que, tout comme nous humains, les plantes sont capables de ressentir la musique. Pour ĂȘtre plus prĂ©cis, elles seraient capables de ressentir les ondes et induire une rĂ©ponse physiologique. C’est l’idĂ©e qu’à Ă©tudiĂ© JoĂ«l Sternheimer, un physicien et musicien français en 1987. Avec l’aide de biologistes et de musiciens, il constate qu’à chacun des 20 acides aminĂ©s qui composent les protĂ©ines, on peut y associer une note de musique. Il initie une nouvelle science, la gĂ©nodique, qui Ă©tudie les effets de certaines mĂ©lodies sur les organismes vivants, et introduit le terme de « protĂ©odies ». Une protĂ©odie, combinaison des mots “protĂ©ine et mĂ©lodie”, correspond Ă  une suite de notes assemblĂ©es dans un certain ordre pour correspondre Ă  une protĂ©ine. Nous avons donc cherchĂ© Ă  savoir si cette thĂ©orie est applicable et s’il est effectivement possible de stimuler ou inhiber la croissance d’une plante grĂące Ă  la musique. 2 - Protocole et plan d’expĂ©rience Pour notre expĂ©rience, nous allons utiliser des plantes Arabidopsis thaliana qui sont un organisme modĂšle en biologie vĂ©gĂ©tale de par leur petite taille, leur cycle de reproduction relativement court. Nous allons rĂ©aliser trois expĂ©riences pour tester la capacitĂ© des plantes Ă  rĂ©pondre Ă  la musique. Chaque condition sera composĂ©e d’une boĂźte contenant 9 pots. Les boĂźtes sont Ă©quipĂ©es d’un dispositif lumineux qui sera allumĂ© 10h par jour, ainsi que de haut-parleur pour diffuser la musique. La musique sera Ă©mise pendant 10 minutes la nuit grĂące Ă  un Raspberry Pi qui sera programmĂ© pour la lancer Ă  une heure prĂ©cise. 1- Un contrĂŽle avec des plantes qui ne sont exposĂ©es Ă  aucune mĂ©lodie 2- Une expĂ©rience avec des plantes exposĂ©es Ă  une mĂ©lodie qui stimule la production d’auxine 3- Une expĂ©rience avec des plantes exposĂ©es Ă  une mĂ©lodie qui inhibe la production d’auxine Pour chaque condition, nous avons fait les tests en double. Nous avions donc 6 boites au total. 3 - Journal de bord 06/10/22 Nous avons Ă©laborĂ© le plan et commencĂ© Ă  discuter des conditions que nous allions appliquer. Nous avons pensĂ© Ă  diffuser des bruits urbains en comparaison Ă  d’autres naturels, mais avons changĂ© d’idĂ©e par faute de temps et de complexitĂ©, en effet, nous nous retrouvions avec trop de conditions test. 13/10/22 Nous avons pris rdv avec Michel Duhamel, le prĂ©sident d’une entreprise « Genodics » qui travaille en collaboration avec JoĂ«l Sternheimer, et qui cherche Ă  apporter des solutions innovantes aux agriculteurs et Ă©leveurs pour favoriser la croissance de leurs productions et lutter contre les maladies en renforçant le mĂ©tabolisme des plantes et des animaux et en leur permettant de s’adapter aux variations climatiques. Lors de notre entretien, Mr Duhamel nous a donnĂ© des conseils et mis en grade sur certains points, notamment le fait qu’il faille bien isoler nos conditions les unes des autres pour que les plantes ne perçoivent que la mĂ©lodie souhaitĂ©e, de plus nous ne connaissons pas les effets sur l’organisme humain donc il est prĂ©fĂ©rable de ne pas trop s’exposer aux mĂ©lodies, et si l’on ressent une sensation dĂ©sagrĂ©able en l’écoutant de la stopper immĂ©diatement. Il nous Ă  prĂ©cisĂ© que son Ă©quipe Ă  menĂ© des recherches sur A.thaliana en utilisant les mĂȘmes mĂ©lodies. Pour des raisons de droit d’auteur, il nous est impossible de communiquer les fichiers  audio des mĂ©lodies. 24/10/22 Nous avons plantĂ© nos graines d’A.thaliana dans nos diffĂ©rents pots et les avons mises Ă  germer dans une cellule de culture Ă  25°C. Deux membres de l’équipe Ă©taient chargĂ©s d’arroser les graines tous les 3 jours jusqu'Ă  la germination. 27/10/22 Nous avons commencĂ© Ă  programmer des raspberry pi pour diffuser le son. Nous avions besoin d’un programme qui lance la musique Ă  une certaine heure pendant une durĂ©e prĂ©cise avant de l’arrĂȘter. Nous avons donc crĂ©e ce programme et avons testĂ© s’il fonctionnait avec le type de haut parleur qui Ă©taient Ă  notre disposition. CODE import datetime as dt from time import sleep from pygame import mixer start_time = dt.datetime(year=2022, month=11, day=3, hour=10, minute=18, second=0) duration = dt.time(hour=0, minute=0, second=40) periodically = dt.time(hour=0, minute=1, second=0) today = dt.datetime.today() if today >= start_time: print("Date dĂ©jĂ  passĂ©") exit() # Calcul du temps Ă  attendre inter = start_time - today print("Secondes : ", inter.total_seconds()) duration = duration.hour * 3600 + duration.minute * 60 + duration.second periodically = periodically.hour * 3600 + periodically.minute * 60 + periodically.second print("duration : ", duration) print("Period : ", periodically) mixer.init() mixer.music.load('sample.mp3') # Attente sleep(inter.total_seconds()) while True: print("Play") mixer.music.play(-1) sleep(duration) mixer.music.stop() print("End") sleep(periodically) 17/11/22 Nous avons montĂ© nos boĂźtes. Nous avons installĂ© des lumiĂšres LED de 12V et fixĂ© un haut parleur Ă  chaque boĂźte. Nous avons rencontrĂ© un problĂšme, puisque 1 plante sur 9 seulement a germĂ©. 24/11/22 Étant donnĂ© que seulement une partie de nos graines avaient germĂ© et que cela n’était pas suffisant pour l’exploitation des rĂ©sultats, nous avons dĂ©cidĂ© de changer d’organisme et avons donc optĂ© pour des pois. Nous avons plantĂ© nos pois dans des boĂźtes avec du terreau en conservant le mĂȘme nombre de rĂ©plicats avec une moyenne de deux graines par pot. 01/12/22 Une fois les boĂźtes prĂȘtes et le programme fonctionnel, nous avons lancĂ© notre expĂ©rience. Chaque condition Ă©tait isolĂ©e des autres dans une piĂšce sĂ©parĂ©e. La lumiĂšre Ă©tait active de 7h00 Ă  17h30 pour mimer la lumiĂšre naturelle en pĂ©riode hivernale. La musique jouait pendant 10 min Ă  23h. L’influence de l’environnement sonore sur le chant des grillons Stievenard Nicola, Venuanzola Luca, Clouard Andrea et Nina SACCO UE 564- DĂ©marche Ă©cologique et scientifique Objectif de l'UE : Introduction au thĂšme:            L’environnement est un facteur dĂ©terminant de la vie et des organismes et donc les variations de celui-ci peuvent avoir un impact sur leur mode de vie. En effet, avec l’urbanisation des milieux ruraux on a un bouleversement des Ă©cosystĂšmes avec l'arrivĂ©e de nombreuses pollutions tel que la pollution de l’air, visuelle ou sonore. Nous nous sommes intĂ©ressĂ©s Ă  l'effet d'Ă©ventuelles pollutions sonore sur le chant du grillon. Pour faire une expĂ©rience simple, nous avons choisi de tester l'effet des variation d'intensitĂ© sonore d'un son fixe, de 5khz (Son qu'Ă©mettent et perçoivent les grillons). On sait que le chant du grillon est un caractĂšre dysmorphique spĂ©cifique aux mĂąles adultes. Le signal Ă©mis est court et rĂ©pĂ©tĂ© dans le temps avec une frĂ©quence et une pĂ©riodicitĂ© propre Ă  l’espĂšce, il est perçu par une oreille tympanique sur le tibia des congĂ©nĂšres. Le grillon chante autour des 5 khz. L’intensitĂ© du bruit environnant se mesurant en moyenne autour des 60 dB pour les villes contre 30 dB pour un milieu rural, on pourrait s’attendre Ă  ce que les pollutions sonores urbaines modifient la perception du chant et gĂ©nĂšrent une modification, entre autres, de ce comportement de signalisation en groupe. Une Ă©tude sur l’effet des camions routiers sur les grillons de diffĂ©rentes espĂšces met en Ă©vidence la corrĂ©lation entre le passage de camion prĂšs d’une zone et l’interruption du chant des grillons habitant cette mĂȘme zone. Ils ont aussi montrĂ© que certaines espĂšces chantaient Ă  des frĂ©quences maximales plus Ă©levĂ©es que les grillons des zones plus Ă©loignĂ©es, avec des intensitĂ©s de chants diffĂ©rents. Ils prĂ©sentent donc des adaptations pour mieux ĂȘtre perçus par le groupe. D'autres Ă©tudes sont intĂ©ressantes et ont permis de montrer d'autres adaptation. Journal de bord : Initialement nous avions fixĂ© un protocole simple: Dans une boĂźte Ă  vis, chaque compartiment numĂ©rotĂ© correspondrait Ă  un groupe ( 1 mĂąle + 2 femelles pour encourager un Ă©ventuel comportement reproducteur) et serait tapissĂ© de mousse isolante. On pourrait administrer des ordres de passages alĂ©atoires Ă  chaque grillons, et en imaginant que les compartiment Ă  vis assuraient une bonne maniabilitĂ© des grillons. On laisserait nos grillons une semaine sous lampe chauffante, puis sur quelques sĂ©ances ferions nos mesures. mais nous avons du faire preuve de flexibilitĂ©, comme en tĂ©moignera notre journal de bord. 17/11/2022:           Durant cette sĂ©ance nous avons reçu les grillons et le matĂ©riel nĂ©cessaire pour l'expĂ©rience . On a donc procĂ©dĂ© a la mise en boite des grillons par groupe de 3 avec deux femelles et un mĂąle dans une boĂźte que l'on range dans un organisateur (type rangement de vis). Mise en boĂźte pas facile, on faisait tomber un grillons dans la boĂźte de manipulation (une des boites du rangement, la n°30) : si c'est un mĂąle (pas d'ovipositeur) on le pĂšse (pour identifier des variations de chant inter individuelles? ) et on le dĂ©pose dans une boĂźte avec un numĂ©ro, qui sera son numĂ©ro si c'est une femelle on la dĂ©pose avec un mĂąle.A la fin de ce rangement on a 30 boĂźtes de trois grillons. ProblĂšme 1: Pas de mousse isolante --> on fait sans, en espĂ©rant que les enregistrements des grillons ne se chevauchent pas (ça n'a pas Ă©tĂ© le cas ) On a mis du parafilm et du scotch Ă  l'avant et Ă  l'arriĂšre des boites pour Ă©viter que les grillons s'enfuient, de plus on a laisser l'organisateur a tempĂ©rature ambiante dans un coin du Fablab. ProblĂšme 2: pas de douilles pour fixer les lampes chauffantes, on dĂ©cide de voir le lendemain. 18/11/2022:         Quelques grillons sont morts ou en fuite dans les boites des autres: on recommence: sauf pour les groupes ou le mĂąle, vivant, est restĂ© dans sa boĂźte. On a donc changĂ© de stratĂ©gies d'amĂ©nagement des boites de grillons. les grillons ont donc Ă©tĂ© disposĂ© dans ces mĂȘme boites mais en dehors de l'organisateur avec une pochette plastique scotchĂ©e a la boĂźte et percĂ©e petits trous afin de les laisser respirer. Rajout de gelĂ©e (nutrition + hydratation) qu'on avait oubliĂ© la veille.Toute les boites ont Ă©tĂ© stockĂ© dans un incubateur, avec activation de l'aĂ©ration et Ă  tempĂ©rature contrĂŽlĂ©e de 24°C. 24/11/2022:           On a eu une grosse mortalitĂ© des grillons, seulement quelques survivants ont Ă©tĂ© comptĂ©.De grosse trace d'humiditĂ© dans les boĂźtes a Ă©tĂ© observĂ©, de plus nous avons comptĂ© plus de grillons femelle survivante que de grillons mĂąle, de plus sur les grillons mort des tapis de moisissure Ă©tait prĂ©sent. On suppose que les causes de la mort des grillons est dĂ» a une humiditĂ© trop importante amenant a une asphyxie des grillons ou Ă©galement dĂ» au manque de nutriment. On a donc procĂ©dĂ© au nettoyage des boites, pour supprimer d'Ă©ventuelles odeurs de mort (qui Ă©taient bien perceptible pour nous aussi). On s'est rendu compte que les femelles avaient plus survĂ©cu, et il semble qu'elles aient eu recours au cannibalisme. Et quelques recherches sur le grillon plus tard, il semblerait que ce soit une espĂšce ayant facilement recours au cannibalisme en conditions  de promiscuitĂ© et de famine. On a dĂ©cidĂ© de mettre nos expĂ©riences en pause, nous attendrons de pouvoir enchaĂźner 2  jours consĂ©cutifs de mesures. 12/12/2022:         On a donc repris l'expĂ©rience en changeant certaines choses. On a donc repris les mĂȘme boĂźtes en mettant toujours un mĂąle et deux femelles, le mĂąle est pesĂ©e Ă  l'aide d'une balance de prĂ©cision avant de les mettre dans une boĂźte numĂ©rotĂ©. On a mis une pochette plastique au dessus des boĂźtes comme avant mais cette fois-ci on a fait des trous un peu plus gros pour faciliter le passage de l'air, on a Ă©galement mis un morceau de carotte avec une gelĂ©e pour favoriser leurs survie (qui limite les perte d'eau donc les problĂšmes d'humiditĂ©). AprĂšs la mise en boĂźte de chaque grillon on a Ă©tablie 6 groupes de 5 boĂźtes ( Ă©tant donnĂ©e qu'on avait 30 boĂźtes) Ă  l'aide du logiciel tirokdo qui nous a permis  un tirage alĂ©atoire des boĂźtes pour former les groupes. Maintenant que les groupes sont formĂ©e on a notĂ© qu'elles boĂźtes Ă©tait dans qu'elles groupes et on les a tous mis dans l'incubateur bien aĂ©rĂ© et Ă  tempĂ©rature contrĂŽlĂ©e de 22°C. ProblĂšme: nous avions mal compris les notions acoustiques de dB, nous voulions soumettre nos grillons Ă  des valeurs connus exprimĂ©es en dB SPL (Valeurs de pression acoustique, dans lesquelles sont exprimĂ©es  les pollutions sonore humaine ex: 90dB seuil de dangerositĂ©, ect). Nous pensions pouvoir imposer cette valeur choisie (40 dB son rural, 70 dB son de villes/mĂ©tro et son ambiant), mais cela n'Ă©tait pas possible donc nous avons imposĂ© contrĂŽle= rien, niveau 1 = le son Ă  50 % du volume de l'enceinte, niveau 2= le son Ă  100% du volume de l'enceinte. Les six groupes ont un ordre de passage diffĂ©rent: , controle, niveau 1, niveau 2 ou controle, niveau 2, niveau 1.... ( Pour s'assurer que l'ordre de passage n'ait pas d'influence. Protocole pour l’enregistrement des chants de grillons:  dans une piĂšce calme et on a procĂ©dĂ© groupe par groupe en laissant trois minutes de calme puis deux minutes d’exposition au son si on expose un son, et ensuite 2 minutes d’enregistrement Ă  l’aide de 5 micros d’enregistrement ( une sur chaque boĂźte). Le bruit Ă©tait trop fort, il Ă©tait prĂ©fĂ©rable de sortir de la piĂšce et d'activer l'enceinte Bluetooth Ă  distance. Remarque: Les grillons sembles apprĂ©cier le morceau de carotte ajoutĂ©. 13/12/2022:         Pas de trace d'humiditĂ© sur les boĂźtes, peu de mortalitĂ© ( un seul mĂąle mort) et peu de fuite ( une seule femelle s'est enfuie): bonne stratĂ©gie de mise en boĂźte. On a Ă©changĂ© le mĂąle mort avec un nouveau mĂąle pesĂ©. On est passĂ© a l'enregistrement des chants des grillons, pour cela on a utilisĂ© des micro d'enregistrement et on a cherchĂ© une piĂšce calme ou l'on avait trĂšs peu de bruit on a choisit la rĂ©serve du fablab. Pour faciliter le chant des grillons on a ajoutĂ© un ventilateur chauffage car la piĂšce avait une tempĂ©rature trop basse et les grillons chantait trĂšs peu dans le froid. On a procĂ©dĂ© groupe par groupe en commençant par le groupe A. On a pu noter que certain groupe chantait trĂšs bien (ceux du matin et ceux de fin d'aprĂšm) et d'autre un peu moins bien (milieu d'aprem). remarque: On suppose que les facteurs qui on influencĂ© certain groupes a ne pas chantĂ© en milieu d'aprĂšs midi Ă©tait le bruit ambiant qui Ă©tait plus dĂ©rangeant l'aprĂšs midi dĂ» au nombre de personne au fablab qui Ă©tait plus important l'aprĂšs midi. 15/12/2022:            Maintenant que la partie pratique Ă  Ă©tĂ© rĂ©alisĂ©, on passe a la partie thĂ©orie. Pour cela on a utilisĂ© le logiciel Audacity pour analyser les enregistrement obtenus. On a rĂ©ussi a identifier les chants ce qui nous a permis de les isoler afin de pouvoir les Ă©tudier grillons 6.png. Pour Ă©tudier les son on a rĂ©glĂ© audacity  en dĂ©cibel et en demi-onde et ont a reportĂ© les intensitĂ© obtenus sur un tableau, on Ă  Ă©galement notĂ© les type de chant. AprĂšs avoir obtenus toute les donnĂ©es, on a utilisĂ© le logiciel R afin d'Ă©tablir des graphiques statistiques afin de pouvoir rĂ©pondre a notre problĂ©matique. MĂ©thodes et matĂ©riels:      Pour cette expĂ©rience nous avons utilisĂ© 90 grillons Gryllus bimaculatus dont 30 mĂąles et 60 femelles. Pour les isoler on a utilisĂ© des boĂźtes de rangement en plastique numĂ©rotĂ© oĂč l'on a mis des pochettes plastiques tenues par des Ă©lastiques, ces pochettes ont Ă©tĂ© percĂ©es au prĂ©alable pour Ă©viter l'asphyxie des grillons. AprĂšs la prĂ©paration des boĂźtes, on a sĂ©parĂ© les grillons en faisant en sorte d'avoir 1 mĂąle et 2 femelles par boĂźtes  grillon 1.png. Avant de mettre les mĂąles ont les a pesĂ©e avec une balance. Pour favoriser leur survie dans ces boĂźtes nous avons mis pour chaque boĂźte une gelĂ©e et une tranche de carotte avant de d'introduire chaque mĂąle dans une boĂźte grillons 2.png. AprĂšs avoir introduit les grillons dans chaque boĂźte nous avons Ă©tablie six groupes ayant des ordre de passage diffĂ©rent selon l'exposition au son. Pour Ă©tablir ces groupes on a utilisĂ© le logiciel tirokdo qui nous a permis un tirage alĂ©atoire des boĂźtes pour former les groupes grillons 3.png. On a donc 5 boĂźtes par groupe. Pour l'enregistrement des chants de grillons on s'est installĂ© dans une piĂšce calme et on a procĂ©dĂ© groupe par groupe en laissant trois minutes de calme puis deux minutes d'exposition au son si on expose un son et ensuite 2 minutes d'enregistrement Ă  l'aide de 5 micro d'enregistrement grillons 4.jpeg. Pour l'exposition au son on a utilisĂ© une enceinte UE BOOM 3. RAPPORT FINAL: L’influence de l’intensitĂ© du son ambiant sur l’intensitĂ© du chant des grillons n’a pas pu ĂȘtre dĂ©montrĂ©e. auteurs: Nicola Stievenard, Venanzuola Lucas, Clouard AndrĂ©a, Sacco Nina Introduction L’environnement d’un milieu est un facteur dĂ©terminant des comportements des organismes qui le composent. L’urbanisation d’un milieu peut bouleverser l’équilibre d’un Ă©cosystĂšme qui demandera alors Ă  certains organismes un effort d’acclimatation. Le chant du grillon, Gryllus bimaculatus est un trait d’histoire de vie assurant le succĂšs reproducteur des mĂąles. Le son Ă©mis par stridulation, (frottement des ailes antĂ©rieures), est d’une frĂ©quence d’environ 5kHz1, il est perçu par une oreille tympanique sur le tibia des congĂ©nĂšres situĂ© sur ses pattes avant2.  A savoir que l’intensitĂ© sonore Ă  laquelle les grillons rĂ©agissent est de 80dB SPL3. Le chant du grillon est un caractĂšre dysmorphique spĂ©cifique aux mĂąles adultes. Le signal Ă©mis est court et rĂ©pĂ©tĂ© dans le temps avec une frĂ©quence et une pĂ©riodicitĂ© propre Ă  l’espĂšce. Certaines Ă©tudes de corrĂ©lation ont mis en Ă©vidence un lien entre pollution sonore, Ă©lĂ©vation de l’intensitĂ© sonore, et modification du comportement de chant dans des milieux ruraux comme : l’interruption du chant de grillons 2, la modification des frĂ©quences, des intensitĂ©s de chant 4 ou encore la dĂ©synchronisation entre les congĂ©nĂšres 5, trĂšs bien illustrĂ©s dans le cadre d’études sur le passage de camions Ă  proximitĂ© des habitats des grillons Ă©tudiĂ©s. Par exposition de mĂąles Ă  un son continu de 5kHz Ă  diffĂ©rentes conditions d’intensitĂ©, nous avons mesurĂ© l’intensitĂ© du chant enregistrĂ©, avec pour objectif de  montrer une Ă©ventuelle diffĂ©rence de l’intensitĂ© sonore sur l’intensitĂ© du chant Ă©mis par le grillon 4. L’intensitĂ© sonore d’un son de 5khz influe-t-elle donc sur l’intensitĂ© maximale du chant des grillons ? L'intĂ©rĂȘt de cette question est d’évaluer la capacitĂ© de plasticitĂ© des grillons Ă  un phĂ©nomĂšne relevant de l'anthropisation des territoires. Nos hypothĂšses Ă©taient les suivantes: L’intensitĂ© maximale du chant reste inchangĂ©e en modifiant l’intensitĂ© de l’environnement sonore L’intensitĂ© maximale du chant varie avec l’augmentation du volume sonore. On suppose que l’environnement sonore aura une influence sur le chant des grillons. On s’attend donc Ă  avoir une diffĂ©rence significative du chant des grillons selon l’intensitĂ© sonore. MatĂ©riel et mĂ©thodes : MatĂ©riel et mĂ©thodes CaptivitĂ© des grillons: BoĂźtes Ă  vis recouvertes de feuilles plastiques percĂ©e par nos soins et fermĂ©es par Ă©lastiques, incubateur Ă  23°C et gelĂ©e de nutrition + carottes. 1 mĂąle + 2 femelles/ boĂźte pour encourager comportement reproducteur. (FIG.S2) Enregistrement  et exposition: ClĂ© USB “espion” dictaphone (x5), Enceinte: Ultimate ears boom 3 , Son utilisĂ©: 5000hz test tone 10hr sur youtube, Chauffage : petit chauffage d’appoint Logiciels: exploitation des rĂ©sultats : Audacity , analyse des rĂ©sultats : R Studio, attribution des groupe de passage: Tirodoko Nos expĂ©riences se sont portĂ©es sur Gryllus bimaculatus rĂ©putĂ© pour se reproduire a partir de 20°C (Toptimale=30°C), et facile Ă  se procurer. Nous avons fait le choix d’utiliser un total de 90 grillons d'Ă©levage pour former des groupes de 2 femelles avec un mĂąle. Chaque groupe Ă  Ă©tĂ© exposĂ© Ă  toutes les conditions: Bruit ambiant, 50% de la puissance de l’enceinte, 100% de la puissance de l’enceinte. Pour minimiser les biais, nous avons rĂ©parti nos grillons et leur avons attribuĂ© des ordres de passage par condition de maniĂšre randomisĂ©e. Pour l’enregistrement, nous avons emmenĂ©, par groupe de passage (5 boĂźtes/groupes) les grillons dans une piĂšce, la plus silencieuse possible, laissant sur des chaises les grillons, les sĂ©parant toujours de la mĂȘme distance et Ă  la mĂȘme distance de l’enceinte. On dĂ©posait les clĂ© USB, prĂȘte Ă  l’enregistrement sur chacune des boĂźtes, puis quittons la piĂšce. Pendant l’enregistrement: 2 min d’acclimatation Ă  l’environnement, 3 minutes d’exposition Ă  la condition, et 2 minutes post-exposition (que l’on va exploiter). Sur audacity: visualisation des donnĂ©es en forme de demie onde, avec choix d’une Ă©chelle en DB, on relĂšve l’intensitĂ© maximale d’exposition et celle de chant. (FIG.S1) Analyses des donnĂ©es Notre variable explicative est l’intensitĂ© sonore d’exposition, il s’agit d’une variable ordinale fixĂ©e sur 3 niveaux : contrĂŽle, 1 et 2. Notre variable dĂ©pendante est l’intensitĂ© du chant des grillons, une variable quantitative continue. Nos mesures consistaient en une rĂ©pĂ©tition de mesures sur des mĂȘmes sujets pour comparer les moyennes des 3 groupes (contrĂŽles, niveau 1 et niveau 2). Les donnĂ©es ne suivant pas toutes une loi normale, il fallait exclure l’anova paramĂ©trique Ă  un facteur et nous avons effectuĂ© le test non paramĂ©trique Kruskal Wallis. RĂ©sultats: Nous avons d’abord procĂ©dĂ© Ă  un contrĂŽle, pour s’assurer que les conditions Ă©taient bien diffĂ©rentes en termes d'intensitĂ©, car mal fixĂ©es (cf discussion), et cela semble ĂȘtre le cas  sur le graphe. (FIG1). Les rĂ©sultats statistiques indique une valeur de niveau diffĂ©rente du contrĂŽle, mais mises deux Ă  deux les rĂ©sultats semblent indiquer un Ă©galitĂ© ce qui paraĂźt incohĂ©rent. Nous noterons que seuls 60 enregistrements prĂ©sentaient un bruit exploitable Ă©mis par les grillons,rĂ©partis en proportions variables , Ă  l’oreille en diffĂ©rents  types de chants (FIG3.A ,B, C): le chant “vrai”, le cliquetis, mixte et autre. Nous n’avons pas pu mettre en Ă©vidence une diffĂ©rence significative entre diffĂ©rentes intensitĂ©s de chants enregistrĂ©s, nous remarquons Ă©galement qu’elles appartiennent Ă  de larges gammes de valeurs. ( En annexe, nous avons effectuĂ© des test supplĂ©mentaires sur d’autres paramĂštres). Discussion: L’objectif de notre expĂ©rience Ă©tait de montrer l’influence de l’intensitĂ© sonore sur l’intensitĂ© sonore du chant des grillons. Les rĂ©sultats de nos expĂ©riences tendent Ă  prouver qu’il n’y en a pas. Pour autant, d’autres Ă©tudes corrĂ©latives de la littĂ©rature scientifique semblaient montrer l’existence d’une telle influence de la  part de l’environnement sonore, comme par exemple l’effet du passage de camions Ă  proximitĂ© de grillons sur la frĂ©quence de chant et la 4, ou Pour comprendre nos rĂ©sultats, deux chemins s’offrent Ă  nous: soit l’intensitĂ© n’est pas le paramĂštre de l’environnement qui gĂ©nĂšre ce changement de comportement de chant des grillons illustrĂ© dans ces Ă©tudes corrĂ©latives, soit notre expĂ©rience n’a pas pu le montrer. Et en effet, notre dĂ©marche prĂ©sente de nombreuses voies d’amĂ©lioration. Dans un premier temps, la fixation des conditions n’était pas bien Ă©tablie, les paramĂštres de tempĂ©ratures dans la salle variaient (Rajout du chauffage, variation dans la journĂ©e, bruits parasites,...) influençant peut ĂȘtre le comportement des grillons et la prise de nos mesures. On avait soulignĂ© dans les rĂ©sultats que nos valeurs statistiques ,comparant les intensitĂ©s d’exposition entre elles, n’indiquent pas de diffĂ©rence une Ă  une. Cela peut ĂȘtre, soit la consĂ©quence d’un manque de maĂźtrise de R le rĂ©sultat de ce biais, soit de ce manque de rigueur. Les conditions de captivitĂ© des grillons n’étaient pas optimales ( Peu d’espace, humiditĂ©, tempĂ©rature), le sachant nous nous sommes pressĂ©s pour faire nos expĂ©riences en espĂ©rant que nos grillons ne meurent pas. (Nous avions eu des problĂšmes de cannibalisme et mort de quasiment tous nos grillons sur une semaine lors de notre premiĂšre tentative). Cela pose des questions sur la rĂ©pĂ©tabilitĂ© de l'expĂ©rience, et pose un Ă©ventuel biais pour le comportement des grillons. Si l’on s'intĂ©resse Ă  l’exploitation des rĂ©sultats, nous avons choisi d’exploiter l’ensemble des chants que nous avons pu enregistrer, premiĂšrement car nous n’avions pas assez de connaissances sur le chant des grillons pour envisager d’exclure les cliquetis et autres, mais Ă©galement parce nous n’avions pas assez de vrai chants pour faire de vraies statistiques. Dans le cas ou les cliquetis et autres ne sont pas de vrais chants, au sens de la communication (Il pourrait s’agir par exemple d’une rĂ©action de stress, par frottement des ailes par exemple), inclure ces derniers fausserait entiĂšrement nos rĂ©sultats,d’autant que la proportion de vrai chant est trĂšs diffĂ©rentes entre les conditions (FIG.S3). D’autre part, nous avions mal compris la notion d’intensitĂ© sonore et de dĂ©cibel, nous souhaitions initialement exposer nos grillons Ă  diffĂ©rents dbSPL de pression acoustique, perçus par l’oreille humaine (Ceux dont on parle au quotidien, seuil d’audition, etc), mais ce sont des dĂ©cibels diffĂ©rents que ceux mesurĂ©s dans des enregistrement qui sont des dB FS6. C’est pendant l’analyse des rĂ©sultats, en voyant des dĂ©cibels de valeurs nĂ©gatives que nous avons rĂ©alisĂ©, trop tard, notre erreur. Cette erreur fait perdre son sens Ă  l'intĂ©rĂȘt de notre expĂ©rience, qu’on a voulu inscrire dans le cadre des pollutions sonores ,souvent exprimĂ©es en dBSPL, car on ne sait pas ce que reprĂ©sentent ces mesures concrĂštement. CF bibliographie annexe. Il nous faudrait donc revoir notre protocole : faire des enregistrements sur un plus grand nombre de grillons, privilĂ©gier des lampes chauffantes Ă  l’incubateur, trouver une piĂšce isolĂ©e, calme adaptĂ©e Ă  des enregistrements. Conclusion: Pour conclure, nous n'avons pas pu rejeter l’hypothĂšse selon laquelle l’intensitĂ© sonore environnementale est sans influence sur l’intensitĂ© du chant des grillons. Notre expĂ©rience Ă©tait soumise Ă  de nombreux biais, et sa valeur scientifique est discutable, les rĂ©sultats que nous avons donc obtenus ne permettent pas de conclure sur l’absence de causalitĂ© entre les intensitĂ©s d’exposition et de chant, mais elle n’est pas suffisante pour dĂ©montrer qu’il en existe un. Bibliographie: 1 Jonsson, Thorin, Fernando Montealegre-Z, Carl D. Soulsbury, et Daniel Robert. « Tenors Not Sopranos: Bio-Mechanical Constraints on Calling Song Frequencies in the Mediterranean Field-Cricket ». Frontiers in Ecology and Evolution 9 (2021). https://www.frontiersin.org/articles/10.3389/fevo.2021.647786.2 Schöneich S. Neuroethology of acoustic communication in field crickets - from signal generation to song recognition in an insect brain. Prog Neurobiol. 2020 Nov;194:101882. doi: 10.1016/j.pneurobio.2020.101882. Epub 2020 Jul 13. PMID: 32673695.3 Jones, M. D. R., et M. Dambach. « Response to Sound in Crickets without Tympanal Organs (Gryllus Campestris L.) ». Journal of Comparative Physiology 87, no 1 (1973): 89‑98. https://doi.org/10.1007/BF00699298.4 Duarte, Marina H. L., Ernesto P. Caliari, Marina D. A. Scarpelli, Gabriel O. Lobregat, Robert J. Young, et Renata S. Sousa-Lima. « Effects of mining truck traffic on cricket calling activity ». The Journal of the Acoustical Society of America 146, no 1 (juillet 2019): 656‑64. https://doi.org/10.1121/1.5119125.5 M. Hartbauer, M. E. Siegert, I. Fertschai, et H. Rošmer. « Acoustic signal perception in a noisy habitat: lessons from synchronising insects », s. d. https://link-springer-com.accesdistant.sorbonne-universite.fr/content/pdf/10.1007/s00359-012-0718-1.pdf.6 Eschalier N., Les diffĂ©rents types de dĂ©cibels (dB), consultĂ© le 21/12/2022: https://deveniringeson.com/decibels-db/ Liens annexes pour comprendre audacity / Les dĂ©cibels: Des decibels nĂ©gatifs sous audacity ?, Forum Audiofanzine, consultĂ© le 21/12/2022: https://fr.audiofanzine.com/forums-thematiques/forums/t.531686,des-decibels-negatifs-sous-audacity.html Spectrogram View, Audacity Manual, consultĂ© le 20/12/2022: https://manual.audacityteam.org/man/spectrogram_view.html#meaning đŸ“č UE LU1SXARE - CURIOUS Atelier de Recherche EncadrĂ© CURIOUS-Info Contexte et objectifs de l'Atelier Des recherches sont nĂ©cessaires pour rĂ©pondre aux nombreuses questions posĂ©es sur les rĂ©ponses des Ă©cosystĂšmes et espĂšces des fonds marins au changement climatique et aux impacts d’activitĂ©s humaines.  Ces recherches font appel au dĂ©veloppement de nouveaux outils d’observation in situ miniaturisĂ©s, autonomes et Ă  coĂ»ts limitĂ©s pour pouvoir ĂȘtre largement partagĂ©s. Des camĂ©ras et des capteurs intĂ©grĂ©s Ă  des caissons Ă©tanches permettent notamment d’étudier les fluctuations microclimatiques et de dĂ©crire comment les espĂšces font face aux Ă©vĂšnements les plus extrĂȘmes. Des dispositifs dĂ©ployĂ©s lors d'expĂ©ditions rĂ©centes en grande profondeur sont transfĂ©rĂ©s pour les milieux littoraux dans le cadre du projet de recherche participative MOOREV (CNRS-MITI et Fondation de France). L'atelier de Recherche EncadrĂ© CURIOUS se dĂ©roule  sous forme projets dĂ©diĂ©s Ă  l’analyse d’images sous-marines acquises sur le littoral, ou au dĂ©veloppement des mĂ©thodes d'acquisition pour les rendre plus accessibles. Les groupes de projet peuvent choisir d'explorer au FabLab les possibilitĂ©s offertes par les technologies actuelles open source, notamment le pilotage de camĂ©ras reconditionnĂ©es par une interface de type Arduino nano ou ESP32 pour une autonomie de plusieurs jours Ă  plusieurs semaines.  Les groupes de projet utiliseront diffĂ©rents logiciels pour calibrer et analyser des vidĂ©os et photos sous-marines, construire une base de donnĂ©e de reconnaissance d’espĂšces, et Ă©laborer des tutos pour permettre Ă  d’autres utilisateurs de contribuer Ă  ces recherches.Projet -ScFo MOOREV_Timer-Camera Objectif : DĂ©finition, Ă©valuation et test d'une interface programmable et de l'alimentation pour l'acquisition de sĂ©quences photos et vidĂ©o en autonome avec GoProHero3+ et LED Cree sur de longues durĂ©es (plusieurs semaines Ă  mois) avec ESP32et/ou Arduino Nano. MatĂ©riel fourni : 2 Arduino Nano 1 GoPro HERO3+Carte interface CamDo TTL004BLINK CamDo Time Lapse Controller1  Carte mesure SENSE0161 DFRobot avec electrode pH3 LED CREEProjet-ScFo MOOREV-StĂ©rĂ©ovision_Calibration Objectif : Etablir un protocole d'acquisition d'image sous-marines en stĂ©rĂ©ovision. RĂ©alisation du banc de calibration pour deux camĂ©ras GoProHero3+  et tests pour application en imagerie sous-marine. MatĂ©riel fourni : 2 GoPro HERO3+ reconditionnĂ©es 2022A et 2022B2 caissons 30m pour essai dans l'eau au FabLab1 Caisson GoBenthic GroupBinc avec Extension et Connecteur (pour mesures de taille, distance entre camĂ©ras)Echiquier ou mire Ă  fabriquer au FabLabProjet-ScIn MOOREV-StĂ©rĂ©ovision-Traitement_image Objectif : Etablir un protocole d'analyse d'image en stĂ©rĂ©ovision pour application en imagerie sous-marine Traitement des images avec correction de distorsion - voir GitHub UnderSea (PFE Master SPI-ISI) Tests cartes et camĂ©ra Raspberry : comparaison de diffĂ©rentes stratĂ©gies (Raspberry-Pi avec traitement embarquĂ© versus GoPro Hero3+ et traitement diffĂ©rĂ©). MatĂ©riel fourni : 2 GoPro HERO3+ reconditionnĂ©es 2022A et 2022B + exemple de vidĂ©os in situ Projet-ScIn MOOREV_ Trigger-CamĂ©ra Modulation FrĂ©quence INTRODUCTION Le but de notre projet ARE est de dĂ©clencher une camĂ©ra Go Pro Ă  l’aide d’une carte Ă©lectronique Arduino dans le but de rĂ©colter des donnĂ©es. Les donnĂ©es qui seront les causes du dĂ©clenchement pourront ĂȘtre le pH de l’eau, la tempĂ©rature etc. Cela appelle aussi Ă  une adaptation de la camĂ©ra au milieu avec un processus d’éclairage la nuit, un potentiel processus de dĂ©tection des espĂšces. Le cƓur du sujet rĂ©sidera donc dans le fait de dĂ©clencher la camĂ©ra sous l’action de certaines conditions nĂ©cessaires. Le dessein final serait de mettre le systĂšme dans des conditions rĂ©elles en milieu extĂ©rieur, ce pendant plusieurs jours, afin d’en observer les rĂ©sultats. Objectif : IntĂ©gration d'une carte mesures de pH + tempĂ©rature et d'une Arduino pour la programmation du dĂ©clenchement  d'une camĂ©ra Go Pro autonome. Il s'agit d'interfaçage de l'Arduino avec les cartes de mesures de pH SENSE0161 (ou ADCM355), avec enregistrement des mesures sur carte microSD, pour pouvoir rĂ©veiller  la camĂ©ra sur un seuil de mesure de tempĂ©rature ou de pH. MatĂ©riel fourni : 1 Arduino Nano1 carte support microSD 2  Cartes mesure SENSE0161 DFRobot avec electrodes pH2 cartes mesures  ADUCM355 WATER QUALITY SENSOR (T°C + pH ou REDOX(ORP)2 sondes T°C long. 30 cm - thermistance (Thermocoax) Code pour dĂ©terminer la tempĂ©rature /* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-temperature-sensor */ #include #include const int SENSOR_PIN = 13; // Arduino pin connected to DS18B20 sensor's DQ pin OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature tempSensor(&oneWire); // pass oneWire to DallasTemperature library float tempCelsius; // temperature in Celsius float tempFahrenheit; // temperature in Fahrenheit void setup() { Serial.begin(9600); // initialize serial tempSensor.begin(); // initialize the sensor } void loop() { tempSensor.requestTemperatures(); // send the command to get temperatures tempCelsius = tempSensor.getTempCByIndex(0); // read temperature in Celsius tempFahrenheit = tempCelsius * 9 / 5 + 32; // convert Celsius to Fahrenheit Serial.print("Temperature: "); Serial.print(tempCelsius); // print the temperature in Celsius Serial.print("°C"); Serial.print(" ~ "); // separator between Celsius and Fahrenheit Serial.print(tempFahrenheit); // print the temperature in Fahrenheit Serial.println("°F"); delay(500); } Code de dĂ©clenchement de camĂ©ra #include // DĂ©finir la broche de donnĂ©es pour le capteur DS18B20 #define ONE_WIRE_BUS 2 // Initialiser l'objet OneWire OneWire oneWire(ONE_WIRE_BUS); void setup() { // Ouvrir une communication sĂ©rie Ă  9600 bauds Serial.begin(9600); } void loop() { // Initialiser le capteur byte addr[8]; if (!oneWire.search(addr)) { // Si aucun capteur n'est dĂ©tectĂ©, attendre delay(1000); return; } // VĂ©rifier que le capteur est bien un DS18B20 if (addr[0] != 0x28) { // Si ce n'est pas un DS18B20, attendre delay(1000); return; } // Initialiser la communication avec le capteur oneWire.reset(); oneWire.select(addr); oneWire.write(0x44); // Lancer la conversion de tempĂ©rature // Attendre la fin de la conversion delay(1000); // Lire la tempĂ©rature oneWire.reset(); oneWire.select(addr); oneWire.write(0xBE); // Demander la lecture de la tempĂ©rature byte data[9]; for (byte i = 0; i < 9; i++) { data[i] = oneWire.read(); } int temp_raw = (data[1] << 8) | data[0]; float temp_celsius = (float) temp_raw / 16.0; // Afficher la tempĂ©rature Serial.print("TempĂ©rature: "); Serial.print(temp_celsius); Serial.println(" °C"); // Attendre avant de recommencer delay(1000); } Code pour avoir le pH /* # This sample code is used to test the pH meter V1.0. # Editor : YouYou # Ver : 1.0 # Product: analog pH meter # SKU : SEN0161 */ #define SensorPin A0 //pH meter Analog output to Arduino Analog Input 0 #define Offset 0.00 //deviation compensate #define LED 13 #define samplingInterval 20 #define printInterval 800 #define ArrayLenth 40 //times of collection int pHArray[ArrayLenth]; //Store the average value of the sensor feedback int pHArrayIndex=0; void setup(void) { pinMode(LED,OUTPUT); Serial.begin(9600); Serial.println("pH meter experiment!"); //Test the serial monitor } void loop(void) { static unsigned long samplingTime = millis(); static unsigned long printTime = millis(); static float pHValue,voltage; if(millis()-samplingTime > samplingInterval) { pHArray[pHArrayIndex++]=analogRead(SensorPin); if(pHArrayIndex==ArrayLenth)pHArrayIndex=0; voltage = avergearray(pHArray, ArrayLenth)*5.0/1024; pHValue = 3.5*voltage+Offset; samplingTime=millis(); } if(millis() - printTime > printInterval) //Every 800 milliseconds, print a numerical, convert the state of the LED indicator { Serial.print("Voltage:"); Serial.print(voltage,2); Serial.print(" pH value: "); Serial.println(pHValue,2); digitalWrite(LED,digitalRead(LED)^1); printTime=millis(); } } double avergearray(int* arr, int number){ int i; int max,min; double avg; long amount=0; if(number<=0){ Serial.println("Error number for the array to avraging!/n"); return 0; } if(number<5){ //less than 5, calculated directly statistics for(i=0;imax){ amount+=max; //arr>max max=arr[i]; }else{ amount+=arr[i]; //min<=arr<=max } }//if }//for avg = (double)amount/(number-2); }//if return avg; } Code de dĂ©clenchement avec pH // Inclure la bibliothĂšque pour la communication sĂ©rie #include // DĂ©finir les broches de communication sĂ©rie SoftwareSerial pHSerial(2, 3); // RX, TX // DĂ©finir la broche de commande de la camĂ©ra const int cameraPin = 4; // DĂ©finir les constantes pour la calibration du capteur de pH const float pH7Voltage = 2.5; const float pH4Voltage = 1.98; const float pH10Voltage = 3.07; // Fonction pour convertir la tension en pH float convertToPH(float voltage) { float pH = 7 - (voltage - pH7Voltage) / (pH7Voltage - pH4Voltage) * 3; return pH; } void setup() { // Ouvrir la communication sĂ©rie pour le dĂ©bogage Serial.begin(9600); // Configurer la communication sĂ©rie pour le capteur de pH pHSerial.begin(9600); // DĂ©finir la broche de commande de la camĂ©ra en mode sortie pinMode(cameraPin, OUTPUT); } void loop() { // Lire la tension du capteur de pH pHSerial.write('R'); // Envoyer la commande pour lire la tension delay(1000); // Attendre la rĂ©ponse while (pHSerial.available() < 4) {} // Attendre la rĂ©ponse complĂšte float voltage = (float)pHSerial.parseFloat() / 1000.0; // Convertir la rĂ©ponse en voltage // Convertir la tension en pH float pH = convertToPH(voltage); // Afficher les rĂ©sultats Serial.print("Voltage = "); Serial.print(voltage, 2); Serial.print(" V, pH = "); Serial.print(pH, 2); Serial.println(); // DĂ©clencher la camĂ©ra si le pH est infĂ©rieur Ă  7 if (pH < 7) { digitalWrite(cameraPin, HIGH); delay(500); digitalWrite(cameraPin, LOW); } // Attendre une seconde avant de recommencer delay(1000); } ⚠Les codes ci-dessus restent Ă  tester, aucune manipulation n'a Ă©tĂ© faites (On n'a pas eu accĂšs Ă  notre boite ouin ouin đŸ„ČđŸ„Č). Mardi 11 Avril Nous avons eu accĂšs Ă  notre boĂźte et avons put effectuer quelques manipulations. Nous avons testĂ© le code pour la mesure du pH que l'on Ă  trouvĂ© sur le wiki de dfrobot; Ă  l'aide d'une sonde de pH, de notre carte Arduino Nano, d'un Mac et de quelques branchements. : Comme les images ci-dessus l'indique, le code a fonctionner et la sonde est en capacitĂ© de prĂ©lever le pH d'un liquide. ( L'eau Ă©tant prĂ©levĂ©e du robinet il est normal que le pH ne soit pas exactement Ă©quivalent Ă  7, mais qu'il s'en approche) Nous avons aussi testĂ© le code de prĂ©lĂšvement de tempĂ©rature Ă©crit prĂ©cĂ©demment, le code semble bien fonctionnĂ©, on reçoit bien des valeurs de TempĂ©rature dans le Serial Monitor cependant les valeurs ne semblent pas cohĂ©rentes probablement  dĂ»t Ă  un problĂšme de conversion . BIBLIOGRAPHIE Analog Input | Arduino Documentation. https://docs.arduino.cc/built-in-examples/analog/AnalogInput. ConsultĂ© le 30 mars 2023. analogRead() - Arduino Reference. https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/. ConsultĂ© le 30 mars 2023. Nano | Arduino Documentation. https://docs.arduino.cc/hardware/nano. ConsultĂ© le 30 mars 2023. SPI - Arduino Reference. https://www.arduino.cc/reference/en/language/functions/communication/spi/. ConsultĂ© le 30 mars 2023. WiFi101 - Arduino Reference. https://www.arduino.cc/reference/en/libraries/wifi101/. ConsultĂ© le 30 mars 2023. « Arduino - Temperature Sensor | Arduino Tutorial ». Arduino Getting Started, https://arduinogetstarted.com/tutorials/arduino-temperature-sensor. ConsultĂ© le 30 mars 2023. DS18B20 Temperature Sensor For Arduino - DFRobot Wiki. https://wiki.dfrobot.com/Gravity__DS18B20_Temperature_Sensor__Arduino_Compatible__V2_SKU__DFR0024. ConsultĂ© le 30 mars 2023. SKU SEN0161 PH Meter. https://wiki.dfrobot.com/PH_meter_SKU__SEN0161_. ConsultĂ© le 7 avril 2023. Projet-ScIn_MOOREV-EspĂšces-annotation Objectif : RĂ©aliser un tutoriel pour la construction d'une banque d'images sous-marines pour la reconnaissance d'espĂšces communes des habitats littoraux de Atlantique.Comparaison des images extraites des sĂ©ries acquises par le projet MOOREV avec les bases de donnĂ©es biodiversitĂ©. Tests des logiciels d'annotation d'images (Roboflow ou autres logiciels Open Source).Le projet de recherches participatives MOOREV Le projet MOOREV-Microclimats et nouveau Outils d’Observation des RĂ©ponses du Vivant sur les fonds marins est soutenu par la Mission Interdisciplinaire et des Initiatives Transverses du CNRS et Ă©galement par la Fondation de France. Le projet s’inspire d'instruments dĂ©veloppĂ©s pour les recherches sur les fonds marins en grande profondeur pour construire des instruments pouvant ĂȘtre utilisĂ©s par un plus large public. Notre objectif est de permettre la co-conception et l’appropriation de modules d'observation miniaturisĂ©s et autonomes, dans un cadre de recherches participatives, pour partager les connaissances sur le rĂŽle d'espĂšces constructrices d'habitats et la sensibilitĂ© aux perturbations climatiques. L’intĂ©gration de camĂ©ras et de capteurs et l’adaptation de mĂ©thodes d’analyse d’image et des outils de l’IA sont dĂ©veloppĂ©es avec le FabLab SU dans le cadre des Ateliers de Recherche EncadrĂ©s CURIOUS (Licence 1 Sorbonne UniversitĂ©).Le dĂ©ploiement des Ă©quipements sur le terrain, puis l’analyse des donnĂ©es acquises, participent aux supports pĂ©dagogiques dĂ©veloppĂ©s Ă  la Station Marine de Concarneau dans le cadre des ateliers des Aires Marines Educatives animĂ©s par Esprit Nat'ure.Documentation MOOREV-Timer-Camera ScFo Information: Groupe de projet: L1 - Science Formelles Maths-Info - (fĂ©vrier - avril 2023) - CHU AmĂ©lie amelie.chu@etu.sorbonne-universite.fr - SAE LIM Thierry thierry.sae_lim@etu.sorbonne-universite.fr - PERRIN DE BRICHAMBAUT Jules jules.perrin_de_brichambaut@etu.sorbonne-universite.fr Contexte: Dans le cadre de notre projet d'ARE, nous nous focalisons sur la rĂ©colte de donnĂ©es images et vidĂ©os d'espĂšces marines Ă  l'aide de camĂ©ras et de capteurs. Objectif: Notre objectif est de concevoir un systĂšme autonome qui permet d'enregistrer ces donnĂ©es en profondeur sur une longue durĂ©e (plusieurs semaines Ă  plusieurs mois), Ă  faible coĂ»t et Ă  faible consommation d'Ă©nergie. Le but de ce tuto est de mettre en place un systĂšme autonome sous marin qui permet de prendre des donnĂ©es photos et vidĂ©os d’espĂšces aquatiques sur une durĂ©e dĂ©terminĂ©e. Notre objectif est donc de finaliser un prototype peu coĂ»teux et ayant une consommation d’énergie minimale. MatĂ©riel: - GoPro Hero 3+S - Adafruit ESP32 Feather [0] - Arduino NANO - Breadboard - connecteur arriĂšre de la camĂ©ra (connecteur herobus) modĂšle DD1P030MA1 - Carte SD 64 Go (ou 32 Go) - ESP32-Cam - MultimĂštre (modĂšle utilisĂ© TENMA 72-14620) Le tuto se dĂ©coupera en plusieurs parties: IDE et programmation des microcontrĂŽleurs RĂ©alisation de tests de consommations Script de la GoPro Assemblage du prototype Alternative: ESP32-Cam RĂ©fĂ©rences Machines utilisĂ©es: - fer Ă  souder 1.TUTO:  IDE et programmation des microcontrĂŽleurs Etape 1 : On installe tout d’abord l’IDE Arduino (Integrated Development Environment) pour pouvoir programmer les scripts des deux cartes: https://www.arduino.cc/en/software [1] (lien pour le tĂ©lĂ©chargement). Interface du logiciel en question Une fois tĂ©lĂ©chargĂ©, lancez l’application. En haut Ă  gauche, choisir le microcontrĂŽleur adaptĂ© (dans notre cas, il s’agit d’un Adrafruit ESP32 Feather, d’un ESP32-CAM ou d’un Arduino Nano). Sur la gauche, cliquer sur la deuxiĂšme icĂŽne ‘BOARDS MANAGER’ et rechercher ‘esp32’. Installer la plus rĂ©cente version de la librairie ‘esp32’ par Expressif Systems. Cela permettra d’avoir la gestion pour programmer les ESP32. Etape 2: Nous allons maintenant Ă©crire les scripts pour les deux cartes. Notre script va simuler une sĂ©quence oĂč la carte allume une LED toutes les minutes pendant 5 secondes. Le lien vers notre GitHub contient les scripts des deux cartes dans les deux fichiers ESP32 et Arduino [2] : https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera [3] Pour transmettre les fichiers, relier la carte Ă  l’ordinateur, sĂ©lectionner le port COM de la carte, et cliquer en haut Ă  gauche sur le bouton flĂšche ‘upload’. Pour chaque modification du script, il faudra rĂ©itĂ©rer cette opĂ©ration. 2.TUTO: RĂ©alisation de tests de consommations On rĂ©alise maintenant les tests de consommations. Pour cela, nous allons utiliser le multimĂštre. Nous souhaitons rĂ©colter les donnĂ©es. Etape 1: installation du logiciel En fonction du multimĂštre utilisĂ©, la fonctionnalitĂ© peut ne pas ĂȘtre disponible. Il faudra alors noter manuellement les donnĂ©es. Dans le cas contraire, installer le logiciel associĂ©. Dans notre cas avec ce modĂšle, installer le logiciel Ă  l’aide du CD fourni avec le manuel d’utilisation. Lancer le logiciel puis brancher l’ordinateur au multimĂštre. ModĂšle du multimĂštre utilisĂ© dans notre cas : TENMA 72-14620 - Installer sur l’ordinateur le modĂšle du multimĂštre correspondant au modĂšle - Connecter l’ordinateur et l’appareil grĂące au cĂąble fourni avec l‘appareil - RĂ©gler le logiciel sur la connexion via USB, l’enregistrement est prĂȘt Ă  dĂ©marrer avec le bouton «DĂ©marrer». - DiffĂ©rentes options sont disponibles une fois l'enregistrement terminĂ©: enregistrer les donnĂ©es dans un fichier ou les imprimer. Inteface du logiciel Etape 2: Branchement Nous allons rĂ©aliser un branchement pour alimenter les cartes et mesurer les consommations. On enfiche les cartes sur une breadboard, puis on les alimente avec un gĂ©nĂ©rateur rĂ©glĂ© sur 5V. On n’oublie pas le multimĂštre dans le branchement. On alimente les cartes et on rĂ©colte les donnĂ©es sur une durĂ©e de 3 sĂ©quences, soit environ 3 minutes afin d’avoir une moyenne Ă  la fin. On enregistre le fichier sous forme Excel (ou autre format). Afin de d’alimenter les cartes pour rĂ©aliser les mesures de l’intensitĂ© utilisĂ©, on connecte une source en +5V sur le pin 5V et la masse sur le pin GND de l’arduino Nano [4]. Pour l’ESP32 (avec une carte Adafruit HUZZAH32 - ESP32 Feather), connecter la broche USB au 5V et la masse Ă  la broche GND [5]. Ne pas oublier de brancher le multimĂštre en sĂ©rie du microcontrĂŽleur et de ne pas utiliser le port USB des cartes arduino ou ESP32 lors des mesures (sous risques d'endommager l'appareil branchĂ© en USB) !                                               Branchements et circuit rĂ©alisĂ©s On rĂ©colte les donnĂ©es de consommation pour les deux cartes Ă  l'aide du logiciel sur ordinateur. Etape 3: analyse des donnĂ©es Nous analysons ensuite les donnĂ©es en utilisant les bibliothĂšques python Pandas et Matplotlib avec Python. Pour pouvoir exploiter le fichier Excel sous Python, il ne faut pas oublier de remplacer les «,» par des «.». Le fichier qui nous a permis de faire le graphique est disponible sur le GitHub sous le nom de «plot_conso» [3]. On observe que l'Arduino Nano consomme moins que l'ESP32. Les pics de chaque lignes correspondent Ă  l'allumage de la LED de chaque carte, et l'espace entre chaque pic correspond au mode veille. L'Arduino semble le mieux adaptĂ© en terme de consommation. Arduino ESP32 mean 6.1727 mA 10.5101 mA standard deviation 4.6997 11.8473 total time 5.0 min 18.0 s 5.0 min 0.0 s total time consumption 2981.44 mA 4792.6 mA average consumption 22.2219 mW/h 37.8363 mW/h Etape 4: soudure des fils Nous avons choisi de contrĂŽler la camĂ©ra via le connecteur arriĂšre [6] qui permet d’avoir accĂšs Ă  une grande partie des fonctionnalitĂ©s. Pour utiliser notre connecteur, il nous faut souder des fils dessus. Les 30 fils de couleurs diffĂ©rentes     Les pins du connecteur afin que l’on puisse distinguer les pins adjacentes Nous allons souder les 30 pins. Il est possible pour plus de facilitĂ© de ne souder que les pins concernĂ©s, mais le tuto se reposera sur les 30 pins [7]. - Couper et dĂ©nuder 30 fils - Chauffer les fers Ă  souder Ă  350° (pas trop sinon l’étain fond mal) - Prendre le fer Ă  souder et plaquer fermement le fil au pin, puis approcher l’étain pour le faire fondre grĂące au flux. Brasure de deux pins adjacentes 3.TUTO: Script de la GoPro La GoPro Hero 3+S a pour avantage de pouvoir lancer un script prĂ©sent sur la carte SD dĂšs son allumage. Nous allons configurer la camĂ©ra et Ă©crire le script. Etape 1: Allumer la camĂ©ra et se rendre dans les paramĂštres. Chercher l’option «One Button» et la configurer sur OFF. Configurer au passage la rĂ©solution souhaitĂ©e pour les photos et vidĂ©os Etape 2: Pour le script de la GoPro, il faut enregistrer le fichier sous extension “.ash” . Il est disponible sur notre  GitHub [4]. Le script que nous avons Ă©crit permet de prendre une vidĂ©o et trois photos avant de redĂ©marrer. Disposer de ce script dans la racine de la carte SD/crĂ©er un dossier AUTOEXEC qui contiendra le fichier [8]. Enregistrer le fichier sous le nom «autoexec.ash» Commandes Utilisation sleep x Rendre la camĂ©ra inactive pendant x secondes. Temps d’attente t app appmode video Passage en mode vidĂ©o de la camĂ©ra t app appmode photo Passage en mode photo t app button shutter PR Enclenchement du bouton dĂ©clencheur pour prendre une photo, prendre une vidĂ©o/arrĂȘter une vidĂ©o Il est intĂ©ressant de programmer les sĂ©quences en tenant en compte de la batterie et de la capacitĂ© de stockage de la carte SD. Pour la GoPro Hero3+S, nous disposons de 64G et d’une batterie d’environ 10 000A. En prenant en compte la taille d’une photo (12MPX) et d’une seconde de vidĂ©o (en 1080p), on peut calculer combien de temps peut tenir notre prototype. Taille en ko 1 photo vidĂ©o (1 sec) GoPro Hero 3+S 4000 5000 On calcule ainsi par approximation le nombre de jour que nous pouvons tenir sous l’eau tout en enregistrant des donnĂ©es avec la formule: (CapacitĂ© de la carte SD) / ( (nombre de photos par jour)*(taille d’une photo) + (temps de vidĂ©o en seconde par jour)*(taille d’une seconde de vidĂ©o) ) Le calcul peut se faire sur une durĂ©e d’un mois ou bien d’un an. Par exemple, pour 10 secondes de vidĂ©os et 24 photos par jour, cela nous fait: 64000000/(24*40000 + 10*5000) = 438,36 soit environ 438 jours, Ă©quivalent Ă  environ 14 mois. Il est aussi possible de calculer la durĂ©e en fonction de la consommation de la camĂ©ra [9]. 4.TUTO: Assemblage du prototype Maintenant que nous disposons de tous les Ă©lĂ©ments dont nous avons besoin, nous pouvons brancher le tout. On branche Ă  l’Arduino NANO sur le pin A0 et le pin GND aux pins de la masse et du bouton d’alimentation (respectivement le pin 30 et le pin 19) [10]. GrĂące au programme Ă©crit pour l’Arduino NANO, nous avons programmĂ© des sĂ©quences d’allumage de la camĂ©ra. Nous avons maintenant une camĂ©ra qui prend trois photos toutes les 30 secondes dix fois de suite. Montage de la Gopro reliĂ© Ă  l'Arduino Nano 5. Alternative: ESP32-Cam        ESP32-Cam Pour utiliser une carte SD avec un ESP32-CAM, il est nĂ©cessaire de la formater en FAT32 (Attention, mĂȘme si la carte SD fait plus de 4Go, l’ESP32-CAM ne sait pas gĂ©rer plus avec le port intĂ©grĂ©) Programmation d’une sĂ©quence de test pour l’ESP32-CAM : -    Connexion de l’ESP32-CAM avec une cable usb-ttl Ă  l’ordinateur : o    Broche rx sur u0t o    Broche tx sur u0r o    GND sur GND o    5v sur 5v o    Relier les broches IO0 et GND Dans le menu de sĂ©lection de la carte, choisir la carte “AI-Thinker ESP32-CAM” et le port COM sur lequel est connectĂ© l’ESP32. RĂ©cupĂ©rer le code disponible pour prendre une photo: https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera/blob/main/ESP32/ESP32_CAM_test_photo/ESP32_CAM_test_photo.ino ou un Ă©quivalent de vidĂ©o, en rĂ©alitĂ© plusieurs photos par secondes: https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera/blob/main/ESP32/ESP32_CAM_test_video/ESP32_CAM_test_video.ino AprĂšs cela, il ne reste plus qu’à tĂ©lĂ©verser le code sur l’ESP32-CAM, si la connexion ne s’effectue pas directement, appuyer sur le bouton de reset du microcontrĂŽleur. Afin d’afficher les messages envoyĂ©es par la carte en dĂ©bug, ouvrir la console sĂ©rie intĂ©grĂ©e de l’IDE et choisir une vitesse de transfert de 115200. Le code pour photo rĂ©alise une photo Ă  chaque allumage ou redĂ©marrage de la carte et celui-ci pour la “vidĂ©o” prend 10 images par secondes dans la configuration actuelle jusqu’au dĂ©branchement de la carte. Pour comprendre plus en dĂ©tail le fonctionnement des scripts, je vous conseille l’article sur l’ESP32-CAM en rĂ©fĂ©rence  [11]. 6. RĂ©fĂ©rences: RĂ©fĂ©rence de l’ESP32: [0] https://www.adafruit.com/product/3405 TĂ©lĂ©chargement de l’IDE: [1] https://www.arduino.cc/en/software RĂ©fĂ©rence sur les modes de l’ESP32 pour le code: [2] https://letmeknow.fr/fr/blog/142-tutoriel-les-sleep-modes-de-lesp32 Lien vers notre GitHub: [3] https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera Lien pour alimentation de l’Arduino: [4]https://idehack.com/alimenter-larduino-nano/ Lien pour branchement ESP32: [5] https://learn.adafruit.com/adafruit-huzzah32-esp32-feather/power-management Lien vers le modĂšle du connecteur Herobus: [6] https://www.digikey.fr/en/products/detail/jae-electronics/DD1P030MA1/1283154 Lien vers les descriptions des pins du connecteur arriĂšre de la camĂ©ra: [7] https://mewpro.cc/en/2014/10/14/herobus-pinout-of-gopro-hero-3-black/ RĂ©fĂ©rence autoexec scripts: [8] https://github.com/KonradIT/autoexechack Lien vers les informations concernant le connecteur herobus: [10] https://github.com/KonradIT/gopro-herobus-sdk/blob/master/diyprojects.md Lien vers le site de Camdo sur la batterie des camĂ©ras: [9] https://cam-do.com/pages/power-consumption-by-gopro-camera-model Lien vers l’article sur l’ESP32-Cam : [11] https://randomnerdtutorials.com/esp32-cam-take-photo-save-microsd-card/Journal de bord MOOREV-Timer-Camera ScFo Journal de bord: 06/03: - Pour notre systĂšme il faut que l'on choisisse entre l'Arduino NANO et l'ESP32 en se basant sur leur consommation en Ă©nergie. Il faut que l'on puisse mesurer la consommation en Ă©nergie sur diffĂ©rentes sĂ©quences et diffĂ©rentes durĂ©e. 09/03: [sĂ©ance Fablab] - Durant la sĂ©ance nous avons discutĂ© du projet et en quoi le Fablab peut nous aider. RĂ©flexion sur les tests et les protocoles Ă  rĂ©aliser pour la consommation de la batterie avec les deux cartes, avec recherches sur la mise en veille des cartes. Recherches sur les aspects de la GoPro Hero3+ et comment la manipuler avec un programme implantĂ©. RĂ©flexion sur les durĂ©es et les sĂ©quences d'enregistrements pour la camĂ©ra. - Visite de l'atelier Fablab partie Ă©lectronique, avec prĂ©sentation du matĂ©riel mis Ă  disposition. PrĂ©paration du matĂ©riel pour la prochaine sĂ©ance au Fablab. 10/03: [sĂ©ance Fablab] - Point et vu d'ensemble sur tout le matĂ©riel que nous possĂ©dons. - Point sur la façon de relier le micro processeur Ă  la GoPro. Recherches sur le port Hero de la GoPro Hero 3+ qui nous permet de conclure sur l'utilisation du port Hero pour contrĂŽler de maniĂšre filaire la camĂ©ra. Recherche de rĂ©fĂ©rences afin de pouvoir trouver et se procurer un branchement compatible au port Hero. Liens: Autre possibilitĂ© pensĂ©e de connecter la GoPro qui nĂ©cessite la modification de la camĂ©ra (idĂ©e mise de cĂŽtĂ©): https://hackaday.io/project/12108-gopro-hero-4-wired-control https://www.youtube.com/watch?v=mpPfk4sLb3I Informations sur le port Hero Bus de la GoPro Hero: https://wiki.logre.eu/index.php/GObotPRO 17/03: [sĂ©ance Fablab] - RĂ©union afin de prĂ©parer les tests de consommation d'Ă©nergie entre l'Arduino Nano et l'ESP32. Acquisition du matĂ©riel nĂ©cessaire, et codage des cartes. - Tests (code) du nombre de cycles par minutes possible sur l'Arduino qui va permettre d'allumer et d'Ă©teindre la camĂ©ra. - Emprunt d'un ESP32 qu'on a du souder au labo Ă©lectronique. - CrĂ©ation d'une page GitHub afin de dĂ©poser notre code et recherches sur le mode hibernation de l'esp32 ainsi que la façon de rĂ©cupĂ©rer les donnĂ©es d'un multimĂštre sur l'ordinateur afin d'enregistrer les donnĂ©es. 24/03: [sĂ©ance Fablab] - Prise de mesures des consommations. - Programmation de l'ESP32 en mode basse consommation, mise Ă  disposition du code sur Github. RĂ©alisation d'un montage sur planche de prototypage pour mesurer la consommation des microcontrĂŽleurs avec un multimĂštre. (Lien vers le GitHub) - TĂ©lĂ©chargement d'un logiciel liĂ© au multimĂštre afin de le connecter Ă  ce dernier pour rĂ©colter en temps rĂ©el les donnĂ©es mesurĂ©es. - RĂ©alisation des tableaux Excel avec les rĂ©sultats. 31/03: [SĂ©ance Fablab] - RĂ©ception du matĂ©riel nĂ©cessaire (ESP32-CAM et port Hero) pour connecter le microcontrĂŽleur Ă  la GoPro. - On procĂšde ensuite Ă  la soudure de fils sur le port de chaque pins afin de pouvoir accĂ©der aux pins - RĂ©flexion sur la programmation de l'ESP32-Cam - Calcul sur tableau Excel des diffĂ©rentes sĂ©quences possible en prenant en compte la capacitĂ© de stockage de la carte SD et de la taille d'une vidĂ©o/photo. Tableau de sĂ©quence dans le rĂ©pertoire GitHub: Lien vers le GitHub 04/04: [SĂ©ance Fablab] - Continuation de la soudure des pins sur le connecteur - Programmation de l'ESP32 Cam et test des photos. Mesure de leur capacitĂ© de stockage photos et vidĂ©os. Rencontre d'un problĂšme: ESP32 cam -> focal fixe par dĂ©faut avec le capteur OV2640, Ă  remplacer par un autre capteur plus adaptĂ© (lien vers le capteur). - Test des pins du connecteur et confirmations des ports (port 19 pour allumage de la camĂ©ra). Test lancer un script sur carte SD en allumant la GoPro. 07/04: [SĂ©ance Fablab] - Nous avons constatĂ© que la soudure n'a pas tenue et que des broches ont Ă©tĂ© cassĂ© lors de la manipulation. Nous rĂ©flĂ©chissons donc Ă  un autre moyen de souder des fils moins rigides, ou bien Ă  une alternative. - Le but de la sĂ©ance Ă©tait d'allumer la GoPro Ă  l'aide de l'arduino et du port Hero, et de vĂ©rifier que le script se lançait Ă  l'allumage de la camĂ©ra. Nous rencontrons toutefois un problĂšme concernant la lecture du script, que la camĂ©ra ne dĂ©tecte pas. 14/04: [SĂ©ance Fablab] -Tests du fonctionnement du script sur la GoPro. PrĂ©paration de la prĂ©sentation Ă  l'oral et des comptes rendus concernant l'UE. Le script lancĂ© est disponible sur le rĂ©pertoire GitHub sous le nom de 'autoexec.ash'. (Lien vers le GitHub) (Une fois que nous pouvons connecter l'Arduino Ă  la GoPro, nous devons nous assurer que la GoPro lit bien le script prĂ©sent sur la carte SD dĂšs l'allumage. Pour cela, nous allons dĂ©poser dans la racine de la carte un fichier sous le nom de 'autoexec.ash' et qui contient les instructions. ) 18/04: [SĂ©ance Fablab] DerniĂšre sĂ©ance avant le rendu des travaux. Nous avons testĂ© une derniĂšre fois le lancement du script sur la GoPro en branchant le tout sur l'Arduino. Nous avons fait face Ă  quelques problĂšme au niveau des branchements qui n'allumait pas la camĂ©ra. Le problĂšme a Ă©tĂ© rĂ©solu Ă  la fin grĂące Ă  l'aide d'un chercheur prĂ©sent au Fablab. Le prototype fonctionne, il ne reste qu'a programmer la bonne sĂ©quence sur le script de la GoPro.Journal de bord MOOREV-StĂ©rĂ©ovision_Calibration Journal de bord: Vendredi 7 avril: -On a imprimer prĂ©alablement des Ă©chiquier pour la calibration. -On a utiliser les 2 Gopros Heroes 3+ pour prendre des photos. -On a placĂ© les camĂ©ras et l'Ă©chiquier Ă  une distance de 20cm -On a pris des photos de l'Ă©chiquier dans plusieurs angles. -On les a trier et sĂ©parer par photo droite et gauche, -On a calibrĂ© les photos grĂące a l'application "Stereo Camera Calibrator" de MatLab Mardi 11 avril: -On refait de la calibration, on rĂ©duit la marge d'erreur de la reprojection pour ĂȘtre environ en dessous de 10 pixel đŸ–‹ïž MU5MN045 - Atelier conception 3D et 2D Master Management de l'Innovation S2 2022-2023 Consignes Semaine 1 ModĂ©lisation 3D, ModĂ©lisation 2D, Impression 3D CrĂ©er un modĂšle 3D de porte-savon en deux parties (grille et contenant), le prĂ©parer pour l'impression et l'imprimer. Logiciels Ă  utiliser Inkscape pour crĂ©er un ou plusieurs Ă©lĂ©ments 2D Ă  extruder (a minima une grille du porte-savon, en option un logo) les modĂšles doivent ĂȘtre exportĂ©s en .svg Tinkercad pour la modĂ©lisation 3D les modĂšles doivent ĂȘtre exportĂ©s en .stl Ideamaker pour slicer vos modĂšles 3D le fichier exportĂ© sera sous forme de .gcode La documentation doit contenir des captures d'Ă©cran des diffĂ©rentes Ă©tapes de conception, avec quelques lignes d'explication. Vous devez Ă©galement ajouter vos fichiers sources Ă  votre documentation : .svg, .stl, .gcode Vendredi : prĂ©sentation de la documentation, les fichiers doivent ĂȘtre finalisĂ©s et importĂ©s. Dans l'idĂ©al, avoir son projet imprimĂ©.Ryan Vicente Projet porte-savon Le but du projet Pour cette premiĂšre semaine de cours, le premier mini-projet Ă  rĂ©aliser est un porte-savon imprimĂ© en 3D. Pour rĂ©aliser cette impression. Nous allons crĂ©er deux structures : Une base 'contenant' designĂ©e en 3D sur Tinkercad Une grille Ă  dĂ©poser dans le contenant dĂ©signĂ©e en 2D sur InkScape Le but est de crĂ©er une structure fonctionnelle qui permet Ă  l'eau de s'Ă©couler sans que le savon ne se ramolisse. Une fois les patrons rĂ©alisĂ©e, la structure sera imprimĂ©e Ă  l'aide d'IdeaMaker. La base du porte-savon La base du porte savon est composĂ©e de plusieurs blocs de bases prĂ©sents sur Tinkercad. Pour rĂ©aliser la structure de base : J'ai crĂ©er un cube allongĂ© ayant les bords arrondis J'ai utilisĂ© un second cube de perçage allongĂ© ayant des bords droits afin de trouer le premier bloc (via une union) tout en laissant un fond Il a Ă©tĂ© dĂ©cidĂ© de mettre en place un robinet sur l'un des angles de la structure afin de faciliter l'Ă©coulement de l'eau lors du versement de l'eau stagnante. Pour rĂ©aliser ce robinet il a fallu : CrĂ©er un cylindre et le dĂ©poser dans l'un des coins de la base CrĂ©er un second cylindre de perçage pour trouer le cylindre Le rĂ©sultat de ces premiĂšres opĂ©rations a donnĂ© : J'ai ensuite pu ajouter des cales pour placer la grille sur le porte-savon Ă  l'aide de triangles rectangles placĂ©s sur la partie interne de la base : La base a Ă©tĂ© rĂ©alisĂ©e en diffĂ©rentes versions : Avec porte-blaireau Avec grille intĂ©grĂ©e Sans robinet et avec grille intĂ©grĂ©e Pour l'exercice, la version de base qui sera utilisĂ©e est la version classique avec robinet. La grille du porte-savon Afin de rĂ©aliser la grille du porte-savon j'ai utilisĂ© InkScape. À l'aide de cette plateforme OpenSource et libre, j'ai pu rĂ©aliser le motif de ma grille en 2D, en utilisant des motifs de bases tels que le rectangle et le polygone. CrĂ©er un rectangle dans les mesures souhaitĂ©es Dessiner le motif souhaitĂ© Ă  l'aide des formes de bases disponibles Une fois les formes superposĂ©es sur le rectangle Ă  l'endroit adĂ©quat, utiliser le boolĂ©en 'DiffĂ©rence' afin de soustraire le motif au rectangle et ainsi crĂ©er la grille La grille mesure 110mm sur 80mm pour correspondre aux mesures de la plus part des savons Le document vectoriel (.svg) ainsi issu d'InkScape peut ĂȘtre extrudĂ© sur Tinkercad Ă  cĂŽtĂ© de la base du porte-savon. Si la grille n'arrive pas Ă  s'uploader sur Tinkercad, il faut faire une capture d'Ă©cran de la grille 2D et faire passer cette capture d'objet matriciel Ă  vectoriel sur InkScape. Il faut ensuite uploader ce nouveau document sur Tinkercad. Mesures en millimĂštres Mise en impression Une fois les deux Ă©lĂ©ments regroupĂ©s sur le mĂȘme document Tinkercad (.stl), ils peuvent ĂȘtre modĂ©lisĂ©s en 3D sur IdeaMaker pour prĂ©parer l'impression 3D. L'impression sera alors modĂ©lisĂ©e sur un document .Gcode (langage des machines outils) : CaractĂ©ristiques d'impression Afin d'imprimer le porte-savon, nous allons privilĂ©gier un remplissage Ă  10% afin d'apporter une certaine soliditĂ© Ă  l'objet qui sera utilisĂ© sans utiliser trop de matiĂšre (et ne pas rendre le coĂ»t de production trop Ă©levĂ©). Pour optimiser la rĂ©sistance et la duretĂ© du porte-savon, il est judicieux de l'imprimer en 3-4 coques. Du point de vue de l'adhĂ©rence, il semblerait qu'il n'y ai pas besoin de mettre des supports (ou de bords) en place pour l'impression. La hauteur de la couche restera 0,25mm par dĂ©faut. Temps d'impression estimĂ© : 6h 44min 49sec CoĂ»t estimĂ© d'impression : 2,36€ QuantitĂ© estimĂ©e : 78,6g / 26,35m Le prix moyen d'un porte-savon Ă©tant de 5€ il est possible de vendre le porte-savon au double du coĂ»t de production à minima. Documents sources (joints Ă  la page) Grille du porte-savon (.svg) Porte-savon (.stl) RĂ©aliser un montage Ă©lectronique Arduino Le but du projet Le deuxiĂšme cours consiste en l'apprentissage de l'Ă©lectronique Ă  travers la modĂ©lisation de circuit Arduino sur Tinkercad. AprĂšs avoir compris les bases de la conception Ă©lectronique, le but du cours est de pratiquer sur de vrais circuits Ă  l'aide de l'application Arduino afin de pouvoir automatiser des actions et apporter de la complexitĂ© et de nouvelles fonctionnalitĂ©s Ă  nos prototypes. Dans ce cours, nous utiliserons des Arduino Uno. L'ensemble des modalitĂ©s et convention relatives Ă  l'Arduino sont disponibles sur le lien 'Introduction Ă  l'Arduino' ci-joint. La loi d’Ohm La loi d'Ohm est la loi de base en Ă©lectronique. C'est une loi physique empirique qui lie l'intensitĂ© du courant Ă©lectrique traversant un dipĂŽle Ă©lectrique à la tension à ses bornes. Cette loi permet de dĂ©terminer la valeur d'une rĂ©sistance. U = R*I U la tension aux bornes de la rĂ©sistance ; I l’intensitĂ© du courant qui circule Ă  travers la rĂ©sistance ; R la valeur de la rĂ©sistance. Codes Programme Blink (dĂ©butant) #define LED 10 int compteur = 0; void setup() { Serial.begin(9600); // permet de dire que l'on va initier une communication entre l'ordinateur et le circuit Ă  la vitesse 9600 pinMode(LED, OUTPUT); // dĂ©claration de la pin 10 comme sortie } void loop() { Serial.print("Debut de la boucle "); Serial.println(compteur); digitalWrite(LED, HIGH); delay(1000); // ne rien faire pendant 1000ms digitalWrite(LED, LOW); delay(1000); // ne rien faire pendant 1000ms compteur++; // incrĂ©mentation du compteur } Le programme Blink est le programme de base que les Ă©tudiants en Ă©lectronique apprennent en premier afin de s'exercer. Il permet de comprendre comment : Utiliser le format Java void setup() { } void loop() { } DĂ©finir une pin : Annoncer Ă  l'ordinateur sur quelle partie de l'Arduino (numĂ©ro de la pin connectĂ©e) est connecter le composant auquel nous allons donner des informations (ou duquel nous allons prendre les informations). #define LED 10 // La led est connectĂ©e sur la pin 10 Annoncer la communication entre l'ordinateur et le circuit Serial.begin(9600) Utiliser une premiĂšre fonction d'action digitalWrite(LED, HIGH); // Permet d'allumer la led ` delay(1000) // Ne rien faire pendant 1000ms Programme Bouton #define BTN 8 void setup() { pinMode(BTN, INPUT_PULLUP); Serial.begin(9600); } void loop() { if( digitalRead(BTN) == LOW ) { Serial.println("Button pressed"); } delay(100); } Le programme Bouton fait intervenir un bouton dans le circuit. Cela permet d'introduire le code des boucles conditionnelles if. Programme Buzzer #define POT A0 #define BUZZ 9 void setup() { pinMode(POT, INPUT); pinMode(BUZZ, OUTPUT); Serial.begin(9600); } void loop() { int pot = analogRead(POT); Serial.println(pot); // int buzzfreq = map(pot, 0, 1023, 1000, 20000); // tone(BUZZ, buzzfreq); // delay(1000); // noTone(BUZZ); } Programme moteur Pour tester en pratique nos connaissances acquises lors de la matinĂ©e de thĂ©orie. J'ai dĂ©cidĂ© de travailler sur la mise en place d'un circuit Ă©lectronique composĂ© d'un servomoteur (permettant une rotation de 180°). Le but de ce circuit est d'apprendre Ă  manipuler les composants Ă©lectronique et de se familiariser avec la recherche de code et de prendre en main la plateforme de programmation Arduino. Le servomoteur a Ă©tĂ© branchĂ© Ă  l'Arduino selon les modalitĂ©s suivantes : L'alimentation V a Ă©tĂ© connectĂ©e au 5V de l'Arduino Ă  travers le breadboard La masse GND a Ă©tĂ© connectĂ©e au ground de l'Arduino Ă  travers le breadboard Le signal S a Ă©tĂ© connectĂ© Ă  la pin 8 de l'Arduino Sur cette photo il est possible de distinguer un quatriĂšme cĂąble marron qui sort du servomoteur. Ce cĂąble permet de connecter une alimentation externe au servomoteur (ce qui n'est pas nĂ©cessaire ici.) Le code suivant a Ă©tĂ© utilisĂ© pour faire tourner la tĂȘte rotative du servomoteur trois fois : De 0° Ă  90° De 90° Ă  180° De 180° Ă  0° #include // on inclut la bibliothĂšque servo Servo servoMoteur; // on crĂ©e un objet servo appelĂ© servoMoteur void setup(){ // on associe le servo Ă  la broche 2 d'Arduino servoMoteur.attach(8); } void loop(){ // on dĂ©place le servo Ă  la position 0Âș servoMoteur.write(0); delay(1000); // pause de 1 seconde // on dĂ©place le servo Ă  la position 90Âș servoMoteur.write(90); delay(1000); // pause 1 seconde // on dĂ©place le servo Ă  la position 180Âș servoMoteur.write(180); delay(1000); // pause 1 seconde } Programme Capteur & Moteur Afin de complexifier l'exercice, il a Ă©tĂ© dĂ©cidĂ© de rajouter un capteur infrarouge au circuit afin d'activer le moteur lorsqu'un objet est dĂ©tectĂ© par le capteur. Pour cela, le capteur a Ă©tĂ© connectĂ© Ă  l'alimentation et Ă  la masse de l'Arduino Ă  travers le breadboard et le signal a Ă©tĂ© dirigĂ© vers la pin 10 de l'Arduino. Le code suivant a permis de mettre en place le montage afin de faire tourner le moteur quand un objet est dĂ©tecter par le capteur : #include // on inclut la bibliothĂšque servo int inputPin = 10; // choose the input pin (for sensor) int pirState = LOW; // we start, assuming no motion detected int val = 0; // variable for reading the pin status Servo servoMoteur; // on crĂ©e un objet servo appelĂ© servoMoteur void setup(){ // on associe le servo Ă  la broche 2 d'Arduino servoMoteur.attach(8); pinMode(inputPin, INPUT); // declare sensor as input Serial.begin(9600); Serial.print("calibrating sensor "); } void loop(){ val = digitalRead(inputPin); // read input value Serial.println(val); if (val == HIGH) { // check if the input is HIGH // on dĂ©place le servo Ă  la position 0Âș servoMoteur.write(180); } else { servoMoteur.write(0); // turn motor OFF } } Claire Huang Semaine 1 Mardi 14 fĂ©vrier 2023 ModĂ©lisation d'un porte savon : ModĂšle souhaitĂ© : ModĂ©lisation 3D sur Tinkercad : Dimensions : 120 mm /100 mm pour le support du savon, 15 mm pour les pieds CrĂ©ation d'un demi-cylindre puis superposition avec un cylindre de dimension infĂ©rieure de 10 mm environ en hauteur, largeur et longueur CrĂ©ation d'un nouveau plan sur le dessus des pieds : copier/coller le cylindre dans ce nouveau plan : IntĂ©grer des motifs avec le dossier 2D issu d'Inskape : Mettre le motif au mĂȘme plan que le support et l'intĂ©grer dedans : Pour l'impression : Couche en hauteur : 2 mmRemplissage : 10%AdhĂ©rence : support Temps d'impression estimĂ© : 12h 28 minQuantitĂ© estimĂ©e : 119,3g/ 39.99mPrix estimĂ© : 3€58 RĂ©sultats :Essaies : 3ProblĂšmes : (1) adhĂ©rence, (2) qualitĂ© du fil, (3) problĂšme de fil Semaine 2 Lundi 06 mars 2023 Electronique LAMPES : #define LED_1 10 #define LED_2 9 int compteur = 0; void setup() { Serial.begin(9600); pinMode(LED_1, OUTPUT); pinMode(LED_2,OUTPUT); } void loop() { Serial.print("Debut de la boucle"); Serial.println(compteur); digitalWrite(LED_1, HIGH); delay(1000); digitalWrite(LED_1,LOW); delay(1000); digitalWrite(LED_2, HIGH); delay(1000); digitalWrite(LED_2,LOW); delay(1000); compteur++; } Soamalala Rajaonarison 13/02/2023 : ModĂ©lisation 2D et prise en main d'Inkscape 14/02/2023 : Projet de modĂ©lisation d'un porte savon Concept pensĂ© : Porte savon en forme de cƓur en 2 piĂšces Outils utilisĂ©s : Tinkercad ; Inkscape Inspiration : soap holder-things - Search - Thingiverse Etape 1 : crĂ©ation du support de base L : 12 cm / l : 10 cm / h : 2,5 cm --> Bloc cƓur > bloc cƓur vide > assemblage   Etape 2 : crĂ©ation de la sortie d'eau Insertion d'un cylindre vide et regroupement   Etape 3 : crĂ©ation des supports de la 2Ăšme piĂšce Etape 4 : crĂ©ation de la deuxiĂšme piĂšce en 2 D sur Inkscape - Importer une image de cƓur sur le logiciel - Le vectoriser Dimension de la maille :  104 / 90 Fusionner les formes et exporter le format .svg Etape 5 : Importer le fichier Ă  Tinkercad ProblĂ©matique : Je me suis rendue compte que mes 4 petits supports arrondis n'allaient pas pouvoir soutenir la 2Ăšme piĂšce Etape 6 : Modification des 4 supports --> rectangulaire Etape 7 : ModĂšle 3D final Etape 8 : Impression au fablab Les caractĂ©ristiques : 06/03/2023 : Electronique de prototypage (Arduino) Signal analogique =/= Signal numĂ©rique (1011) Electronique numĂ©rique : loi d'Ohm : U=RxI Pour que le courant fonctionne (pile), le circuit doit ĂȘtre fermĂ© : Symboles (cf photo) : FlĂšche vers le haut : + // Masse (terre?) : vers le bars RĂ©sistance : pas de sens de branchement May led : partie courte (cathode doit ĂȘtre connectĂ©e au -) digitalWrite(LED, HIGH)= numĂ©ro, Ă©tat (haut/bas) Si on rajoute d'autres led, need plus de rĂ©sistance *port de sĂ©rie connectĂ© Ă  une rĂ©sistance puis led Conditions : if (condition vĂ©rifiĂ©e) { instructions (  ) ; } volume =40 // affecter if (volume == 40) // tester { } Inspo : Ultrasonic Sensor HC-SR04 and Arduino - Complete Guide (howtomechatronics.com) Test Programme Blink #define LED 4 void setup() { // put your setup code here, to run once: pinMode(LED, OUTPUT); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED, HIGH); delay(1000); // ne rien faire pendant 1000ms digitalWrite(LED, LOW); delay(1000); } Test Capteur Distance const int trigPin = 8; const int echoPin = 11; const int LED = 4; // defines variables long duration; int distance; void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input pinMode(LED, OUTPUT); Serial.begin(9600); // Starts the serial communication } void loop() { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); if (distance >= 250) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } } AurĂ©lie LAMARRE Projet 1 : Porte savon Introduction : Ce projet a dĂ©butĂ© le 14 fĂ©vrier 2023 et a une fin estimĂ©e fin fĂ©vrier 2023. Les objectifs sont les suivants : rĂ©aliser un porte savon en 2 parties, d'une part la grille et d'autre part le rĂ©cipient. Le but est de se familiariser avec la modĂ©lisation 2D grĂące au logiciel Inkscape, ainsi qu'avec la modĂ©lisation 3D en utilisant le logiciel Tinkercad. Ensuite, l'impression se fera avec le logiciel IdeaMaker et il faudra donc dĂ©terminer les bons paramĂštres d'impression. Journal de bord : Etape 1 : ModĂ©lisation 2D de la grille Pour la grille j'ai choisi de rĂ©aliser un motif de visage de femme tracĂ© en une ligne Ă  la main. Pour dessiner ce motif, j'ai commencĂ© par trouver sur Google image le dessin qui me plaisait le plus, que j'ai ensuite importĂ© au format png dans le logiciel Inkscape. Puis, avec l'outil de dessin Ă  main levĂ©e, j'ai repassĂ© les traits afin de crĂ©er mon propre dessin. Une fois fait, j'ai supprimĂ© le fichier png. Afin de corriger certains dĂ©tails qui n'Ă©taient pas suffisamment arrondis, j'ai utilisĂ© la fonction "Convertir les formes en chemin" afin de manipuler diffĂ©rents nƓuds pour avoir les courbes souhaitĂ©es. J'ai ensuite mis un cadre rectangulaire autour de mon dessin, avec un rayon de 20 mm au niveau des coins, et aprĂšs avoir sĂ©lectionnĂ© les deux objets, je les ai groupĂ©. J'ai fini par rĂ©gler l'Ă©paisseur des traits ainsi que les dimensions de la grille (123x73mm). J'ai ensuite enregistrĂ© le fichier au format svg. Etape 2 : ModĂ©lisation 3D du contenant Ici il s'agit de procĂ©der Ă  la construction du contenant. Pour cela je me suis connectĂ©e sur le logiciel 3D Tinkercad. La premiĂšre Ă©tape a Ă©tĂ© d'utiliser un cube auquel j'ai mis les dimensions souhaitĂ©es (130x80x30mm). Puis, j'ai rĂ©alisĂ© un second cube avec la fonction Perçage, aux proportions lĂ©gĂšrement plus rĂ©duites afin de creuser le porte savon. Pour que ces deux objets soient bien alignĂ©s, je les ai tous deux sĂ©lectionnĂ©s et cliquĂ© sur le bouton Aligner avant d'utiliser les bonnes commandes pour bien centrer ces objets. J'ai aussi donnĂ© le bon rayon de coins Ă  la forme ayant permis de creuser le trou. J'ai ensuite souhaitĂ© importer ma grille, mais j'ai cependant Ă©tĂ© confrontĂ©e Ă  un problĂšme. En effet, il se trouve que lors de mon importation le remplissage de mon motif Ă©tait inversĂ© : les lignes Ă©taient creuses et le fond Ă©tait rempli. La solution a Ă©tĂ© la suivante : je suis retournĂ©e sur Inkscape, ai enregistrĂ© mon fichier au format png avant de le rĂ©importer sous ce nouveau format dans Inkscape. Puis, j'ai utilisĂ© la fonction "Vectoriser un objet matriciel". Un fois fait, j'ai supprimĂ© le motif initial pour garder seulement le nouveau format matriciel gĂ©nĂ©rĂ©, avant d'enregistrer ce fichier au format svg. Cette manipulation m'a permis d'avoir ma grille telle que je la souhaitais dans Tinkercad Pour une question pratique j'ai finalement enlevĂ© temporairement les rayons du trou afin de crĂ©er les supports sur lesquels la grille va reposer. J'ai crĂ©e 6 petits bĂątonnets en sĂ©lectionnant la forme souhaitĂ©e sur le menu de droite (cf capture), et afin de bien les aligner j'ai une nouvelle fois utilisĂ© la fonction Aligner. J'ai ensuite remis les rayons, disposĂ© la grille sur le contenant et créé le tunnel via lequel l'eau accumulĂ©e dans le contenant pourra ĂȘtre vidĂ©e. Pour cela j'ai utilisĂ© la forme cylindre, avec la fonction Perçage et je l'ai disposĂ©e comme souhaitĂ©. Puis, j'ai souhaitĂ© apporter un Ă©lĂ©ment supplĂ©mentaire en inscrivant le mot "Savon" de façon creusĂ©e sur le contenant. J'ai utilisĂ© l'Ă©lĂ©ment Texte, inscrit mon mot et utilisĂ© la fonction Perçage avant de bien le disposer sur la paroi. Voici le rendu final : Etape 3 : Choix des paramĂštres d'impression J'ai exportĂ© cette modĂ©lisation au format stl. La fenĂȘtre d'IdeaMaker raise 3D E2 s'est ouverte. Dans le menu "tabulation" j'ai pu inscrire les paramĂštres d'impression : Hauteur de couche : 0,25 mm, cela me semble correct pour un projet de ce type Coque : 2,5 pour que les parois soient un minimum solides DensitĂ© de remplissage : 10% car les formes ne sont pas "fragiles" et ne nĂ©cessitent pas de rigiditĂ© de structure particuliĂšre. GĂ©nĂ©rer des supports : aucun car les objets imprimĂ©s ne sont pas trop "sensibles" Aide Ă  l'adhĂ©rence : aucun car ce n'est pas nĂ©cessaire pour les objets imprimĂ©s non plus Etapes Ă  venir : Impression du porte savon Projet 2 : DĂ©tecteur d'objet Introduction : Ce projet a Ă©tĂ© rĂ©alisĂ© le 6 mars 2023 en binĂŽme. Les objectifs sont les suivants : rĂ©aliser un circuit avec modĂ©lisation prĂ©liminaire sur le logiciel Tinkerpad et rĂ©alisation manuelle avec le logiciel Arduino. Journal de bord : Etape 1 : ModĂ©lisation 2D du circuit Nous avons trouvĂ© sur le site suivant notre fichier source avec le tutoriel pour rĂ©aliser le circuit : https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/?utm_content=cmp-true A cela, nous avons ajoutĂ© Ă  cela une rĂ©sistance ainsi qu'une led avec pour objectif qu'elle s'allume en fonction de la distance d'un objet du capteur de distance. CrĂ©ation du circuit Ă  l'aide du logiciel TinkerCad ainsi que du code pour vĂ©rifier que les branchements et le code fonctionnent bien. Etape 2 : CrĂ©ation manuelle Construction rĂ©alisĂ©e avec les outils et accessoires mis Ă  disposition au fablab. Etape 3 : Test Connexion au logiciel Arduino IDE 2.0.3 et branchement Ă  l'Arduino. AprĂšs avoir rĂ©alisĂ© le branchement de l'Arduino le code suivant a Ă©tĂ© renseignĂ© dans le logiciel : #define LED 8 const int trigPin = 9; const int echoPin = 10; long duration; int distance; void setup() { // put your setup code here, to run once: pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(LED, OUTPUT); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2; if (distance < 5){ digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } } RĂ©sultat : PIRUS Marine Porte savon Objectif du projet L'objectif de ce projet est de rĂ©aliser une boite Ă  savon Ă  l'aide de l'outil Tinkercad en 3D mais aussi de rĂ©aliser une grille en 2D ETAPE 1 : CrĂ©ation de la boĂźte en 3D Le fichier du porte-savon en .stl CrĂ©ation de la boite d'une taille de 11 cm sur 7 cm avec la forme rectangle Ă  laquelle j'ai arrondi les bords grĂące au diamĂštre CrĂ©ation du deuxiĂšme rectangle que j'inclus dans la premiĂšre boĂźte.  Puis on passe la deuxiĂšme boĂźte (orange) en mode perçage CrĂ©ation de la gouttiĂšre en forme de moustache ici pour que l'eau s'Ă©vacue. Cet Ă©lĂ©ment a Ă©tĂ© aussi mis en mode perçage puis tout Ă  Ă©tĂ© groupĂ©. CrĂ©ation des taquets afin de disposer la grille que l'on va rĂ©aliser en 2D. Les taquets ont Ă©tĂ© rĂ©alisĂ© Ă  l'aide de l'outil triangle rectangle. ETAPE 2 : CrĂ©ation de la grille Le fichier de la grille en .svg La grille a Ă©tĂ© rĂ©alise avec Inskcape Ă  l'aide de forme hexagonale sur une forme rectangulaire qu'on l'on dissocie Ă  chaque fois. Rendu final sur Tinkercad Voici le rendu lorsque l'on a importĂ© la grille au format svp dans Tinkercard. Rendu final avec la grille posĂ©e sur la boite Ă  savon. ETAPE 3 : TĂ©lĂ©charger sur IdeaMaker Le fichier final contient la grille et le porte savon en .gcode CaractĂ©ristiques de mon impression : hauteur de couche : 0,25 mm : je ne l'ai pas changĂ© j'ai laissĂ© ce qui Ă©tait par dĂ©faut nombre de coques : 4 : j'ai choisi d'en mettre 4 afin que mon objet soit bien rĂ©sistant densitĂ© du remplissage : 15% aide Ă  l'adhĂ©rence : aucun car je pense qu'il y a pas besoin d'aide Ă  l'adhĂ©rence pour ce type d'objet Pour finir j'ai pu voir que le temps estimĂ© de l'impression Ă©tait d'environ 9h. Montage Ă©lectronique Arduino Branchement d'un servomoteur Avec Ryan, nous avons dĂ©cidĂ© de travailler sur la mise en place d'un circuit Ă©lectronique composĂ© d'un servomoteur (permettant une rotation de 180°). Le servomoteur a Ă©tĂ© branchĂ© Ă  l'Arduino selon les modalitĂ©s suivantes : L'alimentation V a Ă©tĂ© connectĂ©e au 5V de l'Arduino Ă  travers le breadboard La masse GND a Ă©tĂ© connectĂ©e au ground de l'Arduino Ă  travers le breadboard Le signal S a Ă©tĂ© connectĂ© Ă  la pin 8 de l'Arduino Ce schĂ©ma ci dessus montre le branchement du servomoteur. Le code suivant a permis de faire tourner la tĂȘte 3 fois : de 0 Ă  90° de 90 Ă  180° de 180 Ă  0° #include // on inclut la bibliothĂšque servo Servo servoMoteur; // on crĂ©e un objet servo appelĂ© servoMoteur void setup(){ // on associe le servo Ă  la broche 2 d'Arduino servoMoteur.attach(8); } void loop(){ // on dĂ©place le servo Ă  la position 0Âș servoMoteur.write(0); delay(1000); // pause de 1 seconde // on dĂ©place le servo Ă  la position 90Âș servoMoteur.write(90); delay(1000); // pause 1 seconde // on dĂ©place le servo Ă  la position 180Âș servoMoteur.write(180); delay(1000); // pause 1 seconde } Ajout d'un capteur Nous avons par la suite dĂ©cidĂ© d'ajouter un capteur infrarouge un circuit afin d'activer le moteur lorsqu'un objet est dĂ©tectĂ© par le capteur. Pour cela, le capteur a Ă©tĂ© connectĂ© Ă  l'alimentation et Ă  la masse de l'Arduino Ă  travers le breadboard et le signal a Ă©tĂ© dirigĂ© vers la pin 10 de l'Arduino. Ann-Rachel Ngambi Semaine 1 - ModĂ©lidation 2D, 3D et Impression 3D d'un porte savon Etape 1 : ModĂ©lisation 2D de la grille du porte savon sur INKSPACE J'ai commencĂ© par paramĂ©trer le document sur une taille 12x8 cm afin d'obtenir un porte savon assez grand. J'ai tracĂ© mon motif Ă  l'aide l'outil "courbes de BĂ©zier". Je souhaitais une grille asymĂ©trique. J'ai ensuite modifiĂ© l'Ă©paiseur de mon tracĂ© et je l'ai transformĂ© en "contour en chemin". J"ai ajoutĂ© le contour de mon porte savon. J'ai dĂ©coupĂ© ma grille selon la forme de mon savon grĂące Ă  l'intersection de chemins et j'ai transformĂ© mon contour en chemin pour pouvoir l'unir au chemin de ma grille. Pour finir j'ai enregistrĂ© ma grille au format svg. Etape 2 : ModĂ©lisation 3D du porte savon sur TINKERCAD J'ai commencĂ© par choisir un modĂšle qui me plaisait sur le site thingiverse.com . AprĂšs l'avoir tĂ©lĂ©chargĂ©, je l'ai importĂ© dans Tinkercad. J'ai Ă©galement importĂ© ma grille. J'ai modifiĂ© les dimensions de ma grille afin de m'assurer qu'elle corresponde bien au socle de mon porte savon. J'ai ensuite ajoutĂ© un renard sur un socle circulaire que j'ai unifiĂ© avec le socle du porte savon. J'ai ensuite sĂ©parĂ© la grille du socle et j'ai exportĂ© au format .stl pour l'impression. Etape 3 : Impression 3D du porte savon Ă  l'aide d'IDEAMAKER J'ai commencĂ© par paramĂ©trer mon fichier d'impression avec une densitĂ© de remplissage de 10%, des supports et sans aide Ă  l'adhĂ©rence. J'ai importĂ© mon modĂšle et j'ai rĂ©parĂ© les erreurs indiquĂ©es. J'ai ajoutĂ© les supports puis j'ai exportĂ© le fichier au format .gcode Semaine 2 - CrĂ©ation d'un circuit électronique /* Ultrasonic Sensor HC-SR04 and Arduino Tutorial by Dejan Nedelkovski, www.HowToMechatronics.com */ // defines pins numbers #define LED 8 const int trigPin = 9; const int echoPin = 10; // defines variables long duration; int distance; void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input pinMode(LED, OUTPUT); Serial.begin(9600); // Starts the serial communication } void loop() { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); if( distance <=30 ) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } } Shabneez Elaheebucus PORTE SAVON PARTIE 1 : CRÉATION DU PORTE SAVON PremiĂšre Ă©tape :  CrĂ©ation du cylindre DeuxiĂšme Ă©tape : DĂ©finition des dimensions Longueur du cylindre : 100mm Largeur du cylindre : 60mm Hauteur du cylindre : 30 mm Mise en place du cylindre pour le perçage : Le cylindre pour le perçage a Ă©tĂ© mis au centre du cylindre solide, j'ai laisser 10mm d'Ă©paisseur pour le fond du cylindre solide. Voici le cylindre solide aprĂšs perçage : Je souhaite Ă©galement faire un perçage pour l'Ă©vacuation de l'eau, je choisis de le faire sur la face avant de mon porte-savon : Je le place Ă  10mm de hauteur sur la face avant : je perce ensuite le cylindre : Je perce le canaux d'Ă©vacuation d'eau pour laisser sortir l'eau : Je place ensuite le cadeau d'Ă©vacuation sur le cylindre et associe les 2 Ă©lĂ©ments : Je place ensuite 2 triangle oĂč reposera la grille du porte savon : hauteur = 16 mm Voici le porte savon avant la mise en place de la grille : PARTIE 2 : CRÉATION DE LA GRILLE Sur Inkscape, je commence a crĂ©er la grille du porte savon : Je trace premiĂšrement un cercle avec les mĂȘmes dimensions que celles de mon cylindre : Rx = 100mm et Ry = 60 mm Par la suite je dĂ©cide de faire les espace d'Ă©vacuation en choisissant une forme avec 6 sommets : Je superpose ensuite mes formes de maniĂšre Ă  remplir ma grille : Je place ensuite mes formes dans le contour de ma grille : J'importe ensuite ma grille sur Tinkercad : Je redimensionne ma grille afin qu'elle soit Ă  la bonne dimension pour ĂȘtre intĂ©grĂ©e dans le porte savon : Je place ensuite ma grille Ă  la bonne hauteur : Je place la grille Ă  la bonne hauteur sur les supports : Voici le porte-savon finalisĂ© : Wiem Mansouri Projet Porte savon en impression 3D Étape n°1 : la crĂ©ation du support Dans un premier temps, j'ai tracer la forme sur Inkscape pour avoir les bonnes dimensions, le savon faisant Ă  peu prĂšs 5X8 cm j'ai donc crĂ©er un modĂšle mesurant 10x6 cm  J'ai ensuite importer les deux fichiers dans les bonnes dimensions dans Tinkercad ( Le support en forme cylindrique et les une forme identique en plus petite pour faire le perçage) je les ai ensuite superposĂ© et percĂ© avec la forme plus petite j'ai ensuite aligner les deux formes il faut ensuite selectionner les deux formes et les regrouper en cliquant sur "Regrouper" Nous allons ensuite ajouter des triangles afin de pouvoir poser la grille dessus puis cliquer sur regrouper voici ce qu'on obtient : Ajout d'une Ă©criture sur une des faces : cliquer sur texte et Ă©crire le texte voulu puis adapter la position dĂ©sirĂ©e Il faut ensuite percer Étape n°2: la crĂ©ation de la grille Servane Pellerin ScĂ©ance 1 J'ai commencĂ© par trouver une idĂ©e de modĂšle sur  : https://www.thingiverse.com/thing:312520 Pour la rĂ©aliser sur tinkercad, j'ai commencĂ© par crĂ©er une forme en biseau, assez grande pour accueillir 2 savons. J'ai ensuite rajoutĂ© des formes en biseau de maniĂšre complĂ©mentaire Ă  ce biseau initial pour maintenir les savons dessus et en laissant l'eau ruisseler vers le bac de douche. Afin de rajouter un Ă©lĂ©ment 2D, je suis allĂ©e sur Inkscape et j'ai Ă©crit "MY SOAP", j'ai modifiĂ© la police, l'espacement et j'ai mis le contour en chemin. Je l'ai ensuite enregistrĂ© en format .svg et je l'ai importĂ© sur Tinkercad. J'ai placĂ© le texte Ă  l'arriĂšre de ma premiĂšre forme en biseau, au milieu, peu mise en relief pour faciliter le nettoyage. ScĂ©ance 2 Arduino : carte de dĂ©veloppement 2 types de signaux : Analogique: variations continues NumĂ©riques/binaire : 1 ou 0 Loi d'Ohm : U = R*I La rĂ©sistance n'a pas de sens de branchement mais la Led oui, elle a une anode (cĂŽtĂ© +) et une cathode (cĂŽtĂ© -) Test sur Tinkercad : Test 1 avec les led : Okay Test 2 avec le bouton : okay Test 3 avec le buzzer : okay Travaux pratique : avec Claire Huang, nous avons rĂ©alisĂ© un circuit avec 2 led afin qu'elles s'allument Ă  la suite, chacune pendant un cours laps de temps. Voici le code : #define LED_1 10 #define LED_2 9 int compteur = 0; void setup() { Serial.begin(9600); pinMode(LED_1, OUTPUT); // dĂ©claration de la pin 10 comme sortie pinMode(LED_2, OUTPUT); // dĂ©claration de la pin 9 comme sortie } void loop() { Serial.print("Debut de la boucle "); Serial.println(compteur); digitalWrite(LED_1, HIGH); delay(1000); // ne rien faire pendant 1000ms digitalWrite(LED_1, LOW); delay(1000); // ne rien faire pendant 1000ms digitalWrite(LED_2, HIGH); delay(1000); // ne rien faire pendant 1000ms digitalWrite(LED_2, LOW); delay(1000); // ne rien faire pendant 1000ms compteur++; // incrĂ©mentation du compteur } Et voici une photographie de notre montage : Mouna KHALIL Projet – Semaine du 13 fĂ©vrier 2023 : RĂ©alisation d’un support pour savon Introduction : L’objectif de ce premier projet est de rĂ©aliser un porte-savon. Ce dernier se compose de trois principaux Ă©lĂ©ments : Une grille sur laquelle se pose le savon Un support qui contiendra l’eau issue du savon Un moyen d’évacuation permettant l’écoulement de cette eau Ces quelques lignes suivantes retracent mon processus crĂ©atif et technologique de la rĂ©alisation de mon porte-savon. Pour la modĂ©lisation 2D, j’ai utilisĂ© le logiciel Tinkercad. Quant Ă  celle en 3D, je me suis servie du logiciel Inkscape. NB : j’ai lancĂ© l’impression de mon prototype jeudi matin et je verrai le rĂ©sultat de cette impression aprĂšs le rendu de cette trace Ă©crite. I/ La grille Etape 1 : Croquis du prototype J’ai laissĂ© libre court Ă  mon imagination pour rĂ©aliser la grille sur laquelle sera posĂ© le savon et qui servira Ă  l’écoulement de l’eau dont voici le modĂšle originel : Figure 1 : Croquis de la grille Etape 2 : ModĂ©lisation 2D de la grille Afin de construire la grille, j’ai utilisĂ© le logiciel Tinkercad. Motif gĂ©nĂ©ral J’ai utilisĂ© l’outil courbe de BĂ©zier pour tracer le motif de base. Ce dernier sera donc reproduit plusieurs fois et en taille variable pour se conformer Ă  mon croquis. NB : Au dĂ©but, je n’arrivais pas Ă  tracer des lignes droites. De ce fait, j’ai dessinĂ© un rectangle afin de me servir de ses cĂŽtĂ©s pour le faire. Figure 2 : motif de base Motif complet J’ai donc rĂ©alisĂ© le motif ci-gauche. J’ai utilisĂ© l’outil courbe de BĂ©zier pour dessiner chacun des Ă©lĂ©ments Ă  gauche et je les ai dupliquĂ©s puis retournĂ©s verticalement pour avoir la version miroir. Pour chacun d’eux, j’ai dĂ» crĂ©er de nouveaux nƓuds afin d’affiner au mieux leur forme. Figure 3 : V1 du motif Arrondir le motif Ensuite, je n’ai pas trouvĂ© cela trĂšs esthĂ©tique car les bords n’étaient pas arrondis. Or, ma grille est circulaire. J’ai donc combinĂ© l’utilisation d’un cercle ainsi qu’une opĂ©ration boolĂ©enne pour y parvenir en suivant la dĂ©marche ci-dessous : J’ai tracĂ© un cercle avec l’outil forme Je l’ai positionnĂ© en arriĂšre-plan grĂące Ă  la commande objets > descendre Ă  l’arriĂšre-plan J’ai mis le motif Ă  l’endroit souhaitĂ© en prenant garde Ă  ce qu’il y ait une intersection avec le cercle J’ai sĂ©lectionnĂ© les deux formes J’ai rognĂ© circulairement en utilisant la formule chemin > intersection J'ai rĂ©pĂ©tĂ© l'opĂ©ration pour chaque forme.     donne =>            Figure 4 : Motif rognĂ© circulairement Motif final AprĂšs quelques modifications pour des raisons de design, j’ai donc obtenu le motif suivant. A savoir que j’ai rajoutĂ© un cercle autour du motif pour rĂ©ellement obtenir une grille. Figure 6 : PremiĂšre importation 3D => Vous pouvez retrouver le fichier final en SVG en piĂšce jointe. Seconde modĂ©lisation 3D Les contours de la grille n'Ă©taient pas lisses. Pour rĂ©soudre ce problĂšme, j’ai donc dessinĂ© un rond lĂ©gĂšrement plus grand que la grille pour les recouvrir. Il fallait qu’il soit creux donc j’ai dessinĂ© un cylindre de perçage lĂ©gĂšrement plus petit que ce nouveau rond mais plus grand que la grille. Le problĂšme Ă©tait rĂ©solu ! Figure 7 : Importation 3D finale II/ Le support Etape 1 : Le croquis L’idĂ©e m’est venue de faire un porte savon en forme de sablier. D’une part, je trouve cela esthĂ©tique. D’autre part, je trouve qu’il est original de voir le sablier se remplir d’eau au fur et Ă  mesure. Je me suis inspirĂ©e de l’image ci-Ă  droite. NB : Dans mon idĂ©al, il faudrait que le sablier soit opaque. En effet, l’eau issue du savon pourrait ĂȘtre sale. De ce fait, cela pourrait ĂȘtre repoussant. Figure 8 : Image inspiration sablier Source : www.etsy.com Etape 2 : ModĂ©lisation 2D ModĂ©lisation d’une demi-sphĂšre J’ai commencĂ© par modĂ©liser la demi-sphĂšre qui constituera le haut de mon sablier. Cette derniĂšre Ă©tant remplie, j’ai utilisĂ© une autre demi-sphĂšre de perçage lĂ©gĂšrement plus petite afin de « vider » cette forme. Figure 9 : CrĂ©ation de la forme J’ai changĂ© la couleur pour du transparent afin de voir l’écoulement de l’eau. Figure 10 : Forme transparente ModĂ©lisation du sablier en entier Pour modĂ©liser le sablier en entier, j’ai modĂ©lisĂ© une seconde demi-sphĂšre pour la partie basse du sablier. J’ai donc Ă©galement employĂ© la mĂ©thode de perçage pour qu’elle soit creuse. Cependant, j’ai veillĂ© Ă  ce que cette sphĂšre ait un fond plein. Afin de constituer le sablier, j’ai alors superposĂ© et uni les deux formes en veillant Ă  leur bon alignement. Cependant, afin d’obtenir un Ă©coulement de l’eau, je devais creuser une cavitĂ© entre les deux parties du sablier. Ainsi, je me suis servie d’un cylindre de perçage (Ă©galement prĂ©alablement alignĂ©). J’ai tout regroupĂ© pour ne former qu’un objet.     Figure 11 : Sablier finalisĂ© RĂ©alisation du support permettant de soutenir la grille Pour manipuler plus facilement la grille, j’ai souhaitĂ© rajouter un support interne au sablier sur lequel elle serait posĂ©e. Tout d’abord, j’ai pensĂ© Ă  utiliser un tore mais ce dernier n’ayant pas la mĂȘme forme de contour qu’une sphĂšre, il y aurait eu des espaces vides. Figure 12 : Tentative de grille avec une torre Ainsi, j’ai prĂ©fĂ©rĂ© opter pour un anneau dont la forme serait plus adaptĂ©e. AprĂšs une union avec le sablier, j’ai donc obtenu le rĂ©sultat suivant : Figure 13 : Tentative de grille avec un anneau La version finale du sablier Figure 14 : Le sablier final III/ L’assemblage Voici donc le rĂ©sultat final du prototype : Figure 15 : Le prototype final Sablier : H = 158mm L = 100 mm l = 100m Grille : H = 11mm R = 90 mm =>Vous pouvez retrouver les fichiers finaux en STL en piĂšce jointe. IV/ L'impression 3D Voici les paramĂ©trages rĂ©alisĂ©s pour l'impression 3D : => Pour le sablier : Hauteur de couche : 0,3 Coques : 3 DensitĂ© du remplissage : 10% Motif de remplissage : rectiligne => Pour la grille : Hauteur de couche : 0,1 Coques : 3 DensitĂ© du remplissage : 10% Motif de remplissage : rectiligne Hatice DAGLI Inspiration Pour crĂ©er mon porte savon, je me suis inspirĂ©e de ce modĂšle : ModĂ©lisation 2D Toutefois, je souhaitais faire quelque chose de plus minimaliste, je me suis donc lancĂ©e Ă  dessiner une plante sur Inkscape : Je commence par les branches avec des rectangles fins sans contours J'incurve ensuite l'une des deux branches afin de donner cet aspect naturel via l'outil "objet en chemin", en choisissant le point qui fera une belle courbe arrondie :                ---->            Ensuite, j'ajoute les feuilles via l'ajout d'un Ă©lĂ©ment rond que j'incurve de la mĂȘme façon que la branche : Je copie colle cette feuille plusieurs fois en plusieurs taille pour obtenir ma petite plante : Je fais Ă©galement sur Inkscape un ovale Ă  la mĂȘme dimension que ma plante afin de le mettre en 3D sur Thinkedcad (bien que ce ne fut pas l'idĂ©al mais je dĂ©taille plus bas pourquoi). Exportation sous .Stereolithography ModĂ©lisation 3D Sur Thinkercad, j'ai commencĂ© par posĂ© un cylindre que j'ai mis en ovale sur mon support de base vert. J'ai ensuite ajoutĂ© 3 petits blocs de carrĂ© afin de faire tenir "ma grille" qui n'est autre que ma plante. ProblĂšme : Ici, je me suis rendue compte que faire mon support de la mĂȘme taille que ma plante n'Ă©tait pas une bonne idĂ©e car ma plante n'aurais pas tenu sur le support sans aucun Ă©lĂ©ment qui le tient en place. Il fallait donc rĂ©duire sa taille. Egalement, j'ai aussi appris qu'il Ă©tait inutile que j'importe la base de ce support ovale depuis Inkscape car je pouvais le rĂ©aliser sur Thinkercad directement et plus facilement avec un Ă©lĂ©ment ovale que j'aurais trouĂ© par perçage. Enfin, j'ai dĂ©cidĂ© d'ajouter un espace par laquelle je pourrais verser l'eau qui s'accumulerais tout en ajoutant une touche dĂ©corative avec une Ă©criture : Que j'ai ensuite mis en perçage : Et voici le plan du projet : Exportation sous .SVG ProblĂšme : Je me suis rendue compte sur IdeaMaker que les lettres o, a et p n'allaient peut-ĂȘtre pas bien sortir et que j'aurais du penser Ă  ajouter un Ă©lĂ©ment d'union pour faire tenir ces petits blocs. Impression au FabLab SU Pour pouvoir imprimer, il faut passer nos fichier en .GCODE via IdeaMaker Attention : il faut bien mettre tous les Ă©lĂ©ments Ă  plat (ma plante Ă©tait en hauteur ici) Nous rĂ©glons les paramĂštres et enregistrons le fichier pour enfin insĂ©rer la clĂ© USB dans l'imprimante 3D. Temps estimĂ© : 11h d'impression RĂ©sultat final Remarques gĂ©nĂ©rales : Au fur et Ă  mesure du projet, surtout lors de la modĂ©lisation 3D, je me suis rendue compte que ma grille plante n'Ă©tait pas trĂšs pertinente car il Ă©tait assez difficile de trouver un moyen simple de le faire tenir sur le support. En effet, j'aurais du rĂ©flĂ©chir dĂšs la modĂ©lisation 2D Ă  comment je planifiais designer mon support. (fichier gcode trop lourd pour mettre ici) #include // inclusion de la librairie LCD // initialise la librairie LCD avec les broches utilisĂ©esLiquidCrystal lcd(1, 2, 4, 5, 6, 7); // dĂ©clare une variable LiquidCrystal appelĂ©e lcd avec mode 4 bits - RW non connectĂ©e (le plus simple!) //dĂ©claration des nouveaux caractĂšres//crĂ©ation du caractĂšre ”byte micro[8]={ B10001,  B10001,  B10001,  B10011,  B11101,  B10000,  B10000,  B10000};//crĂ©ation du caractĂšre petit s de seconde en position haute pour tomber en face du ” lors de l'affichage.byte seconde[8]={  B01110,  B10000,  B01110,  B00001,  B01110,  B00000,  B00000,  B00000}; const int trigPin = 9; // dĂ©clare une variable Ă  valeur constante de type const int (variable qui ne peut ĂȘtre modifiĂ©e, juste en lecture seule) appelĂ©e trigPin et valant 9 trig (Trigger = dĂ©clancheur) connectĂ©e Ă  la broche numĂ©rique n° 9const int echoPin = 10;  // dĂ©clare une variable Ă  valeur constante de type const int (variable qui ne peut ĂȘtre modifiĂ©e, juste en lecture seule) appelĂ©e echoPin et valant 10 trig echo (Echo = rĂ©cepteur) connectĂ©e Ă  la broche numĂ©rique n° 10long duration;//dĂ©clare une variable de type long appelĂ©e duration (Taille de 32bits). // Instruction d'initialisation de la carte Arduino//**************** FONCTION SETUP = Code d'initialisation *****// La fonction setup() est exĂ©cutĂ©e en premier et 1 seule fois, au dĂ©marrage du programme void setup() { //Attribution des numĂ©ros des caractĂšres    lcd.createChar(1, micro); // attribution d'un numĂ©ro au caractĂšre créé    lcd.createChar(2, seconde); // attribution d'un numĂ©ro au caractĂšre créé. lcd.begin(16,2);  // initialise le LCD en mode 16 colonnes x 2 lignes pinMode(trigPin, OUTPUT); //Configure la Broche spĂ©cifiĂ©e (ici la broche 9 digital) pour qu'elle se comporte en sortie avec OUTPUT. pinMode(echoPin, INPUT); //Configure la Broche spĂ©cifiĂ©e (ici la broche 10 digital) pour qu'elle se comporte en entrĂ©eavec INPUT. } //*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************// la fonction loop() s'exĂ©cute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop() { digitalWrite(trigPin, LOW); /*Met un niveau logique LOW (BAS en anglais) sur une broche numĂ©rique 9. Si la broche a Ă©tĂ© configurĂ©e en SORTIE avec l'instruction pinMode(), sa tension est mise Ă  la valeur correspondante : 5V  pour le niveau HAUT, 0V (masse) pour le niveau BAS.*/ delayMicroseconds(2);//La fonction delay() permet de mettre en pause le programme pendant un certain nombre de millisecondes. C'est une fonction bloquante. //La fonction delayMicroseconds() accepte un unique paramĂštre obligatoire qui correspond Ă  la durĂ©e en microsecondes de la temporisation. Cette fonction accepte uniquement des nombres entiers. digitalWrite(trigPin, HIGH);/*Met un niveau logique HIGH (HAUT en anglais) sur une broche numĂ©rique 9. Si la broche a Ă©tĂ© configurĂ©e en SORTIE avec l'instruction pinMode(), sa tension est mise Ă  la valeur correspondante : 5V  pour le niveau HAUT, 0V (masse) pour le niveau BAS.*/ delayMicroseconds(10);//La fonction delay() permet de mettre en pause le programme pendant un certain nombre de millisecondes. C'est une fonction bloquante. //La fonction delayMicroseconds() accepte un unique paramĂštre obligatoire qui correspond Ă  la durĂ©e en microsecondes de la temporisation. Cette fonction accepte uniquement des nombres entiers. digitalWrite(trigPin, LOW);/*Met un niveau logique LOW (BAS en anglais) sur une broche numĂ©rique 9. Si la broche a Ă©tĂ© configurĂ©e en SORTIE avec l'instruction pinMode(), sa tension est mise Ă  la valeur correspondante : 5V  pour le niveau HAUT, 0V (masse) pour le niveau BAS.*/ duration = pulseIn(echoPin, HIGH)/2;// affiche la durĂ©e du trajet entre l'emmetteur et l'objet . lcd.clear();// efface l'Ă©cran et met le curseur en haut Ă  gauchelcd.setCursor(0,0); // 1Ăšre colonne - 1Ăšre ligne - positionne le curseur Ă  l'endroit voulu (colonne, ligne) (1Ăšre=0 !)lcd.print("Temps: "); // affiche la chaĂźne texte - message de test (Ici Temps:) lcd.setCursor(0,1);// 1Ăšre colonne - 2Ăšme ligne - positionne le curseur Ă  l'endroit voulu (colonne, ligne) (1Ăšre=0 !)lcd.print(duration);// affiche le calcul de la durĂ©e en ”s entre l'Ă©mĂ©tteur et l'objetlcd.print(" "); // affiche la chaĂźne texte - message de test (Ici un espace)lcd.write(1); // affiche le caractĂšre ” pour microlcd.write(2); // affiche le caractĂšre s pour seconde delay(5000);//La fonction delay() permet de mettre en pause le programme pendant un certain nombre de millisecondes. C'est une fonction bloquante. Ici 5 secondes pour permettre d'avoir une lecture stable du rĂ©sultat. }// fin de la fonction loop() - le programme recommence au dĂ©but de la fonction loop sans fin// Marveen LACOM Projet Porte-Savon Mon idĂ©e de projet Ă©tait de faire un porte-savon dont la base est inclinĂ©e afin que l'eau puisse bien s'Ă©couler Ă  travers les Ă©vacuations. De plus, je souhaitais y ajouter un systĂšme permettant de pouvoir accrocher le porte-savon Ă  un mur. Et enfin, je souhaitais que le support et la grille soient 2 piĂšces diffĂ©rentes, pour qu'il soit trĂšs simple de pouvoir nettoyer l'intĂ©rieur du porte-savon. 1) CrĂ©ation de la grille en 2D - Inkscape J'ai d'abord recherchĂ© sur Internet un exemple de grille, que j'ai tĂ©lĂ©chargĂ© en PNG. Je l'ai ensuite importĂ© sur Inkscape, et j'ai utilisĂ© l'option "Vectoriser un objet matriciel". Je souhaitais ensuite personnaliser cette grille, en y ajoutant un contour et des Ă©critures dessus. Voici le rĂ©sultat obtenu :Cependant, j'ai repĂ©rĂ© un premier problĂšme : les traits de la grille Ă©taient trop fins sur certains cĂŽtĂ©s, ce qui n'aurait pas permis Ă  ma grille de tenir. J'ai donc dĂ©cidĂ© d'augmenter l'Ă©paisseur des traits composant la grille : Et voici donc le rĂ©sultat que j'ai obtenu en ajoutant l'Ă©criture par dessus : Le problĂšme avec cette grille est apparu au moment de l'import du fichier SVG sur Tinkercad. Le rĂ©sultat obtenu n'Ă©tait pas du tout celui qui Ă©tait attendu : J'ai donc essayĂ© d'ajouter une sorte de pancarte derriĂšre l'Ă©criture afin de remĂ©dier Ă  ce problĂšme. Voici la grille que j'ai rĂ©alisĂ©e suite Ă  cela : Cependant, une fois encore, le rĂ©sultat obtenu lors du passage sur Tinkercad n'Ă©tait pas concluant du tout : J'ai ensuite rĂ©essayĂ© l'import avec le mĂȘme fichier, mais cette fois-ci, j'ai obtenu ce rĂ©sultat : Le grillage ne s'est pas importĂ©, contrairement Ă  la pancarte. Cependant, j'ai trouvĂ© que cela pourrait ĂȘtre bien de n'utiliser que la pancarte, et de m'en servir de grille : l'eau pourrait couler Ă  travers les lettres, ainsi, elle remplirait trĂšs bien ses fonctions, qui sont de laisser l'eau Ă©vacuer. Voici donc les diffĂ©rentes Ă©tapes qui m'ont amenĂ©es Ă  la grille que j'ai utilisĂ©e pour mon porte-savon. 2) CrĂ©ation du support en 3D - Tinkercad En ce qui concerne le support de mon porte-savon, je l'ai rĂ©alisĂ© en 3D sur Tinkercad. Je suis parti sur la base d'une boĂźte, dans laquelle j'en ai ajoutĂ© une plus petite, que j'ai soustraite Ă  la premiĂšre. Pour avoir les bonnes dimensions, j'ai mesurĂ© un savon avec une rĂšgle, pour m'assurer que le savon rentrerait bien dans le porte-savon. J'ai ensuite ajoutĂ© petits supports, qui me permettraient de pouvoir poser ma grille. Voici le rĂ©sultat : Je voulais ensuite ajouter un support, qui pourrait me permettre d'accrocher le porte-savon Ă  un mur, avec des ventouses par exemple. Pour cela, j'ai ajoutĂ© une boĂźte Ă  cĂŽtĂ© de mon support, Ă  laquelle j'ai soustrait une autre boĂźte Ă©tant un peu plus petite. Voici le rĂ©sultat obtenu : Ensuite, afin d'avoir une base inclinĂ©e, permettant aux gouttes de glisser vers une Ă©vacuation, j'ai ajoutĂ© un fond trĂšs fin servant de gouttiĂšre en ayant une trĂšs lĂ©gĂšre inclinaison, pour que les gouttes glissent jusqu'Ă  la face avant. Et j'ai Ă©galement fait un trou sur la face avant, pour que l'eau soit Ă©vacuĂ©e en dehors du porte-savon : Je me suis ensuite dit que les gouttes qui couleraient sur le cĂŽtĂ© ne pourraient pas atteindre l'Ă©vacuation, car elle est trop centrale, donc j'ai voulu ajouter 2 nouvelles gouttiĂšres Ă  gauche et Ă  droite, qui permettraient de recentrer les gouttes dans l'axe : Le rĂ©sultat ne m'a pas satisfait, car il y avait des vides au niveau des jonctions entre les 2 petites gouttiĂšres et la grosse gouttiĂšre : Cela aurait donc provoquĂ© un blocage de l'eau Ă©tant passĂ©e par ces trous, et il n'aurait pas Ă©tĂ© possible d'enlever cette eau sans casser le porte-savon. L'idĂ©e que j'ai donc eue a Ă©tĂ© de conserver seulement la grosse gouttiĂšres, mais d'ajouter 2 nouvelles Ă©vacuation Ă  gauche et Ă  droite : De cette maniĂšre, l'eau pourra ĂȘtre Ă©vacuĂ©e du porte-savon, qu'elle soit Ă  gauche, Ă  droite, ou bien au milieu. Voici donc le porte-savon final que j'ai créé : 3) PrĂ©paration Ă  l'impression 3D - IdeaMaker Une fois que mon fichier Ă©tait prĂȘt, je me suis mis Ă  la prĂ©paration pour l'impression 3D. Tout s'est bien passĂ©, le seul souci Ă  Ă©tĂ© au moment de la prĂ©visualisation. Voici ce que j'ai obtenu : Comme on peut le voir sur la photo ci-dessus, 3 bandes apparaissaient sur la prĂ©visualisation. Avec l'aide de Clara Devanz et StĂ©phane Muller, nous avons trouvĂ© que le problĂšme venait de la trop faible inclinaison de ma gouttiĂšre, car l'imprimante ne pouvait pas reproduire une si petite inclinaison en une seule fois, elle devait faire des sortes d'Ă©tages. Cependant, cela n'Ă©tant pas trop dĂ©rangeant, j'ai lancĂ© l'impression 3D : Et voici le dĂ©but de mon porte-savon 3D : PiĂšces jointes J'ajoute en piĂšce jointes mes 2 fichiers : SVG, STL. Je n'ai pas pu dĂ©poser le fichier QCODE, car sa taille Ă©tait trop Ă©levĂ©e pour pouvoir le dĂ©poser. Projet Capteurs Arduino Test Programme Blink #define LED 4 void setup() { // put your setup code here, to run once: pinMode(LED, OUTPUT); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED, HIGH); delay(1000); // ne rien faire pendant 1000ms digitalWrite(LED, LOW); delay(1000); } #define LED 4 void setup() { // put your setup code here, to run once: pinMode(LED, OUTPUT); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED, HIGH); delay(1000); // ne rien faire pendant 1000ms digitalWrite(LED, LOW); delay(1000); } Test Capteur Distance const int trigPin = 8; const int echoPin = 11; const int LED = 4; // defines variables long duration; int distance; void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input pinMode(LED, OUTPUT); Serial.begin(9600); // Starts the serial communication } void loop() { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); if (distance >= 250) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } } const int trigPin = 8; const int echoPin = 11; const int LED = 4; // defines variables long duration; int distance; void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input pinMode(LED, OUTPUT); Serial.begin(9600); // Starts the serial communication } void loop() { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); if (distance >= 250) {   digitalWrite(LED, HIGH); } else {   digitalWrite(LED, LOW); } } EloĂŻse Chouraki Etape 1 : crĂ©ation du socle 1. J'ai d'abord créé un bloc au dimension d'une boite de savon longueur : 100 mm largeur : 66 mm hauteur : 36 mm 2. Pour faire le bac j'ai ensuite copier coller le mĂȘme bloc en enlevant 15 mm aux dimensions de base. J'ai mis ce bloc en mode perçage puis je l'ai positionnĂ© au milieu du bloc prĂ©cĂ©dent et j'ai regroupĂ© les deux. 3. Pour faire l'Ă©vacuation, j'ai pris une forme paraboloĂŻde que j'ai placĂ©e dans un des coins du bloc. J'ai ensuite mis la forme en mode perçage et j'ai regroupĂ© le tout. 4. J'ai intĂ©grĂ© une forme biseau pour faire les taquets permettant de soutenir la grille. J'ai dupliquĂ© la forme et je l'ai mise sur les chaque cĂŽtĂ©s du bloc. 5. Finalement, j'ai enlevĂ© les rebords de la deuxiĂšme forme pour avoir des bords carrĂ©s. Etape 2 : CrĂ©ation de la grilles sur Inkscape 1. J'ai d'abord créé un rectangle au mĂȘme dimension que mon socle. 2. J'ai créé une forme hexagonale Ă  l'aide des formes proposĂ©es. 3. J'ai dupliquĂ© cette forme en quatre pour les aligner. 4. J'ai groupĂ© le tout afin de les dupliquer et ĂȘtre sure que les colonnes soient identiques. 5. J'ai placĂ© les colonnes. 5. J'ai sĂ©lectionnĂ© une colonne que j'ai sĂ©parĂ©e pour pouvoir enlever un hexagone. 6. J'ai regroupĂ© les trois hexagone puis je les ai dupliquĂ©s et placĂ©s sur la grille. 7. J'ai sĂ©parĂ© tous les groupes pour pouvoir sĂ©lectionner le tout et faire une "exclusion" Etape 3 : Assemblage du socle et de la grille 1. J'ai exportĂ© ma grille en .svg puis je l'ai importĂ© dans tinkercad. 2. J'ai ensuite rĂ©trĂ©ci l'Ă©paisseur de la grille. 3. J'ai du rĂ©ajuster la taille de la grille. Etape 4 : Impression sur Ideamaker 1. J'ai exportĂ© le tout en .STL et importĂ© dans ideamaker. 2. J'ai modifiĂ© quelques paramĂštres. 3. Slice -> estimation du rĂ©sultat d'impression 4. Aperçue de l'impression puis exportation du fichier sous forme de gcode. Documents sources : grille_porte_savon.svg porte_savon.stl Adrien de Lestapis Porte Savon Pacman Introduction : Ce projet a dĂ©butĂ© le 14 fĂ©vrier 2023, Ă©talĂ© sur une semaine L'idĂ©e est de rĂ©aliser un porte-savon avec un design original pour apprendre Ă  utiliser logiciels de modĂ©lisation tels que Inkscape pour la ModĂ©lisation 2D, Tinkercad pour la ModĂ©lisation 3D et enfin IdeaMaker pour le Clipping. Journal de bord Etape 1 : Inspiration & Reflexion Pour mon savon Pacman, il fallait explorer la meilleure option pour que le design soit le plus ergonomique possible. Il existe deux façon de se reprĂ©senter Pacman dans l'imaginaire collectif, sa version 2D, originale, et sa version personnifiĂ© que l'on retrouve notamment dans le jeux Super Smash Bros. Ultimate. Pacman 3D personnifiĂ© Pacman 2D original J'ai donc d'abord voulu partir sur sa version 2D pour la modĂ©lisation de mon porte savon, avec la crĂ©ation d'une sphere, et creuser Ă  l'intĂ©rieur sa bouche pour laisser une place au savon (figure 1). Figure 1 : Premier essai Bien que le design semblait ĂȘtre le plus simple, il comprenait aussi plusieurs problĂšme de taille : Il n'y avait pas de place pour la grille. Y prendre un savon avec les mains mouillĂ©s devient difficile. Le manque de stabilitĂ© d'un porte-savon en boule, surtout si une parton du savon dĂ©passe Le cĂŽtĂ© plein et solide de la boule allait consommer plus plastique que nĂ©cessaire Ce design a vite Ă©tĂ© abandonnĂ© et je suis parti sur son homologue 3D. Etape 2 : Modelisation 3D de la structure J'ai dĂ©cidĂ© de ne plus partir d'une boule mais deux 2 demi-sphĂšre creuses, dont l'une allait servir de couvercle. J'ai donc pris une sphĂšre aux dimensions 70x70, puis j'ai creusĂ© avec avec une autre demi-sphĂšre lĂ©gĂšrement plus petite. Dans l'une des deux sphĂšre, j'ai creusĂ© un trou qui servira d'Ă©vacuation d'eau. Pour faire les jambes, jeux pris une forme cylindrique que je fait remonter jusqu'Ă  la limite de ma demi-sphĂšre. De cette maniĂšre, le haut des jambes va servir de support pour y mettre la grille.Pour rajouter un peu de stabilitĂ© Ă  ma structure, je dĂ©cide de rajouter les deux bottes rouges de notre boule jaune prĂ©fĂ©rĂ©e. Je prends donc un cylindre et un demi-cylindre que je colle ensemble pour faire ma chaussure, puis je creuse dans chacune d'elle un trou lĂ©gĂšrement plus grand que le diamĂštre de mes jambes. Figure 2 : les Ă©lĂ©ments de mon Pacman Etape 3 : Modelisation 2D de la grille Pour la grille, je souhaite toujours garder l'identitĂ© de l'univers Pacman. c'est pourquoi je pense modĂ©liser un niveau de jeu d'une partie en grille 2D. Je prends donc un grille sur internet que je vectorise en 2D sur Adobe Illustrator (Inkscape n'Ă©tant pas compatible avec mon appareil). J'applique un masque dĂ©crĂȘtage en d'un cercle pour rendre compatible la forme de la grille avec mon Pacman. Voici le rĂ©sultat obtenu : Cependant, malgrĂ© tous mes efforts, l'export du modĂšle SVG dans Tinkercad semble ne pas fonctionner. Voici le rĂ©sultat lorsque l'import SVG se fait dans TinkerCad. N'ayant pas anticipĂ© la difficultĂ© de l'import SVG dans mon planning de travail, je n'ai pas rĂ©ussi Ă  trouver la solution dans le temps imparti avant la prĂ©sentation finale. Cependant je suis preneur de tout conseil pouvant me dĂ©bloquer dans la rĂ©alisation du projet. DAHMANI Walid Pour la rĂ©alisation de mon support pour savon je commence par rĂ©aliser une sphĂšre sur le logiciel Thinkercad J’utilise une seconde sphĂšre de diametre infĂ©rieur afin d’évider la piĂšce principale J’utilise une seconde forme afin de supprimer la partie supĂ©rieur de la sphĂ©re et rĂ©vĂ©ler la partie Ă©vider de mon support J’utilise enfin un cĂŽne afin de rĂ©aliser un trou Ă  la base de la sphĂ©re afin de permettre Ă  l’eau de s’écouler J’utilise ensuite Inkscape afin de rĂ©aliser la plaque accueillera notre savon Je dĂ©sine les motifs que je souhaite sur ma surface et j’utilise la fonction soustraire afin d’imprimer mon motif J’importe mon support sur TINKERCAD, et j’utilise une nouvelle sphĂ©re afin de crĂ©er une nouvelle surface plane. Celle-ci permettra de supporter le support Ă  savon Enfin j’utilise un cube afin d’aplanir la surface de contact de notre support Ă  savon. L’objectif est de permettre Ă  notre objet de rester stable. Puis nous passons sur l'application Ideamaker afin de choisir les rĂ©glages de l'impression Pour les rĂ©glages, je choisis le type d'imprimante correspondant Ă  celle de l'openLab. Le type de matĂ©riau pour chaque extrudeure. S'agisant d'une sphere avec une base fine, je choisis de rĂ©aliser une piĂšce avec une densitĂ© de 25%. Je choisis Ă©galement de rĂ©aliser une petite jupe afin de faciliter l'impression. DIEVAL CĂ©cile Semaine 1 : projet porte-savon Le but du projet est de rĂ©aliser un porte-savon en 3D. Nous allons dĂ©composer sa structure en deux parties : - une grille en 2D via le logiciel Inkscape Inkscape - un contenant via le logiciel Tinkercad Tinkercad Nous allons imprimer ce porte-savon : - via le logiciel ideaMaker ideaMaker - via le logiciel Ultimaker Cura Ultimaker Cura Pour ma part, j'ai choisi de rĂ©aliser un porte-savon version Nintendo Mario Bros - Course aux piĂšces. 1.ModĂ©lisation 2D de la grille a. RĂ©gler la longueur et la largeur de la feuille Action : aller dans l'onglet fichier puis dans propriĂ©tĂ© du document Dimensions : 22 cm(longueur) X 18cm(largeur);et orientation=horizontal b. Dessiner la forme de la grille Action : prendre la forme rond c. Dimensionner la forme Action : Rx= 9cm et Ry= 7cm d. Mettre des petit ronds pour construire la grille Action : prendre la forme rond e. Dimensionner le rond Action : Rx = 2cm et Ry= 2cm f. CrĂ©er la grille, en enlevant les petit ronds sur le rectangle Action : utiliser la fonction chemin puis diffĂ©rence pour soustraire le motif On aurait pu mettre un logo en plus, pour cela, il faut aller dans fichier puis importer une image; et Ă©galement rajouter une Ă©paisseur si besoin (cf.contour). Fichier grille.svg ci-joint 2.ModĂ©lisation 3D du contenant a. Importer le fichier sur Inkscape sur Tinkercad Action : importer le fichier .svg Dimensions : 90 mm (longueur) x 70 mm (largeur); et 10mm (Ă©paisseur) b. CrĂ©er la base du porte savon Action : prendre la forme dĂ© comme support Dimensions : 90mm (longueur) x 74mm (largeur); et 40mm (Ă©paisseur) c. Juxtaposer le support et la grille Action : s'aider de la commande plan d. CrĂ©er le haut du tuyau pour la sortie d'eau (et pour que le savon ne se ramollisse pas) Action : prendre la forme cylindre et aller dans ses paramĂštres afin de l'Ă©diter au format perçage Dimensions : 18mm x 17mm x 10mm (profondeur) e. CrĂ©er la bas du tuyau pour la sortie d'eau (et pour que le savon ne se ramollisse pas) Action : prendre la forme dĂ© et aller dans ses paramĂštres afin de l'Ă©diter au format perçage Dimensions : 30mm (longueur) x 22mm (largeur) x 39mm (profondeur) 3.Impression 3D ultra haute qualitĂ© avec IdeaMaker Toutes les impressions seront faites avec l'imprimante Raise 3D Pro2 4.Impression 3D rapide avec IdeaMaker Fichier porte_savon.stl ci-joint 5.Impression 3D avec Ultimaker Cura avec l'imprimante Raise 3D Pro2 (simulation n°3) Actions : - Importer le fichier porte_savon.stl - Appuyer sur prepare - Appuyer sur print Fichier porte_savon.gcode non disponible car trop volumineux 6.Porte savon imprimĂ© Semaine 2 : projet montage Ă©lectronique Le but du projet est de rĂ©aliser un montage Ă©lectronique avec une carte Arduino. Une carte Arduino est carte Ă©lectronique Ă©quipĂ©e d'un micro-contrĂŽleur. 1. ModĂ©lisation de circuit Ă©lectrique MatĂ©riels : - Carte Arduino Carte Arduino - Logiciel Tinkercad Tinkercad Loi d'Ohm (Loi de Base en Ă©lectronique) : U (tension aux bornes de la rĂ©sistance) = R (valeur de la rĂ©sistance) * I (intensitĂ© du courant qui circule Ă  travers la rĂ©sistance) A. Blink programme Il s'agit d'un programme qui sert Ă  allumer une LED pendant une seconde, puis l'Ă©teint pendant une seconde, de maniĂšre rĂ©pĂ©tĂ©e. Blink programme Code associĂ© : #define LED 10 // connecte la LED sur la pin 10int compteur = 0;void setup(){Serial.begin(9600); // permet de dire que l'on va initier une communication entre l'ordinateur et le circuit Ă  la vitesse 9600 pinMode(LED, OUTPUT); // dĂ©claration de la pin 10 comme sortie}void loop(){Serial.print("Debut de la boucle ");Serial.println(compteur);digitalWrite(LED, HIGH); // Allume la LEDdelay(1000); // ne rien faire pendant 1000msdigitalWrite(LED, LOW);delay(1000); // ne rien faire pendant 1000mscompteur++; // incrĂ©mentation du compteur} Bonus : on peut rajouter une deuxiĂšme LED Code associĂ© : #define LEDA 10#define LEDB 12 int compteur = 0; void setup(){  Serial.begin(9600); pinMode(LEDA, OUTPUT); // dĂ©claration de la pin 10 comme sortie pinMode(LEDB, OUTPUT); // dĂ©claration de la pin 10 comme sortie} void loop(){  Serial.print("Debut de la boucle ");  Serial.println(compteur); digitalWrite(LEDA, HIGH);  digitalWrite(LEDB, LOW);  delay(1000); // ne rien faire pendant 1000ms  digitalWrite(LEDA, LOW);  digitalWrite(LEDB, HIGH);  delay(1000); // ne rien faire pendant 1000ms compteur++; // incrĂ©mentation du compteur} Image associĂ© : B. Bouton programme Il s'agit d'un programme qui sert Ă  allumer une LED via un bouton-poussoir. Bouton programme Code associĂ© : #define BTN 8#define LED 10 void setup(){  pinMode(BTN, INPUT_PULLUP);  pinMode(LED, OUTPUT); // dĂ©claration de la pin 13 comme sortie Serial.begin(9600);} void loop(){  if( digitalRead(BTN) == LOW )  {    Serial.println("Button pressed");    if( digitalRead(LED))   {      digitalWrite(LED, LOW);      }      else      {    digitalWrite(LED, HIGH);      } }  delay(100);} Image associĂ© : B. Buzzer programme Il s'agit d'un programme qui sert à allumer le haut-parleur piĂ©zo via un bouton-poussoir. Buzzer programme Code associĂ© : #define POT A0#define BUZZ 9#define BTN 7 int etat = 0; void setup(){  pinMode(POT, INPUT);  pinMode(BUZZ, OUTPUT);  pinMode (BTN, INPUT_PULLUP); Serial.begin(9600);} void loop(){  int pot = analogRead(POT);  Serial.println(pot); int buzzfreq = map(pot, 0, 1023, 1000, 20000); if( digitalRead(BTN) == LOW )  {    if( etat == 1 )    {      noTone(BUZZ);      etat = 0;    }    else    {      tone(BUZZ, buzzfreq);      etat = 1;     }    }         delay(120);} Image associĂ© : C. Capteur programme Il s'agit d'un programme impliquant un capteur qui mesure la distance avec un LED qui s'allume si la distance est infĂ©rieur ou Ă©gale Ă  30m. Capteur programme /*  Ultrasonic Sensor HC-SR04 and Arduino Tutorial */// defines pins numbersconst int trigPin = 9;const int echoPin = 10;#define LED 7// defines variableslong duration;int distance;void setup() {  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output  pinMode(echoPin, INPUT); // Sets the echoPin as an Input  pinMode(LED, OUTPUT);  Serial.begin(9600); // Starts the serial communication}void loop() {  // Clears the trigPin  digitalWrite(trigPin, LOW);  delayMicroseconds(2);  // Sets the trigPin on HIGH state for 10 micro seconds  digitalWrite(trigPin, HIGH);  delayMicroseconds(10);  digitalWrite(trigPin, LOW);  // Reads the echoPin, returns the sound wave travel time in microseconds  duration = pulseIn(echoPin, HIGH);  // Calculating the distance  distance = duration * 0.034 / 2;  // Prints the distance on the Serial Monitor  Serial.print("Distance: ");  Serial.println(distance); if (distance <= 30)  {   digitalWrite(LED, HIGH);  }  else  {   digitalWrite(LED,LOW);  }} Image associĂ© : RĂ©alisations associĂ© : Plus de 30m : Moins ou Ă©gale Ă  30m : Il existe Ă©galement pleins d'autres programmes Ă  rĂ©aliser avec la carte Arduino (Moteur, Capteur avec Action Moteur, Capteur de Temperature, ...) Moteur programme Temperature capteur programme Nathacha Nom du projet : Porte Savon Nathacha Introduction : Contexte + Objectifs : Dans le cadre de l'UE MU5MN045 - Outils technologiques de la conception innovante, nous allons crĂ©er un modĂšle 3D de porte-savon en deux parties (grille et contenant), le prĂ©parer pour l'impression et l'imprimer. Nous allons donc voir les concepts suivants : ModĂ©lisation 3D, ModĂ©lisation 2D, Impression 3D. Date de dĂ©but : FĂ©vrier Date de fin estimĂ©e : Mars MatĂ©riaux / Outils / Machines  : Nous allons utiliser plusieurs outils et une imprimante 3D. Pour crĂ©er un ou plusieurs Ă©lĂ©ments 2D --> Inkscape Pour la modĂ©lisation 3D --> Tinkercad Pour slicer le modĂšle 3D --> Ideamaker Construction / Journal de bord : 14/02/2023 Nous commençons par crĂ©er le grille du porte en 2D sur Inkscape. 1Ăšre Ă©tape : TĂ©lĂ©charger Inskcape via https://inkscape.org/release/inkscape-1.2.2/windows/64-bit/msi/?redirected=1 2Ă©me Ă©tape : J'ai ouvert une nouveau document et dĂ©fini les paramĂštres de 150x100mm pour la page. Suite Ă  cela, je crĂ©e un rectangle de 130x90mm en utilisant les paramĂštres sur le haut de la fenĂȘtre L et H, afin que la taille soit assez grande pour contenir mes savons. GrĂące Ă  l'onglet Objet > Fond et contour, je dĂ©fini un nouveau fond et un style+couleur de contour. GrĂące Ă  la fonctionnalitĂ© crĂ©er des polygones sur le cĂŽtĂ© gauche, je crĂ©e un design que je superpose pour obtenir une disposition qui me plaĂźt. Ensuite j'utilise la fonction aligner et distribuer pour que ce soit parfaitement aligner. 3Ăšme Ă©tape : J'ajuste la taille du rectangle en fonction des polygones. Je tĂ©lĂ©charge le ficher en svg. J'ouvre mon compte Tinkercad > crĂ©ation conception 3D dans lequel j'importe mon design en ficher svg d'inkscape + un design choisi sur thingiverse pour le socle du porte savon --> https://www.thingiverse.com/thing:404028 4Ăšme Ă©tape : En sĂ©lectionnant les deux objets et la fonctionnalitĂ© en haut a droite aligner je mets la grille Ă  la bonne hauteur et bonne position par rapport au socle. 06/03/2023 Semaine 2 - CrĂ©ation d'un circuit Ă©lectronique /* Ultrasonic Sensor HC-SR04 and Arduino Tutorial by Dejan Nedelkovski, www.HowToMechatronics.com */ // defines pins numbers #define LED 8 const int trigPin = 9; const int echoPin = 10; // defines variables long duration; int distance; void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input pinMode(LED, OUTPUT); Serial.begin(9600); // Starts the serial communication } void loop() { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); if( distance <=30 ) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } } Marie DZAMBA Informations Marie DZAMBA dzambamarie@gmail.com Master Management de l'innovation / Fablab Sorbonne UniversitĂ© / MU5MN045 Du 13/02/2023 au 05/05/2023 Contexte Dans le cadre de mon master 2 MI, j'ai suivi l'UE MU5MN045 qui avait pour but de nous sensibiliser aux outils technologiques de la conception innovante. Ce cours m'a permis de dĂ©couvrir diffĂ©rents outils technologiques tels que les logiciels de modĂ©lisation 3D, les imprimantes 3D, les logiciels de simulation et les technologies de rĂ©alitĂ© virtuelle, entre autres. J'ai appris comment ces outils peuvent ĂȘtre utilisĂ©s pour faciliter le processus de conception et de prototypage de produits innovants. Cette documentation explore ma comprĂ©hension des avantages et des limites de ces outils, ainsi que les implications sociales de leur utilisation dans le domaine de la conception. Objectif Concevoir un objet innovant grĂące aux diffĂ©rents ateliers et aux confĂ©rences suivies durant ces derniĂšres semaines. Journal de bord Semaine du 13/02/2023 Objectif : ModĂ©lisation 2D/3D - CrĂ©ation d’un modĂšle 3D de porte savon en utilisant des logiciels de modĂ©lisation tels que Tinkercad Durant cette semaine, j’ai essayĂ© de me familiariser avec les logiciels de modĂ©lisation notamment avec des options telles que le perçage et le centrage. Mon objectif Ă©tait de rĂ©aliser un porte-savon avec un grillage en forme de toile d’araignĂ©e. Malheureusement Ă©tant malade lors des derniĂšres sĂ©ance, je n’ai pas pu aller au bout de mon projet. Toutefois, voici les Ă©tapes que j’ai retenue lors des Ă©changes avec Clara et Stephane afin de rĂ©ussir au mieux la conception du modĂšle 3D de mon porte-savon : Identifier les bonnes dimensions afin de concevoir un modĂšle prĂ©cis Choisir le logiciel de modĂ©lisation le plus adaptĂ© pour l’objet Une fois le logiciel sĂ©lectionnĂ©, il faut commencer Ă  crĂ©er la forme de la base et bien ajuster les angles pour anticiper l’impression Ajouter des dĂ©tails comme des rainures pour permettre l’écoulement de l’eau, des trous pour la ventilation, des motifs etc. Il faut Ă©galement jouer avec les diffĂ©rents outils de modĂ©lisation 3D tels que l’extrusion, la rotation, le biseau, etc. pour ajouter les dĂ©tails. Un fois le modĂšle terminer, il est important de vĂ©rifier la faisabilitĂ© de l’impression en s’assurant que les bords du porte-savon soient assez Ă©pais, ou bien que la base soit assez solide pour maintenir l’objet pendant l’impression. A ce sujet, la plus grosse difficultĂ© pour moi Ă©tait de concevoir les parties flottantes de la base qui allaient soutenir la grille en forme de toile d’araignĂ©e. Je n’ai pas rĂ©ussi Ă  les faire fusionner avec les rebords du porte-savon. Du coup, Ă  l’impression je pense qu’elles se seraient dĂ©tachĂ©es. DerniĂšre Ă©tape, exporter le modĂšle au format STL pour ĂȘtre utilisĂ© avec l'imprimante 3D (photo imprimantes fablab) Semaine du 06/03/2023 Objectif : Introduction Ă  l'Ă©lectronique numĂ©rique* Lors de cette semaine, nous avons revu les bases de l'Ă©lectronique en utilisant des composants Ă©lectroniques tels que des capteurs, des rĂ©sistances, des LED et des boutons. Nous avons Ă©galement appris Ă  utiliser les logiciels associĂ©s pour programmer ces composants afin de crĂ©er des projets Ă©lectroniques interactifs (doc 1, 2 et 3). Plus spĂ©cifiquement, StĂ©phane nous a montrĂ© comment coder des instructions pour la carte Arduino en utilisant un langage de programmation (doc 5). Nous avons utilisĂ© l’outil simulation de Tinkercad pour simuler des petits projets interactifs avant de les mettre en oeuvre sur une carte Arduino rĂ©elle (doc 4). Nous avons aussi connectĂ© des composants Ă©lectroniques Ă  la carte Arduino en utilisant des boutons ou des capteurs de mouvement. A l’issu des ateliers, nous avions toutes les cartes en main pour explorer diffĂ©rentes façons d'utiliser ces outils pour crĂ©er des projets Ă©lectroniques originaux et utiles (A suivre : EL DISTRIBUTO). Doc 1: Doc 2 : Doc 3: Doc 4 : Doc 5 : *Absente lors de l'atelier sur la dĂ©coupe laser, rattrapage avec mon groupe pour le projet final Semaine du 03/04/2023 ConfĂ©rence animĂ©e par Adrien ROUET, fondateur de ESQUISSE 3D. Esquisse 3D a pour vocation d'accompagner des projets hardware Ă©lectronique et mĂ©canique du prototypage Ă  l'industrialisation. Lors de la confĂ©rence, Adrien nous a expliquĂ© comment il accompagne les entrepreneurs dans leur processus de crĂ©ation. Il nous a donnĂ© quelques pistes/conseils pour qu'Ă  notre tour nous puissions nous lancer si l'expĂ©rience nous tente. Voici mes notes avec les points les plus importants que j'ai retenu : Avant de concevoir et de dĂ©velopper un produit, il est important de comprendre les besoins et les attentes des utilisateurs pour pouvoir crĂ©er un produit qui rĂ©pondra le mieux Ă  leurs besoins CrĂ©er un prototype fonctionnel pour valider le concept de base et les hypothĂšses de conception. Adrien a d’ailleurs mentionnĂ© l’utilisation d’outils de conception assistĂ©e pour crĂ©er des modĂšles 3D du produit avant de rĂ©aliser des impressions 3D pour crĂ©er des prototypes physiques Bien tester le prototype pour identifier les problĂšmes et les points Ă  amĂ©liorer Utiliser les commentaires des utilisateurs pour amĂ©liorer le produit et recommencer jusqu'Ă  ce que le rĂ©sultat soit assez satisfaisant (pas besoin d’avoir un produit parfait Ă  ce stade) Une fois le prototype prĂȘt, il faut planifier la production en sĂ©rie (il est important de trouver des fournisseurs de confiance) Le produit doit ensuite ĂȘtre testĂ© et certifiĂ© avant d'ĂȘtre commercialisĂ© pour garantir qu'il rĂ©pond aux normes et rĂ©glementations applicables (Ă©tape importante car certaines certifications sont difficiles Ă  avoir) Trouver un partenaire de fabrication pour aider Ă  industrialiser le produit Élaborer une stratĂ©gie de marketing pour promouvoir le produit auprĂšs du public cible Conclusion En conclusion, les diffĂ©rents ateliers ont Ă©tĂ© trĂšs bĂ©nĂ©fiques pour moi, car j'ai pu acquĂ©rir de nouvelles compĂ©tences en conception et prototypage. J'ai enfin pu apprendre  Ă  utiliser des technologies telles que l'impression 3D et la dĂ©coupe laser lors de la conception de El Distributo. J'ai fortement apprĂ©ciĂ© les conseils d'Adrien Rouet. Ce dernier m'a aidĂ© Ă  comprendre les diffĂ©rentes Ă©tapes de la crĂ©ation de produits d'un point de vue plus technologique, de la conception au prototypage en passant par la production en sĂ©rie. J'ai bien pris notes des conseils sur les aspects rĂ©glementaires et les normes de qualitĂ© Ă  respecter pour la mise sur le marchĂ© de produits Ă©lectroniques. Dans l'ensemble, ces ateliers m'ont permis de mieux comprendre les enjeux de la crĂ©ation de projets hardware et de dĂ©velopper des compĂ©tences pratiques. Je tiens Ă  remercier Clara et StĂ©phane qui ont pris le temps de nous orienter et de nous conseiller au mieux durant toute l'UE. UE COREPS Conception d'un fumoir Ă  levure Conception d'un fumoir Ă  levure Concevoir et rĂ©aliser un projet scientifique. Telle est la consigne qui nous a Ă©tĂ© imposĂ©e dans le cadre de l'enseignement mĂ©decine/science. Nom du projet : Fumoir Ă  levure (nom commercial de cette invention de gĂ©nie encore Ă  Ă©laborer) CoordonnĂ©es : BEN FREDJ Mohamed-Fehmi, mf.benfredj@gmail.com DFGSM3 Cursus MĂ©decine/Science Projet M1) BERGONZOLI Élise Elisebergonzoli0305@gmail.com DFGSM3 Cursus MĂ©decine/Science Projet M1) Quelques contraintes : - Le modĂšle expĂ©rimental : Saccharomyces cerevisiae, la levure de boulanger. - L'Ă©tude du stress oxydant. La cigarette classique est connue dans la bibliographie comme Ă©tant nocive pour nos cellules via notamment le stress oxydant induit dans les cellules exposĂ©es Ă  la fumĂ©e et aux nombreux mutagĂšnes contenue dans cette derniĂšre. Notre Ă©tude Ă©tudiera quant Ă  elle les effets de la cigarette Ă©lectronique sur le stress induit chez les levures. Plus prĂ©cisĂ©ment nous cherchons Ă  mettre en Ă©vidence l'hypothĂ©tique nocivitĂ© de la PUFF ou e-cigarette jetable. Notre questionnement fait suite Ă  un constat Ă©difiant : les constructeurs de ces PUFFs visent un public de plus en plus jeune et mĂȘme mineur. Des collĂ©giens, des lycĂ©ens s'emparent de cette nouvelle drogue au packaging conçu pour leurs plaire. Le concept est simple : des cigarettes Ă©lectroniques peu chĂšres, vendues partout, aux goĂ»ts et saveurs fruitĂ©es ou de bonbons, avec ou sans nicotine. L'inquiĂ©tude : l'entrĂ©e dans le tabagisme des plus jeunes via le passage du sans nicotine aux produits nicotinĂ©s. Mais aussi ! la lĂ©gende que la cigarette Ă©lectronique ne serait que "de l'eau et du sucre" et que la fumĂ©e en tant que telle (sans nicotine) ne serait pas nocive se rĂ©pand...comme une trainĂ©e de poudre. L'objectif pour nous dans un premier temps est donc de crĂ©er un dispositif permettant au levures, jusqu'a ce que l'Ă©volution les dotes de bouches et de poumons, de fumer ! L'idĂ©e est de mettre sur pied un poumon gĂ©ant, tirant de maniĂšre autonome sur les PUFFs. Ce poumon serait rempli de nos levures. GrĂące Ă  un systĂšme de pompe Ă  vides controlĂ©es par Arduino et une bonne isolation nous imposerons un rythme respiratoire suffisamment fort pour tirer sur les cigarettes, sans griller les rĂ©sistances et Ă©vacuant la fumĂ©e. Ce poumon sera compartimentĂ© en plusieurs "fumoirs" pour pouvoir tester plusieurs conditions expĂ©rimentales en mĂȘme tempsImplication de la protĂ©ine Rif1 dans la rĂ©ponse Ă  diffĂ©rents stress sur les tĂ©lomĂšres chez S.cerevisiae ESTEVES AlexisIDIR RyaneZHOU HĂ©lĂšne helene2009@live.cn Lorsqu'une levure est exposĂ©e Ă  diffĂ©rents stress, les tĂ©lomĂšres sont affectĂ©s. Il a Ă©tĂ© dĂ©montrĂ© par le passĂ© que la cafĂ©ine et les hautes tempĂ©ratures raccourcissaient les tĂ©lomĂšres et Ă  l'inverse que les alcools (Ă©thanol, isopropanol, mĂ©thanol) rallongeaient les tĂ©lomĂšres. Dans cette Ă©tude nous cherchons Ă  dĂ©montrer que la rĂ©ponse Ă  ces diffĂ©rents stress passe par la voie du complexe Rap1-Rif1-Rif2. Pour cela nous nous intĂ©ressons aux phĂ©notypes des levures qui dĂ©coulent de tĂ©lomĂšres courts ou longs : La vitesse de croissance et le temps de doublement Observation au microscope CytomĂ©trie en flux Conditions Ă©tudiĂ©es : WT (BY4741), sans traitement tlc1 delta, sans traitement tsa1 delta, sans traitement WT, cafĂ©ine 8mM WT, isopropanol 5% 20/03/2023 PrĂ©paration de milieux de culture complet YPD liquide (500 mL) et solide (250 mL) 21/03/2023 Mesure de turbiditĂ© des prĂ©cultures pour ensemencement Suivi de la croissance par mesure de turbiditĂ©L'oxydation des levures par H2O2 Cardon Laura, Calingarayar Lydie, Martin Fanny, Projet M1 BMC COREPS : Etude de l'effet de la quercĂ©tine sur des levures dĂ©lĂ©tĂ©es en catalase dans le cadre de l'acatalasĂ©mie. 10/03 Sur des levures WT et dĂ©lĂ©tĂ©s en catalases, on induit un stress avec de l'H2O2 Ă  des concentrations diffĂ©rentes et on Ă©tablit le taux de survie des deux souches. Pour ce faire, on effectue une gamme de concentration de H2O2 et on expose nos levures Ă  ces diffĂ©rentes concentrations. Pour la suite des expĂ©riences on utilisera la concentration d'H2O2 qui donnera un taux de survie de 50% des levures pour les deux souches. Produits : Quercetin hydrate >95% (Aldrich Chemistry) Étude du stress oxydatif quercĂ©tine dans des cas d'acatalĂ©sĂ©mie Informations Nom du projet : Ă©tude du stress oxydant quercĂ©tine dans des cas d'acatalĂ©sĂ©mie CoordonnĂ©es : Fanny MARTIN fanny.martin.2.@etu.sorbonne-universite.fr ; Lydie CALINGARAYAR lydie.martin@etu.sobonne-universite.fr ; Laura CARDON laura.cardon@etu.sorbonne-universite.fr Contexte Objectifs HypothĂšse : quercĂ©tine reduit le stress oxydant dans des cas d'acatalĂ©sĂ©mie Protocole Solubiliser le quercĂ©tine Mesurer la densitĂ© optique avec le spectrophotomĂštre Tracer la courbe de croissance RĂ©aliser le comptage en gouttes Machines utilisĂ©es SpectrophotomĂštre Journal de bord 17/03 SpectrophotomĂ©trie et Comptage en gouttesÉtude du stress oxydatif sur la levure en prĂ©sence de saccharine et de nĂ©ohespĂ©ridine Informations Nom du projet : Ă©tude du stress oxydant sur la levure en prĂ©sence de saccharine et de nĂ©ohespĂ©ridine CoordonnĂ©es : christine.lin.1@etu.sorbonne-universite.fr caroline.sreng@etu.sorbonne-universite.fr Objectifs : vĂ©rifier les hypothĂšses HypothĂšse 1 : Saccharine induit le stress oxydant HypothĂšse 2 : NĂ©ohespĂ©ridine diminue le stress oxydant Protocole Comptage en gouttes Machines utilisĂ©es SpectrophotomĂštre Journal de bord 17/03 SpectrophotomĂ©trie et Comptage en gouttes Étude du stress oxydatif sur la levure en prĂ©sence de resveratrol et de EGCG Nom : MANSOUR Elyr elyn.rouanet@gmail.com MALANDA ChloĂ© chloe.omalanda@gmail.com Projet :  Alzheimer, RĂŽle du resveratrol et de EGCG sur l'accumulation des peptides A bĂȘta 42. HypothĂšse : Le resveratrol et l'EGCG ont un rĂŽle curatif et prĂ©ventif sur la formation des agrĂ©gats de peptides A bĂȘta 42 Recyclage du pĂ©roxyrĂ©doxine par thyorĂ©doxine,Ă©tude sur S.cerevisiae RĂ©alisation: Martins Claudia et Galappaththi DulanjiEffet du stress oxydatif sur le facteur de transcription YAP1,Ă©tude sur S.cerevisiae RĂ©alisation: SONG Haibing et CHADEAU LaetitiaUE MU5BEB41 - EPET Environnement et EcoInnovations VĂ©gĂ©tales (M2) Micropousses sur gel d’agar - ChamperchĂ© Projet rĂ©alisĂ© en Co-Working avec ChamperchĂ© rĂ©alisĂ© par : Margot Kandel, Lou Gimeno, AurĂ©lie Saussais Recherche de substrat de culture de micropousseCulture en aĂ©roponie sur tours - Cueillette Urbaine Projet rĂ©alisĂ© en Co-Working avec Cueillette Urbaine rĂ©alisĂ© par : Julien Page, Olivia Renard Impact de diffĂ©rentes concentrations initiales en solutions nutritives sur la croissance de Lactuca sativa L. en tours aĂ©roponiques Marqueurs de stress hydrique chez 2 variĂ©tĂ©s de laitues - NovaGenetic Projet rĂ©alisĂ© en Co-Working avec NovaGenetic par : Clarisse Giner, NoĂ©mie PiivaiEssais d'une molĂ©cule florescente sur diffĂ©rentes espĂšces - AglaĂ© Projet rĂ©alisĂ© en Co-Working avec AglaĂ© rĂ©alisĂ© par : Marion Lusin, Marion Maceiras, Caroline SansonEPU-C6-DEE Engagement Ă©tudiant ROB3. Distributeur de protections hygiĂ©niques Viven Mael / Brietzke Louis Responsable : Myriam Comte Au court de notre annĂ©e de ROB3 nous nous devons de faire un engagement Ă©tudiant. Ainsi nous avons choisi d'intĂ©grer l'association HeforShe qui nous aidĂ© Ă  trouver l'idĂ©e du distributeur. Le distributeur a pour but de pallier Ă  la prĂ©caritĂ© hygiĂ©nique des Ă©tudiantes. Ce genre de borne existe dĂ©jĂ  on a donc optĂ© pour cette forme : AprĂšs Ă©tude nous avons rĂ©alisĂ© que la motorisation n'Ă©tait pas pertinente au vu du fait que nous souhaitons que cette borne soit en accĂšs libre. Nous avons donc optĂ© pour une solution plus basique avec une simple Ă©valuation des stocks qui permet de connaitre Ă  tout moment les quantitĂ©s restantes. Pour ce faire nous avons coder, dans une Raspberry, un programme qui rĂ©ceptionne les donnĂ©es des quantitĂ©s et qui les envoie par mail Ă  une boite mail qui y est dĂ©diĂ©. Notre modĂšle comportera 6 compartiments qui comprendrons sur notre premier prototype 3 compartiments serviette et 3 compartiments tampon. Nous avons pour objectif (cela va dĂ©pendre des fournisseurs que nous obtenons) d'avoir 4 compartiments serviette et 2 compartiments tampon. Afin d'ĂȘtre conforme Ă  notre sondage qui indique une tendance (dans les distributeurs existant) Ă  manquer de serviettes plus que de tampons. Pour la construction de notre premier prototype nous avons analysĂ© les diffĂ©rentes tolĂ©rances des machines de dĂ©coupe afin d'adapter nos modĂšles. Malheureusement nous n'avons pas pris en compte les matĂ©riaux Ă  disposition nous avons donc la nĂ©cessitĂ© de rĂ©adapter nos modĂšles. Finalement nous avons choisi d'utiliser la dĂ©coupe laser et des plaques de 6mm de peuplier pour crĂ©er notre borne. Le modĂšle d'origine Le modĂšle de dĂ©coupe Le rĂ©sultat Nous nous sommes ensuite penchĂ©s sur le cĂąblage de la boĂźte. Comme prĂ©cisĂ© prĂ©cĂ©demment nous utilisons une Raspberry ainsi que de nombreux cĂąbles et capteurs Ă  ultrason HC-SR04.Machine Ă  poids Informations Le Floch Mael / Sauvenay Antoine Mael.Le_Floch@etu.sorbonne-universite.fr / Antoine.Sauvenay@etu.sorbonne-universite.fr CIA pole escape game dĂ©buter le 10 octobre 2022, fin prĂ©vu le 21 avril 2023 Contexte Lors de notre annĂ©e de ROB3, nous devons rĂ©aliser un projet Ă©tudiant, le nĂŽtre consiste en la crĂ©ation d'un Escape game au sein de la collection des minĂ©raux, ce dernier est articulĂ© en 5 Ă©nigmes principales dont l'une correspond Ă  une boĂźte Ă  poids qu'Antoine a modĂ©lisĂ© sur Solidworks. Objectifs Le principe de la machine Ă  poids est le suivant: dans un boĂźtier est contenu plusieurs balances, ces balances ont toutes un de leurs cotĂ©s sortant du boitier et Ă©tant accessible par l'utilisateur, l'autre partie est en relation avec un tube dans lequel quelque chose peut ĂȘtre stockĂ©, lors que toutes les balances sont placĂ©es Ă  l'Ă©quilibre, il est possible Ă  l'aide d'un poussoir de faire sortir l'objet stockĂ©. Ce systĂšme s'apparente Ă  un gros cadenas actionnĂ©s par des poids. Lorsque le systĂšme sera entiĂšrement terminĂ©, il ressemblera Ă  ceci: (problĂšme de tĂ©lĂ©chargement de la photo, le problĂšme sera rĂ©solu au plus vite) MatĂ©riel plastique de type PLA bois Machines utilisĂ©es imprimante 3d dĂ©coupeuse Construction Étape 1 modĂ©lisation de l'ensemble des piĂšces du systĂšme Étape 2 rĂ©alisation de toutes les piĂšces qui ne peuvent ĂȘtre faite autrement que avec des machines Étape 3 Assemblage de l'ensemble du systĂšme: il faudra dĂ©buter par les supports, installer les diffĂ©rents guidage, assembler les balances, mettre les piĂšces de maintient en position, puis mettre le capot. Journal de bord 10/2022 DĂ©but de la modĂ©lisation du systĂšme, il a Ă©tĂ© nĂ©cessaire de penser Ă  toutes les piĂšces qui pourrait ĂȘtre remplacer par des piĂšces de rĂ©cupĂ©ration, afin d'Ă©conomiser au maximum les matĂ©riaux. 13/01/2023 Impression du premier lot de piĂšce, en l'occurence les supports de balance, ayant consommer environ 130g de PLA et 20h de temps machine chacun. 17/02/2023 Impression des supports pour le guidage des pierres, ils ont consommĂ© environ 70g de PLA et une dizaine d'heure de temps machine chacun. 23/03/2023 impression des guidage des pierres, ils ont consommĂ© environ 14g de PLA et 4 heures de temps machine chacun.Mesure de la portance de diffĂ©rents profils et matiĂšres d’hydrofoil CoordonnĂ©es Benjamin Gauthey (benjamingauthey@yahoo.fr), Ă©lĂšve ingĂ©nieur Ă  Polytec Sorbonne Alexandre Malet (alexandre.malet@etu.sorbonne-universite.fr), Ă©lĂšve ingĂ©nieur Ă  Polytec Sorbonne Introduction Date de dĂ©but: 24 fĂ©vrier 2023 Date de fin estimĂ©e: 28 mai 2023 Objectifs: CrĂ©er diffĂ©rents profil d'hydrofoil ainsi qu'un dispositif expĂ©rimental pour mesurer la portance de ces derniers Contexte: Ce projet s’inscrit dans le cadre de l’UE « Engagement Ă©tudiant » Outils et Machines Imprimante 3D Raised 3D pro(FabLab Sorbonne UniversitĂ©) Logiciel de design 3D : Blender GouttiĂšre avec un courant d’eau rĂ©gulĂ© (Labo de MĂ©canique des Fluides) Dispositif expĂ©rimental pour les mesures (Ă  dĂ©tailler) Logiciel Blender (pour concevoir les profils d’hydrofoil) DĂ©coupeuse laser Perceuse colonne Perceuse / Scie Ă  mĂ©taux / Touret Ă  poncĂ© MatĂ©riaux Filament PLA (FabLab Sorbonne UniversitĂ©) Plaque PLA 3x500x300mm Boulon et ecrous M3/M4 Tige filetĂ©e acier M4 Rails de guidage aluminium Ressorts Construction de l'hydrofoil Nous avons utilisĂ© le logiciel Blender pour concevoir les profils d’hydrofoil en nous inspirant de modĂšles existants. Nous avons choisi des formes simples et symĂ©triques pour faciliter l’impression 3D. Nous avons exportĂ© les fichiers au format STL pour les envoyer Ă  l’imprimante 3D. Nous avons imprimĂ© les hydrofoils en PLA avec l’imprimante 3D Raised 3D pro du FabLab. Nous avons commencĂ© Ă  fabriquer un dispositif expĂ©rimental pour mesurer la portance des hydrofoils. Le dispositif est placĂ© dans la gouttiĂšre avec un courant d’eau rĂ©gulĂ© par une vanne. Voici les paramĂštres d'impression que nous allons testĂ© d'utilisĂ©: ParamĂštres gĂ©nĂ©raux Hauteur de la couche (Layer Height) : RĂ©glez cette valeur sur une valeur infĂ©rieure Ă  la taille de la buse de votre imprimante 3D, gĂ©nĂ©ralement entre 0,1 mm et 0,3 mm pour une buse standard de 0,4 mm. Plus la hauteur de la couche est faible, plus les dĂ©tails de l'objet imprimĂ© seront prĂ©cis et moins il y aura d'aspĂ©ritĂ© sur la surface. Vitesse d'impression (Print Speed) : RĂ©duisez la vitesse d'impression pour une meilleure qualitĂ© d'impression. Vous pouvez essayer de rĂ©gler la vitesse d'impression Ă  environ 40-60 mm/s. TempĂ©rature d'extrusion (Extrusion Temperature) : RĂ©glez la tempĂ©rature d'extrusion selon le matĂ©riau que vous utilisez. Si vous utilisez un PLA standard, vous pouvez rĂ©gler la tempĂ©rature entre 190°C et 220°C. DensitĂ© de remplissage (Infill Density) : RĂ©glez la densitĂ© de remplissage pour rĂ©duire le risque de dĂ©fauts d'impression. Vous pouvez essayer de rĂ©gler la densitĂ© de remplissage Ă  environ 20-30%. Support (Support) : Si votre modĂšle nĂ©cessite un support pour ĂȘtre imprimĂ©, sĂ©lectionnez l'option "Support Everywhere" pour Ă©viter les dĂ©fauts d'impression. Plus de prĂ©cision sur les vitesses Vitesse de dĂ©placement (Travel Speed) : Il s'agit de la vitesse Ă  laquelle l'extrudeur se dĂ©place lorsqu'il ne dĂ©pose pas de filament, par exemple lorsqu'il se dĂ©place d'un endroit Ă  un autre de l'imprimante. Vous pouvez rĂ©gler cette vitesse Ă  une valeur plus Ă©levĂ©e, par exemple 80-100 mm/s. Vitesse de la premiĂšre couche (First Layer Speed) : La premiĂšre couche est la plus importante, car elle dĂ©termine la stabilitĂ© de l'impression. Il est recommandĂ© de rĂ©gler la vitesse de la premiĂšre couche Ă  une valeur infĂ©rieure Ă  la vitesse d'impression pour les couches suivantes. Vous pouvez essayer de rĂ©gler cette vitesse Ă  environ 20-30 mm/s. Vitesse de la coque (Outer Wall Speed) : La coque est la paroi extĂ©rieure de l'objet imprimĂ©. Pour obtenir une surface lisse et rĂ©guliĂšre, il est recommandĂ© de rĂ©gler la vitesse de la coque Ă  une valeur infĂ©rieure Ă  la vitesse d'impression pour les couches intĂ©rieures. Vous pouvez essayer de rĂ©gler cette vitesse Ă  environ 30-40 mm/s. Vitesse de remplissage (Infill Speed) : La vitesse de remplissage correspond Ă  la vitesse Ă  laquelle le filament est dĂ©posĂ© pour remplir l'intĂ©rieur de l'objet. Vous pouvez rĂ©gler cette vitesse Ă  une valeur plus Ă©levĂ©e que la vitesse de la coque, par exemple Ă  environ 50-60 mm/s. DensitĂ© et flottaison La densitĂ© de l'objet, associĂ©e Ă  la densitĂ© de l'eau, dĂ©termine si l'objet flottera ou coulera. Pour qu'un objet ne flotte pas dans l'eau, il doit ĂȘtre plus dense que l'eau. La densitĂ© de l'eau est d'environ 1 g/cmÂł Ă  tempĂ©rature ambiante. Si votre objet a une densitĂ© de 1,25 g/cmÂł, alors pour qu'il ne flotte pas dans l'eau, il doit ĂȘtre rempli Ă  au moins 80% de sa capacitĂ© totale. Voici comment vous pouvez calculer cela : Calculez le volume total de votre objet en multipliant sa longueur, sa largeur et sa hauteur. Multipliez ce volume total par la densitĂ© de votre matĂ©riau pour obtenir la masse totale de l'objet. Divisez la masse totale de l'objet par le volume total pour obtenir la densitĂ© rĂ©elle de l'objet. Pour dĂ©terminer le pourcentage de remplissage nĂ©cessaire pour que l'objet ne flotte pas, divisez la densitĂ© rĂ©elle de l'objet par la densitĂ© de l'eau (1 g/cmÂł) et multipliez le rĂ©sultat par 100. Par exemple, si votre objet a une longueur de 10 cm, une largeur de 5 cm et une hauteur de 2 cm, son volume total serait de 100 cmÂł. Si vous utilisez un matĂ©riau ayant une densitĂ© de 1,25 g/cmÂł, la masse totale de l'objet serait de 125 g. En divisant 125 g par 100 cmÂł, on obtient une densitĂ© rĂ©elle de 1,25 g/cmÂł. Pour que l'objet ne flotte pas dans l'eau, sa densitĂ© rĂ©elle doit ĂȘtre supĂ©rieure Ă  1 g/cmÂł. Ainsi, pour que l'objet ne flotte pas, il doit ĂȘtre rempli Ă  au moins 80% de sa capacitĂ© totale. Il est important de noter que la densitĂ© rĂ©elle de l'objet peut varier en fonction du pourcentage de remplissage et de la structure interne de l'objet, donc il est recommandĂ© de faire des tests pour dĂ©terminer le pourcentage de remplissage optimal pour votre objet. Journal de bord 12 janvier 2023: DĂ©but du projet. Recherche bibliographique sur les hydrofoils et leurs applications. Choix du sujet et des objectifs. 16 fĂ©vrier 2023: Conception des profils d'hydrofoil avec Blender. Exportation des fichiers STL. 25 fĂ©vrier 2023: PremiĂšre tentative d'impression 3D des hydrofoils. Échec Ă  cause d'un bug de la machine en cours de route. 29 fĂ©vrier 2023: DeuxiĂšme tentative d'impression 3D des hydrofoils. RĂ©ussite, mais rĂ©sultat insatisfaisant Ă  cause des aspĂ©ritĂ©s sur le dessus et le dessous des foils. 2 mars 2023: Analyse des problĂšmes d'aspĂ©ritĂ©s et recherche de solutions : aprĂšs Ă©valuation, nous dĂ©cidons d'imprimer les hydrofoils sur la tranche afin de bĂ©nĂ©ficier d'une surface plus lisse, rĂ©duisant ainsi les aspĂ©ritĂ©s. 3 mars 2023: RĂ©vision du design des hydrofoils sur Blender pour Ă©liminer les aspĂ©ritĂ©s et rĂ©duire le poids. Nous constatons que le poids actuel pourrait ne pas permettre aux hydrofoils de gĂ©nĂ©rer suffisamment de poussĂ©e pour se soulever. Par consĂ©quent, nous apportons des modifications pour optimiser le design et rĂ©duire le poids. 9 mars 2023: TroisiĂšme tentative d'impression 3D des hydrofoils en utilisant le nouveau design et de nouveaux paramĂštres d'impression, tenant compte des modifications apportĂ©es pour Ă©liminer les aspĂ©ritĂ©s et rĂ©duire le poids. 10 mars 2023: Hydrofoils optimisĂ©s, sans aspĂ©ritĂ©s et avec une densitĂ© et un poids idĂ©aux. Cependant, Ă©tant donnĂ© que les hydrofoils ne sont pas pleins (prĂ©sence d'une cavitĂ© vide Ă  l'intĂ©rieur), il est important de s'assurer qu'ils ne se remplissent pas d'eau. Par consĂ©quent, nous dĂ©cidons d'appliquer plusieurs couches de solution hydrophobe sur leur surface pour Ă©viter l'accumulation d'eau. 14 mars 2023: Conception thĂ©orique (plan/maquette) du dispositif expĂ©rimental pour mesurer la portance des hydrofoils dans la gouttiĂšre Ă  courant d'eau rĂ©gulĂ©, situĂ©e dans le Laboratoire de MĂ©canique des Fluides. 21 mars 2023: ProblĂšme ! Les hydrofoils sont trop larges, ce qui nous empĂȘche d'insĂ©rer le dispositif de portance dans la gouttiĂšre. Nous devons donc revoir le design des hydrofoils pour les rendre plus Ă©troits tout en garantissant une portance suffisante. 23 mars 2023: Conception d'un nouveau design d'hydrofoil sur Blender, avec des dimensions rĂ©duites en termes de largeur, mais plus longues pour assurer une portance adĂ©quate dans la gouttiĂšre expĂ©rimentale. (Dimension prĂ©cĂ©dente) (Nouvelles dimensions) 28 mars 2023: ProblĂšme ! Nous avions prĂ©vu de percer les hydrofoils Ă  l'aide de la perceuse Ă  colonne pour faire passer une tige filetĂ©e Ă  l'intĂ©rieur et ancrer cette tige dans le dispositif de mesure. Cependant, nous constatons que nous ne disposons pas d'une mĂšche assez longue pour atteindre le centre des hydrofoils. Nous devons donc effectuer une modification du design des hydrofoils sur Blender en ajoutant un trou au centre pour faire passer la tige filetĂ©e. 4 avril 2023: Pour mesurer la portance de nos hydrofoils, nous aurons besoin de ressorts. L'objectif est de mesurer l'extension des ressorts pour dĂ©terminer la force qui leur est appliquĂ©e, Ă  l'aide de la constante de raideur. Aujourd'hui, nous avons conçu un systĂšme de mesure pour cette constante. 6 avril 2023: Pour la fabrication du systĂšme de mesure de la constante de raideur et sa mesure Ă  l'aide du dispositif conçu, nous avons procĂ©dĂ© comme suit : nous avons fixĂ© une bouteille d'eau Ă  chaque ressort et progressivement ajoutĂ© du poids (de l'eau) Ă  chaque mesure, ce qui a gĂ©nĂ©rĂ© des paliers de poids diffĂ©rents. À chaque palier, nous avons enregistrĂ© l'Ă©tirement du ressort. Ces mesures ont ensuite Ă©tĂ© reprĂ©sentĂ©es sur un graphique, formant une droite dont le coefficient directeur correspond Ă  notre constante de raideur, k. Il convient de noter que nous avons testĂ© plusieurs ressorts dans le processus, car nous recherchions une constante de raideur faible en raison de la faible force de portance de l'hydrofoil. En effet, si la valeur de k avait Ă©tĂ© trop Ă©levĂ©e, il aurait Ă©tĂ© plus difficile de mesurer l'Ă©tirement de maniĂšre prĂ©cise. 11 avril 2023: Fabrication du systĂšme de mesure de la portance externe (schĂ©ma) comprenant deux rails de guidage connectĂ©s par trois tiges filetĂ©es maintenues en place par six boulons et rondelles. Montage et vĂ©rification de la stabilitĂ© et de la robustesse du systĂšme. 13 avril 2023: Tentative de fabrication du systĂšme de maintien de l'hydrofoil (schĂ©ma). Cette partie est mobile et se dĂ©place le long des rails de guidage. Elle est composĂ©e de deux lamelles de plastique LPA de 3 mm dĂ©coupĂ©es au laser. Cependant, nous avons constatĂ© une erreur de mesure dans les patrons, ce qui nĂ©cessite des ajustements. 14 avril 2023: Rectification des mesures du systĂšme de maintien de l'hydrofoil. Les lamelles sont redĂ©coupĂ©es au laser selon les nouvelles dimensions prĂ©cises. 18 avril 2023: Assemblage final du systĂšme de maintien de l'hydrofoil et du systĂšme de mesure de la portance externe. VĂ©rification de leur fonctionnement conjoint et de leur compatibilitĂ©. 2 mai 2023: Premier test de portance dans la gouttiĂšre expĂ©rimentale. Cependant, nous rencontrons des difficultĂ©s avec le systĂšme de maintien de l'hydrofoil qui ne coulisse pas correctement sur les rails de guidage. Les frottements sont trop importants, ce qui nous empĂȘche de mesurer l'extension du ressort de maniĂšre prĂ©cise. 4 mai 2023: Modification et lubrification des rails de guidage pour rĂ©duire les frottements. Suite Ă  ces ajustements, le systĂšme de maintien de l'hydrofoil coulisse beaucoup plus facilement, permettant enfin de prendre des mesures prĂ©cises. 5 mai 2023: Prise de mesures avec quatre profils d'hydrofoil diffĂ©rents, de densitĂ©s diffĂ©rentes, Ă©tanches ou non, et en variant les paramĂštres de dĂ©bit et de hauteur dans la gouttiĂšre expĂ©rimentale. Collecte des donnĂ©es sur la portance obtenue pour chaque configuration. 11 mai 2023: Finalisation du rapport final du projet, incluant les rĂ©sultats expĂ©rimentaux, les conclusions et les recommandations. PrĂ©paration de la prĂ©sentation du projet, rĂ©sumant les principales Ă©tapes, les rĂ©sultats obtenus et les perspectives futures. PPE Master Management de innovation - Projet personnel encadrĂ© (M1) T-shirt anti-noyade ByeBum 24/11/22 -> Entrevue avec Mr MULLER pour prĂ©senter le projet ByeBum, nos objectifs nos attentes. Demande formulĂ©e pour que Mr MULLER intĂšgre le projet ByeBum en tant que tuteur rĂ©fĂ©rent. Son rĂŽle est d'accompagner l'Ă©quipe tout au long du projet, de rĂ©pondre aux Ă©ventuelles questions, de nous aider Ă  trouver des Ă©lĂ©ments de rĂ©ponses. 27/01/23 -> Tentative de dĂ©but de modĂ©lisation & dĂ©couverte de Thingivers.com. Rencontre avec une Ă©tudiante maitrisant le logiciel de modĂ©lisation 3D FreeCad. Nous a initiĂ© Ă  Thingivers pour se familiariser avec le monde de la 3D. 03/03/23 -> RDV prĂ©vu pour demande de l'aide Ă  la modĂ©lisation 3D. Rdv a dĂ©butĂ© avec une session de brainstorming principalement autour de notre pince ByeBum. Dessin de notre croquis Ă  taille rĂ©elle. -> TĂ©lĂ©chargement du logiciel de modĂ©lisation 2D Inkscape. ModĂ©lisation 2D de la pince. Cette modĂ©lisation 2D nous permettra par la suite de modĂ©liser en 3D et passer Ă  l'Ă©tape menuiserie. 10/03/23 -> Update par rapport au dernier RDV. Fruity Bag - Sachet alimentaire en cuir de fruit PrĂ©sentation du projet Nous nous sommes penchĂ©s sur la problĂ©matique du gaspillage alimentaire, et plus particuliĂšrement le gaspillage des fruits et lĂ©gumes car ce sont les aliments les plus gaspillĂ©s en France. En effet, ils reprĂ©sentent 42% du gaspillage alimentaire, soit environ 4,2 millions de tonnes/an. On va donc rĂ©cupĂ©rer les fruits et lĂ©gumes invendus dans les marchĂ©s et supermarchĂ©s. Avec ces fruits nous allons fabriquer du cuir de fruit, qui est une forme de cuir vĂ©gĂ©tal. Nous allons ainsi utiliser ce cuir de fruit pour fabriquer des sachets alimentaires, pour remplacer les sachets en plastiques et ainsi rĂ©duire l’utilisation de plastique. MatĂ©riel Étapes Journal de bord Galeries de photosUE LU3MTT560 - CrĂ©ation d'un Ă©vĂ©nementiel ➝ Porteuses du projet : âž± Cassandra d'ALMEIDA (cassandra.dalmeida.1@etu.sorbonne-universite.fr) âž± MaĂ©va DORMANT (maeva.dormant@etu.sorbonne-universite.fr) ➝ Contexte du projet : Dans le cadre d'une UE de la mineure "Communication et MĂ©diation scientifique", nous, Cassandra d'ALMEIDA et MaĂ©va DORMANT, devons crĂ©er un Ă©vĂ©nementiel. ➝ Description gĂ©nĂ©rale du projet : Souvent sollicitĂ©s par diffĂ©rents laboratoires Ă  l'approche de la FĂȘte de la Science, le Fablab souhaite aider ses utilisateurs Ă  exploiter tout son potentiel. Pour cela, nous nous efforcerons de rassembler et de documenter l'ensemble des projets passĂ©s, de les reproduire et de les amĂ©liorer. Nous montrerons comment ils auraient pu ĂȘtre poussĂ©s plus loin, tout en produisant un document et des Ă©lĂ©ments de communication. L'objectif final est d'organiser une journĂ©e « PrĂ©parer la FĂȘte de la Science au Fablab SU » Ă  destination des chercheurs, des Ă©tudiants, etc. ➝ Projets "FĂȘte de la science" retenus : âž± Tester des connaissances : Le Neuroquizz âž± Comprendre la vision d'un insecte : L'abeille âž± Les amis et ennemis du climat : Les volcans âž± Comprendre un fait scientifique simple : La synthĂšse soustractive âž± Initier Ă  l'astronomie : Les mĂ©tĂ©orites Tester des connaissances : Le Neuroquizz ➝ Porteurs originaux du projet :âž± LĂ©onie SOMMACAL (leonie.sommacal@sorbonne-universite.fr)âž± Agathe GARET (agathe.garet@sorbonne-universite.fr)➝ Contexte du projet :Dans le cadre de la FĂȘte de la science 2022, LĂ©onie SOMMACAL et Agathe GARET ont créé un jeu de questions-rĂ©ponses pour tester les connaissances du public en sciences. Lors de ce projet, le Fablab a Ă©tĂ© sollicitĂ© pour l'impression (en rĂ©sine) et la coloration (en dorĂ©e) de trophĂ©es en forme de cerveaux.➝ Notre contribution : Badge (pins) : Design en .svg DĂ©coupe et gravure sur du plexiglas (3 mm) DĂ©coupe et gravure sur du bois (3 mm) Buzzer : Impression 3D avec du PLA noir (1,75 mm) Impression 3D avec de la rĂ©sine GĂ©nĂ©ration de son et de lumiĂšre avec Arduino TrophĂ©e : Design en .stl Impression 3D avec de la rĂ©sine Les amis et ennemis du climat : Les volcans Comprendre un fait scientifique simple : La synthĂšse soustractive ➝ Porteurs originaux du projet :âž± *Berfin KARAKILIC (contact : berfin97@live.fr) , projet datant de novembre 2017 N.B : nous avons tentĂ© de la contacter (via mail et Linkedin) mais nous n'avons eu aucun retour.➝ Contexte du projet :Dans le cadre de la mineure Design, Berfin a dĂ©cidĂ© de mettre en place un jeu expliquant la synthĂšse soustractive sans passer par le jeu de lumiĂšre mais plutĂŽt par le mĂ©lange des couleurs. ➝ Pourquoi ce projet ? : Nous avons repris ce projet car nous le trouvions intĂ©ressant dans un contexte FĂȘte de la Science. En effet, il s'agit d'un jeu adaptĂ© aux jeunes de 6 Ă  15 ans pour les aider Ă  mieux comprendre cette loi physique de la synthĂšse soustractive. Elle a ainsi dĂ©cidĂ© de rĂ©aliser un hand spinner multicolore. ➝ Notre contribution : Pour l'instant, nous avons reproduis le hand spinner tel quel. Nous cherchons encore Ă  comment l'amĂ©liorer. Projet FĂȘte de la Science pour l'espace biologie-chimie du Fablab Lors d'un RDV avec Monsieur Hubert (le vendredi 17 fĂ©vrier 2023), nous nous sommes convenus qu'il serait intĂ©ressant de mettre en avant l'espace biologie-chimie du Fablab Ă  travers un projet FĂȘte de la Science. AprĂšs quelques temps de rĂ©flexion, nous avons donc pensĂ© Ă  mettre en place un projet autour de la bioluminescence. Titre du projet FDS : "Un monde de bioluminescence" (titre encore Ă  revoir) L’objectif serait de sensibiliser le grand public sur les organismes bioluminescents et leur importance dans notre environnement. De plus, on pourrait prĂ©senter diffĂ©rentes applications de la bioluminescence dans la vie quotidienne (ex : lampe Ă  bioluminescence) Etapes : Une exposition interactive sur les organismes bioluminescents avec des photos, des vidĂ©os et des spĂ©cimens (si possible) de diffĂ©rentes espĂšces . Cela permettrait aux visiteurs de dĂ©couvrir les mĂ©canismes autour de la bioluminescence, les espĂšces bioluminescentes et leur rĂ©partition  dans les diffĂ©rents habitats. On pourrait ensuite proposer des expĂ©riences pratiques pour dĂ©couvrir les diffĂ©rentes applications de la bioluminescence dans la vie quotidienne. Par exemple, le public pourrait tenter de fabriquer une lampe de poche bioluminescente ou sinon d’observer la bioluminescence des organismes au microscope. Et pour les enfants, cela aurait la forme d’ateliers pour les sensibiliser au travers des jeux Ă©ducatifs et des expĂ©riences. Pour ceux qui le souhaitent, il y aurait des confĂ©rences pour approfondir les connaissances sur la bioluminescence. Des enseignants chercheurs pourraient par exemple prĂ©senter leurs derniĂšres recherches sur ce domaine. Pour finir, il y aurait une projection de films/documentaires sur les organismes bioluminescents. Ainsi, le public pourra dĂ©couvrir la bioluminescence de maniĂšre ludique et interactive. Ils verront qu’il est possible d’appliquer la bioluminescence dans son quotidien et que ce n’est pas un sujet exclusif aux scientifiques.PrĂ©parer la FĂȘte de la Science au Fablab SU - Ce qu'il faut retenir... UE MU5BM617 Projet Velidar Nom du projet : VĂ©lidar CoordonnĂ©es : Younes Boujedli : younes.boujedli@gmail.com PrĂ©sentation du contexte : Inciter les cyclistes urbains Ă  utiliser le vĂ©lo comme moyen de transport quotidien, en mettant un frein au sentimentd'insĂ©curitĂ© en ville, grĂące Ă  un dispositif intĂ©grable Ă  un vĂ©lo Ă©lectrique pour permettre la dĂ©tection des vĂ©hicules dans l'angle mort des cyclistes. Description du produit : Le dispositif est composĂ© de deux modules, un module de dĂ©tection de vĂ©hicule et un module de visualisation du signal, les deux dispositifs sont reliĂ©s par un cĂąble. Module de dĂ©tection : Fixation sur la tige de selle, il a pour objectif de dĂ©tecter et Ă©valuer la vitesse des vĂ©hicules en mouvement sur une distance de 2 Ă  15 mĂštres avec un angle de dĂ©tection important (technologie Doppler). En plus, il dĂ©terminera la distance du vĂ©hicule en approche Ă  une distance de 0 Ă  8 mĂštres (Technologie Lidar). Module de visualisation : Fixation sur le guidon, ce module transmet Ă  l'utilisateur un signal lumineux (bar led 10 segment) et devra ĂȘtre visible en plein jour. Le module de visualisation est composĂ© de 10 led avec 4 couleurs diffĂ©rentes (bleu, verte, jaune, rouge), qui s'allume en fonction d'un score de danger calculĂ© par le module de dĂ©tection allant de 0 Ă  9. MatĂ©riaux / Outils / Machines : module visualisation : 1 : bar 10 led segment prix 0,91€ (satisfait du composant) 2: multiplexeur i2C (prix 0,92€) #pour optimiser l'utilisation des pin sur la board  ( voir utilitĂ© du composant ou alternative ?) Module dĂ©tection : 3: batterie lipo 3,7V 1800mAh prix 4,82€ #(certains composants nĂ©cessite une tension de 5V, batterie pas assez puissante ?) 4: batterie management (prix 4,54 €) # interrupteur intĂ©grĂ© et permet la gestion de la batterie (utile ?) 5: Micro-controleur Xiao SAMD21 avec port usb-C (4,89€ ) (alternative ?) 6: module d'amplification pour doppler  prix ( 0,35€) 7: Module doppler 24G prix ( 3,39€) # dĂ©tecte les vĂ©hicules et leurs vitesses Ă  une grande portĂ©e mais pas la distance 8: Lidar Luna 8m de portĂ©e prix (24,38€) # angle de dĂ©tection trĂšs restreint et trĂšs cher, alternative Vl53l1X ? portĂ©e 4m prix 16,87€ Technologie de DĂ©tection : Choix du capteur : Utilisation de capteurs LIDAR (trĂšs peu d'angle de dĂ©tection -> trĂšs linĂ©aire et peu de distance), mais trĂšs prĂ©cis et radar Ă  ondes millimĂ©triques Doppler pour un angle plus grand mais pas de mesure de distance. DĂ©tection d'objet en mouvement uniquement (vĂ©lo, voiture, scooter) minimum 10km/h DĂ©tection d'objet en mouvement minimum 45° principalement vĂ©hicule arrivant derriĂšre le cycliste mais Ă©galement sur la gauche (dĂ©tection sur le cotĂ© droit non nĂ©cessaire) Voir pour l'intĂ©gration de capteurs additionnels (optionnel) pour amĂ©liorer la dĂ©tection. Montage et installation : SystĂšme de montage facile et sĂ©curisĂ©, compatible avec diffĂ©rents modĂšles de vĂ©los. Coque rĂ©sistance Ă  l'eau (pluie), poussiĂšres et aux chocs. (Ă  dĂ©finir) ConformitĂ© et SĂ©curitĂ© : ConformitĂ© aux normes de sĂ©curitĂ© routiĂšre et aux rĂ©glementations Ă©lectroniques. Tests de sĂ©curitĂ© et de durabilitĂ©. Dimensions et Poids : Conception compacte et lĂ©gĂšre pour minimiser l'impact sur la maniabilitĂ© du vĂ©lo. Budget et CoĂ»t Estimation du coĂ»t de la matiĂšre premiĂšre prototype 30 euros Mise en application : Annexe : Tableau scoring pour allumage Led 0 = led bleu // entre 1 et 4 = led verte // entre 5 et 7 = led Jaune // score supĂ©rieur Ă  8 = led rouge Score calculĂ© par le module de dĂ©tection situation Couleur Led 0 aucun vĂ©hicule dĂ©tectĂ© Ă  moins de 15 mĂštres Bleu entre 1 et 4 VĂ©hicule dĂ©tectĂ© par le doppler uniquement Ă  une vitesse d'approche infĂ©rieur Ă  15km/h de diffĂ©rence par rapport au cycliste ( VĂ©hicule entre 15 et 8 mĂštre) Vert entre 5 et 7 VĂ©hicule dĂ©tectĂ© uniquement par le doppler Ă  une vitesse supĂ©rieur Ă  15km/h de diffĂ©rence par rapport au cycliste OU vĂ©hicule dĂ©tectĂ© par le Doppler Ă  une vitesse d'approche infĂ©rieur Ă  15km/h et par le Lidar Ă  une distance entre 8 et 4 mĂštres Jaune supĂ©rieur Ă  8 VĂ©hicule dĂ©tectĂ© par le Doppler uniquement Ă  une vitesse d'approche supĂ©rieur Ă  30km/h (vĂ©hicule entre 15 et 8 mĂštres) OU vĂ©hicule dĂ©tectĂ© par le Doppler Ă  une vitesse d'approche supĂ©rieur Ă  15km/h et par le Lidar Ă  une distance entre 8 et 4 mĂštres OU VĂ©hicule dĂ©tectĂ© par le Doppler Ă  une vitesse d'approche infĂ©rieur Ă  15km/h et par le Lidar Ă  une distance entre 4 et 0 mĂštres Rouge formule scoring : Score(vitesse du vĂ©hicule_Doppler) + Score(Distance du vĂ©hicule_Lidar) = ScoreTotal_Led Score(vitesse du vĂ©hicule_Doppler) = 0km/h = 0point ; entre 1 et 5km/h = 1point; entre 5 et 10 km/h = 3 point; entre 10 et 15 km/h = 4 point ; entre 15 et 20km/h = 5 point; entre 20 et 30km/h = 6point ; entre 30 et 35km/h = 7 point; supĂ©rieur Ă  35km/h 8 point. Score(Distance du vĂ©hicule_Lidar) = entre 8 et 6 mĂštre : 2 point // entre 4 et 2 mĂštres = 6 point // entre 2 et 0 mĂštres = 10 point UE LUS2V321- Physique des grandes fonctions des organismes vivants 2022-2023 Sensation de chaud et de froid Informations NGUYEN Sylvie, Wu Alias Ren Christine, Ferreira Taylor Nlchi9175@gmail.com, Wualiasren@gmail.com, taylorferreira00@gmail.com L2 Sciences de la vie 6 dĂ©cembre 2022  : 15h-17h Contexte RĂ©alisation d'un projet dans l'UE LU2SV321. PROJET : Sensation de chaud et de froid Objectifs Mesurer la tempĂ©rature d'une plaque en bois et d'une plaque en cuivre. mesurer le temps de font de la glace sur les deux plaques, en mettant en avant la conductivitĂ©. MatĂ©riel plaque de bois plaque de cuivre balance rĂ©cipient glace camĂ©ra thermique Étape 1 Mesure de la tempĂ©rature des deux plaques, de l'air ambiante et de la glace Ă  l'aide de la camĂ©ra thermique Étape 2 DĂ©pot de la glace sur les deux plaques. Étape 3 Conclusion des rĂ©sultats sur la conductivitĂ© des plaques Robot a retour KinĂ©sthĂ©sique Description du Projet Contexte : Le Cybathlon-VIS est une compĂ©tition scientifique et technologique, au cours de laquelle des personnes en situation de handicap participeront Ă  des Ă©preuves, le tout accompagnĂ© par une Ă©quipe de scientifiques, dĂ©montrant ainsi l'apport des technologies pour les personnes en situation de handicap. La prochaine Ă©dition de la compĂ©tition aura lieu en 2024. Notre projet consiste Ă  dĂ©velopper une technologie permettant de rĂ©pondre aux objectifs du concours. Ce projet est en cours, et sera terminĂ© vers le mois de juin 2023. A cette date, nous avons dĂ©jĂ  le design de notre robot, et nous essayons de le contrĂŽler Ă  l'aide de moteurs, et d'une camĂ©ra Kinnect, ainsi que de divers capteurs. Il s'agit d'un projet d'un an. Nous sommes une Ă©quipe de 4 Ă©tudiants. Ce projet est en collaboration avec le laboratoire français ISIR (Institut des SystĂšmes Intelligents et robotique). https://www.isir.upmc.fr/ L'algorithme derriĂšre le contrĂŽle de notre robot est basĂ© sur le SLAM. Toutes nos implĂ©mentations seront faites en utilisant ROS. Conception et modĂ©lisation EI2I5 S09 Projet kit'roule CrĂ©ation d'un kit de motorisation pour fauteuil roulantModubord MU5EU001 Projet Master 2 GĂ©physique-GĂ©otechnique Projet maquette capteur MEMS UE MU5RBI10 - M2 SPI - Projets de Fin d'Etudes Groupe 3 - VĂ©hicule autonome RĂ©alisation d'un vĂ©hicule autonome au format 1/10Ăšme en vue d'une participation Ă  une course organisĂ©e par l'ENS. Informations Tom DA SILVA-FARIA tom.da_silva-faria@etu.sorbonne-universite.fr M2 ISI 03/01/2023 - Fin juin 2023 (date de la course : 15 Avril 2023) Contexte Le but de ce projet est de rĂ©aliser un robot autonome compĂ©titif Ă  partir d'un chĂąssis de voiture tĂ©lĂ©commandĂ©e au format 1/10Ăšme. Ce robot sera engagĂ© dans une compĂ©tition de vĂ©hicules autonomes organisĂ©e par une Ă©quipe enseignante de l'ENS Paris Saclay. Ce concours aura lieu le15 Avril 2023 et rĂ©unira plusieurs Ă©quipes d'Ă©tudiants issus de diffĂ©rentes formations (Ă©coles d'ingĂ©nieurs, facultĂ©s
). Notre Ă©quipe de projet est constituĂ©e de 4 Ă©tudiants du M2 SAR (Justin BRUGIERE, Alexandre BOTTRAUD, Omar EL OUAFI et Montacir DRISSI) et 2 Ă©tudiants du M2 ISI (Yuwang CHEN et Tom DA SILVA-FARIA). Ce projet est encadrĂ© par Mr. Sylvain ARGENTIERI. Objectifs L'intĂ©gralitĂ© du vĂ©hicule doit ĂȘtre rĂ©alisĂ©e. Nous disposons d'un chĂąssis TAMYIA TT02 sur lequel nous devrons disposer diffĂ©rents composants Ă©lectroniques (Raspberry Pi, Arduino, capteurs
) qui permettront au robot de calculer sa trajectoire de maniĂšre efficace et autonome. La course se dĂ©roulera sur une piste inconnue Ă  l'avance, qui pourrait ressembler Ă  celle-ci : MatĂ©riel Nous disposons actuellement du matĂ©riel suivant : 1 chĂąssis TAMYIA TT-02 Ă©quipĂ© d'un servomoteur (direction des roues) et d'un moteur DC 10A (4 roues motrices) 1 LIDAR (RpLidar A2) pour disposer d'une vue Ă  360° des obstacles et des parois de la piste autour du robot Plusieurs capteurs de distance TOF (VL53L1X) (pour dĂ©tecter en urgence d'Ă©ventuels obstacles) 1 Camera avec zoom et autofocus (IMX477 12Mpx B0272) 1 Raspberry Pi 3B+ qui servira d'ordinateur de bord (traitement des donnĂ©es des capteurs et des images + calcul de trajectoire) 1 MicrocontrĂŽleur type Arduino NANO qui convertira les commandes de vitesse/direction des roues en signaux PWM pour le contrĂŽle des actionneurs (moteur et servomoteur) Nous disposons enfin d'un jeu de composants Ă©lectroniques (transistors de puissance, relais, fusibles
) qui nous permettront de rĂ©aliser une carte de conversion des signaux PWM en signaux continus suffisamment puissants pour commander le moteur DC. Machines utilisĂ©es Nous faisons appel au FabLab pour la dĂ©coupe de piĂšces en contre-plaquĂ© pour la rĂ©alisation du support des composants et de la carrosserie du vĂ©hicule. Nous aimerions pour ce faire utiliser une des dĂ©coupeuses Laser disponibles au FabLab (Trotec Speedy 100 ou 360). Journal de bord 05/01/2022 A l'heure de l'Ă©criture de cette page, la carrosserie et le support des composants ont Ă©tĂ© dessinĂ©s sous SolidWorks. Nous avons Ă©galement mis en place sous WeBots un simulateur qui nous permettra de prototyper nos algorithmes avant de les tester sur le robot rĂ©el.MU4CIOIP Tournois Français de Chimiste edition 2023(fil rouge OIP M1 ) Pour plus d'info sur le tournois https://www.tfchim.fr/ Sujet Ă©tudiĂ©: Sujet 4: Persistance de la chimie La mesure du temps est globalement restĂ©e, depuis que sa nĂ©cessitĂ© s’est imposĂ©e au cours de l’évolution humaine, une affaire de physiciens. Que ce soient l’observation directe des astres, les cadrans solaires, sabliers et clepsydres, puis les pendules mĂ©caniques, mĂ©canismes Ă  quartz puis horloges atomiques, le rĂŽle des chimistes s’est principalement limitĂ© Ă  la fourniture des matĂ©riaux supports Ă  la rĂ©alisation de ces diffĂ©rents types d’horloges. ​ ‱ Pourtant, serait-il possible de mettre au point un systĂšme chimique permettant une mesure temporelle, et reposant sur le dĂ©roulement d’une rĂ©action ? Ce systĂšme, pour ĂȘtre compĂ©titif,devrait pouvoir ĂȘtre simple d’utilisation, rĂ©utilisable, et se montrer dĂ©clinable pour remplir diverses fonctions : minuteur, alarme, chronomĂštre, ou simple horloge, par exemple. 3 idĂ©es ont Ă©tĂ© envisagĂ© La manip faite majoritairement au fablab est celle ci: L'idĂ©e derriĂšre est amĂ©liorer ce systĂšme pour faire une horloge fiable en utilisant ce phĂ©nomĂšne de phosphorescence. Pour ce faire il faut reproduire ce systĂšme dans plusieurs compartiment sombre, pour des raisons pratiques 4 systĂšmes. janvier 2023 La boite je l'ai faite avec un site en ligne, mais j'ai mal mesurĂ© la taille des trous... tant mieux j'ai rĂ©imprimĂ© des support pour les petite pastille phosphorescente (en bleu). La led UV de 10W(12v) pour l'autre expĂ©rience nĂ©cessitait un radiateur de dissipation thermique.  l'autre led de 3w fonctionne en 2,9v 70mA sans surchauffe, donc sans radiateur. un petit aperçus de comment ça pourrait fonctionner Ă  l'avenir https://youtube.com/shorts/g_E8NuoqtWY?feature=share UE LU1LVAN2 Atome en carton Informations Pola SZOPKA, AngĂšle EDMOND, Paul CAMUS pola.szopka@etu.sorbonne-universite.fr , angele.edmond@etu.sorbonne-universite.fr , paul.camus@etu.sorbonne-universite.fr CMI Physique — Anglais 04/04/2023 —> 06/04/2023 Contexte Dans le cadre de notre UE d’anglais nous devons crĂ©er une affiche pour prĂ©senter le thĂšme de « why should you study physics ? ». Objectifs Nous voulons dĂ©couper par laser un morceau de carton en forme de 3 eclipses qui reprĂ©sentent les orbitales d’un atome et 6 ronds reprĂ©sentants les Ă©lectrons. Les orbitales seront de 60*10 tandis que les Ă©lectrons seront de 5cm de rayon. Par ailleurs, nous souhaitons aussi faire un systĂšme grĂące auquel nous pouvons faire des Ă©lectrons une image derriĂšre laquelle se trouve un texte donc pouvoir enlever une premiere couche de l’électron et y dĂ©couvrir une description de l’image. MatĂ©riel 3 planches de cartons de minimum 60*15cm 2 planche de carton 35*35cm cutter Machines utilisĂ©es Trotec Speedy 360 Construction Voici le lien vers le fichier SVG du dessin de la dĂ©coupe. anglais_cmi.svg Étape 1 Dans un premier temps, nous devons dessiner les Ă©clipses et les cercles sur Inkscape en rentrant la taille souhaitĂ©e. Étape 2 Ensuite, il faut programmer la machine en fonction du carton que l’on utilise, en l’occurrence du carton standard d’expĂ©dition. L’épaisseur de celui Ă©tant de 3,80mm, une Ă©paisseur non rĂ©pertoriĂ©e sur le logiciel de la dĂ©coupeuse. Il faut que nous modifions la puissance du laser en fonction d’un matĂ©riau ressemblant Ă  notre carton, du carton 0,8cm Ă©tant dĂ©jĂ  rĂ©pertoriĂ©e, il nous suffit de rĂ©duire sa puissance pour configurer la machine selon nos besoins. Pour commencer, on va dans la base de donnĂ©e des matĂ©riau on sĂ©lectionne le carton 0,8cm ensuite il faut sauvegarder comme nouveau programme puis une page s’affiche dans laquelle on peut modifier la puissance et la vitesse du laser. On augmente la puissantĂ© Ă  42% et on diminue la vitesse Ă  1,2%. Le test effectuĂ© avec des figures au hasard Ă©tant concluant, nous pouvons dĂ©sormais appliquer ce programme aux dĂ©coupes souhaitĂ©es. Le nouveau programme de dĂ©coupe s’appelle CardBoard 3mm. Étape 3 La dĂ©coupe Ă©tant finie, il ne nous reste plus qu’à assembler le tout en coupant les parties qui se chevauchent et y introduisant les Ă©lectrons. EPU-M7-8-DPR DĂ©coupe laser plaques rĂ©sine Informations Cyprien Desbordes, Gustavo Lins et Louella Pinel mtx.polytech@gmail.com MTX4 - Polytech Sorbonne 14/04/23 - 22/05/23 Contexte Dans le cadre de notre formation Ă©lĂšve ingĂ©nieur Ă  Polytech Sorbonne en quatriĂšme annĂ©e de MTX, nous avons l'opportunitĂ© de rĂ©aliser un projet en relation avec un industriel. L'objectif de ce projet est de rĂ©aliser une monture de lunettes en composite organique avec une matrice polymĂšre et une charge. La charge utilisĂ©e est issue de l'usinage des palets de verre organique qui servent Ă  faire les verres de lunettes. Objectifs La raison de notre venue au FabLab est d'utiliser la dĂ©coupeuse laser afin de dĂ©tailler nos Ă©chantillons de traction et de flexion pour pouvoir caractĂ©riser les propriĂ©tĂ©s mĂ©caniques de nos composites. Nous envisageons Ă©galement de dĂ©couper une monture de lunettes pour la fin du projet pour pouvoir la prĂ©senter lors de notre soutenance. MatĂ©riel plaques composite Ă  base de rĂ©sine GreenPoxy56 et de copeaux de CR39. Ces plaques ont Ă©tĂ© rĂ©alisĂ©es dans le laboratoire de M. Ferrier (tuteur acadĂ©mique du projet) Machines utilisĂ©es Trotec Speedy 360 Construction (Fichiers, photos, code, explications, paramĂštres d'usinage, photos, captures d'Ă©cran...) Étape 1 RĂ©alisation des plaques aux dimensions souhaitĂ©es selon les dimensions des Ă©prouvettes Étape 2 RĂ©alisation du fichier .svg pour la dĂ©coupeuse laser Étape 3 DĂ©coupage des plaques Étape 4 CaractĂ©risation des propriĂ©tĂ©s mĂ©caniques Journal de bord 14/04/2023 DĂ©coupe des premiĂšres plaques test 18/04/2023 DĂ©coupe des secondes plaques test 21/04/2023 DĂ©coupe des premiĂšres plaques pour les tests mĂ©caniquesEPU-R7-8-DPR RĂ©alisation d'une boĂźte en bois Informations Alexandre VIEU et TancrĂšde SOURICE tancrede.sourice@gmail.com ROB4 17/03/2023 Contexte Nous cherchons Ă  modĂ©liser un objet de forme parallĂ©lĂ©pipĂ©diquedont les dimensions sont : 500x400x300 et de masse=23kg Objectifs RĂ©aliser une boĂźte en bois capable d'accueillir des 4 disques de 5kg et 1 disque de 1kg qui peut se dĂ©placer le long d'un axe. MatĂ©riel 4 planche de CP peuplier 6mm (dimensions 300*600mm) tasseaux de bois colle Ă  bois vis Machines utilisĂ©es Trotec Speedy 360 Construction Étape 1 RĂ©alisation des plans sur solidworks : cote_court.DXF ; cote_long.DXF ; dessous.DXF Étape 2 DĂ©coupe laser des planches de CP peuplier 6mm Étape 3 Assemblage (Ă  faire) LU3S01 Batteur Ă  houle Informations HAMMJE Nicolas me@nicolashammje.com Laboratoire Jean le Rond d'Alembert 10/15/22 - 06/01/23 Contexte Dans le cadre de la L3 Mono-intensive mĂ©canique, les Ă©tudiants doivent rĂ©aliser un stage dans un laboratoire de leur choix. Ici, le stage fut rĂ©alisĂ© au laboratoire Jean le Rond d'Alembert, et consistait en la rĂ©alisation d'un batteur Ă  houle pour le bassin Ă  vagues du laboratoire. Le laboratoire disposait dĂ©jĂ  d'un batteur Ă  houle, mais souhaitait une solution plus modulable, avec un contrĂŽle par ordinateur. Objectifs L'objectif primaire Ă©tait de revoir la base du batteur Ă  houle original pour permettre d'y intĂ©grer des servomoteurs Dynamixel, puis d'intĂ©grer le tout dans un beau boitier et finalement Ă©crire un code rudimentaire mettant en avant les diffĂ©rentes capacitĂ©s du nouveau batteur. MatĂ©riel 1 batteur Ă  houle PLA ASA 2 Dynamixel XL-330 1 U2D2 + U2D2 Power Hub 4 roulements  MR105 Construction Plus d'infos sur nicolashammje.com, projet 'WaveMaker'LU3MEP10 Machine Filament Informations Emile Assine emile.assine@etu.sorbonne-universite.fr Cursus: Innovation et dĂ©veloppement Industriel 06/06/2023 - 08/06/2023 Contexte Nous sommes un groupe de 5 Ă©tudiants et dans le cadre de notre formation Ă  la Sorbonne UniversitĂ©, nous avons comme projet de fin d'Ă©tude la rĂ©alisation d'un prototype d'une machine qui vise Ă  recycler les bouteilles en plastique pour en faire du filament pour imprimante 3D. Objectifs La machine se chargera de dĂ©couper automatiquement la bouteille en plastique. Puis le morceau dĂ©couper passera par un "corp de chauffe" qui va chauffer le plastique Ă  200°C pour le faire fondre. Ce plastique fondu sortira par une buse avec un petit diamĂštre qui le transformera  en filament. Celui-ci sera enroulĂ© de maniĂšre automatique sur un rouleau qui tourne grĂące Ă  un petit moteur et un systĂšme d'engrenage. Nous devrons donc imprimer en 3D au Fablab quelques unes des piĂšces qui vont composer ce cette machine. MatĂ©riel 1 rouleau de PLA Machines utilisĂ©es Imprimante 3D Journal de bord 06/06/2022 Lancement des piĂšces de notre prototype sur trois imprimantes 3DBras exosquelette UE 604 DiversitĂ© des organismes en milieux naturels DĂ©coupe laser plaques rĂ©sine Projet Ilicare Patches UV pour la peau Stage ISCD + Tilt Five+Unreal Engine Polytech ROB3-Projet Robotique UE pour les Ă©lĂšves de Polytech ROB3 - L. Carillet et G. Morel Le sujet du projet Projet de robotique ROB3 – S6 – 2024 1. Objectifs L’objectif de ce projet est de concevoir et rĂ©aliser un systĂšme robotique, c’est-Ă -dire sa partie mĂ©canique, sa motorisation, sa commande et son interface de pilotage. Le cahier des charges fourni prĂ©cise les fonctions que doit rĂ©aliser le systĂšme et les contraintes qu’il doit respecter. Pour les Ă©tudiants, l’objectif est au moins autant d’apprendre par la pratique les bases de la gestion d’un projet (c’est-Ă -dire la façon de s’organiser en Ă©quipe pour atteindre un objectif donnĂ© avec des moyens donnĂ©s) que d’aboutir Ă  un prototype fonctionnel. 2. Cahier des charges Le but gĂ©nĂ©ral est de faire un robot capable de dessiner avec un crayon sur un support plan horizontal. 2.1 Fonctions Ă  rĂ©aliser Le robot doit ĂȘtre fixĂ© ou posĂ© sur une plaque horizontale carrĂ©e de 250mm par 250mm. Il doit ĂȘtre capable de rĂ©aliser deux exercices : 1) Tracer, avec l’aide d’un crayon fixĂ© sur l’organe terminal du robot, dans le plan de la plaque support diffĂ©rentes figures imposĂ©es de difficultĂ© croissante : a. Une ligne de 5cm de long, b. Une ligne pointillĂ©e de 5cm de long, c. Un cercle de 2.5cm de rayon, d. Un cercle pointillĂ© de 2.5cm de rayon. Le tracĂ© de chacune des figures doit ĂȘtre rĂ©alisĂ© en 10 secondes +/- 0.2 secondes. 2) Tracer, avec l’aide d’un crayon fixĂ© sur l’organe terminal du robot, dans le plan de la plaque support, un dessin imposĂ© dans un carrĂ© de 5cm par 5cm. Le dĂ©placement de l’organe terminal du robot devra ĂȘtre pilotĂ© par un joystick. Il est possible que la figure soit discontinue, et donc il faut prĂ©voir de pouvoir relever le crayon du support horizontal sur lequel on Ă©crit. Une fonction supplĂ©mentaire, optionnelle , peut ĂȘtre rĂ©alisĂ©e : ‱ Être capable de modifier la vitesse de dĂ©placement du robot via l’interface. 2.2 Fonctions contraintes Les contraintes imposĂ©es sont : ‱ Respect des rĂšgles d’utilisation du FABLAB de Sorbonne UniversitĂ© au sein duquel vous travaillerez, en particulier la charte des FabLab du MIT. Cela implique que vous travaillerez sur le WIKI du FABLAB pour documenter votre projet. Il y a une bonne documentation ici pour savoir comment utiliser le WIKI. ‱ Utilisation de composants (moteurs, contrĂŽleurs, boutons, Ă©lĂ©ments de guidage, alimentation stabilisĂ©e, boutons, etc.) parmi un ensemble imposĂ©. Une liste de composants utilisables est disponible au paragraphe 4.  ‱ Fabrication des piĂšces grĂące Ă  : o Machine Ă  dĂ©coupe LASER. o Imprimantes RAISE 3D PRO2. Ces machines du FABLAB de sont pas toutes accessibles tout le temps ni en mĂȘme temps. C’est une contrainte qu’il vous faut intĂ©grer dans la gestion de votre projet (par exemple, privilĂ©gier la dĂ©coupe LASER qui est trĂšs rapide, lorsque c’est possible).           Un objectif est de minimiser la quantitĂ© de matiĂšre utilisĂ©e pour rĂ©aliser le projet. ‱ Programmation en C utilisant la chaĂźne de dĂ©veloppement Arduino IDE. 3. Organisation Les Ă©tudiants sont organisĂ©s en groupe de 3 dans la mesure du possible. Chaque groupe bĂ©nĂ©ficie de 6 sĂ©ances encadrĂ©es tout au long du semestre. En dehors des sĂ©ances encadrĂ©es, il est possible d’accĂ©der au FABLAB en accĂšs libre les lundis, mardis, jeudis et vendredis de 14h Ă  18h30. Pour cela il faut s’adresser au FABLAB.  Le suivi des objectifs est un Ă©lĂ©ment essentiel de la gestion de projet. Il a pour but de situer l’avancement du projet. Pour ce premier projet rĂ©alisĂ© dans le cadre de votre cursus, des objectifs intermĂ©diaires sont fixĂ©s par l’équipe enseignante afin d’éviter des erreurs de planification liĂ©es Ă  l’inexpĂ©rience. Les objectifs sont ici exprimĂ©s en termes de livrables, qui sont les suivants : 1. Avant le dĂ©but de la deuxiĂšme sĂ©ance :  o Remise d’un dossier de conception prĂ©liminaire. Il s’agit d’un dossier qui prĂ©cise les choix gĂ©nĂ©raux faits pour la solution que vous allez mettre en Ɠuvre.  o Remise d’un diagramme de GANTT : il s’agit d’un schĂ©ma qui prĂ©cise qui-fait-quoi-quand. 2. Cinq jours aprĂšs la fin de la troisiĂšme sĂ©ance : remise d’un dossier de conception dĂ©taillĂ©e. Il s’agit d’un dossier qui prĂ©cise tous les choix technologiques faits. Ce dossier contient notamment la CAO, les schĂ©mas Ă©lectriques de connexion et les algorithmes de commande. Lorsqu’un dossier de conception dĂ©taillĂ© est bien fait, en principe, le reste du projet consiste Ă  rĂ©aliser le prototype en se rĂ©fĂ©rant Ă  ce dossier. 3. Au plus tard 2h avant la fin de la derniĂšre sĂ©ance : o DĂ©monstration finale de rĂ©alisation des deux exercices. Comme le timing est trĂšs serrĂ©, si des objectifs intermĂ©diaires ne sont pas atteints, l’équipe enseignante fournit Ă  l’équipe projet une solution type qui permet de poursuivre le projet selon le dĂ©roulement prĂ©vu. 4. Liste des composants et matĂ©riels disponibles ‱ Un crayon ‱ Interface de commande : o  Une carte arduino UNO avec cĂąble USB-B; o  Un joystick; o  Une platine de protoypage; o  Alimentation rĂ©gulĂ©e 5V ; o  CĂąbles, LEDs, boutons poussoirs, rĂ©sistances. ‱ Motorisation : o  Deux servomoteurs HS422 180°; o  Un servomoteur Emax ES08A 180°. ‱ MĂ©canique : o  MatiĂšre PLA pour impression 3D; o  Feuilles medium : 3mm et 6mm d'Ă©paisseur; o  Vis et Ă©crous : M2, M2.5, M3, M4. o  Roulements et axes de diamĂštre 4mm. Projet robotique 3-A Robot Ă©crivain Bastien Antonin Antonin Un modĂšle de documentation minimal pour tous les types de projets. Toutes les catĂ©gories ci-dessous doivent ĂȘtre renseignĂ©es, mĂȘme de façon succincte.IMPORTANT : Merci de sĂ©lectionner le / les tags adĂ©quats dans le menu de droite, et de ne pas crĂ©er de nouveau tag.Les fichiers sources doivent idĂ©alement ĂȘtre joints Ă  cette page grĂące Ă  l'icĂŽne trombone du menu de droite.Des hĂ©sitations sur comment bien documenter et utiliser l'interface ? Consultez le tutoriel "Comment documenter" Informations PrĂ©nom et nom Adresse mail Cursus / Laboratoire / Association Date de dĂ©but - Date de fin estimĂ©e (ou rĂ©elle) Contexte Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec et mauris non ipsum tincidunt euismod. Donec sed accumsan sem. Proin odio sem, vehicula a suscipit et, efficitur quis diam. Nam in enim a ex bibendum ultricies. Suspendisse in mauris sit amet felis cursus condimentum. Objectifs Nulla imperdiet mattis neque non vehicula. Aliquam aliquam ac lectus non euismod. Nulla facilisi. Fusce fermentum enim magna, vel consectetur sem malesuada eu. Integer ac iaculis magna, dictum posuere neque. Sed pretium dignissim arcu, vel maximus felis cursus in. Ajouter au moins une image de votre projet MatĂ©riel 1 planche de CP peuplier 3mm (dimensions 300*600mm) scotch de peintre colle Ă  bois cutter papier de verre grain moyen (80-100) Machines utilisĂ©es Trotec Speedy 100 Construction (Fichiers, photos, code, explications, paramĂštres d'usinage, photos, captures d'Ă©cran...) Étape 1 ---- Étape 2 ---- Étape 3 ---- Journal de bord AvancĂ©e du projet Ă  chaque Ă©tape, difficultĂ©s rencontrĂ©es, modifications et adaptations (facultatif pour les petits projets) 03/04/2022 Duis tincidunt mattis sollicitudin. Aenean posuere sapien a metus consectetur, ut blandit tellus finibus. Vivamus convallis tincidunt metus, ut fringilla eros gravida nec. Cras dignissim urna et vestibulum feugiat. Phasellus tempor, nunc quis lobortis volutpat, dolor arcu fermentum elit, in eleifend enim sem fringilla metus. 🚹 Donec quis libero vehicula, varius tortor quis, vehicula libero !!! Cras ultricies tempus ante gravida hendrerit. 11/04/2022 Phasellus in purus quis justo feugiat vestibulum quis eu lacus. 😎 Etiam maximus metus vel massa pharetra convallis. Curabitur vel nunc orci. Praesent dolor dui, laoreet non massa non, pellentesque vestibulum quam. Sed posuere, dui quis semper pulvinar, eros nibh commodo elit, nec auctor arcu est et purus. 18/04/2022 Maecenas interdum turpis sit amet rutrum elementum. Aenean eget accumsan ligula. Phasellus et scelerisque lectus. Cras vel venenatis nulla. Integer tristique non diam et molestie. Pellentesque condimentum enim arcu, in commodo nunc commodo vel. Integer vitae neque facilisis, mattis elit sit amet, gravida turpis. Maecenas lectus mauris, fringilla ut lectus eu, condimentum finibus tortor đŸ€©đŸ€©đŸ€©Impression 3D Ă©lectrochimique : RĂ©alisation d'un rĂ©seau d'Ă©lectrodes None