Modérateurs: Modération Forum DIY, Modération Forum Installations, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

Ascenseur Vidéoprojecteur Domotisé

Message » 23 Mar 2020 22:50

J'ai fabriqué un ascenseur de plafond pour vidéo-projecteur piloté par arduino.
Sur la vidéo, il n'est pas encore équipé de la domotique.

https://www.youtube.com/watch?v=PXi_6dyqi04



Matériels utilisé :

Partie électro-mécanique :

1 trappe de plafond 50x50 cm, 4 m de cornière alu a angle vif 8x8 cm, 1 moteur de volet roulant, 50 cm de tube octo 40, 2 poulies pour sangles de 15 mm de large pour tube octo 40, 1 palier roulement KFL002, 4 galets de tendeur de chaines, 10 m de sangle de 15 mm de large, 4 tendeurs de sangle, 4 coulisses à billes sortie total de 30 cm, 1 bouton POUSSOIR Mosaic 2 pour volet roulant.

Partie électronique :

1 ARDUINO NANO, 1 diode d'émission+1 résistance de 500 ohms, 1 relais double Arduino.

Album photos :

vidéo-projecteur



Code pour Arduino :

/* pins

GND breadboard <--> GND Arduino (en cas d'usage d'une breadboard)

D0, D1 connexion Serial
D2
D3 LED infrarouge (exemple TSAL 6200, (câblage pin 3 <-> R 200 Ohms <-> LED Anode || Led Cathode <-> GND)
D4 bouton poussoir haut (câblage pin 4 <-> bouton <-> GND)
D5 bouton poussoir bas (câblage pin 5 <-> bouton <-> GND)
D6
D7
D8
D9 IN1 = relais de montée
D10 IN2 = relais de descente
D11
D12
D13

A0
A1
A2
A3
A4
A5

*/

/* **************** la partie IR **************** */

#include <IRremote.h> // https://github.com/z3t0/Arduino-IRremote

// LED IR connectée sur la pin PWM 3
/* obtention du code on/off de la télécommande sony à obtenir avec IRrecvDumpV2
hypothèse ---> Decoded SONY: 542A (15 bits)
*/
const unsigned long codeProjecteurOFF = 0x542A; // (votre 21546)
const int longeurCodeSony = 15;

IRsend irsend;

/* **************** les relais et boutons **************** */

const byte pinRelaisMonter = 9; // IN1 = relais de montée
const byte pinRelaisDescendre = 10; // IN2 = relais de descente
const byte ACTIF = LOW;
const byte PASSIF = HIGH;
const unsigned long dureeCourseAscenseur = 10000UL;
const unsigned long dureeRefroidissement = 120000UL;

const byte pinBoutonHaut = 4; // bouton poussoir haut
const byte pinBoutonBas = 6; // bouton poussoir bas

/* **************** gestion de l'état **************** */

enum : uint8_t {PROJECTEUR_OFF, PROJECTEUR_ON} etat;

/* **************** fonctions **************** */
void relais(const byte etatMonter, const byte etatDescendre)
{
digitalWrite(pinRelaisMonter, etatMonter);
digitalWrite(pinRelaisDescendre, etatDescendre);
}

void appuiPower() // le protocole Sony dit qu'il faut envoyer la commande 3 fois
{
for (byte i = 0; i < 3; i++) {
irsend.sendSony(codeProjecteurOFF, longeurCodeSony);
delay(40);
}
}

void allumage()
{
relais(PASSIF, ACTIF); // active le relais descend et desactive le relais monte
delay(dureeCourseAscenseur); // attente de la descente
relais(PASSIF, PASSIF); // désactive les 2 relais
appuiPower();
etat = PROJECTEUR_ON;
}

void extinction()
{
appuiPower(); // désactive le retroprojecteur
delay(2000UL); // on attend deux secondes
appuiPower(); // confirmation désactivation du retroprojecteur
delay(dureeRefroidissement); // deux minutes de refroidissement
relais(ACTIF, PASSIF); // active le relais monte et desactive le relais descend
delay(dureeCourseAscenseur); // attente de la fermeture
relais(PASSIF, PASSIF); // désactive les 2 relais
etat = PROJECTEUR_OFF;
}


void setup()
{
pinMode(pinRelaisMonter, OUTPUT); //relais montée
pinMode(pinRelaisDescendre, OUTPUT); // relais descente
relais(PASSIF, PASSIF); //extinction des relais

etat = PROJECTEUR_OFF; // hypothèse, on a aucun moyen de savoir...

pinMode (pinBoutonHaut, INPUT_PULLUP); // activation du PULLUP interne
pinMode (pinBoutonBas, INPUT_PULLUP); // activation du PULLUP interne

}

void loop()
{
switch (etat) {
case PROJECTEUR_OFF:
if (digitalRead(pinBoutonBas) == ACTIF) {
allumage(); // appel bloquant ~10 secondes
}
break;

case PROJECTEUR_ON:
if (digitalRead(pinBoutonHaut) == ACTIF) {
extinction(); // extinction manuelle, appel bloquant plus de 2 minutes !
}
break;
}
}
brachol
 
Messages: 2
Inscription Forum: 23 Mar 2020 18:28
  • offline

Message » 12 Avr 2020 20:41

:bravo:
gil2b
Membre HCFR
Membre HCFR
 
Messages: 21384
Inscription Forum: 28 Déc 2003 19:52
Localisation: 77
  • online

Message » 07 Aoû 2020 12:33

brachol
 
Messages: 2
Inscription Forum: 23 Mar 2020 18:28
  • offline


Retourner vers Accessoires DIY divers