|
|
(8 révisions intermédiaires par 2 utilisateurs non affichées) |
Ligne 50 : |
Ligne 50 : |
| | | |
| | | |
− | ==Etape 2 : Réalisation des scripts Arduino== | + | ==Etape 2 : Réalisation du code de l'expérimentation== |
| | | |
− | Le script Arduino est divisé en 2 fichiers (main.ino et tools.hpp)
| + | Le code source est disponible ici : https://github.com/hugoschaaf98/useless_candle |
| + | (<Clone or download> puis <Download ZIP>) |
| | | |
− | ====Main====
| + | N'oubliez pas de lire le fichier Readme.md qui vous indique où aller chercher les différentes bibliothèques requises. |
− | | |
− | <code>/* Gasthon project
| |
− | *
| |
− | * main.ino
| |
− | *
| |
− | * members of the project :
| |
− | * - YAGHI Anthony
| |
− | * - SCHAAF Hugo
| |
− | * - LANDURE Raphaël
| |
− | *
| |
− | * Author : SCHAAF Hugo
| |
− | *
| |
− | * IS3 - ENIB
| |
− | * 01/2019
| |
− | */
| |
− | | |
− | #include <OneWire.h>
| |
− | #include <DallasTemperature.h>
| |
− | #include <Servo.h>
| |
− | | |
− | #include "tools.hpp"
| |
− | | |
− | | |
− | #define ONE_WIRE_BUS 3 // one wire sensors bus pin number
| |
− | #define CANDLE_SENSOR 0 // index of the sensor (1st sensor so index 0)
| |
− | #define BURNING_TEMP 26. // temperature threshold in deg celcius
| |
− | | |
− | // temperature sensor
| |
− | OneWire oneWire{ONE_WIRE_BUS};
| |
− | DallasTemperature sensors{&oneWire};
| |
− | | |
− | // ventilation management
| |
− | tools::Ventilation ventilation{10, 11, 3000};
| |
− | | |
− | //---------------------------------------------------------------------------//
| |
− | void setup()
| |
− | {
| |
− | Serial.begin(9600);
| |
− | sensors.begin();
| |
− | ventilation.begin();
| |
− | }
| |
− | | |
− | //---------------------------------------------------------------------------//
| |
− | void loop()
| |
− | {
| |
− | // request temperature to the sensor
| |
− | sensors.requestTemperatures();
| |
− | | |
− | // get the temperature above the candle
| |
− | float candleTemp = sensors.getTempCByIndex(CANDLE_SENSOR);
| |
− | | |
− | if(candleTemp != -127. )
| |
− | {
| |
− | if(candleTemp >= BURNING_TEMP) ventilation.set();
| |
− | else ventilation.reset();
| |
− | tools::displayTemp(candleTemp);
| |
− | }
| |
− | | |
− | ventilation.run();
| |
− | }</code>
| |
− | | |
− | ====Tools.hpp====
| |
− | | |
− | <code>/* Gasthon project
| |
− | *
| |
− | * tools.hpp
| |
− | *
| |
− | * members of the project :
| |
− | * - YAGHI Anthony
| |
− | * - SCHAAF Hugo
| |
− | * - LANDURE Raphaël
| |
− | *
| |
− | * Author : SCHAAF Hugo
| |
− | *
| |
− | * IS3 - ENIB
| |
− | * 01/2019
| |
− | */
| |
− | | |
− | #ifndef TOOLS_HPP
| |
− | #define TOOLS_HPP
| |
− | | |
− | #include "Arduino.h"
| |
− | #include <Servo.h>
| |
− | | |
− | // default delay to enter in emergency mode
| |
− | #define DELAY 5000 // in ms
| |
− | | |
− | namespace tools
| |
− | {
| |
− | //---------------------------------------------------------------------------------------------//
| |
− | | |
− | struct Ventilation
| |
− | {
| |
− | // constructor
| |
− | Ventilation(uint8_t pin0, uint8_t pin1, uint32_t wait_t= DELAY):
| |
− | pin_balance{pin0}, pin_orient{pin1}, start_time{0}, wait_t{wait_t},
| |
− | emergency_count{false}, doRun{false}
| |
− | {
| |
− | };
| |
− | | |
− | // run it once to initialize the ventilation system
| |
− | void begin()
| |
− | {
| |
− | servo_balance.attach(pin_balance);
| |
− | servo_orient.attach(pin_orient);
| |
− | | |
− | servo_balance.write(0);
| |
− | servo_orient.write(0);
| |
− | };
| |
− | | |
− | uint8_t run()
| |
− | {
| |
− | // if no need to ventilate, exit
| |
− | if(!doRun) return 0;
| |
− | | |
− | Serial.println("doRun");
| |
− | | |
− | if(!emergency_count)
| |
− | {
| |
− | emergency_count = true;
| |
− | start_time = millis();
| |
− | }
| |
− | | |
− | if(millis() - start_time > wait_t)
| |
− | {
| |
− | Serial.println("emergency");
| |
− | servo_orient.write(90);
| |
− | }
| |
− | | |
− | servo_balance.write(20);
| |
− | delay(250);
| |
− | servo_balance.write(0);
| |
− | delay(250);
| |
− | | |
− | return 1;
| |
− | };
| |
− | | |
− | void set()
| |
− | {
| |
− | if(!doRun)
| |
− | {
| |
− | Serial.println("set");
| |
− | doRun = true;
| |
− | }
| |
− | };
| |
− | | |
− | // reset to initial position
| |
− | void reset()
| |
− | {
| |
− |
| |
− | if(doRun)
| |
− | {
| |
− | Serial.println("reset");
| |
− | servo_balance.write(0);
| |
− | servo_orient.write(0);
| |
− | emergency_count = false;
| |
− | doRun = false;
| |
− | }
| |
− | };
| |
− | | |
− | // motorisation members
| |
− | Servo servo_balance, servo_orient;
| |
− | uint8_t pin_balance, pin_orient;
| |
− | // timer members
| |
− | int32_t start_time;
| |
− | uint32_t wait_t;
| |
− | // flags
| |
− | bool emergency_count, doRun;
| |
− | };
| |
− | | |
− | //---------------------------------------------------------------------------------------------//
| |
− | | |
− | inline
| |
− | void displayTemp(float temp)
| |
− | {
| |
− | static float prev_temp = temp+1.;
| |
− | if(temp > prev_temp + 0.3 || temp < prev_temp - 0.3)
| |
− | {
| |
− | prev_temp = temp;
| |
− | Serial.println("candle temperature : "+String(temp)+" °C");
| |
− | }
| |
− | };
| |
− | | |
− | }// namespace tools
| |
− | | |
− | #endif</code>
| |
− | | |
− | ***Pour télécharger les fichiers :) Attention à changer les extensions des fichiers main.docx à main.ino et tools.docx à tools.hpp :)
| |
− | [[Fichier:main.docx]] ~ [[Fichier:tools.docx]]
| |
| | | |
| ==Etape 3 : Création de la boite== | | ==Etape 3 : Création de la boite== |
Ligne 258 : |
Ligne 70 : |
| ==Etape 4 : Assemblage== | | ==Etape 4 : Assemblage== |
| C'est le fait d'assembler toute les pièces du projet et les arranger de façon propre | | C'est le fait d'assembler toute les pièces du projet et les arranger de façon propre |
− | [[Fichier:useless_candle.CATPart]] | + | [[Fichier:useless_candle.png |300px|]] |
| + | *** Fichier CATIA à télécharger [[Fichier:useless_candle1.zip]] |
| + | <br /><br /><br /> |
| + | [[Fichier:projet111.jpg |400px|]] |
| + | [[Fichier:projet222.jpg |400px|]] |
| + | <br /><br /><br /> |
| | | |
| | | |
Ligne 264 : |
Ligne 81 : |
| [[catégorie:enib2019]] | | [[catégorie:enib2019]] |
| [[catégorie:Enib]] | | [[catégorie:Enib]] |
− |
| |
− | [[Utilisateur:Anthony|Anthony]] ([[Discussion utilisateur:Anthony|discussion]])
| |
Réalisé par le FEU AU Q
Description du projet
Ce projet permet d'aborder plusieurs notions :
- Utilisation d'un arduino
- Programmation arduino
- Gestion d'un servomoteur
- Gestion des capteurs
- Design de la boite (CATIA)
Équipe du projet
*YAGHI Anthony
*SCHAAF Hugo
*LANDURE Raphael
Liste du Materiel
Materiel de base
- Arduino UNO
- thermomètre 1wire DS18B20
- Breadboard
- LED RGB
- Câbles
- Boite : bois découpé avec découpeuse laser
- 2 Servomoteurs
- Elastiques
- 1 Cuillère plastique mcdo mcflurry :)
- Bougie
- Pistolet à colle
Tutoriel
Etape 1 : mise en place de l'Arduino UNO
D'abord il faut télécharger le logiciel Arduino IDE (voir le lien) là, l'installer et le lançer.
Ensuite choisir le type d'Arduino qu'on utilise de la boite Tools-->Board. Et puis il faut taper le code nécessaire au fonctionnement du projet
Etape 2 : Réalisation du code de l'expérimentation
Le code source est disponible ici : https://github.com/hugoschaaf98/useless_candle
(<Clone or download> puis <Download ZIP>)
N'oubliez pas de lire le fichier Readme.md qui vous indique où aller chercher les différentes bibliothèques requises.
Etape 3 : Création de la boite
Le bois est découpé sur la découpeuse laser
rectangle 300*168
70*30
30*50
3 rectangles 15*10
3 carrés 40*40
Etape 4 : Assemblage
C'est le fait d'assembler toute les pièces du projet et les arranger de façon propre