Table des matières:
- Fournitures
- Étape 1: Utiliser un Oled
- Étape 2: plusieurs OLED
- Étape 3: Création d'un menu déroulant avec un encodeur rotatif
- Étape 4: Rassembler le code précédent
- Étape 5: PCB personnalisé avec frittage + schéma
- Étape 6: conception + découpe laser
- Étape 7: Assemblage
- Étape 8: Ne vous arrêtez pas ici
Vidéo: Réveil Oled : 8 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Il y a beaucoup d'horloges arduino/ESP32 qui circulent, mais utilisent-elles ces OLED agréables et nettes ?
J'expérimente avec des arduinos et des ESP32 depuis un certain temps maintenant, mais je n'ai jamais réussi à obtenir un produit fini. J'ai réalisé un réveil avec 4 OLED monochromes de 1,3 pouces. L'horloge dispose également d'une lampe de chevet à intensité variable et d'un port de chargement USB (personne n'a de prises de rechange à côté de son lit). Les OLED sont également dimmables, cela a été ajouté à la dernière minute après que mon projet a été menacé par ma petite amie. Si la luminosité n'est pas suffisante -dans la voix des copines-, je peux également fournir une version du code où 3 écrans sont alimentés entre certaines heures. L'objectif était de créer une horloge facile à entretenir, avec un look au-delà du "prototype". Lors de la fabrication de mon horloge, j'ai rencontré des difficultés que j'ai dû résoudre, c'est pourquoi je pense que cette instructable vaut la peine d'être partagée. L'horloge peut être faite avec peu d'outils, je n'aime pas les tutos "et pour la prochaine étape j'ai utilisé ma fraiseuse CNC à 10.000€/$".
Certaines choses qui seront expliquées dans ce instructable (in-structable-ception):
- Comment utiliser/câbler un écran OLED I2C avec arduino/ESP32
- Comment utiliser plusieurs objets I2C avec un seul arduino/ESP32
- Comment faire un menu "scrollable" à l'aide d'un encodeur rotatif (+ comment utiliser un encodeur avec un ESP32/arduino)
- Comment concevoir et commander un PCB personnalisé en utilisant fritzing.
- L'horloge utilise également un RTC (horloge temps réel), un pilote de led, un module de tension abaisseur… Je n'entrerai pas vraiment dans les détails car il y a vraiment beaucoup d'informations facilement disponibles pour ces modules.
Je tiens à préciser que je ne suis pas un programmeur professionnel. Le but de mon instructable est d'expliquer les points que j'ai mentionnés ci-dessus. La façon dont j'assemble le tout pour mon produit final n'est peut-être pas la manière la plus propre. C'est la manière qui m'a permis de garder une trace de tout cela.
Fournitures
Lorsque j'achète des fournitures, j'essaie toujours de peser l'importance de la qualité/de la documentation par rapport au prix. Mes fournitures sont un mélange de marques A et de pièces chinoises moins chères. Mouser est un excellent fournisseur si la qualité est importante, je commande chez Banggood/Aliexpress pour les pièces les moins chères.
- Une carte ESP32, j'ai utilisé la Huzzah32 d'adafruit, mais il y a plein d'autres options (moins chères). J'ai choisi le Huzzah32 car il est très bien documenté.
- 4 écrans 1,3 pouces I2C OLED (128x64, avec le pilote SH1106), les 0,96" sont plus courants mais pour ce projet je préfère les 1,3"
- Pilote femtobuck Sparkfun pour piloter la LED
- Horloge RTC, j'en ai utilisé une avec une pile au lithium
- Arduino nano
- Port USB 2.0 femelle (j'ai utilisé: SS-52200-002 de Stewart Connector)
- Jack DC femelle (j'ai utilisé: L722A de Switchcraft)
- Adaptateur 12V 3A DC (GST36E12-P1J de Mean Well)
- PCB personnalisé, en option mais cela rend le projet beaucoup plus compact et facilement réparable si une pièce meurt + plus de fiabilité car moins de fils (jlcpcb.com)
- Vis et boulons M3
- Inserts en laiton M3
- Module abaisseur 12V à 5V de Pololu (DF24V22F5)
- 3 watts alimentés avec dissipateur thermique
- Cavaliers
- Avertisseur sonore
- Multiplexeur I2C (TCA9548A d'adafruit)
- 2 encodeurs rotatifs (j'en ai essayé quelques-uns, tous ne fonctionnent pas avec mon code. Celui de "DFrobot" fonctionne et celui du PCB rond de "DIYmore" aussi. Mon code ne semble pas fonctionner pour le bouton poussoir du type KY-040. Mon réveil utilise celui de DIYmore car ils sont très faciles à monter sur panneau (pas de vis/trous supplémentaires nécessaires).
- Assortiment d'en-têtes femelles (facultatif)
- Bois pour le cadre: 18mmx18mmx2400mm
- Papier-calque
J'ai utilisé quelques outils (fer à souder, 3ème main, scie…) aussi, mais rien de vraiment exotique.
Étape 1: Utiliser un Oled
Pour utiliser les OLED, vous devez installer une bibliothèque. J'utilise la U8G2lib d'Oli Kraus, elle est très compréhensible et dispose d'un guide de référence avec des exemples clairs.
Pour brancher votre carte (ESP ou arduino), vous devez trouver des broches SDA et SCL. Ces broches sont les broches de communication I2C. Google pour le "brochage" de votre tableau spécifique si vous ne les trouvez pas.
J'ai ajouté un exemple de code. Le code fonctionne à la fois pour arduino et ESP32, mais l'ESP32 est moins susceptible de manquer de mémoire. Tous les oleds que j'ai essayés jusqu'à présent fonctionnent à la fois avec 3.3v (ESP32) et 5V.
Étape 2: plusieurs OLED
C'est là que mon projet commence à différer de beaucoup d'autres réveils. La plupart des arduinos/ESP n'ont qu'une ou deux broches I2C. Ce genre de limite l'utilisation de pièces I2C. Que faire si j'ai 4 capteurs I2C et que je souhaite afficher leurs lectures sur un écran I2C ? Entrez dans le multiplexeur. Le multiplexeur permet d'adresser 7 parties I2C différentes. Cela permet à mon ESP32 d'utiliser une horloge temps réel I2C et d'afficher l'heure en utilisant à nouveau I2C sur les 4 affichages (ou plus, ne me laissez pas vous arrêter).
J'ai ajouté un exemple de code pour l'ESP32, à partir de maintenant, je ne suis pas sûr que l'arduino puisse suivre. L'exemple utilise uniquement des écrans, il peut également s'agir d'autres éléments tels que des capteurs I2C, etc. Le principe est toujours le même, vous appelez le bon canal avec le "tcaselect(#);" fonction, puis vous exécutez le code nécessaire pour votre objet I2C.
Étape 3: Création d'un menu déroulant avec un encodeur rotatif
Tout d'abord, testez vos encodeurs. J'ai ajouté du code pour tester vos modules d'encodeur. Comme indiqué dans les fournitures: je n'ai testé avec succès mon code qu'avec les modules d'encodeur rotatif de DF robot et le module avec le PCB rond de DIYmore. Voir les images ci-dessus pour les bons encodeurs.
La bibliothèque que j'ai utilisée est celle-ci:
Le PDF que j'ai ajouté aide, espérons-le, à la structure de menu que j'ai utilisée pour mon horloge.
Faire fonctionner l'encodeur a été la partie la plus difficile pour moi dans ce projet. Il existe de nombreux encodeurs différents et de nombreuses bibliothèques différentes qui ne sont pas toujours compatibles avec l'ESP32. Mais je pense qu'un encodeur rotatif (fonctionnel) est une solution élégante si vous voulez saisir quelque chose. Si j'avais utilisé uniquement des boutons, j'en aurais eu besoin de plus d'un et le réglage de l'heure aurait demandé beaucoup d'appuis.
Étape 4: Rassembler le code précédent
Le titre résume en quelque sorte ce que j'ai fait. J'ai essayé partie par partie, puis j'ai tout mis en place. Mais parce que rien n'est jamais facile, j'ai dû changer certaines choses. La communication série est un processus lent. Cela gêne la lecture correcte de l'encodeur. Pour surmonter cela, j'ai ajouté des interruptions aux broches de l'encodeur. Le code pour lire l'encodeur est alors immédiatement appelé si vous poussez ou tournez l'encodeur.
Une fois que vous aurez compris comment les menus sont construits, vous constaterez qu'il est très facile d'ajouter ou de supprimer des fonctionnalités à votre guise. Vous aimeriez peut-être récupérer la météo ou l'heure actuelle sur Internet et l'afficher ?
J'ai laissé de côté beaucoup de ces idées parce que je voulais avant tout un temps-paix fiable. Celui qui ne fait rien automatiquement. Je travaille des heures très étranges dans une zone d'heure d'été. Chaque fois que l'heure est changée, j'ai peur de trop dormir. Mon téléphone changera-t-il automatiquement l'heure ? Est-ce que ma montre? Eh bien, mon horloge ne le fera pas, à moins que je ne la change moi-même. Mais peut-être avez-vous envie de mettre votre horloge dans la cuisine ? Scénario différent, ajoutez des fonctionnalités jusqu'à épuisement de la mémoire !
Étape 5: PCB personnalisé avec frittage + schéma
Point d'attention: Adafruit souligne que si vous pouvez alimenter le huzzah32 via la broche USB, vous devez faire attention à ne pas utiliser simultanément l'entrée d'alimentation micro USB. Mon PCB est alimenté via le dévolteur abaisseur, qui alimente ensuite le huzzah via la broche USB. Donc, débranchez toujours l'alimentation externe/retirez le huzzah de la carte lors du téléchargement.
J'ai décidé de souder des embases femelles sur le PCB car cela facilite le remplacement d'une pièce, ou l'ajout par exemple d'un capteur I2C supplémentaire. Cela me permet aussi de retirer facilement le nano ou l'ESP32 pour charger les programmes.
J'ai ajouté le fichier Frizting, je peux taper un roman ici, mais je pense que l'exemple parle le mieux. J'ai commencé par le schéma de l'ensemble de l'installation. Alors que Fritzing a beaucoup de pièces dans ses bacs, tout n'est pas là. Parfois, vous pouvez trouver la partie Fritzing sur Internet, parfois non. Les pièces que je n'ai pas pu trouver, je les ai simplement remplacées par une pièce de collecteur femelle. Si vous faites un clic droit dessus, vous pouvez modifier l'en-tête avec le nombre de broches que vous souhaitez et lui attribuer un brochage. Je l'ai fait avec toutes les pièces que je n'ai pas pu trouver. Comme presque tous les modules utilisent le même pas de 0,1 pouce (2,54 mm), cela vous donnera l'espacement correct pour la pièce.
Ensuite, vous passez à la vue PCB de l'application fritzing. Un PCB sera mis en place, si vous cliquez dessus, vous pourrez définir sa taille et choisir un PCB simple ou double couche. Le mien utilise 2 couches. Fritzing suggérera les connexions que vous avez faites dans la vue schématique. Le programme a une option d'autoroute, mais je ne l'utilise jamais. J'aime organiser manuellement mes connexions. Dans la vue PCB, les connexions jaunes sont dans la couche supérieure, les oranges sont dans la couche inférieure. Encore une fois, si vous cliquez sur la connexion, vous pouvez choisir ses propriétés.
Pour créer le PCB réel, vous devez l'exporter en tant que fichier gerber. Avant de faire cela, sous l'onglet "routage", vous pouvez vérifier les règles de conception. Si tout se vérifie, vous pouvez cliquer sur "exporter pour PCB". La plupart des fabricants demanderont un fichier gerber, alors sélectionnez exporter vers gerber.
J'ai commandé mon PCB auprès de JLCPCB, j'aime qu'ils vous indiquent immédiatement un prix. Il existe bien sûr de nombreuses autres options.
A propos du schéma: il y a 2 tensions qui sont utilisées. La LED et le femtobuck sont directement alimentés par l'alimentation 12V. Le reste est alimenté via le abaisseur abaisseur avec 5 volts.
Étape 6: conception + découpe laser
Pour ma première conception, j'ai essayé d'utiliser du chêne massif (je suis des cours de menuiserie), mais il est vite devenu clair que ce n'était pas idéal. Le bois est trop épais, ce qui rend difficile l'ajustement de vos pièces. Le multiplex de bouleau de 3 mm permet de fixer plus facilement les encodeurs et les écrans.
J'ai trouvé un service de découpe au laser en ligne, snijlab.nl, disponible pour les amateurs situés à Rotterdam (ils expédient en Belgique, aux Pays-Bas et en Allemagne). Sur leur site Web, vous pouvez télécharger vos dessins et ils indiquent immédiatement votre prix. J'ai utilisé Autocad, que j'ai au travail, mais le logiciel n'a pas vraiment d'importance. Il suffit que ce soit un dessin vectoriel (Vectr, Illustrator, Inkscape…). La plupart des magasins utilisent des couleurs pour déterminer si vous souhaitez couper ou graver.
Quelques éléments à garder à l'esprit:
- Max. dimensions de la découpeuse laser (j'ai dessiné un cadre autour de mes pièces)
- Min. distance entre les coupes
- Assurez-vous de ne pas tracer de doubles lignes, le laser fera un passage supplémentaire, ce qui vous coûtera plus cher.
- Lors du traçage au format PDF, assurez-vous de tracer 1:1. Vous ne voulez pas réduire ou ajuster au papier.
Étape 7: Assemblage
J'ai construit l'horloge autour d'un cadre en bois, les panneaux sont maintenus en place avec des vis M3 et des inserts dans le cadre. Si jamais je construisais une version 2, j'utiliserais des profilés en "L" en aluminium pour fixer les panneaux. Il était très difficile de percer avec précision les trous pour les inserts en laiton. Cela m'a pris très longtemps, pour un résultat juste acceptable. Cela signifierait bien sûr que le dessin découpé au laser doit être révisé. Je pense qu'avec des profilés en aluminium et juste des écrous et des boulons, vous obtiendrez un meilleur résultat.
Pour mieux diffuser la lumière, j'ai collé du papier calque à l'intérieur des perforations. Cela donne à la lumière une belle lueur.
Étape 8: Ne vous arrêtez pas ici
Le projet s'articule autour d'un ESP32, je l'ai à peine utilisé. Les lumières de ma chambre peuvent actuellement être contrôlées à distance à l'aide de blynk. Les contrôler avec l'horloge n'est qu'un petit pas de plus. Peut-être voulez-vous des affichages supplémentaires qui vous montrent la température autour de votre maison ? Ou des capteurs locaux (il y a encore des connexions I2C de rechange sur ce multiplexeur !). Peut-être régler l'heure/l'alarme via une application et Bluetooth ?
Dis-moi ce que tu as changé, ce que tu changerais, ce que je devrais changer…
Conseillé:
Le réveil à bulles rend le réveil amusant (ish): 7 étapes (avec photos)
Le réveil à bulles rend le réveil amusant (ish): Se réveiller avec un réveil bourdonnant est nul. Je fais partie de ces personnes qui n'aiment pas se réveiller avant le lever du soleil (ou depuis de nombreuses heures). Alors, quelle meilleure façon de se réveiller en s'amusant qu'une soirée bulle au lit ! Utiliser un arduino et un
Réveil matriciel LED (avec lecteur MP3) : 6 étapes (avec photos)
Réveil matriciel à LED (avec lecteur MP3) : ce réveil basé sur Arduino a tout ce que vous attendez de votre alarme - possibilité de vous réveiller avec chaque chanson que vous aimez, bouton snooze et facile à contrôler via trois boutons. Il y a trois blocs principaux - matrice LED, module RTC et
Réveil intelligent : un réveil intelligent fabriqué avec Raspberry Pi : 10 étapes (avec photos)
Réveil intelligent : un réveil intelligent fabriqué avec Raspberry Pi : Avez-vous déjà voulu une horloge intelligente ? Si oui, c'est la solution pour vous ! J'ai fait Smart Alarm Clock, c'est une horloge dont vous pouvez changer l'heure de l'alarme en fonction du site Web. Lorsque l'alarme se déclenche, il y aura un son (buzzer) et 2 lumières s'allumeront
Réveil facile : un réveil intelligent à base de Raspberry Pi : 6 étapes
Réveil facile : une lumière de réveil intelligente faite avec Raspberry Pi : IntroPour le programme Project1 je devais faire quelque chose. J'ai toujours été fasciné par la façon dont une lumière de réveil comme celle-ci vous aiderait à vous réveiller comme celles de philips. J'ai donc décidé de faire une lumière de réveil. J'ai fait la lumière du réveil avec un Raspberr
Balance intelligente bricolage avec réveil (avec Wi-Fi, ESP8266, Arduino IDE et Adafruit.io): 10 étapes (avec photos)
Balance intelligente bricolage avec réveil (avec Wi-Fi, ESP8266, Arduino IDE et Adafruit.io): Dans mon projet précédent, j'ai développé une balance de salle de bain intelligente avec Wi-Fi. Il peut mesurer le poids de l'utilisateur, l'afficher localement et l'envoyer vers le cloud. Vous pouvez obtenir plus de détails à ce sujet sur le lien ci-dessous : https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi