Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Projet Arduino] Commander l'éclairage d'une pièce

Bureau + Atelier + Mini-salon

2 août 2012 à 6:37:24

Bonjour tout le monde,
Ça faisait un bon moment que j'y pensais mais n'ayant pas mon matériel avant fin aout, j'ai trainé! Voilà donc un topic pour présenter mon projet actuel, même s'il n'est qu'à l'état de CdC pour l'instant.

J'utiliserais donc ce topic pour les diverses questions qui me viendront quand j'aurais mis le nez dans le programme et pour choisir les composants. En attendant n'hésitez pas à me donner vos avis sur ce début de projet, les simplifications à y apporter, ou quoi que ce soit!

Système d'éclairage bureau/atelier/mini-salon



Présentation


Mon but "final" sur Arduino étant la domotique, je me suis décidé à commencer par un système d'éclairage plus ou moins automatique, pour un hypothétique bureau/salon/atelier futur.
Le système devra être simple et permettre, par le biais d’une télécommande de gérer différents modes d’éclairage dans une pièce séparée en bureau et mini-salon, avec des éclairages programmés en fonction de l’utilisation et de l’heure de la journée.

Schéma de la pièce



Image utilisateur
Commentaires : A,B,C est un bureau; Le cadre rouge est un canapé.


Cahier des Charges


Définition des Zones :
Zone A :
- lampe blanche pour le clavier uniquement (A.1)

Zone B :
- Lampe de bureau type "allongée" (B.1)

Zone C :
- Lampe pour un faisceau dirigé sur une surface restreinte (C.1)

Zone D :
- Lampe d'appoint pour éclairage cinéma (D.1)


Eclairage :
1 bouton par zone de la chambre, soit 5 boutons (A, B, C, D, G)
On appuie une fois pour allumer, on ré-appuie pour éteindre
1 bouton OFF qui éteint toutes les lumières

Utilisation de la voie série + console
en écriture : si on entre A,B,C,D ou G, on inverse l'état de cette lampe
en lecture : A chaque fois qu'on change l'état d'une lampe (physiquement ou par le biais de la console) On affiche l'état de chaque lampe dans la console

Télécommande Filaire :
- 1 bouton par zone (A, B, C, D, G)
- 1 bouton OFF


Liste des composants (Phase prototype!!)



6 BP (A, B, C, D, G, OFF)
6 condensateurs 10nF
5 LEDs
5 résistance 330 Ohm
Arduino Uno

Soit 6 entrées (6BP) et 5 sorties (5 lampes)

Programme (Non testé!!!)


(Vu que je les modifie régulièrement je les mets sous Pastebin pour l'instant)
Le main
Lampe.cpp
Lampe.h

Le prototype correspondant:


Image utilisateur
A2 étant actuellement supprimée, les autres LEDs sont décalées d'un cran

Prochaines améliorations


- Inclure le programme Adalight dans mon programme / Ou commande d'un autre Arduino pour Adalight par le biais d'un relais
- Faire une interface à l'aide de Qt au lieu d'utiliser la console Arduino

Évolutions possibles:


- Télécommande sans fil (IR? Bluetooth? Radio?...)
- Ajout de périphériques (volet roulant,…)
- Extinction automatique si personne dans la pièce
- Remplacement de G par plusieurs « spots » dirigés, allumés alternativement
- Taper dans les mains allume G quand tout est éteint (permet de retrouver la télécommande ^^)
- Mettre en place un va-et-vient pour G ou détecteur d'entrée dans la pièce
- Un double appuie (ou un appui long) sur un bouton de zone éteint les autres zone
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
2 août 2012 à 12:33:09

Beau projet domotique.

mais ou vas tu mettre tes relais ?
  • Partager sur Facebook
  • Partager sur Twitter
2 août 2012 à 16:50:02

(Si je comprends bien ta question)
Je vois 2/3 possibilités :
- acheter 5 "powerswitch tail" déjà monté : cf. Adafruit
Solution la plus facile mais très cher!
- Découper les cables de mes lampes pour les insérer dans une carte de relai : 1 carte 8 relais ou Plusieurs de 2 relais
- faire mes propres "powerswitch tail" en bricolant des jolies boites avec prises, etc...

Dans l'ensemble j'aurais des fils de commande assez longs!
  • Partager sur Facebook
  • Partager sur Twitter
2 août 2012 à 17:27:21

Est ce que t'es lumière auront toujours un "interrupteur de marche forcé" (par exemple quelqu'un ne connait pas l'installation et veux quand meme allumer une lampe XD) ?

Sinon il y a (beaucoup) de boulot !

Une méthode pour commencer à développer pourrait être de tout faire sur une maquette, juste avec des LEDs représentant chaque lampe. Ca te permettra d'aller bidouiller et mettre au point sans prendre de risque avec une partie puissance plus délicate.
Une fois cela en place et marchant comme tu veux tu peux réfléchir à la partie commande de la puissance.
  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

2 août 2012 à 18:22:07

Citation : Eskimon

Est ce que t'es lumière auront toujours un "interrupteur de marche forcé" (par exemple quelqu'un ne connait pas l'installation et veux quand meme allumer une lampe XD) ?


Oui oui ^^ celui de la lampe G

Citation : Eskimon

Une méthode pour commencer à développer pourrait être de tout faire sur une maquette, juste avec des LEDs représentant chaque lampe.


Oui ca me parait même être une étape nécessaire!
  • Partager sur Facebook
  • Partager sur Twitter
2 août 2012 à 18:38:11

Alors j’espère que tu connais le principe des va-et-vient :) sinon voici un lien !
  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

Anonyme
2 août 2012 à 19:02:16

Citation : Supernik

(Si je comprends bien ta question)
Je vois 2/3 possibilités :
- acheter 5 "powerswitch tail" déjà monté : cf. Adafruit
Solution la plus facile mais très cher!
- Découper les cables de mes lampes pour les insérer dans une carte de relai : 1 carte 8 relais ou Plusieurs de 2 relais
- faire mes propres "powerswitch tail" en bricolant des jolies boites avec prises, etc...

Dans l'ensemble j'aurais des fils de commande assez longs!



Hum dac...
  • Partager sur Facebook
  • Partager sur Twitter
3 août 2012 à 2:19:29

Pour la va et vient j'ai fait quelques travaux avec mon père qui m'ont permis d'apprendre, et puis... je sais en faire sur Minecraft ^^

Thelme, tu penses qu'il y a un problème avec ma façon d'utiliser les Relais?

2/8/12 Mis à jour du projet : J'enlève pour l'instant la lumière d'ambiance RGB D1 pour économiser 2 sorties et rester sur mon arduino UNO.
D'ailleurs pouvez-vous bien me confirmer qu'il est déconseillé d'utiliser les voies 0,1 et 13?
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
3 août 2012 à 11:44:06

Nope pas du tout, enfaite y a un 'tit bout de temps je revais d'installé de la domotique DIY dans mon atelier chez mes parents et à chaque fois j'étais bloqué par "Ou mettre ces foutus bloc de puissance" et "comme les commander" parce que c'est une vielle maison et que j'avais 70m² a couvrir. ^^
(et puis je voulais faire de la gradation de tension alternative, je me mettait un peu des plombs a ma bouée ^^)

Et au final tu as choisi la méthode la plus bourrin qui risque moins de déconner, et la plus simple à mettre en oeuvre, t'as eu raison! =)

Ah, un Minecraftien ^^
  • Partager sur Facebook
  • Partager sur Twitter
3 août 2012 à 12:04:55

Les voies 0 et 1 ont les déconseils car elles sont connecté aussi sur la voie série. Si tu veux t'en servir tu pourras pas connecter quelque chose dessus (et des fois si on veut reprogrammer la carte ca passe pas du premier coup car la carte trop occupé dans son programme actuel détecte pas la voie série de brancher, obligé de faire un reset manuel).
La voie 13 son seul souci c'est la LED branché dessus, en dur sur la carte. Ca fait un consommateur. Si tu vires cette LED (en la dessoudant, en coupant la piste...) tu auras une broche tout ce qu'il y a de plus normal.
  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

4 août 2012 à 3:17:04

Citation : thelme

Et au final tu as choisi la méthode la plus bourrin qui risque moins de déconner, et la plus simple à mettre en œuvre, t'as eu raison! =)



Je t'avoue que je rêverais aussi de supprimer les fils et mettre des petits trucs de ce genre : Liason radio
Au début je voulais même me faire une lampe avec 3 néons R,G,B et les utiliser comme une led RGB pour éclairer toute ma chambre de la couleur que je veux, etc... Et puis j'ai fais mon premier dessin et la je me suis calmé ^^
Et je me dis que l'intérêt du système que j'essaye de faire c'est qu'il sera améliorable petit à petit sans tout refaire.

Citation : Eskimon

Les voies 0 et 1 ont les déconseils car elles sont connecté aussi sur la voie série.
La voie 13 son seul souci c'est la LED branché dessus, en dur sur la carte.


C'est bien ce qui me semblait, merci beaucoup pour la confirmation!

Ajout du schéma électrique de la télécommande

Image utilisateur
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
4 août 2012 à 12:38:29

Citation : Supernik

Et je me dis que l'intérêt du système que j'essaye de faire c'est qu'il sera améliorable petit à petit sans tout refaire.


Bon état d’esprits :)


Tu as pas besoin de mettre les résistances de Pull UP, il y a en interne de l'Arduino.
pinMode(pin, INPUT);	     // set pin to input
digitalWrite(pin, HIGH);	 // turn on pullup resistors


Gain de place ;)
  • Partager sur Facebook
  • Partager sur Twitter
4 août 2012 à 17:18:01

D'ailleurs faudra qu'on en parle dans le tuto car on passe à coté et c'est dommage (je parle des résistances de pull-up)...
  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

5 août 2012 à 17:56:06

Citation : thelme

Tu as pas besoin de mettre les résistances de Pull UP, il y a en interne de l'Arduino.



Effectivement c'est toujours bon à prendre, même si j'avais modifié la position des résistances (en profitant pour la première fois du fait qu'il y ai 4 pattes sur les BP) surtout que le circuit sera surement réalisé sur une plaque de bakélite.


O5/08 Changement du CDC

En programmant je me suis rendu compte qu'il y avait des choses illogiques dans mon programme :
- Puisqu'il n'y a pas de capteur de présence, "Arduino" ne sait pas si je suis là ou pas (encore moins où je suis) et donc l'allumage automatique de nuit n'est pas possible (ne sert à rien ^^) pour l'instant.

- Les modes Auto et Manu étaient en fait quasi identique, la seul différence étant qu'en auto quand on appuie pour éclairer une zone on éteint la précédente. Du coup cela rendait le programme plus lourd sans qu'il soit plus intéressant pour autant.

CDC en cours de modif
  • Partager sur Facebook
  • Partager sur Twitter
9 octobre 2012 à 22:24:54

Citation : thelme


Tu as pas besoin de mettre les résistances de Pull UP, il y a en interne de l'Arduino.

pinMode(pin, INPUT);	     // set pin to input
digitalWrite(pin, HIGH);	 // turn on pullup resistors



Gain de place ;)



//Affecter les boutons à leur pin
  for (int i=0; i < nbrbouton ; i++)
  {
    pinMode(listebp[i],INPUT);
    digitalWrite(listebp[i],HIGH);
  }

Bon je ne comprends pas, j'ai essayé ton code, mais ça ne marche pas...
Le Arduino reboot, donc je comprends bien que je lui mets le +5 et le GND ensemble et du coup il aime pas trop :/
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
10 octobre 2012 à 15:24:16

digitalWrite(pin, HIGH); met une résistance donc quand tu relis la pat à la masse, il y a normalement pas de soucis de courant...

Regarde avec un multimétre la tension au borne des pins.

Je pencherai plus vers une erreur de montage, mais faudrait voir mon circuit pour t'aider...
  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2012 à 16:38:13

En décraviant mon problème je pense que je viens de comprendre : il ne faut pas remplacer la Resistance de pull-up par un cable, mais juste enlever la résistance?
D'où dans mon cas la masse relié directement au 5V et le reboot de l'Arduino
  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2012 à 17:21:31

Oui c'est ca, toute la partie "5V jusqu'au bouton en passant par la pull-up" devient "caché dans l'arduino".

Je suis en train d'écrire un bout de tuto à ce sujet car c'est vrai qu'on en a pas parlé, ca devrais etre visible très vite !
  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

10 octobre 2012 à 18:06:17

Ah pour le coup ça devient vraiment très intéressant ce petit système!
J'ai réessayé, ça marche bien! Merci!
  • Partager sur Facebook
  • Partager sur Twitter
29 octobre 2012 à 23:48:54

Bonjour, bonjour,
Avançant doucement mais surement j'ai réussi la première partie de mon projet (bien réduit depuis son début ^^)

Actuellement j'ai 4 boutons : G, A, B, OFF
Un appuie sur un bouton allume/éteint la LED correspondante. Le bouton OFF les éteint toutes.
A chaque fois qu'une LED change d'état la liaison série met à jour l'état des LED (cf. screenshot)
Quand on envoie dans la voie série "G", "A", "B" ou "O" on obtient le même effet que si on avait appuyé sur le bouton correspondant.
J'ai ajouté une photorésistance, dès que la luminosité est suffisamment forte dans la chambre toutes les LED s'éteignent.

Un peu d'illustrations :)
Image utilisateur
Image utilisateur
Image utilisateur

N'ayant toujours pas reçu le matériel pour passer à l'essai avec les relais, j'aimerais,en attendant, créer ma propre interface de commande, j'étais partis sur du C++ avec Qt, mais même si j'ai très rapidement réussi à créer l'interface (faire 4 boutons quoi ^^cf. ici), je n'ai pas encore eu le courage de me lancer dans la programmation...
Je voulais donc savoir avant de m'y lancer si le C++ était judicieux, avec ce que je lis par-ci par-là je commence à croire que Python est plus simple pour ce genre de manip (mais je ne connais rien à Python), ou sinon ne serait-ce pas possible au travers d'une interface web? (j'ai déjà vu ça quelque part mais aucune idée sur comment le faire fonctionner)
J'aimerais donc quelques avis pour m'aiguiller un peu!

Merci et bonne soirée
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2012 à 9:10:41

C'est possible avec une interface web, mais comme dit dans un post juste à côté sur ce forum, sur arduino tu vas très vite être limité.
Ou alors, il faudrait que ça soit ton pc qui face serveur web, et il demande les infos à l'arduino via voie sérielle.

Sinon dans un premier temps, tu peux toujours commencer par une interface c++, si tu sépare bien la partie métier et interface, tu pourra même réutiliser la base et greffer une interface web par dessus via cgi.

Après Qt est très simple pour dialoguer en série (me rappelle pu le nom de la lib, mais un recherche internet donnera vite des réponses :p) , donc si tu connais déjà un peu le c++ et/ou Qt, pourquoi s'en priver :p

Après, une fois que ta com série marche, ça devrait pas être très long de connecter trois boutons et trois widgets dessus :p
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2012 à 9:57:58

Pour juste des boutons pour lire une température (sans rafraîchissement auto) une page web sera simple à mettre en place sans besoin de truc compliquer, par contre un shield internet ca a un cout...

Si tu connais pas le C++, tu peux lire le tuto de M@theo21 sur la partie informatique du site, en allant jusqu'à la partie Qt.

@epso : la librairie s'appelle QextSerialPort, on en a fait un tuto dans le tuto arduino
  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

30 octobre 2012 à 10:04:48

Bah voila, même pas besoin de recherche google :p
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2012 à 12:56:49

Pour l'interface web, si ca inclut de passer par un shield ethernet, ca ne me convient pas, ce serait dommage d'acheter un shield pour quelque chose que je peux faire sans.

Sinon j'ai effectivement vu le tuto que vous avez fais sur la partie Qt, mais je bloque sur l'installation de la librairie QextSerialPort avec Mercurial. Je vais m'y réessayer alors, avec un peu plus de conviction.
Puisque le C++ j'arrive à me débrouiller, j'ai même réussi à inclure un peu de POO dans mon programme Arduino :soleil: .
En fait pour être honnête, j'ai fait une petite overdose de C++ en voulant arriver rapidement à Qt, et j'ai un vague souvenir d'une vidéo Youtube ou le type fait une petite interface sur Python en 20 secondes. J'espèrais donc que vous me donniez un moyen plus simple d'arriver à mes fins..
Mais soit ^^
Je me relance dans Qt et la voie série ce soir avec un peu plus de motivation!

Merci bien!
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2012 à 13:19:18

C'est vrai que l'installation de QextSerialPort est loin d'etre intuitive. Si un jour je me met à Python alors je le rajouterais ;)
  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

31 octobre 2012 à 19:18:12

Très beau projet, très intéressant aussi.

(Désolé pour le HS :euh: mais vous utilisez quel logiciel pour le(s) dessin(s) ? Merci d'avance)
  • Partager sur Facebook
  • Partager sur Twitter
1 novembre 2012 à 12:38:12

@Dj1312 : si tu parles des schémas électroniques du tuto et du premier post les dessins sont faits avec Fritzing
  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

1 novembre 2012 à 18:29:27

Oui le schéma de ma chambre est fait sur Paint
Celui avec le joli arduino sur Fritzing
Et dans le poste suivant le schéma électrique (de la télécommande) est fait sur Proteus Isis
  • Partager sur Facebook
  • Partager sur Twitter
28 octobre 2014 à 3:35:56

on vous demande de concevoir et de realiser un logicel pour arduino uno capable de gere la gestion d'energie (eclairage,climatisation,etc) et la securite (incendie instrusion,etc) dans un appartement residentiel
votre travail sera evalu selon les critiers suivants:
les hypothese emises
la clarte de l'algorithme de programmation
les bonnes pratiques de programmation
  • Partager sur Facebook
  • Partager sur Twitter
25 mai 2016 à 22:50:44

bonjour je besoin un programme arduino qui permet de guider un porte de garage avec l’insertion de mot clé s'il vous plait donne mois l'aide 

  • Partager sur Facebook
  • Partager sur Twitter