Table des matières:

TheSUN, horloge murale design alimentée par Arduino : 6 étapes (avec photos)
TheSUN, horloge murale design alimentée par Arduino : 6 étapes (avec photos)

Vidéo: TheSUN, horloge murale design alimentée par Arduino : 6 étapes (avec photos)

Vidéo: TheSUN, horloge murale design alimentée par Arduino : 6 étapes (avec photos)
Vidéo: Les 5 meilleures horloges murales design 2024, Novembre
Anonim
TheSUN, horloge murale design alimentée par Arduino
TheSUN, horloge murale design alimentée par Arduino
TheSUN, horloge murale design alimentée par Arduino
TheSUN, horloge murale design alimentée par Arduino
TheSUN, horloge murale design alimentée par Arduino
TheSUN, horloge murale design alimentée par Arduino

Salut à nouveau Instructables-folks !:-P

En raison de problèmes d'expédition, je n'ai pas pu continuer mon projet ABTW, j'ai donc décidé de vous en montrer une autre, ma dernière création.

Je pense que beaucoup d'entre nous, comme moi, aiment ces jolies bandes LED adressables (également appelées LED NEOPIXEL). Vous pouvez les obtenir auprès d'ADAFRUIT. D'autres fournisseurs fourniront également des produits similaires. Il existe une bibliothèque disponible sur ADAFRUITS - GitHub (cliquez sur moi) comprenant un exemple de code. Le codage devrait donc être simple…

J'ai vu ces NEOPIXELS une pensée, qu'est-ce que je peux faire avec ces petites choses brillantes.

  • Un écran à matrice LED ? -> Trop compliqué et je ne l'utilise pas (pour le moment)
  • Éclairage de Noël ? -> Cela correspond à la saison mais ce serait moins cher d'en acheter un:-P
  • une horloge? -> Pourquoi pas ! Mais il devrait être élégant et non conventionnel

Alors, fabriquons une horloge murale.

Si nous examinons de près notre montre-bracelet (si vous avez un analogue comme moi), nous remarquerons que nous avons 12 heures et 60 minutes (espérons-le). Cela signifie que nous avons besoin de 60 LED adressables, phu! Si nous prenons une bande avec 60 LED's / mètre, nous obtiendrons un diamètre de ~318 mm (rayon = portée /(2*Π)) c'est définitivement trop grand.

La vérité, c'est que si vous demandez l'heure à quelqu'un, personne ne dira qu'il est 15h15 ! Vous obtiendrez la réponse "Il est 5h30". Alors pourquoi ne devrions-nous pas tout réduire à des étapes de 5 min ? Pour cela, nous n'aurons besoin que de 12 LED, ce qui signifie que nous obtenons un diamètre de 63,6 mm. Nous sommes également en mesure de différencier les heures et les minutes en leur donnant une couleur distincte.

C'EST LE PLAN ! Voyons comment j'ai tout fait. Comme toujours, je fournirai une liste/une nomenclature et des instructions sur la façon de le construire.

Si vous pensez que seuls les Suisses peuvent fabriquer des horloges sympas, prouvez que vous vous trompez (désolé Suisse:-P)

Étape 1: Conception et choix des matériaux

Conception et choix des matériaux
Conception et choix des matériaux
Conception et choix des matériaux
Conception et choix des matériaux

Concevoir:

Si nous examinons à nouveau de près notre montre/horloge analogique, nous voyons que le cercle est divisé en 12 * 30° étapes, nous savons que nous avons besoin de 63,6 mm pour le LED-Strip. Il devrait donc être possible d'aligner la bande autour d'un tube d'une manière ou d'une autre. J'ai décidé d'utiliser du verre acrylique, car il est joli et il est possible d'y encapsuler la lumière LED et à chaque défaut du verre, une certaine diffusion de la lumière se produira. Alors, disons: plus d'impuretés entraînera une plus grande diffusion de la lumière ! C'est exactement ce que nous voulons. Alors n'hésitez pas à prendre vos outils de gravure et soyez créatif:-)

Si vous vous référez à ma liste de BoM et au nom que j'ai donné à l'horloge, j'ai choisi un design semblable au soleil. J'ai obtenu toutes les pièces en acrylique d'un vendeur allemand sur E-Bay (lien fourni dans la BoM). Pour mon design Tu auras besoin de:

  • plaque de sol acrylique, épaisseur transparente = 6 mm, diamètre = 300 mm
  • plaque centrale acrylique, épaisseur transparente = 3 mm, diamètre = 150 mm
  • plaque frontale acrylique, satinée, épaisseur = 3 mm, diamètre = 90 mm
  • tube acrylique, transparent, diamètre extérieur = 64mm (il faudra donc peaufiner un peu la bande LED)
  • tige acrylique, transparente, diamètre = 5mm (ce seront nos poutres); Il y a aussi des tiges acryliques avec des bulles à l'intérieur, je les recommande mais je ne les ai pas autour.
  • colle acrylique

Électronique (voir les fichiers Fritzing):

  • Arduino mini (ou similaire)
  • 1 bande LED adressable (12 LED par pas d'heure et 5min)
  • 4 LED adressables (minutes simples)
  • 2 résistances 330Ohm
  • 1 condensateur 1000µF
  • 1 alimentation (5V/500mA)
  • un RTC DS-1307 (en option !)
  • Module Bluetooth (en option ! oui vous pouvez régler l'heure via BT et un Smartphone Android)

Si vous vous demandez pourquoi j'ai des puces MAX485 sur ma nomenclature. La réponse est que je veux synchroniser l'horloge avec le système domotique que je suis sur le point de créer (ne plus jamais avoir à régler une horloge pour l'heure d'été:-P). Je décrirai cela dans mon blog dans le prochain quelques semaines/mois.

Comme vous l'avez remarqué, je vais également essayer d'obtenir l'horloge hors réseau avec des panneaux solaires et un LiPo, mais je ne couvre pas cela dans ce Instructable, n'hésitez pas à l'essayer vous-même.

Étape 2: préparer les pièces en acrylique

Préparer les pièces en acrylique
Préparer les pièces en acrylique
Préparer les pièces en acrylique
Préparer les pièces en acrylique
Préparer les pièces en acrylique
Préparer les pièces en acrylique

Les outils:

Tout d'abord, il est très utile d'imprimer le plan DWG que j'ai ajouté à l'échelle 1:1. Cela vous aidera à aligner toutes les pièces et vous servira de plan de perçage. De plus, vous aurez besoin de:

  • couteau
  • jauge à onglet
  • scie à métaux
  • pinces
  • perceuse à main
  • peut percer, diamètre 65mm
  • un ensemble de forets à métaux
  • une petite lime en métal
  • colle acrylique

Commençons:

Prenez la plaque de sol et alignez-la sur le plan, de façon à obtenir le centre du cercle. Maintenant, prenez votre perceuse à main avec la perceuse montée dessus et percez (très lentement ! pas trop de pression !) un trou au centre de la plaque de sol, le cercle extérieur doit avoir une profondeur d'environ 2-3 mm. Il s'agit d'enfoncer la bande LED dans la plaque de sol (bande LED ~10 mm de large, faisceaux de seulement 5 mm de diamètre) et de les aligner avec les faisceaux (voir photo 1).

Maintenant, nous avons besoin de la scie à métaux, de la jauge à onglet et du tube acrylique. Il suffit de le couper en morceaux, j'ai décidé de faire le boîtier (tube) de 40 mm de long (photo 2). Maintenant, récupérez la scie à métaux et faites une petite feuillure sur un côté du tube, lissez-la avec la lime en métal. C'est de là que sortiront les fils;-) (voir photo 3)

C'est l'heure de la colle…Prenez la plaque du milieu (d=150mm) et la plaque avant (la satinée). Alignez-les à nouveau sur le plan, mettez de la colle au centre de la plaque du milieu, alignez la plaque avant et attendez que le la colle est légèrement durcie. La colle que j'ai utilisée durcit légèrement et cela peut prendre jusqu'à 2-3h, alors vous voudrez peut-être utiliser une pince… (photos 3 et 4)

Faites de même pour coller le tube sur la plaque de sol, assurez-vous que la feuillure fait face à la plaque et est alignée quelque part où vous voulez que la première LED (12 heures) soit.

Attendez qu'il durcisse !

Nous pouvons maintenant aligner les 2 parties (bookmatched) sur le plan et percer nos 4 trous d'une minute (5 mm de diamètre ou le diamètre de la LED que vous avez choisi; percez-le lentement sans trop de pression). Percez environ 8-9 mm de profondeur. Attention, la plaque satinée est très cassante et peut casser si vous percez trop profondément. Vous pouvez maintenant les coller ensemble ou vous décidez, comme moi, de couper une menace dans la plaque de sol et de la fixer avec une vis.

Encore une fois, attendez que la colle ait durci. Maintenant, alignez et collez les poutres sur la plaque de sol. (photo 6) Devinez quoi… attendez que la colle ait durci:-) Passons à l'électronique…

Étape 3: Électronique

Électronique
Électronique
Électronique
Électronique
Électronique
Électronique
Électronique
Électronique

Les outils:

  • fer à souder
  • fil de soudure
  • couteau de passe-temps
  • un petit morceau de PCB de prototypage
  • fil émaillé ou tout autre fil que vous préférez
  • colle chaude

J'ai commencé avec les LED simples. Si vous utilisez du fil émaillé, n'oubliez pas de gratter la laque avant de souder. Vous pouvez utiliser un couteau de loisir pour cela. Câblez-les, vous pouvez vous référer à l'image avec le brochage sur flikto.de. Notez que DOUT passe à DIN sur la LED suivante ! (voir photo 2) Après cela, vous pouvez couper la bande LED en 4 éléments avec chacun 3 LED. N'oubliez pas que nous avons une bande LED de 63,6 mm et un diamètre extérieur de 64 mm du tube, nous avons donc besoin d'une "longueur supplémentaire pour l'aligner précisément sur les faisceaux. Câblez-le avec du fil émaillé comme sur l'image 4. J'ai fait un petit PCB proto qui servira en tant que "faisceau d'alimentation" et contiendra les composants des bandes LED (les deux résistances de 330 ohms et le condensateur de 1000 µF, image 7). Reportez-vous à l'image de Fritzing pour cela.

Montez maintenant la bande autour du tube, alignez les LED sur les faisceaux. Le premier Pixel correspond à 12 heures. Si vous avez retourné votre logement, n'oubliez pas que tout est en miroir. Procédez dans le sens inverse des aiguilles d'une montre ! Utilisez de la colle chaude pour le fixer au tube. Une petite goutte pour chaque segment le fera !

Vous pouvez faire la même chose pour les LED simples (éventuellement en miroir), ajoutez simplement de la colle chaude et enfoncez-les dans les trous pré-percés.

Ne câblez pas encore l'Arduino, nous utiliserons la série matérielle pour la connexion BT, alors vérifiez d'abord les étapes suivantes où je décris le logiciel.

Étape 4: Coder

Code
Code
Code
Code

Vous pouvez maintenant charger le croquis sur l'Arduino. Vous pouvez également câbler les bandes LED maintenant. Ne connectez pas le module BT !!! Nous voulons d'abord jeter un œil au code, vous devez savoir où vous pouvez modifier plusieurs choses…

Téléchargez l'IDE Arduino et les bibliothèques. IDE Arduino, AdafruitNeoPixel, Time, DS1307RTC

Installez l'IDE et placez les bibliothèques dans le dossier bibliothèque. Ouvrez le fichier INO joint et téléchargez-le sur votre arduino. Le code décrit ici est le même mais avec des commentaires supplémentaires ! Si vous avez tout fait correctement, vous pouvez maintenant voir la "bootanimation". Il est possible de régler l'heure sur le moniteur série. Tapez simplement @"hour"/"min"/"sec" par exemple. @10/33/00 (10:33).

N'hésitez pas à jouer avec le code… Ici, je vais vous donner une brève description du Code (Configuration sans RTC !)

DÉFINITIONS:

#define PIN 6 //Hour LED Strip #define MINPIN 5 //Singelminute LED #define NUMPIXELS 12 //Nombre de pixels pour l'heure #define MINNUMPIXELS 4 //Nombre de pixels pour une seule minute #define BAUDRATE 115200 //Baudrate, doit correspondre le débit en bauds du module BT #define utch '@' //start BYTE of TimeSync

int timeset = 0; //indicateur à stocker si l'heure a été définie après bootint delayval = 20; //délai pour l'animation de fondu int clocktimer = 10000; //time refresh int timebright = 250; //luminosité de l'heure Strip int mtimebright = 50; //luminosité de singelminint initialize = 0; //flag pour appeler la fonction clearpixels après bootint ahour; int oldahour = 0; // mémoriser préc. heure par minute; int oldamine = 0; // stocke la minute précédente pour rafraichir une seconde; int un jour; int un mois; int an; int mmin;tmElements_t tm;

//Configuration des 2 matrices LED NeoPixel (NOM = TYPE (NOMBRE DE PIXELS, QUEL PIN, FORMAT RVB OU GRB, FREQ); Reportez-vous au guide Adafruit pour plus d'informations. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel minpixels = Adafruit_NeoPixel(MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

METTRE EN PLACE:

void setup() {

Serial.begin(BAUDRATE); Fil.begin(); // Initialiser les bandes, toutes OFFpixels.begin(); minpixels.begin(); pixels.show(); minpixels.show();

//Faire une petite animationSerial.println("SUNRISE"); lever du soleil(); retard(1000); Serial.println("COUCHER DU SOLEIL"); le coucher du soleil(); pixels.show(); Serial.println("READY"); }

BOUCLE:

void loop() { // vérifie la synchronisation temporelle while (Serial.available() >0){ char c = Serial.read(); if(c == utch) //s'il y a un @ sur la ligne, lisez les prochains octets / ints{ readtime(); } } // initialiser les LED, effacer l'animation de démarrage

if(initialiser == 0){ clearpixels(); initialiser = 1; }

une heure = heure();

une minute = minute(); if(timeset == 1 || timeset == 0) // ici vous pouvez vérifier si l'heure a été réglée, vous pouvez arrêter le programme ici si Timeset = FALSE, supprimez simplement "|| timeset == 0" !

{

if(oldamin < aminute || oldahour met tout sur OFF, affiche la nouvelle heure{ clearpixels(); ClockDisplay(); } } }

Afficher l'horloge:

void ClockDisplay(){

oldahour = ahour;

oldamine = une minute; int xheure, xmin;

if (ahour >= 12){ xhour = ahour-12; //nous n'avons que 12 LED pour un affichage 24h} else { xhour = ahour; } // l'échelonner en étapes de 5 minutes xmin = (aminute / 5); if(oldamin < aminute){ oldamin = aminute; pixels clairs(); } //prendre le reste de la division dor la LED singulmin mmin = (aminute % 5); // opérateur modulo ex. 24 % 5 = 4 ! très utile:-Ppixels.setBrightness(timebright); pixels.setPixelColor(xmin, pixels. Color(5, 125, 255)); // vous pouvez changer les couleurs ici ! jouer!pixels.setPixelColor(xhour, pixels. Color(255, 50, 0)); pixels.show();

// affiche le seul minsfor (int m=0; m

minpixels.setBrightness(mtimebright); minpixels.setPixelColor(m, pixels. Color(255, 255, 0)); minpixels.show(); } } Lire et traiter les informations TIME à partir de Serial

void readtime() // si nous avons déjà le premier "@" traiter les données à venir et stocker l'heure pour le TIME Lib{

ahour = Serial.parseInt(); aminute = Serial.parseInt(); asecond = Serial.parseInt(); un jour = Serial.parseInt(); unmois = Serial.parseInt(); un an = Serial.parseInt(); Serial.println("TIMESET"); Serial.print(ahour); Serial.print(": "); Serial.println(aminute); setTime(une heure, une minute, une seconde, un jour, un mois, un an); }

Tout effacer

void clearpixels() // désactive chaque PIXEL pour rafraîchir l'affichage{

pixels.begin(); minpixels.begin(); for(int i=0;ipixels.setPixelColor(i, pixels. Color(0, 0, 0)); minpixels.setPixelColor(i, pixels. Color(0, 0, 0)); pixels.show(); minpixels.spectacle(); } }

Étape 5: L'application Android et la connexion BT

L'application Android et la connexion BT
L'application Android et la connexion BT
L'application Android et la connexion BT
L'application Android et la connexion BT
L'application Android et la connexion BT
L'application Android et la connexion BT

Si vous avez réussi les étapes précédentes, vous pouvez maintenant câbler votre module BT. (j'espère que vous vous êtes assuré que les baudrates correspondent). n'oubliez pas de traverser les lignes TX & RX:-)

Téléchargez et installez l'application, associez-la à votre dongle BT, démarrez l'application, connectez-vous au dongle et synchronisez l'heure avec votre mobile. L'APP fait essentiellement la même chose que nous faisions auparavant. Il envoie simplement @hh/mm/ss/dd/mm/YYYY généré à partir de son heure système. J'ai également fourni le fichier APPInventor AIA et une explication sur la prochaine étape (pour ceux qui sont intéressés).

Étape 6: APPInventor

APPInventor
APPInventor
APPInventor
APPInventor

APP Inventor est assez facile à utiliser et vaut l'effort pour un programme aussi simple.

Si vous créez un nouveau projet, vous vous retrouverez sur l'écran DESIGNER. (image 1) C'est ici que nous ajoutons des tableaux, des boutons, des capteurs et d'autres éléments pour une utilisation ultérieure. Dans notre cas, nous avons besoin de:

  • un tableau (pour aligner tous les éléments)
  • un listpicker (pour la sélection de l'appareil BT auquel nous nous connectons)
  • un bouton (pour tirer le TIME sur BT)
  • certaines étiquettes (afficher l'heure et la date réelles)
  • le capteur d'horloge (rafraîchir l'heure)
  • le capteur client bluetooth (connectivité)

Les ajouter est aussi simple qu'un glisser-déposer ! Sur l'image 2, vous pouvez voir un aperçu de l'"APP" dans l'écran BLOCS. Eh bien, c'est essentiellement là que toute la "magie" se produit. En haut, j'ai créé des variables pour stocker l'heure et la date. Le premier bloc en haut à gauche initialisera l'élément listpicker avec la liste des appareils BT couplés. Avec le deuxième bloc, nous décidons quoi faire avec l'élément précédemment sélectionné. Eh bien, nous voulons nous y connecter.

Si vous regardez attentivement le prochain Block, vous pouvez voir que nous générons, si le statut BT "est connecté", le message BT. C'est la même chose que nous avons tapée auparavant dans le SerialMonitor. Le dernier bloc à gauche nous fournira les zéros de tête pour afficher l'heure (par exemple 01:08). Sur le côté droit, vous pouvez trouver notre dernier bloc, c'est là que nous utilisons l'élément d'horloge. Ici, nous mettons à jour les variables et les fusionnons avec la procédure des chiffres, cela se produira toutes les 1000 ms (réglage par défaut, modifiez-le en mode concepteur) et affichez les valeurs mises à jour avec l'étiquette. C'est juste une brève description, mais APPInventor est vraiment aussi simple que ça:-) Peut-être qu'il y a quelqu'un dans la communauté qui veut écrire un logiciel pour iOS ou WindowsPhone. (ce serait super)

J'espère que vous avez aimé mon Instructable ! Amusez-vous avec votre nouvelle horloge murale ! Peut-être que vous voulez l'offrir à quelqu'un que vous aimez (c'est la saison de Noël):-)

Et s'il y a des questions, n'hésitez pas à me les poser !

Meilleures salutations et joyeux Noël.

Conseillé: