Groupe B3
Membre du groupe:
Clément BAILLY, Pierre BERNARDE, Leeloo BLEYNIE, Vitaly POPOFF
Séance 1
- Présentation globale de l'UE : M. Dupuis nous a montré les attendus de l'UE,, les projets à réaliser :
- 1 projet scientifique à réaliser en 10 séances, en se servant de la base de données du réseau FabLab et de son outillage disponible.
- Cours sur l'histoire des FabLab, de leur création à leur utilité aujourd'hui. Nous avons appris pourquoi ils étaient autant pratiques pour la communauté scientifique.
- Visite des locaux du FabLab : imprimantes 3D, machines de découpe, de gravure, fraiseuses, labo d'assemblage électronique.
----------------------------------------------------------------------------
Séance 2
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).
- Elle est très polyvalente, et en utilisant son logiciel associé, on peut télécharger les lignes de codes associées directement depuis une bibliothèque en ligne. Nous avons donc réalisé le montage pour un capteur d'humidité, avec le code suivant :
- Nous avons donc obtenu nos résultats sur la console de l'ordinateur.
----------------------------------------------------------------------------
Séance 3
:/
----------------------------------------------------------------------------
Séance 4
- 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
"name":"Arduino on ESP32",
"toolchainPrefix":"xtensa-esp32-elf",
"svdFile":"esp32.svd",
"request":"attach",
"postAttachCommands":[
"set remote hardware-watchpoint-limit 2",
"monitor reset halt",
"monitor gdb_sync",
"thb setup",
"c"
],
"overrideRestartCommands":[
"monitor reset halt",
"monitor gdb_sync",
"thb setup",
"c"
- 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 reussi.
- Puis nous avons essayé le module "Tetris" (permettant normalement de jouer au jeu sur la carte M5stack). Cela n'a pas marché.
- Nous avons ensuite pendant le temps qu'il nous restait utilisé le logiciel FreeCad et les imprimantes 3D pour modéliser un dé.
----------------------------------------------------------------------------
Séance 5
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 améliorer nos compétences en design 3D, on a aussi en parallèle décidé de créer un jeu "Puissance 4" grâce aux imprimantes 3D. En voici le croquis :
Pour finir, nous avons commencé à manipuler le code informatique relatif aux différents composants pour pouvoir tous les utiliser sur la carte M5stack, en voici une esquisse :
import math
import sys
import time
from grove.adc import ADC
class GroveLightSensor:
def __init__(self, channel):
self.channel = channel
self.adc = ADC()
@property
def light(self):
value = self.adc.read(self.channel)
return value
Grove = GroveLightSensor
def main():
if len(sys.argv) < 2:
print('Usage: {} adc_channel'.format(sys.argv[0]))
sys.exit(1)
sensor = GroveLightSensor(int(sys.argv[1]))
print('Detecting light...')
while True:
print('Light value: {0}'.format(sensor.light))
time.sleep(1)
if __name__ == '__main__':
main()
/*
* bme280_example.ino
* Example sketch for bme280
*
* Copyright (c) 2016 seeed technology inc.
* Website : www.seeedstudio.com
* Author : Lambor
* Create Time:
* Change Log :
*
* The MIT License (MIT)
*
* 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, sublicense, and/or sell
* copies of the Software, and 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.
*/
#include "Seeed_BME280.h"
#include <Wire.h>
BME280 bme280;
void setup()
{
Serial.begin(9600);
if(!bme280.init()){
Serial.println("Device error!");
}
}
void loop()
{
float pressure;
//get and print temperatures
Serial.print("Temp: ");
Serial.print(bme280.getTemperature());
Serial.println("C");//The unit for Celsius because original arduino don't support speical symbols
//get and print atmospheric pressure data
Serial.print("Pressure: ");
Serial.print(pressure = bme280.getPressure());
Serial.println("Pa");
//get and print altitude data
Serial.print("Altitude: ");
Serial.print(bme280.calcAltitude(pressure));
Serial.println("m");
//get and print humidity data
Serial.print("Humidity: ");
Serial.print(bme280.getHumidity());
Serial.println("%");
delay(5000);
}
#include <Arduino.h>
#include <Wire.h>
#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(5000);
----------------------------------------------------------------------------
Séance 6
:/ :/
----------------------------------------------------------------------------
Séance 7
code pression final :
#include <Dps310.h>
// 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 of the one above to use the default I2C address.
//if you are using the Pressure 3 click Board, you need 0x76
Dps310PressureSensor.begin(Wire);
Serial.println("Init complete!");
}
void loop()
{
float temperature;
float pressure;
uint8_t oversampling = 7;
int16_t ret;
Serial.println();
//lets the Dps310 perform a Single temperature measurement with the last (or standard) configuration
//The result will be written to the paramerter temperature
//ret = Dps310PressureSensor.measureTempOnce(temperature);
//the commented line below does exactly the same as the one above, but you can also config the precision
//oversampling can be a value from 0 to 7
//the Dps 310 will perform 2^oversampling internal temperature measurements and combine them to one result with higher precision
//measurements with higher precision take more time, consult datasheet for more information
//Pressure measurement behaves like temperature measurement
//ret = Dps310PressureSensor.measurePressureOnce(pressure);
ret = Dps310PressureSensor.measurePressureOnce(pressure, oversampling);
if (ret != 0)
{
//Something went wrong.
//Look at the library code for more information about return codes
Serial.print("FAIL! ret = ");
Serial.println(ret);
}
else
{
Serial.print("Pressure: ");
Serial.print(pressure);
Serial.println(" Pascal");
}
//Wait some time
delay(500);
}