Table des matières:

Une horloge Retour vers le futur : 8 étapes (avec photos)
Une horloge Retour vers le futur : 8 étapes (avec photos)

Vidéo: Une horloge Retour vers le futur : 8 étapes (avec photos)

Vidéo: Une horloge Retour vers le futur : 8 étapes (avec photos)
Vidéo: « Retour vers le futur » : Michael J. Fox apparait fortement diminué par la maladie de Parkinson 2024, Novembre
Anonim
Une horloge Retour vers le futur
Une horloge Retour vers le futur

Ce projet a commencé sa vie comme un réveil pour mon fils. Je l'ai fait pour ressembler au circuit temporel de Retour vers le futur. L'affichage peut afficher l'heure sous différents formats, y compris celui des films bien sûr. C'est configurable via les boutons sur le dessus du boîtier mais aussi via une page web servie par le Raspberry Pi Zero à l'intérieur. Dans l'un des modes d'affichage, il affichera la météo locale (de ma station météo alimentée par Arduino) ainsi que les prévisions et tous les rappels quotidiens, configurés via l'interface Web. Il dispose également de l'audio grâce à un DAC et diffusera de la musique en utilisant le protocole AirPlay. Le son de l'alarme peut être n'importe quel fichier audio de votre choix. Il assombrira et illuminera automatiquement l'affichage à des moments donnés de la journée (par exemple, à l'aube et au crépuscule).

Étape 1: Contexte

L'année dernière, je cherchais un nouveau projet Arduino après avoir terminé mon tout premier, une station météo domestique. Mon fils de 11 ans venait de regarder les films Retour vers le futur pour la première fois, alors j'ai pensé que ce serait amusant de lui fabriquer un réveil qui ressemblait au circuit temporel de la Delorean pour son anniversaire. Ce n'est pas une idée nouvelle, il y a pas mal de projets similaires (celui-ci par exemple), alors j'ai pensé que ce serait un bon projet pour apprendre des autres et acquérir de nouvelles compétences.

La première version fonctionnait assez bien (elle n'était pas prête pour son anniversaire: je l'ai fait pour Noël) mais je suis devenu assez ambitieux dans ce que je voulais qu'il fasse et j'ai découvert que mon croquis continuait à courir dans la limite de mémoire de l'Arduino. J'avais également plusieurs petits modules matériels externes (WiFi, lecteur MP3, amplificateur audio, RTC, etc.), donc tout devenait un peu lourd. En fin de compte, j'ai décidé de passer à une plate-forme Raspberry Pi qui a simplifié le matériel et m'a permis d'intégrer beaucoup plus de fonctionnalités et de fonctionnalités.

Étape 2: Principaux composants matériels

À l'intérieur de la boîte

Voici les composants électroniques que j'ai utilisés. La plupart d'entre eux provenaient de Core Electronics en Australie, mais bien sûr, ils sont également facilement disponibles ailleurs:

  • 4 x écrans alphanumériques quadruples - jaune-vert
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC pour Raspberry Pi Zero
  • Ampli audio (PAM8403 IC)
  • Alimentation Raspberry Pi 3+
  • 4 x cavaliers - 0,1", 5 broches, 12"
  • Câble plat 40 broches (2 x 20)
  • Embase mâle GPIO Raspberry Pi
  • Raspberry Pi modèle B - En-tête enveloppé GPIO (2X20)
  • En-tête d'empilage GPIO pour Pi A+/B+/PI 2/PI 3 - extra-long 2X20
  • Embase mâle 4 x 5 broches
  • 2 petites enceintes 3W
  • 2 x câbles coaxiaux pour connexion audio analogique DAC vers Amp
  • Veraboard ou PCB personnalisé pour gérer Rpi à un ampli, LED, boutons
  • 5 x boutons-poussoirs momentanés
  • 4 borniers à vis 2 voies montables sur PCB

La boîte

  • Bits et morceaux de MDF, vis et boulons pour faire le "châssis"
  • Perspex teinté vert, fournisseur local
  • Styrène, colle à modeler, peinture en aérosol (couleur aluminium) d'un magasin de bricolage local
  • Stickers (fichier disponible sur demande - imprimé par Redbubble)

Étape 3: Tout assembler

Mettre tous ensemble
Mettre tous ensemble

L'affichage LED de l'horloge se compose d'affichages alphanumériques de 16x14 segments, heureusement du même nombre de caractères que le circuit horaire Retour vers le futur. Alors que seuls les trois premiers caractères doivent être alphanumériques et que le reste pourrait être des affichages numériques à 7 segments pour émuler l'accessoire du film, j'ai décidé de les rendre tous alphanumériques pour permettre une certaine flexibilité dans ce qui pourrait être affiché et pour les garder tous même. Les quad-sacs à dos Adafruit sont une excellente solution ici et peuvent être exécutés sur le bus I2C du Raspberry Pi. Plus d'informations sur ces unités et comment les câbler peuvent être trouvées ici sur le site Web d'Adafruit. La seule chose légèrement non standard que j'ai dû faire était de changer les adresses de trois d'entre eux afin que chaque sac à dos soit unique.

Pour jouer de l'audio (en stéréo), j'ai inclus le DAC Pimoroni pHAT et un amplificateur audio stéréo 2 x 3W basé sur la puce PAM8403. Le pHAT DAC est vraiment facile à connecter au Pi. J'ai mis un en-tête mâle 2 x 20 broches sur le Pi et un en-tête d'empilage GPIO sur le DAC afin qu'ils puissent être branchés l'un sur l'autre. Les broches mâles de l'en-tête passent par le haut du DAC, ce qui me permet de faire passer un câble plat avec des connecteurs femelles, initialement vers une sortie Raspberry Pi pour le test de la planche à pain, mais finalement vers un en-tête enveloppé sur un PCB sur mesure.

Pour l'amplificateur audio, il existe de nombreuses options (y compris simplement obtenir la puce et assembler la vôtre). Celui-ci a la possibilité de couper la sortie en changeant simplement l'état de l'une des broches (haut est activé, bas est désactivé) et je l'ai câblé pour que cela puisse être contrôlé à partir du Pi. Lors de mes premières tentatives de câblage, j'ai découvert beaucoup de bruit de fond lorsque l'audio était activé. Après avoir beaucoup joué avec la mise à la terre, j'ai finalement essayé de déplacer la tension d'alimentation d'entrée du 5V du Pi à 3,3V et cela l'a corrigé. Je suppose qu'il y a beaucoup de bruit généré par les divers signaux numériques qui volent, mais il semble que l'alimentation 3,3 V soit isolée d'une manière ou d'une autre.

Les autres connexions incluent l'audio analogique du DAC à l'amplificateur (j'ai utilisé un câble coaxial ici pour aider à gérer la capture du bruit) et la sortie audio vers une paire de petits haut-parleurs 3W qui tiennent dans le boîtier. Il existe également des connexions GPIO pour les quatre commutateurs momentanés sur le dessus de la boîte et j'ai câblé un bouton momentané aux broches "RUN" de réinitialisation matérielle (voir la section Connexions supplémentaires sur cette page). Le bouton de réinitialisation est monté hors de vue à l'arrière du boîtier. Voici un schéma montrant les connexions:

Étape 4: Un PCB personnalisé

Un PCB personnalisé
Un PCB personnalisé

Bien qu'il n'y ait rien de trop compliqué dans le circuit, il y a pas mal de câblage et une planche à pain peut ressembler assez rapidement à des spaghettis. J'ai donc conçu un PCB pour garder tout sous contrôle. C'est une planche simple face faite maison et j'ai un ami pour m'aider à la fabriquer. Après qu'il ait été fait et câblé, j'ai réalisé que j'avais oublié d'inclure les connexions pour les borniers pour l'audio et j'ai ensuite fait un changement pour déplacer l'alimentation de l'ampli audio de 5V à 3,3V, donc ce n'est pas idéal et j'ai dû virer dessus certains Veroboard pour permettre les connexions audio. De plus, les brochages de la carte d'ampli audio sont à une séparation non standard (ils varient même entre les broches), donc la connexion pour cela au PCB principal est un peu horrible avec 11 fils de connexion courts d'environ 1 cm.

Si je faisais une autre carte, j'inclurais toutes ces modifications et changerais également le connecteur des quatre boutons pour quelque chose d'un peu plus joli. Le DAC et le Pi s'empileraient directement sur le dessus, donc aucun câble plat n'est nécessaire. Le diagramme ci-dessus montre à quoi cela pourrait ressembler.

Étape 5: L'enceinte

L'enceinte
L'enceinte
L'enceinte
L'enceinte
L'enceinte
L'enceinte

Je voulais faire une enceinte qui ressemblait à une rangée du circuit du temps du film. Trois rangées d'écrans LED auraient été trop pour un réveil et auraient considérablement augmenté le coût. J'ai pensé faire le boîtier en aluminium mais je n'ai aucune compétence dans ce domaine. J'ai cependant fait pas mal de modèles en plastique dans ma vie et j'ai une certaine expérience dans le travail du bois, alors j'ai décidé de faire un cadre en MDF pour monter les LED et les haut-parleurs et de fixer le plexiglas à l'avant, puis de le recouvrir d'un styrène à 5 côtés boîte avec une lunette sur le devant, peinte dans une peinture en aérosol métallisée en aluminium. Le plastique et la peinture ont été obtenus auprès d'un magasin de modélisme local. J'ai examiné de près les étiquettes sur l'accessoire du film et j'ai fait de mon mieux pour copier les couleurs, le type de police et la taille. J'ai utilisé Photoshop pour créer les étiquettes et les ai imprimées sous forme d'autocollants de Redbubble.

Les images ci-dessus montrent:

  1. L'avant du châssis MDF. Les 4 sacs à dos LED sont montés à l'avant avec du plexiglas teinté vert
  2. À l'intérieur de la boîte. Sacs à dos tous montés et alignés, Raspberry Pi et PCB personnalisé, haut-parleurs de chaque côté.
  3. Câblage installé et coque extérieure prête à fonctionner. C'était un peu pressé !

Étape 6: Configuration du Raspberry Pi

J'ai eu quelques problèmes de compatibilité avec Raspbian Stretch (qui auraient pu être résolus si j'avais persisté) mais Jessie fonctionne très bien avec, alors j'ai décidé d'y aller.

J'ai configuré le Pi en tant qu'unité sans tête avec accès VNC et SSH. Cela aurait pu être fait sans jamais brancher un clavier ou un moniteur, mais je viens d'emprunter le téléviseur et de récupérer un clavier, et je l'ai fait fonctionner sans tête assez rapidement. A partir de là, j'ai à peu près utilisé VNC à partir de là.

Mon code d'horloge utilise Python 2.7.9 et s'appuie sur un certain nombre de bibliothèques, énumérées ci-dessous. En plus de cela, j'utilise un serveur Web Flask et MQTT pour le contrôle à distance et Shairplay pour le streaming de musique. Je viens de suivre les notes d'installation en ligne pour tout cela et je n'ai eu aucun problème. Voici les bibliothèques python et autres packages, etc. que je devais installer avec des liens vers les notes d'installation ou simplement la commande que vous devez exécuter pour l'obtenir:

Bibliothèques Python

  • Adafruit_LED_Sac à dos
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaaudio
  • paho.mqtt.client (pip install paho-mqtt)
  • flacon (apt-get install python-flask)

Autres forfaits, etc

  • moustique (apt-get install moustique)
  • shairport
  • Le site Web de Pimoroni a une bonne documentation sur la configuration du DAC, donc je viens de courir avec ça.

Étape 7: Logiciel

Image
Image
Logiciel
Logiciel

Le code d'horloge a été écrit en Python et utilise le threading pour jouer l'alarme et les bips occasionnels en arrière-plan sans bloquer les mises à jour de l'affichage. J'ai utilisé la bibliothèque ConfigParser et le fichier de configuration qu'elle gère est lu et écrit par le code d'horloge ainsi que l'application Web Flask afin que chaque fois que la configuration est modifiée via l'interface Web ou l'horloge, elle soit synchronisée. Le logiciel d'horloge comprend également un courtier MQTT pour permettre le contrôle du mode d'affichage et la mise en sourdine à contrôler à distance. Mon arrière-pensée est finalement d'écrire une application iOS pour la télécommande mais l'interface web fonctionne assez bien pour l'instant.

La première image ci-dessus montre à quoi ressemble l'horloge dans ses différents modes d'affichage, et il y a une courte vidéo la montrant en mode défilement.

Bien que le code ne soit pas joli à regarder, il est agréable et stable. Je suis heureux de l'envoyer à tous ceux qui en font la demande et je le mettrai en ligne lorsqu'il sera mieux organisé et commenté.

L'application Web

L'image suivante montre à quoi ressemble l'interface Web de l'horloge. Il y a aussi des pages de configuration et de contrôle et celles-ci permettent de jouer beaucoup plus facilement avec l'horloge sans trop écraser les boutons:-).

Étape 8: Et ensuite ?

Et ensuite ?
Et ensuite ?

Un décodeur de métadonnées Python shareport est disponible, je pense donc que je vais ajouter du code pour afficher des informations telles que le titre et l'artiste lorsque la musique est en cours de lecture. Il serait également assez facile de calculer les heures de lever et de coucher du soleil afin que l'affichage puisse être automatiquement éclairé et atténué, plutôt que de le régler manuellement. Peut-être que l'ajout d'une fonction de radio Internet serait également amusant. L'affichage à défilement pourrait également être plus configurable.

Conseillé: