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
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:
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
(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!
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.
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.
(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!
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?
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! =)
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.
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!
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.
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 :/
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
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
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!
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
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
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
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 .
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!
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
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
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !