Table des matières:

Horloge Arduino crépuscule/aube : 15 étapes
Horloge Arduino crépuscule/aube : 15 étapes

Vidéo: Horloge Arduino crépuscule/aube : 15 étapes

Vidéo: Horloge Arduino crépuscule/aube : 15 étapes
Vidéo: Débuter avec Arduino : Chien de garde - Fonctionnement et utilisation dans un programme simple 2024, Novembre
Anonim
Horloge Arduino Crépuscule/Aube
Horloge Arduino Crépuscule/Aube

Sommaire:

Cette minuterie basée sur Arduino peut allumer une lumière 220V au crépuscule, à l'aube ou à une heure spécifiée.

Introduction:

Certaines des lumières de ma maison s'allument automatiquement au crépuscule, jusqu'à une heure prédéfinie ou jusqu'à l'aube (toute la nuit).

L'emplacement des lumières ne permet pas l'utilisation d'un capteur de lumière. Les minuteries d'horloge disponibles régulières s'allument à une heure précise. Pour allumer à la tombée de la nuit, il faut donc ajuster régulièrement le réglage du programme horaire.

En guise de défi, j'ai décidé de créer à la place une minuterie autonome personnalisée basée sur Arduino. Il utilise une horloge en temps réel et la bibliothèque Dusk2Dawn pour déterminer l'heure à laquelle les lumières doivent être allumées ou éteintes. Le boîtier de cette minuterie est imprimé en 3D et se trouve sur Thingiverse. Le code Arduino de ce projet est disponible sur GitHub.

Dans la création de cette minuterie, je me suis inspiré de nombreux designs et circuits sur Internet. Mes remerciements à tous les contributeurs qui ne sont pas explicitement mentionnés.

Pour plus de lisibilité, des schémas partiels sont affichés dans les étapes où cela est nécessaire, au lieu d'un schéma de circuit complet.

Solutions alternatives:

Au lieu d'une minuterie autonome, il existe de nombreuses solutions où un système domotique intelligent oriente les lumières. Mon objectif était d'avoir une solution indépendante, qui ne dépend pas de la connectivité WIFI (ou autre).

Restrictions:

Le code fourni avec ce projet comprenait une mise en œuvre des changements d'heure d'été basée sur le système d'heure d'été européen.

Étape 1: liste de pièces et outils

Liste de pièces et outils
Liste de pièces et outils

Les pièces:

Coûts totaux des pièces (hors impression 3d) environ 30 €, -.

  • Arduino Nano V3 (compatible) sans en-têtes
  • Alimentation 5V 0,6A (34x20x15mm)
  • Relais statique 5V - Actif bas - 2A 230VAC
  • Horloge temps réel DS3231 (petite)
  • Écran OLED 0.96" SPI 128*64 pixels
  • Encodeur rotatif - EC11 - 20mm
  • Bouton 6mm arbre 15mm * 17mm
  • Carte de circuit imprimé de planche à pain,
  • 4 * vis M3x25mm
  • boîtier imprimé en 3D
  • Gaine thermorétractable
  • Fils
  • Bornier à vis (pour connecter les fils neutres)

Outils nécessaires:

  • Fer à souder
  • Fil de soudure
  • Pompe à dessouder
  • Pince à dénuder
  • Fraises
  • Imprimante 3D (pour imprimer le boîtier)
  • Petits outils assortis

ATTENTION

Ce circuit fonctionne sur 230v AC et si vous n'êtes pas habitué à travailler avec une tension secteur ou si vous n'avez pas suffisamment d'expérience pour travailler avec une tension secteur 230v AC, veuillez rester à l'écart de ce projet

Je n'assume aucune responsabilité pour toute perte ou dommage résultant directement ou en conséquence de la suite de ce projet

Il est toujours conseillé de prendre les précautions et les précautions nécessaires lorsque vous travaillez avec le secteur AC

Étape 2: préparer l'écran OLED et l'horloge en temps réel

Préparer l'affichage OLED et l'horloge en temps réel
Préparer l'affichage OLED et l'horloge en temps réel

Le boîtier imprimé en 3D est conçu pour une taille minimale. Par conséquent, les en-têtes de l'écran OLED et de l'horloge en temps réel doivent être supprimés.

En vue de l'étape suivante, éliminez toute soudure restante des trous avec la pompe à dessouder.

Étape 3: préparer l'encodeur rotatif

Préparer l'encodeur rot-t.webp
Préparer l'encodeur rot-t.webp

L'encodeur rotatif a des connecteurs fragiles. Pour éviter tout dommage, montez un morceau de carte de circuit imprimé sur l'encodeur.

Sur la photo, la connexion à la terre (en haut à droite et au milieu en bas) est également déjà préparée.

Remarque: assurez-vous que l'encodeur rotatif avec carte de circuit imprimé s'insère dans le boîtier sans toucher l'Arduino. Il peut être nécessaire de rectifier la carte de circuit imprimé pour obtenir un ajustement parfait.

Étape 4: Enceinte

Enceinte
Enceinte
Enceinte
Enceinte

Imprimez les trois parties du boîtier avec une imprimante 3D. Reportez-vous aux instructions sur Thingiverse.

Étape 5: Désactiver le voyant d'alimentation Arduino (facultatif)

Désactiver le voyant d'alimentation Arduino (facultatif)
Désactiver le voyant d'alimentation Arduino (facultatif)

Pour éviter d'avoir une lueur verte dans la minuterie, la LED d'alimentation de l'Arduino peut être désactivée.

Notez que cette modification est facultative.

La modification de l'Arduino Nano consiste à retirer la résistance à côté de la led d'alimentation (voir cercle rouge sur la photo).

Étape 6: Alimentation + Relais à semi-conducteurs

Alimentation + Relais statique
Alimentation + Relais statique

Dans cette étape, l'alimentation et le relais à semi-conducteurs sont combinés et montés dans la partie inférieure du boîtier.

Les connexions entre l'alimentation et le relais se font au bas de ces composants. Le bornier à vis du relais servira à se connecter à l'Arduino.

Remarque: lors des connexions, assurez-vous que les trous de montage du relais à semi-conducteurs restent libres.

  • Souder un fil de connexion entre le relais statique A1 à l'une des connexions AC de l'alimentation
  • Soudez un fil à l'autre connexion CA de l'alimentation (cela sera connecté au bornier à vis neutre à l'étape 7)
  • Souder un fil entre l'alimentation -Vo au relais DC-
  • Souder un fil pour connecter l'alimentation +Vo au relais DC+

Remarque: il peut être nécessaire de raccourcir les fils de l'alimentation et du relais pour pouvoir les intégrer dans le boîtier.

Étape 7: Arduino Nano + Alimentation + Relais à semi-conducteurs

Arduino Nano + Alimentation + Relais à semi-conducteurs
Arduino Nano + Alimentation + Relais à semi-conducteurs

Dans cette étape, l'Arduino Nano est connecté à l'alimentation et au relais à semi-conducteurs.

  • Coupez deux fils d'environ 70 mm de long. Dénudez 30 mm d'isolation d'un côté et 4 mm de l'autre.
  • Soudez le côté avec une isolation dénudée de 30 mm à l'Arduino + 5V et GND, avec le fil qui passe à travers
  • Coupez deux tubes thermorétractables de 20 mm de long et montez-les sur la partie dénudée de 25 mm. Cela isole les fils jusqu'à la connexion avec le bornier à vis de montage DC+ et DC- du relais statique.
  • Notez que les fils pour GND et +5V doivent se croiser pour se connecter correctement au bornier à vis du relais.
  • Coupez un fil d'environ 40 mm de long et dénudez 4 mm d'isolation aux deux extrémités. Soudez un côté à la connexion A2 à l'ARRIÈRE de l'Arduino et connectez l'autre côté à la connexion CH1 du bornier à vis à montage à semi-conducteurs.

ATTENTION

L'Arduino est alimenté directement par l'alimentation stable +5V au lieu d'utiliser le régulateur de puissance interne Arduino. Par conséquent, il n'est pas sûr de connecter USB lorsque l'Arduino est alimenté par l'alimentation.

Débranchez toujours le secteur 230VAC avant d'utiliser la connexion USB Arduino.

Étape 8: Arduino Nano + Horloge en temps réel

Arduino Nano + Horloge temps réel
Arduino Nano + Horloge temps réel

Dans cette étape, l'horloge en temps réel est connectée à l'Arduino, en partie à l'aide des câbles préparés à l'étape précédente.

  • Soudez le fil provenant de l'Arduino GND (également connecté au DC- du relais) à « – » de l'horloge en temps réel.
  • Soudez le fil provenant de l'Arduino +5V (également connecté au DC+ du relais) au '+' de l'horloge temps réel.
  • Coupez deux fils d'environ 40 mm de long et dénudez 4 mm d'isolation aux deux extrémités.
  • Soudez un fil entre l'Arduino A4 et l'horloge temps réel D (SDA).
  • Soudez un fil entre l'Arduino A5 et l'horloge temps réel C (SCL).
  • Façonnez les fils de l'horloge temps réel pour vous assurer qu'ils n'interfèrent pas avec l'encodeur rotatif. Pour cela, les fils doivent être au fond de l'enceinte.

Étape 9: connectez l'écran OLED

Connectez l'écran OLED
Connectez l'écran OLED

Dans cette étape, l'écran OLED SPI est ajouté à l'Arduino.

  • Coupez 2 fils de 65 mm de long et dénudez 4 mm d'isolation aux deux extrémités.
  • Soudez un fil à la connexion GND de l'écran OLED. Soudez ce fil au fil isolé du tube thermorétractable provenant de l'Arduino GND (reportez-vous à l'étape 4) et connectez les deux fils au bornier à vis à montage CC du relais à semi-conducteurs.
  • Soudez un fil à la connexion VCC de l'écran OLED. Soudez ce fil au fil isolé du tube thermorétractable provenant de l'Arduino +5V (reportez-vous à l'étape 4) et connectez les deux fils au bornier à vis à montage DC+ du relais à semi-conducteurs.
  • Coupez 5 fils de 65 mm de long et dénudez 4 mm d'isolation aux deux extrémités.
  • Soudez un fil pour connecter D0 (CLK) à Arduino D10
  • Soudez un fil pour connecter D1 (MOSI / DATA) à Arduino D9
  • Soudez un fil pour connecter RES (RT) à Arduino D8
  • Soudez un fil pour connecter DC à Arduino D11
  • Soudez un fil pour connecter CS à Arduino D12

Remarque: L'ordre des fils d'affichage n'est pas logique. C'est le résultat de l'utilisation d'abord de l'exemple Adafruit, puis de la modification des connexions, car l'utilisation de D13 entraîne une LED rouge sur l'Arduino tout le temps.

Alternative

Il est possible d'utiliser un ordre « normal » pour les connexions SPI. Pour cela, la définition de la sortie numérique du programme Arduino dans oledcontrol.cpp doit être ajustée en conséquence:

// Utilisation du logiciel SPI

// définitions des broches

#définir CS_PIN 12

#définir RST_PIN 8

#define DC_PIN 11

#définir MOSI_PIN 9

#définir CLK_PIN 10

Étape 10: Encodeur rotatif

Codeur rot-t.webp
Codeur rot-t.webp

Le schéma montre les connexions de l'Arduino à l'encodeur rotatif (encodeur vu de dessus).

  • Coupez 4 fils de 45 mm et dénudez 4 mm d'isolation aux deux extrémités.
  • Connectez Arduino GND aux connecteurs en haut à droite et en bas au milieu de l'encodeur
  • Connectez Arduino D2 en bas à gauche de l'encodeur
  • Connectez Arduino D3 en bas à droite de l'encodeur
  • Connectez Arduino D4 en haut à gauche de l'encodeur

Étape 11: Installation dans le boîtier

Installation dans l'enceinte
Installation dans l'enceinte

Installez toute l'électronique dans la partie basse du boîtier:

  • Faites glisser l'Arduino sur la fente verticale
  • Glissez l'horloge en temps réel dans le compartiment inférieur
  • Faites glisser l'alimentation et le relais dans le compartiment supérieur, assurez-vous que le relais repose sur ses supports.

Étape 12: connexion au secteur/lumière à allumer

Connexion au secteur/lumière à allumer
Connexion au secteur/lumière à allumer
Connexion au secteur/lumière à allumer
Connexion au secteur/lumière à allumer

ATTENTION

Assurez-vous de prendre les précautions et les précautions nécessaires lorsque vous travaillez avec le secteur, assurez-vous que le secteur est déconnecté

Je n'assume aucune responsabilité pour toute perte ou dommage résultant directement ou en conséquence de la suite de ce projet

  • Connectez la phase secteur AC au bornier à vis A1 (gauche) du relais.
  • Connecter la phase de la lumière à commuter au bornier à vis B1 (droite) du relais.
  • Utilisez un bornier à vis séparé pour connecter le fil neutre du secteur CA, le fil neutre léger et le fil neutre de l'alimentation.
  • Pour réduire la tension, montez une attache autour de chacun des câbles d'alimentation.

Étape 13: Finition du boîtier

Finition de l'enceinte
Finition de l'enceinte

Dans cette étape, le montage dans le boîtier est terminé

  • Faites glisser l'écran OLED à travers le trou de montage de l'écran dans la partie centrale du boîtier.
  • Faites glisser l'encodeur rotatif à travers le trou dans la partie centrale, assurez-vous que l'anti-rotation s'aligne. Montez l'encodeur rotatif à l'aide de la rondelle et de l'écrou fournis.
  • Montez la partie supérieure du boîtier et fermez le boîtier en montant les quatre vis M3x25mm par le bas.

Étape 14: Programmation de l'Arduino

ATTENTION

L'Arduino est alimenté directement par l'alimentation stable +5V au lieu d'utiliser le régulateur de puissance interne Arduino. Par conséquent, il n'est pas sûr de connecter USB lorsque l'Arduino est alimenté par l'alimentation.

Débranchez toujours le secteur 230VAC avant d'utiliser la connexion USB Arduino.

Récupérez le programme de minuterie Arduino depuis GitHub.

Ce programme utilise l'IDE Arduino, qui peut être obtenu ici.

Le programme utilise les bibliothèques supplémentaires suivantes:

SSD1303Ascii

Bibliothèque Arduino Wire

Notez que la bibliothèque dusk2dawn est également utilisée, mais incluse en tant que code en raison d'un changement dans son interface.

Pour garantir un calcul correct du crépuscule / de l'aube, la longitude, la latitude et le fuseau horaire doivent être définis.

Comme décrit dans l'exemple dusk2dawn, un moyen simple de trouver la longitude et la latitude de n'importe quel endroit est de trouver l'endroit dans Google Maps, de cliquer avec le bouton droit sur l'endroit sur la carte et de sélectionner "Qu'y a-t-il ici ?". En bas, vous verrez une carte avec les coordonnées.

La longitude et la latitude sont codées en dur dans le programme, dans Dusk2Dawn.cpp lignes 19 et 20:

/* La latitude et la longitude de votre emplacement doivent être définies ici.

* * CONSEIL: Un moyen simple de trouver la longitude et la latitude de n'importe quel endroit est de * trouver le lieu dans Google Maps, de cliquer avec le bouton droit sur le lieu sur la carte et de * sélectionner « Qu'y a-t-il ici ? ». En bas, vous verrez une carte avec les coordonnées *. */ #définir LATITUDE 52.097105; // Utrecht #définir LONGTITUDE 5.068294; // Utrecht

Le fuseau horaire est également codé en dur dans Dusk2Dawn.cpp ligne 24. Par défaut, il est défini sur Pays-Bas (GMT + 1):

/* Entrez votre fuseau horaire (décalage par rapport à GMT) ici.

*/ #définir le FUSEAU HORAIRE 1

Lors de la programmation de l'Arduino pour la première fois, la mémoire EEPROM doit être initialisée. Pour cela, changez timer.cpp ligne 11 pour faire l'initialisation de l'EEPROM:

// passer à true pour la première programmation

#define INITIALIZE_EEPROM_MEMORY false

Téléchargez le programme sur l'Arduino et démarrez l'Arduino.

Désactivez l'initialisation de l'EEPROM et téléchargez à nouveau le programme sur l'Arduino. La minuterie se souviendra désormais des paramètres de l'heure de commutation lors du redémarrage.

Étape 15: Configuration de l'heure et des heures de commutation

Concepts d'interaction utilisateur:

  • Un appui court est utilisé pour confirmer les sélections. De plus, dans l'écran principal de la minuterie, un appui court allume ou éteint la lumière.
  • Un appui long est utilisé pour entrer dans le menu à partir de l'écran principal de la minuterie. N'importe où dans le menu, un appui long ramènera à l'écran principal de la minuterie.
  • '>' Cursus de sélection. Ce curseur indique l'option sélectionnée dans un menu.

Écran principal de la minuterie

L'écran principal de la minuterie affiche:

Jour de la semaine

Heure actuelle 16:00

État actuel de la minuterie et prochaine heure de commutation Minuterie OFF jusqu'à 17:12

Aube et crépuscule Aube 08:05 Crépuscule 17:10

Réglage de l'heure correcte

Appuyez longuement pour entrer dans le menu. Les options suivantes sont affichées:

RetourRégler l'heureProgramme de jour de semaineProgramme de week-endOptions

Sélectionnez régler l'heure pour régler la date et l'heure de l'horloge en temps réel. Saisissez les valeurs correctes pour:

AnnéeMoisJourHeure

La minuterie détermine automatiquement le jour de la semaine. Le passage à l'heure d'été se fait également automatiquement. L'heure d'été est implémentée pour le fuseau horaire européen uniquement.

Réglage du programme horaire

La minuterie a 2 programmes, un pour les jours de semaine, un pour le week-end. Notez que le vendredi est considéré comme faisant partie du week-end, les lumières peuvent rester allumées un peu plus longtemps.

Chaque minuterie a un moment d'allumage et d'extinction. Le moment peut être soit:

  • Heure: heure exacte spécifiée
  • Aube: basculer en fonction de l'heure calculée de l'aube
  • Crépuscule: basculer en fonction de l'heure calculée du crépuscule

Pour le crépuscule et l'aube, il est possible d'entrer une valeur de correction de 59 minutes avant ou après.

Exemples:

Pour allumer une lumière toute la nuit, sélectionnez allumer à (crépuscule + 10min), éteindre à (aube - 10min)

Pour allumer une lumière le soir, sélectionnez allumer au crépuscule, éteindre à l'heure: 22h30.

Options

Dans l'écran des options, un délai d'attente peut être défini pour la commutation de l'écran.

Lorsque l'écran est éteint, une pression sur le bouton de l'encodeur permet de revenir à l'écran principal de la minuterie.

Conseillé: