Project Showcase '14

25

Le logo est un dérivé du logo de la communauté Arduino sous licence Creative Commons CC-SA-BY-NC 3.0

Mise à jour: Annonce des gagnants

Les gagnants du concours ont été annoncés. Veuillez consulter le message Meta pour plus de détails .

Pour célébrer les 10 ans d'Arduino , nous sommes fiers d'annoncer le premier événement sur Arduino Stack Exchange.

Sortez vos cartes et votre équipement de soudage, déterrez les circuits intégrés et les résistances. Le premier concours Arduino Stack Exchange approche à grands pas. Nous chercherons des projets intéressants qui sont construits en utilisant Arduinos. Le concours vise à partager, discuter et fournir des commentaires sur les projets sur lesquels vous et d'autres membres travaillez. Voir l'annonce

Détails:

  • Le prix est un t-shirt officiel Stack Exchange
  • Limite de deux entrées par personne. Si plus de deux sont fournis, seuls les deux premiers seront pris en compte.
  • Les clones sont autorisés.
  • Les projets à considérer seront acceptés jusqu'au 29 mars 2014 à 4h00 UTC. La question restera ouverte au cas où quelqu'un voudrait montrer son projet réalisé lors de l'Arduino Day 2014.

Visitez le message Meta pour discuter de cet événement et de plus amples informations.

Format de réponse

Vous pouvez publier jusqu'à deux projets (sous forme de deux réponses distinctes) en tant qu'inscriptions au concours. Toutes les entrées supplémentaires seront supprimées. Pensez à suivre le modèle suivant pour les entrées:

Titre du projet

Très brève description

La description

Quel est ton projet? Qu'est ce que ça fait? Quel problème résout-il?

Conception

Éléments à inclure dans cette section:

  • Schémas et autres documents de conception. Fritzing est un bon outil pour dessiner des schémas de maquette comme celui montré dans le logo du projet ci-dessus.
  • Composants utilisés pour construire le projet
  • Photos ou vidéo

Conclusion

Dernières pensées. Qu'avez-vous appris de ce projet? Que feriez-vous différemment si vous deviez recommencer?

Vous pouvez copier / coller le texte suivant si vous souhaitez utiliser ce modèle.

# Project Title
**Very Brief Description**

# Description
What is your project? What does it do? What problem does it solve?

# Design
Things to include in this section:

- Schematics and other design documentation. [Fritzing][8] is a good tool for drawing breadboard schematics like the one shown in the project logo above.
- Components used to build the project
- Pictures or video

# Conclusion
Final thoughts. What did you learn from doing this project? What would you do differently if you had to start over?

Prix

Il y a deux prix! Le gagnant sera la soumission recevant le nombre maximum de votes positifs (les votes négatifs ne comptent pas) et recevra un T-shirt Stack Exchange *! Il y aura aussi quelque chose pour le finaliste. Le finaliste sera décidé à la discrétion des organisateurs de l'événement.

* Certaines restrictions peuvent s'appliquer. L'expédition internationale peut prendre quelques semaines.

Où dois-je soumettre mes projets?

Postez vos projets comme réponses à ce post.

sachleen
la source
Quelle est exactement la qualification pour être un projet "arduino"? J'utilise optiboot dans de nombreux endroits, mais je ne peux pas voir cela comme étant "arduino", car c'est juste un projet que la chaîne d'outils arduino utilise. À moins d'utiliser un tableau dans le facteur de forme arduino, je ne vois pas de moyen clair de délimiter entre "arduino" et "non-arduino", sauf si vous exigez explicitement que le projet soit compilé à l'aide de l'éditeur de texte arduino, et cela disqualifiera probablement tous les projets décents puisque l'éditeur Arduino est horrible, et tous les bons codeurs ont cessé de l'utiliser depuis longtemps.
Connor Wolf
@FakeName prenons cette discussion au Meta Post
sachleen

Réponses:

14

Boîte à quêtes avec état

Un boîtier alimenté par GPS qui vous fait visiter quelques endroits avant d'ouvrir

La description

Il est similaire à questbox , mais il stocke un petit nombre d'informations dans l' EEPROM , vous devez donc visiter deux ou trois endroits différents avant son ouverture.

Conception

Matériel nécessaire:

  • Arduino Uno
  • Reverse Geocache Version 2 (ou un protoshield)
  • Module GPS GlobalSat EM-406A
  • LCD bleu 2 × 8 avec connecteur et câble
  • Servomoteur Hitec HS-55
  • 4-40 tige de poussée et chape pour verrou (certaines versions fournissent une tige en Z à la place)
  • 2 supports de piles AA
  • Bouton poussoir métallique avec LED bleue intégrée et câble à 4 broches
  • Interrupteur basse tension Pololu
  • Régulateur boost Pololu 5 V
  • Connecteur JST pour module GPS EM-406A
  • Broches d'en-tête droites et à angle droit pour les connecteurs d'affichage, de servo et de bouton-poussoir
  • Deux résistances pour la limitation du courant et le réglage du contraste de l'affichage
  • Deux petits condensateurs pour le lissage de puissance
  • plus grand condensateur pour circuit de contraste d'affichage

Coût total du matériel: 137 $ + expédition

Matériaux supplémentaires:

  • Une jolie boite
  • Colle époxy, bois pour recouvrir les pièces, outils

Vous pouvez trouver des instructions de montage dans la page du cadran solaire (vous pouvez acheter la plupart des matériaux d'eux)

Je vais télécharger du code avec état et poster un lien ici, malheureusement je n'aurai pas tout le matériel nécessaire à temps, donc ce n'est qu'une idée :)

Code écrit jusqu'à présent :

Inspiration:Boîte de quête d'origine

Conclusion

J'ai appris à intégrer de nombreux composants et bibliothèques tous ensemble, je vais devoir voyager un peu pour le tester :)

Le budget peut être réduit un peu en changeant un peu le concept:

  • Changer de GPS avec un clavier numérique: le «joueur» doit deviner / obtenir un code au lieu de se rendre à un endroit
  • L'interrupteur et le régulateur Polulu peuvent être échangés contre un relais à verrouillage avec couplage capacitif
hithwen
la source
11

Économiseur d'énergie pour l'utilisateur de PC distrait

Cet appareil allume / éteint mes lumières de bureau lorsqu'il fait sombre (ish) et en synchronisation avec l'écran de veille de mon PC.

La description

Le projet n'est rien de plus qu'une combinaison d'un capteur photosensible, d'un relais et d'un code intelligent qui surveille l'économiseur d'écran sur mon PC. Au crépuscule et lorsque l'économiseur d'écran n'est pas activé, il allume les lumières sur mon bureau. Lorsque je quitte ensuite mon bureau, l'économiseur d'écran s'active, ce qui déclenche à son tour l'extinction de la lumière du bureau. Lorsqu'il y a suffisamment de lumière pendant la journée, les lumières ne sont pas allumées du tout. Le problème résolu est de réduire le gaspillage d'énergie dû à l'allumage de l'éclairage de mon bureau lorsque je quitte la pièce.

Conception

Parce que la puissance des microcontrôleurs / Arduino ne nécessite qu'un peu de matériel supplémentaire pour créer un projet utile. Il en va de même pour ce projet où le matériel est un peu plus que:

  • Un Arduino
  • Un couple de blindages à vis pour connecter les composants externes
  • Un LDR en série avec une résistance pour mesurer la lumière ambiante
  • Une carte relais pour allumer et éteindre les lumières alimentées par le secteur
  • Un condensateur 10 μF de GND à RST pour empêcher la carte d'être réinitialisée et accidentellement programmée.

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

Conclusion

J'ai appris à interfacer le PC via la liaison série USB avec Arduino et à lire l'état actuel de l'économiseur d'écran sur mon PC. Si je recommençais, j'utiliserais un contrôleur beaucoup plus petit car je n'ai vraiment besoin que d'une seule sortie numérique et d'une seule entrée analogique. Basez probablement le projet sur V-USB . Arduino est cependant excellent pour la preuve de concept (PoC) rapide et facile. (Le PoC est sur mon bureau depuis au moins deux ans déjà).

jippie
la source
Ce serait cool de voir des photos de votre carte finale et de votre configuration. Quel est le temps de réponse? Instant? Après une minute?
sachleen
@sachleen Le démon sur mon PC qui interroge l'économiseur d'écran s'exécute toutes les 30 secondes lorsque l'écran de veille est désactivé (lorsque je travaille sur mon PC) et toutes les 5 secondes lorsqu'il est activé. Je peux augmenter cette vitesse, mais cela influence la charge du processeur et cette consommation d'énergie ... Il y a aussi un condensateur attaché pour empêcher l'Arduino de se réinitialiser et d'être accidentellement programmé.
jippie
@sachleen comme le crépuscule tombe lentement au fil du temps, ces 30 secondes ne sont pas vraiment un problème. Personne ne remarque la différence d'obscurité en 30 secondes. Dans les 5 secondes suivant le déplacement de ma souris ou la frappe de mon clavier lorsque je reviens, les lumières s'allument. Il y a une légère hystérésis entre ce qui est considéré comme sombre et clair, pour empêcher les lumières de s'allumer / s'éteindre toutes les secondes quand il fait lentement ou assez sombre pour être activé.
jippie
Vous devez le modifier pour le réduire à 50% pendant 10-15 secondes afin de ne pas être complètement dans le noir et cela vous donne un petit "avertissement"
Anonymous Penguin
@AnnonomusPerson Je change le côté 240VAC d'un SMPS qui est spécifié 100-250VAC. Ça ne va pas arriver, j'ai peur car je ne veux pas changer de côté secondaire. Belle idée cependant, je peux peut-être ajouter une petite LED blanche intelligente.
jippie
8

Je pense que ce genre de chose correspond à peine aux règles, mais c'est assez intéressant pour que je pense que je le publierais de toute façon.

Générateur d'horodatage synchronisé par GPS de haute précision à des fins d'acquisition de données.

Il s'agit d'un projet assez intéressant qui est destiné à être utilisé pour fournir un moyen facile de synchroniser plusieurs systèmes d'acquisition de données indépendants.

Fondamentalement, je travaille dans un laboratoire de recherche, et nous avons souvent des instruments qui ont plusieurs systèmes d'acquisition de données indépendants, qui peuvent être physiquement séparés jusqu'à 50 pieds. Nous devons être en mesure de corréler l'heure à laquelle les échantillons de chaque système ont été prélevés, ce qui peut être difficile si vous souhaitez résoudre les temps d'échantillonnage avec un grand degré de précision. En utilisant quelque chose comme un système d'acquisition de données USB, seule la latence USB peut introduire plusieurs centaines de millisecondes de latence inconnue, qui peuvent varier d'une acquisition à l'autre.

La solution précédente était un compteur parallèle 24 bits qui était simplement mis en bus partout, nécessitant un énorme faisceau de câbles, et était une sorte de douleur dans le cul.

Ce système utilise un module GPS de synchronisation spécialisé qui peut synthétiser des horloges de fréquence arbitraires, qui sont verrouillées en phase et en fréquence sur les horloges atomiques des satellites GPS.

Le MCU est chargé de lier les messages de données GPS (j'ai dû étendre et optimiser fortement un analyseur de protocole existant pour les données GPS). Le GPS est configuré pour utiliser un protocole binaire propriétaire, et tout est analysé par l'analyseur que j'ai écrit.

Le projet a subi un certain nombre de révisions (photo ci-dessous).

Conception

Révisions! entrez la description de l'image ici
Rev 1: n'a jamais fonctionné, car j'espérais initialement utiliser un logiciel dPLL sur un GPS beaucoup moins cher, pour synthétiser une horloge de fréquence plus élevée à partir de la seule sortie 1 PPS. Il est probablement possible de le faire fonctionner, mais l'investissement en temps ne le rendait pas intéressant. (et je suis un codeur trop merdique)

Utilisé une hélice MCU de parallaxe. Le manque de langues compilées décentes était également un problème majeur.


entrez la description de l'image ici
Rev 2: Passé à un ATmega2560. Travaillé, avait beaucoup d'aspects de conception géniaux hérités de la première rév. Principalement, l'utilisation continue de registres à décalage pour la sortie 32 bits, malgré le nombre plus que suffisant d'E / S sur l'ATmega2560.

Première carte qui a exécuté Optiboot et a été en fait entièrement programmée à l'aide de la chaîne d'outils Arduino standard, avant que je ne m'énerve et ne commence à modifier la chaîne d'outils pour mieux l'adapter à mes besoins.


entrez la description de l'image ici
Rev 3: a également fonctionné. Le câblage corsé est dû au fait que cette carte incorporait un concentrateur USB intégré pour réduire le nombre de ports USB requis (l'interface FTDI nécessite 1 USB et le GPS a également une interface USB). Malheureusement, le GPS ne serait pas correctement énuméré, bien que le périphérique FTDI fonctionne correctement, et j'ai utilisé ce hub ailleurs sans problème. Bizarre.

Je n'ai pas de débogueur USB approprié, j'ai donc laissé tomber complètement le concentrateur USB, plutôt que d'essayer de résoudre le problème. De toute façon, l'USB GPS n'est pas vraiment utilisé en dehors de la configuration.


entrez la description de l'image ici
Rev 4: Version semi-finale ATmega2560. Ajout d'un écran LCD pour l'état du GPS, tripoté de LED et ainsi de suite. En outre, de meilleures empreintes pour les super-condensateurs possibles pour maintenir l'état du GPS lorsqu'ils ne sont pas alimentés.

Ceci est la dernière version d'Optiboot.

MStimeest le MSTOW, ou Millisecond-Time-Of-Week, qui est le nom de la valeur de données GPS qui est sortie sur l'horodatage. Il s'agit d'une variable 32 bits qui s'incrémente une fois par millisecondes et se renouvelle chaque semaine. C'est une partie plus obscure de la norme GPS.

ITOWest une autre valeur liée au GPS, étant une valeur qui correspond au signal 1PPS. La corrélation entre les deux ne se reflète pas correctement sur l'écran LCD, car je n'ai pas le temps CPU pour mettre à jour l'écran LCD à la vitesse que j'aimerais. C'était en fait l'une des principales améliorations apportées à la mise à niveau des appareils Xmega.


entrez la description de l'image ici
Rev 5: commutateur d'architecture complet. Utilise désormais un processeur ATxmega128A1U. Plus vraiment "Arduino" du tout, mais la possibilité d'avoir plusieurs niveaux d'interruption sur la série de processeurs xmega m'a permis d'améliorer considérablement la structure du code.

Les deux bodge-wire sont de moi en train d'expérimenter, la planche a bien fonctionné sans eux aussi.

Avoir hâte de:

Rév 6! entrez la description de l'image ici
Ajoutez la possibilité d'utiliser différentes tailles d'écran LCD, plus de protection ESD sur la connexion de l'antenne GPS (qui était un problème), la possibilité d'utiliser une batterie CR2032 pour maintenir l'horloge GPS au lieu des super-condensateurs.

En outre, un meilleur étiquetage des LED de débogage et d'état.

entrez la description de l'image ici
Et en bonus Nyan-Cat!

entrez la description de l'image ici

(Ces cartes sont en cours de fabrication pour le moment. Quand je les obtiendrai, j'ajouterai des photos de la vraie carte.)


J'ai fait des tests de longue durée entre deux des cartes ATmega2560, et sur 72 heures, l'erreur de temps RMS entre les deux unités était de ~ 20 uS. C'était aussi avec deux antennes complètement indépendantes. Mon objectif de conception était <1 ms, donc je suis sacrément satisfait de cela.

Dans l'ensemble, je pense que cela illustre bien comment Arduino peut être un outil utile pour le prototypage précoce de "vrais" produits / systèmes. Je l'utilise pour lancer une version de test initiale avec un minimum d'effort, et quand je suis convaincu que l' idée fonctionnera, je mets en fait le travail pour migrer vers une implémentation entièrement personnalisée et spécifique.


Fichiers de conception:
https://fake-server.no-ip.org/svn/FPGAStuff/DAQ%20systems/
(dans la série de répertoires "GPS Timestamp").
(Remarque: les fichiers proviennent d'Altium Designer. Ce ne sont pas des fichiers Eagle).

Code source:
https://fake-server.no-ip.org/svn/Programming/Code/AVR/
Encore une fois, dans la série de répertoires "gpsTimeStamp".

Désolé pour les photos de téléphone portable de merde.

Connor Wolf
la source
Pourriez-vous s'il vous plaît réduire le nombre de photos? 3-4 devrait être suffisant pour faire passer l'idée. Le chargement sur des connexions lentes prend un temps assez long.
asheeshr
7
@AsheeshR - Je suis fortement en désaccord. Je pourrais laisser tomber une des images de la dernière révolution, mais avoir la progression de la conception du système est, je pense, très utile.
Connor Wolf
1
S'amuser avec la sérigraphie?
TheDoctor
Oooh, PCB vue 3D. Aww, c'est Altium et assez cher? : $ Plutôt amusant de voir ces projets, ou de voir les projets que font les autres ..
Paul
7

Sonic Ray Gun

Deux projets d'enfants

Je travaille avec un couple d'enfants éduqués à la maison et nous nous amusons beaucoup avec un arduino. Leur premier projet était une fausse bombe, comme vous le voyez dans les films, avec un compte à rebours LCD et un classique "coupez-vous le fil rouge ou bleu?" problème de type.

Le projet deux a commencé par leur montrer l'exemple de toneMelody et un petit haut-parleur. Ils ont rapidement découvert que si vous augmentez la fréquence à 15 kHz, c'était plutôt ennuyeux pour les adolescents. Une heure plus tard, ils avaient amélioré la conception avec une tasse, du papier toilette et un interrupteur fabriqué à partir d'un trombone faisant un pistolet à rayons sonic directionnel.

Malheureusement pas de photos.

Conclusion

Ne laissez pas les enfants sans surveillance avec un arduino.

Salix alba
la source
3
Pouvez-vous le décrire un peu plus (code, Fritzing, etc.?)?
Pingouin anonyme
7

(faux) Linux sur Arduino

J'ai récemment acquis un petit écran LCD composite, avec lequel j'ai rapidement commencé à jouer en utilisant la bibliothèque Arduino TVout. Qu'est-ce qui est venu ensuite? Linux!

La description

En jouant avec mon écran de télévision et la bibliothèque TVout, j'ai découvert qu'il existe un gestionnaire de terminal prédéfini pour le téléviseur. J'ai rapidement commencé à essayer de l'utiliser comme terminal TV connecté à un clavier PS / 2. Il y a eu quelques problèmes avec la bibliothèque PS / 2 que j'ai utilisée, je l'ai donc transférée pour utiliser la bibliothèque USB sur mon Mega ADK avec un clavier USB. Cela a fonctionné beaucoup mieux. Maintenant pour le stockage.

Mon bouclier de carte SD n'est pas compatible avec ma Mega, donc je l'ai câblé un peu au hasard au SPI à la fin de la carte. J'ai écrit la gestion des commandes pour effectuer quelques tâches comme lister les fichiers et trouver la taille du disque, l'espace libre, etc. L'ensemble complet n'est en aucun cas terminé, mais je suis satisfait des progrès que j'ai réalisés.

Le code sera finalement déplacé vers Github, regardez les commentaires.

Conception

zoom arrière pic

écran clse up

Défis

J'ai eu beaucoup de mal à concaténer les caractères entrés dans la chaîne stockant la commande actuelle parce que je ne faisais pas un casting correct. Une fois que j'ai compris cela, j'avais également besoin de résoudre le problème où certaines clés imprimaient des déchets aléatoires à l'écran. Cela a été causé par la lecture de la mémoire avant les définitions des lettres, donc quelques-uns l'ont iféclairci.

Conclusion

Je suis très satisfait du code. Une fois que j'aurai ajouté quelques utilitaires supplémentaires, je le mettrai sur Github, alors regardez les commentaires. Dans l'ensemble, c'était un projet très amusant. J'ai appris à utiliser Stino dans le processus.

Le docteur
la source
Cela semble intéressant. J'aimerais vraiment voir votre code bientôt!
2014
Code!! Code!! github.com/red-green/fakeLinuxonArduino
TheDoctor
L'écran LCD a-t-il coûté cher?
Pingouin anonyme
@AnnonomusPerson seulement 17 $: amazon.com/3-5-Inch-TFT-Monitor-Automobile/dp/B0045IIZKU/…
TheDoctor
@AnnonomusPerson je l'ai démonté car il était trop volumineux
TheDoctor
5

ShiftLCD

Carte basée sur AVR, compatible Arduino, qui se monte à l'arrière d'un écran LCD de 8x1 à 20x4 caractères.

La description

Je viens de concevoir cette carte et la bibliothèque personnalisée pour la rendre plus facile à utiliser et LCD. Bien qu'ils soient assez faciles à utiliser pour le moment. Il réduit le nombre de broches de sortie utilisées de 6 à 3. Il a également la possibilité d'étendre les E / S en ajoutant plus de registres à décalage à celui qui pilote l'affichage. Le processeur utilisé est un ATTiny45 ou ATTiny85 qui a, après utilisation du registre à décalage, les broches numériques 1 (PWM) et 4 disponibles et la broche analogique 2 (même broche que la broche numérique 4) disponible.

Conception

Schématique Rendu OSH Park Conseil non soudé

Défis

Un défi imprévu auquel j'ai été confronté était lorsque j'ai commencé à utiliser les broches numériques 0-2 pour exécuter le registre à décalage, il s'agissait également des broches de programmation (MISO, MOSI, SCK). Donc, chaque fois que je reprogrammais l'appareil, l'écran LCD recevait un tas de messages de charabia où l'alimentation devait être coupée afin de réinitialiser l'affichage. J'ai résolu ce problème en déplaçant la broche de verrouillage des registres à décalage vers la broche numérique 3 qui n'est pas une broche de programmation. La résolution de ce problème a également résolu un autre problème pour moi car lorsque j'ai déplacé la goupille de verrouillage, elle a ouvert la broche numérique 1 qui avait une utilisation PWM, ce qui permettait de faire plus de choses avec la carte.

Conclusion

Certes, ce n'est peut-être pas le produit ou l'idée la plus cool, il a toujours ses utilisations. La réponse à la question directement: "Qu'avez-vous appris en réalisant ce projet?" J'ai appris à concevoir du début à la fin un circuit imprimé. Si je pouvais faire quelque chose de différent, cela aurait été d'utiliser des pièces de montage en surface au lieu d'un trou traversant, mais là encore, ce n'est qu'un prototype, une carte unique.

Jesse Laning
la source
Comment avez-vous programmé votre ATtiny? Quel code était impliqué? IDE? (Veuillez simplement commenter, ne modifiez pas votre message. )
Anonymous Penguin
@AnnonomusPerson On dirait que la personne qui a posté ce que j'ai fait avant a supprimé son commentaire, c'est donc là que j'ai obtenu les choses nécessaires (fichiers IDE Arduino et schéma de programmation) pour programmer ATTiny. highlowtech.org/?p=1695
Jesse Laning
Pourquoi utiliser le montage en surface? Souder un trou traversant à la maison est beaucoup plus facile? Je pense que SMD est uniquement pour les cycles de production, ou y a-t-il autre chose?
Paul
5

Robot poussant les boutons.

Un robot de tir laser à télécommande à quatre roues de huit livres qui pousse les boutons.

La description

J'ai réalisé ce projet au cours de la dernière année scolaire. J'étais en cours de robotique et nous avons décidé d'organiser un concours. Chaque équipe créerait un robot doté d'un gros bouton et d'un moyen d'appuyer sur d'autres boutons. À la fin de l'année, nous aurions le concours final, où les trois robots essaieraient de pousser les boutons l'un de l'autre.

À la fin de l'année, mon robot ne fonctionnait que partiellement. Chaque partie du robot fonctionnait à un moment donné, mais entre un Arduino frit, des pilotes de moteur frits, une organisation de code terrible, et moi étant la seule personne de mon équipe à travailler sur le robot pendant plus de cinq heures au total, j'ai ne pouvait pas le faire fonctionner complètement.

Je n'ai pas touché mon robot depuis près d'un an, donc je sais que si je voulais le faire fonctionner à nouveau, je devrais recâbler le bot et réécrire le code. Je déciderai peut-être de le faire un jour, mais pour l'instant je vais travailler sur des projets moins ambitieux.

Conception

Conception générale

entrez la description de l'image ici

Flux d'informations / d'électricité

+--------------------------+   +-------------------------------------------------+
|         Computer         |   |      Robot                                      |
|--------------------------|   |-------------------------------------------------|
|                          |   |                                                 |
| Keyboard +--> Processing |   |  Button +-------------+        Motor    Motor   |
|                          |   |                       |          ^       ^      |
|                    +     |   |                       |          |       |      |
|                    |     |   |  Batteries +-----+    |          +       +      |
|                    v     |   |                  |    |   +----> Motor Driver   |
|                          |   |                  v    v   +                     |
|               Bluetooth +-----> Bluetooth +--> Arduino Uno +--> Motor driver   |
|                          |   |                  +    +  +       +       +      |
+--------------------------+   |                  |    |  |       |       |      |
                               |                  |    |  |       v       v      |
                               |                  |    |  |    Motor     Motor   |
                               |                  |    |  |                      |
                               |                  |    |  |                      |
                               |                  |    |  +-----> Laser          |
                               |  +---------------|----|----+                    |
                               |  |       Arm     |    |    |                    |
                               |  |---------------|----|----|                    |
                               |  |     +---------+    v    |                    |
                               |  |     |      Motor Driver |                    |
                               |  |     v              +    |                    |
                               |  |  Servo             |    |                    |
                               |  |                    v    |                    |
                               |  |                  Motor  |                    |
                               |  +-------------------------+                    |
                               +-------------------------------------------------+

Composants

  • Arduino Uno, (frit)
  • Transport:
  • Bouton facile
  • Bras:
    • Servo , (rotation continue)
    • Conducteur de moteur , (frit)
    • Moteur, (12v, trouvé dans la pile d'ordure de l'enseignant)
    • La gomme
    • Contrepoids (sac en papier fait maison rempli de pièces de monnaie)
  • 2 batteries , (12V, 1300mAh, Ni-MH rechargeable)
  • 2 planches à pain sans soudure
  • Laser, (5 mW)
  • Bluetooth:
  • Beaucoup de fils
  • Beaucoup de ferraille et de plexiglas, (trouvé dans l'atelier d'usinage du professeur)

Code

Je n'ai pas très bien organisé mon code, donc j'espère que c'est le bon code.

Plus d'images

entrez la description de l'image ici entrez la description de l'image ici

Terrible vidéo d'une première version lente, sans bras, sans bouton, sans laser et sans bluetooth du robot.

https://www.youtube.com/watch?v=Q7MvE7-Xb0E

Conclusion

Je suis vraiment bon pour frire l'électronique.

C'était ma première expérience dans un véritable atelier d'usinage. J'ai pu utiliser une fraiseuse CNC, une fraiseuse manuelle, un tour et une scie à ruban. Si je recommençais un projet comme celui-ci, je ferais une bien meilleure documentation, donc je pourrais comprendre ce que je faisais un an plus tard.

Le gars avec le chapeau
la source
1
Bon travail! Rien n'est aussi précieux que l'expérience et l'important est que vous sachiez maintenant comment faire un meilleur travail la prochaine fois.
jippie
5

Affichage LED à 4 chiffres pour Arduino

Petite carte avec 4 chiffres LED à 7 segments, gérée par 3 broches.

La description

Quand j'ai commencé à travailler avec Arduino, je voulais un moyen d'afficher les valeurs collectées par divers capteurs que j'ai expérimentés, mais je ne voulais pas sortir ces valeurs via Serial un PC.

Je voulais une petite planche que je pourrais facilement réutiliser d'un projet à l'autre et je voulais épargner une planche à pain.

Cette carte, ainsi que sa petite bibliothèque, permet actuellement l'affichage des nombres à 4 chiffres et ne source aucun courant Arduino pendant l'affichage (le courant n'est fourni que lors de la communication à la carte de la nouvelle valeur à afficher à partir de maintenant).

panneau d'affichage avec compteur

Conception

La conception est assez simple car j'ai décidé de réutiliser une puce MAX-7219 pour piloter mon écran LED (j'en avais quelques-uns sous la main).

Grâce à cette puce, le schéma était très simple, mais il était important de bien comprendre comment l'utiliser; heureusement, sa fiche technique était assez claire.

La conception originale a été réalisée sur une maquette et a utilisé 4 chiffres à 7 segments LED uniques ; mais cela nécessitait trop de câblage à mon goût (besoin de connecter des segments par groupes de 4). De plus, lors de ma toute première expérience avec des chiffres LED à 7 segments, j'en ai frit un: il avait 2 broches de terre, mais je n'en ai connecté qu'un à GND au lieu des deux :-(

J'ai alors décidé d'opter pour un affichage 4x7 segments, cathode commune , avec des anodes de segment déjà connectées à 4 chiffres: c'est seulement 4 + 8 broches!

Schéma de la carte

Au cours de mes tests, j'ai trouvé une bibliothèque Arduino utile pour travailler avec MAX-7219 que j'ai décidé de réutiliser. J'ai construit ma propre bibliothèque avec une API très simple.

Après la planche à pain, il était temps de rendre le design plus permanent; étant donné que j'avais un tas de planches à langer sous la main, j'ai décidé d'y aller.

J'ai cherché et trouvé un concepteur de Stripboard facile pour PC que j'ai utilisé pour concevoir ma planche.

Le premier design du stripboard n'a pas été optimisé en termes d'espace et j'ai décidé de ne pas l'implémenter:

DESIGN STRIPBOARD # 1

Ensuite, j'ai revu la conception pour optimiser le coût et la taille (un seul petit panneau de 50x75 mm); c'était facile avec le concepteur de stripboard que j'ai trouvé auparavant:

DESIGN STRIPBOARD # 2

Une fois la carte prête, j'ai décidé de la vérifier avec un Arduino UNO et un capteur à ultrasons:

IMAGE

Cela semblait fonctionner, sauf que j'avais souvent des valeurs affichées étranges et incohérentes; après enquête, j'ai trouvé que c'était dû au bruit déclenché par le panneau d'affichage , bruit qui interférait avec le capteur. J'avais juste besoin d' ajouter un capuchon de découplage aussi près que possible des broches d'alimentation actuelles du capteur et cela fonctionnait parfaitement (notez que la carte d'affichage avait déjà des capuchons de découplage pour la puce MAX-7219).

Liste des pièces:

  • 1 x LN5461AS: bloc cathodique commun à 7 segments de 4 chiffres
  • 1 x MAX7219: puce pilote LED multiplexée
  • 1 x support IC (24 broches)
  • 1 résistance 22K
  • 1 x bouchon électrolytique 10uF
  • 1 x bouchon 100nF
  • 1 x embase mâle (5 broches)
  • 1 x 90x50mm stripboard
  • fils, soudure ...

Conclusion

30 ans après mes dernières expériences électroniques, j'ai pu retrouver le virus avec Arduino et avec ce tout premier projet qui, bien que relativement simple, m'a appris plusieurs choses:

  • interpréter les fiches techniques des composants utilisés (MAX7219 et affichage LED)
  • Apprenez à utiliser et à être efficace avec la conception de stripboard
  • toutes les broches marquées GND ou V + doivent être connectées: vous ne choisissez pas celle que vous souhaitez connecter!
  • s'il y a quelque chose qui semble étrange lorsque vous testez votre circuit et que vous ne comprenez pas pourquoi: ne cherchez pas, ce doit être du bruit, essayez d'ajouter un capuchon de découplage et ça devrait le faire!
  • apprendre à créer une bibliothèque Arduino (pas seulement un croquis)

Si je devais relancer ce projet aujourd'hui, je:

  • essayez d'optimiser davantage la conception du stripboard (je pourrais probablement réduire la taille un peu plus)
  • remplacer les en-têtes à broches droites de la carte par des en-têtes à angle droit afin que les fils se connectant à Arduino soient plus saillants devant la carte
jfpoilpret
la source
5

Horloge murale numérique avec télécommande à radiofréquence (RF)

Une grande horloge murale à 7 segments (40x30cm / 16x12 ") avec télécommande R / F.

entrez la description de l'image ici

La description

Ce projet comprend une grande horloge murale numérique à affichage 7 segments (40x30cm / 16x12 ") avec télécommande R / F. Il présente les caractéristiques suivantes:

  • Il affiche l'heure et la date actuelles (heures, minutes, secondes, jour, mois, année) dans deux formats (heures ou date en gros chiffres).
  • Il indique la température actuelle en ° C.
  • A un compte à rebours défini par l'utilisateur qui déclenchera une alarme (ennuyeuse) lorsqu'il atteindra zéro.
  • Toutes les fonctions contrôlées à distance par une télécommande RF.
  • Dispose d'un petit clavier à curseur pour contrôler ses fonctions (lorsque la télécommande n'est pas disponible).
  • Contrôle de la luminosité indépendant pour chaque ligne d'affichage.
  • Il continue de conserver l'heure actuelle avec précision, même lorsqu'il est éteint, grâce à un circuit intégré d'horloge en temps réel alimenté par une pile bouton.

Conception

Les principaux aspects de ce projet étaient les suivants:

  • Il est entièrement basé sur le microcontrôleur Arduino et AVR ATmega328.
  • Il garde l'heure actuelle même lorsqu'il est éteint, grâce au DR1307 RTC alimenté par une pile bouton.
  • Les chiffres ne sont jamais multiplexés. Au lieu de cela, chaque chiffre a un IC de registre à décalage série 8 bits dédié (74HC595) qui conserve les segments sélectionnés indépendamment de ce qui est affiché sur les autres chiffres et de ce que fait le MCU.
  • Les segments sont alimentés par des matrices Darlington en raison d'une consommation de courant supérieure à celle du MCU ou des registres à décalage.
  • L'horloge est contrôlée par un clavier sur la carte contrôleur et également par une télécommande RF. La communication radio est effectuée par une paire de récepteur et émetteur radio 434MHz peu coûteux.
  • Le projet a une conception modulaire dans laquelle un seul contrôleur peut gérer jusqu'à 12 chiffres simples. Le contrôleur accepte également des modules extensibles pour un nombre illimité de chiffres (le nombre maximal de chiffres est limité par le délai de temporisation en raison de la connexion en série des registres à décalage et de l'atténuation de leur signal d'horloge).
  • La conception prend en charge un certain nombre de chiffres d'affichage à 7 segments prêts à l'emploi ou des chiffres personnalisés faits avec des LED.

Voici les schémas du contrôleur et de l'une des cartes à 7 segments:

entrez la description de l'image ici entrez la description de l'image ici

Voici quelques photos des planches que j'ai conçues, gravées et assemblées, et de la télécommande:

entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici

Et enfin, voici une photo d'une autre version de l'horloge. Dans celui-ci, je réalise moi-même les affichages à 7 segments à l'aide de LED rectangulaires et de composants discrets.

entrez la description de l'image ici

Conclusion

Ce projet m'a pris beaucoup de temps, d'efforts et d'apprentissage pour arriver à ce stade (il n'est jamais terminé, comme je l'ai appris), mais c'était très amusant. Quelques choses que j'ai apprises:

  1. Étudiez toutes les bibliothèques que vous allez utiliser dans votre projet avant d'attribuer des broches GPIO à votre contrôleur afin d'éviter les conflits potentiels. J'ai eu la malchance d'utiliser la même broche PWM pour le contrôle de la luminosité associée à la minuterie VirtualWire, j'ai donc dû patcher la carte pour que la luminosité et les RF fonctionnent en même temps.

  2. Le sertissage des connecteurs molex et modu KK prend BEAUCOUP DE TEMPS !!

  3. Les pièces en acrylique découpées au laser sont l'avenir. Ils ajoutent beaucoup de qualité à l'appareil même si vous êtes maladroit.

Ricardo
la source
Comment avez-vous fabriqué les PCB (gravure et perçage)?
sachleen
1
@sachleen J'utilise la méthode de transfert de toner avec le repassage. J'imprime la conception du tableau sur du papier photo à jet d'encre dans une imprimante laser, puis je le repasse sur le tableau, puis je grave le tableau dans FeCl. Il faut un certain temps pour trouver les bons paramètres de papier et d'imprimante. J'utilise une perceuse à colonne Dremel pour le forage, mais j'utilise uniquement des planches phénoliques et des forets à grande vitesse. Les panneaux en fibre de verre sont beaucoup plus durs sur les forets, nécessitant généralement les forets en carbure plus chers et cassants.
Ricardo
Où avez-vous obtenu ces LED? J'en ai qui ressemblent exactement à ça!
The Guy with The Hat
1
@TheGuywithTheHat Les rectangulaires verts? Ce sont assez communs ici au Brésil. Je les ai obtenues dans l'une de nos boutiques de composants électroniques en ligne. Voici quelques liens: sur DigiKey , sur eBay . Voici où je les ai obtenus .
Ricardo
5

Rotateur d'antenne TV

Rotation de l'antenne télécommandée IR

Vous ne pouvez pas quitter le canapé pour régler la direction de l'antenne du téléviseur? Et même si vous le faites, parfois votre proximité avec l'antenne modifie la réception. Ce serait bien de pouvoir régler l'antenne depuis le canapé. Utilisation de la télécommande du téléviseur.

Composants

Arduino Uno, récepteur IR, moteur pas à pas avec carte de commande, roulement ID 1 ", poignée de balai Swiffer, boîte en plastique,

derrière la télé Arduino avec récepteur IR à l'avant Grand plan, de, boîte, et, roulement Poignée Swiffer De toute façon, ces deux boutons ne font rien sur le téléviseur

La description

Utilisez une vieille poignée de balai Swiffer comme poteau d'antenne. J'ai obtenu un roulement de 1 "ID de ma boutique en ligne préférée, dans lequel la poignée de la vadrouille se serre et s'arrête. J'ai percé un trou dans la boîte en plastique assez grand pour que la poignée de la vadrouille puisse passer à travers, mais pas pour le roulement. J'ai percé un rectangle trou dans l'extrémité de la poignée de la vadrouille pour s'adapter à l'arbre d'un moteur pas à pas 28BYJ-48, et coincé l'engin dans la boîte comme illustré. La poignée de la vadrouille repose en fait sur le roulement, et le roulement est super collé au sommet de la boîte en plastique .

Utilisé la bibliothèque stepper.h pour faire pivoter le moteur à partir d'un Uno.

J'ai démonté un lecteur DVD inutilisé et en ai récupéré le récepteur infrarouge. Vous pouvez démonter tout appareil grand public doté d'une télécommande et utiliser le récepteur infrarouge, cela fonctionnera. Le récepteur IR utilise la bibliothèque IRremote.h. À l'aide du moniteur série, j'ai imprimé le code hexadécimal correspondant aux deux boutons de la télécommande du téléviseur que je veux utiliser pour faire fonctionner le moteur de l'antenne. Un pour tourner à gauche, un pour droite.

Pour économiser de l'énergie, utilisez la fonction small_stepper.motorOff () pour désactiver les bobines après chaque mouvement.

Conclusion

C'était un projet amusant qui a également été utile pour ma femme. Je n'ai pas mis en œuvre d'accélération / décélération dans le mouvement, ce qui pourrait être agréable, surtout si l'antenne avait plus d'inertie en rotation.

Edit: désolé que l'image soit de côté! C'est juste sur mon ordinateur, je ne sais pas pourquoi c'est en ligne sur le côté.

user851
la source
5

La lampe Knock-knock

Une lampe qui s'allume / s'éteint lorsque le bureau est allumé. Actuellement en phase alpha, toujours en prototypage, mais je pense que c'est le projet Arduino le plus utile qui existe. Générateur de blagues ringard inclus ... à partir de blagues à frapper enregistrées précédemment. Remarque: je sais que je ne peux pas gagner dans les règles, mais il n'y a pas de règle pour participer ... Je peux aussi montrer mon projet.

La description

Jusqu'à présent, j'ai à peu près expliqué la majeure partie de cela. Vous frappez et la lumière s'allume et s'éteint. Je suis actuellement sur une planche à pain. J'utilise un élément piézo pour détecter les chocs avec vibrations. En parallèle, j'ai une résistance de 1 mégohm pour protéger mon Arduino Uno SMD.

J'ai pensé à cette conception après avoir presque frappé (haha punny) ma lampe de mon bureau tout en cherchant le petit interrupteur à bascule. Je ne suis pas exactement ... bien adroit . C'est agréable de frapper sur le bureau et d'avoir de la lumière. J'utilise également un Power Switch Tail SSR (relais à semi-conducteurs: pas de bruit) pour le contrôler avec deux des broches de mon Arduino.

Conception

Photo Image prise avec la webcam suspendue au-dessus du moniteur ... eek!

Diagramme de Fritzing

Composants utilisés pour construire le projet:

  • Élément piézo (3,00 $ USD)
  • Résistance mégaohm (0,30 USD chacun en 5 pièces)
  • Arduino Uno SMD (disponible)
  • Power Switch Tail SSR (~ $ 25.00 USD avec le bateau, mais avait en main donc pas de frais)
  • Planche à pain et cavaliers / fil supplémentaire (~ 5,00 $ US, mais en main donc pas de frais)

Coût pour moi: 3,30 USD + 0,02 USD (taxes) == Seulement 3,32 USD!

Conclusion

Dans l'ensemble, c'est un projet simple mais il est en fait utile. C'est une lutte avec mes projets Arduino: je peux construire quelque chose que je fait utiliser ? Faire clignoter une LED ne va pas vraiment vous aider dans la vie. C'est amusant, mais c'est tout.

Le plus gros problème auquel j'ai été confronté (et le fait toujours) n'est pas d'obtenir un signal suffisamment fort. J'ai beaucoup appris sur les signaux électriques: j'ai compris comment trouver le "pic" d'une impulsion et pas seulement lire la broche à un intervalle aléatoire et manquer la tension plus élevée. J'essaierais d'obtenir un élément piézo plus sensible. Un plus grand serait utile. J'essaie de modifier mon circuit pour ne pas limiter autant la tension, mais protéger l'Arduino. Une sorte de fusible aiderait dans cette situation. Je joue aussi avec les valeurs des résistances. Cela aiderait beaucoup d'avoir une portée pour cela, mais je suppose que non ...: P

Après avoir perfectionné le circuit, je vais travailler à le faire sur un PCB avec un ATtiny ... et peut-être même développer des kits. Je vais essayer de publier mes résultats sur la façon de rendre l'élément plus sensible sans risquer ma carte dans le processus.

Mise à jour du statut: j'ai été très occupé récemment. Je vais commander une diode zener (4.3V) ici dans une semaine ou deux pour retirer la résistance mégaohm pour éviter de diluer le signal tout en protégeant la puce. Je peux construire un simple ampli de tension ici si nécessaire (à côté du zener) pour essayer de rendre le capteur plus sensible.

Pingouin anonyme
la source
1
Passer à quelque chose avec des ADC différentiels et à gain vous aiderait à obtenir plus de sensibilité du piézo. Et éventuellement en utilisant un TVS au lieu d'une résistance.
Ignacio Vazquez-Abrams
Utilisez-vous l'ADC pour la détection ou une interruption? Une idée de la taille du pic de tension que vous souhaitez détecter?
jippie
@jipie ADC pour la détection, j'ai un code assez efficace: il boucle et trouve le pic toutes les 250 ms. Pas de retards. Pour le pic, l'IIRC est aux alentours de 14/1024 (trop paresseux pour le convertir maintenant). Je devrais également regarder dans la broche AREF, mais il pourrait y avoir des problèmes avec une chute qui pourrait faire environ 9V.
Pingouin anonyme
Essayez ceci comme tampon d'entrée. Le transistor agit comme un redresseur demi-onde amplificateur de courant / détecteur de crête. Pas besoin de détecter un seul pic avec l'ADC, le transistor / condensateur le tendra pour vous. Telle que configurée, la tension de sortie a une polarisation de 2,2 V CC, mais vous pouvez la changer en ce que vous préférez en changeant le diviseur résistif. De cette façon, vous pouvez rendre l'entrée encore plus sensible en sélectionnant la référence de bande interdite 1V1 ou 2V56. La résistance de 10 M garantit que le condensateur se décharge pendant environ une seconde et était en réalité mon DMM.
2014
4

MySensors

- Apprenez à créer vos propres capteurs sans fil à faible coût et à les connecter au monde.

http://www.mysensors.org

Nous l'appelons "Internet de vos objets"

La description

Nous avons combiné la plate-forme Arduino avec un petit émetteur-récepteur radio dans un monde amusant et flexible de capteurs sans fil à faible coût.

Tous les petits détails sur la communication du capteur ont été regroupés dans une bibliothèque de logiciels pratique pour que vous n'ayez pas à vous en soucier.

C'est aussi simple que 1, 2, 3. Arduino + NRF24L01 +

  1. Connectez les pièces. 2. Téléchargez les exemples fournis. 3. Commencez à mesurer et à contrôler le monde!

En savoir plus sur la formation automatique du réseau de capteurs à l'aide de notre bibliothèque Arduino sur le site. Il forme essentiellement un réseau en étoile et peut atteindre des centaines de mètres.

Le réseau de capteurs

Au milieu, vous placez une passerelle Arduion ou Raspberry qui collecte les informations de vos capteurs. Contrôleur de framboise

Passerelle Arduino

Conception et schémas

Voici l'un des prototypes de capteurs de mouvement que j'ai créés pour contrôler la lumière du jardin à l'extérieur de ma maison. L'état des mouvements est envoyé à mon contrôleur HA qui allume la lumière (via z-wave) lorsqu'un mouvement a été détecté. Un capteur de lumière (pas dans l'image) s'assure uniquement d'allumer les lumières la nuit.
entrez la description de l'image ici

Vous trouverez toutes les instructions de construction ici: http://www.mysensors.org/build/

Sur le site, il existe également des instructions de construction faciles à suivre pour un tas d'autres capteurs et actionneurs sans fil. Voici quelques exemples:

Capteur de distance, capteur de mouvement, actionneur de relais, humidité, lumière, pression, pluie, température, ...

Conclusion

Le projet est toujours dans les blocs de départ et nous espérons fournir des plugins pour une liste croissante de contrôleurs domotiques. La première chose sur notre liste en ce moment est de fournir un contrôleur DIY qui offre un stockage gratuit dans le cloud pour vos données de capteur.

Bonjour

Rendez-vous @ mysensors.org

/ Henrik Ekblad (le créateur de la bibliothèque Arduino Open Source utilisée pour la communication entre les capteurs)

  • MISE À JOUR 27/3. J'ai rendu l'exemple plus concret et ajouté mon affiliation au projet open source.
hek
la source
4
Bienvenue sur Arduino.SE! Je crains que votre site Web ne corresponde pas aux critères de notre vitrine. Nous recherchons des projets spécifiques qui démontrent une application pratique d'Arduino (comme on le voit dans les autres exemples ici). Peut-être pourriez-vous fournir un exemple de projet de capteur que vous avez construit?
Peter Bloomfield
Ok, peut-être que je manque le point;). Le "projet spécifique" ici est que nous utilisons Arduinos pour créer un réseau de capteurs sans fil auto-réparateur. Pour l'archiver, nous avons créé une bibliothèque Open Source Arduino pour l'émetteur-récepteur NRF24L01 +.
hek
4
Cela ressemble plus à une annonce qu'à un projet. Changer le ton, peut-être le rendre un peu plus spécifique à une seule application. Je suppose que c'est pourquoi vous avez obtenu un vote négatif.
Cybergibbons
Bienvenue sur Ard.SE! Sur la base de votre site Web de profil, vous travaillez sur le site faisant l'objet de la promotion ci-dessus ou en êtes propriétaire. C'est la politique de SE que vous divulguiez cela dans votre réponse. Veuillez le modifier pour l'inclure. Pouvez-vous également ajouter un exemple d'utilisation de cette fonctionnalité?
Pingouin anonyme
Je développe cette bibliothèque (Open Source) MySensors depuis 6 mois sur mon temps libre. Pour aider d'autres personnes à utiliser la bibliothèque correctement, nous (plus de personnes ont rejoint le projet ces derniers mois) avons lancé la page d'instructions de construction il y a seulement 3 jours. Je pensais que ce serait un bon projet Arduino pour obtenir des commentaires sur ce "Project Showcase". Je ne pense pas avoir essayé de cacher ma participation au projet et je suis désolé si la description est perçue comme une publicité. Nous sommes juste très contents du projet!
hek
4

Boîte série

Un moniteur série portable dans une boîte

La description

Parfois, il est utile pour un appareil (Arduino ou autre) de sortir des informations de débogage via série. C'est génial si vous avez un ordinateur sous la main avec une entrée série appropriée. Cependant, ce n'est pas toujours le cas pour diverses raisons.

Ce projet est ma tentative pour résoudre ce problème en créant un moniteur série portable alimenté par Arduino, que je peux connecter à d'autres appareils sur le terrain.

Par défaut, il affichera simplement le texte dans un format de défilement; c'est-à-dire que le texte apparaît sur la ligne du bas, et tout défile pour faire de la place quand plus arrive. Cela signifie qu'il devrait fonctionner parfaitement avec toutes sortes d'appareils génériques. Cependant, il sera également possible d'utiliser des séquences d'échappement pour contrôler l'affichage plus précisément, de sorte que les appareils peuvent également être programmés spécifiquement pour tirer parti de ses capacités.

Conception

La conception se compose d'un ensemble de 4 écrans LCD alphanumériques (16x2 caractères chacun), alignés dans une boîte quelque chose comme ceci:

Maquette 3D de la conception de la boîte série

Les écrans sont des Epson EAX16027AR, qui ne sont malheureusement pas compatibles avec le pilote Hitachi HD44780 standard. En tant que tel, j'ai dû écrire ma propre bibliothèque pour eux.

J'ai choisi d'utiliser ces écrans (plutôt que par exemple un grand écran) principalement parce que je les avais juste traînés et que je voulais faire quelque chose d'intéressant avec eux. J'ai également pensé qu'il serait très pratique de pouvoir contrôler chaque écran indépendamment pour certaines applications (par exemple, afficher des informations différentes sur chacun).

En termes de conception de circuits, les écrans sont connectés en parallèle, avec des broches de sélection de puce utilisées pour diriger les données / commandes vers chacun selon les besoins.

Un ATMega328 sera le cerveau de l'unité finale, avec des données série provenant d'une ligne de niveau TTL (pour se connecter directement au TX d'un MCU similaire), ou éventuellement d'une prise Sub-D RS232 à 9 broches (pour se connecter à divers autres systèmes). L'unité aura également un cadran de contraste, un bouton pour effacer l'affichage et un bouton pour lancer un mode d'autotest. À l'avenir, j'aimerais ajouter des boutons qui permettent à l'utilisateur de parcourir également l'historique de défilement.

Vous trouverez ci-dessous une configuration de circuit très préliminaire (j'ai eu beaucoup de mal à faire jouer Fritzing bien pour une raison quelconque!). Il comprend un registre à décalage SIPO 8 bits pour piloter les lignes de données des LCD, qui sont affichées en vert. Vous pouvez également voir les lignes de sélection des puces en orange.

Disposition préliminaire du circuit

Pour le moment, le projet est encore au stade de prototype fonctionnel, piloté par une carte Uno (clone). Ci-dessous, vous pouvez voir une photo de celui-ci en action, affichant du texte qui a été transmis via la série depuis mon ordinateur.

Le prototype en action

Code source

Je rend ma bibliothèque LCD disponible sur GitHub au lien ci-dessous. Veuillez noter que c'est à un stade précoce de développement. Dans un avenir proche, j'ai l'intention de la rendre beaucoup plus similaire à la bibliothèque de base LiquidCrystal afin de faciliter la transition entre les deux.

Vous pouvez trouver du code de base pour mon prototype Serial Box dans le dossier "examples".

Conclusion

Je pense que le projet avance très bien et j'ai été extrêmement heureux de faire fonctionner le prototype. Mon principal défi sera de monter le tout dans une boîte. J'ai déjà commencé à découper des trous appropriés pour les écrans, mais je ne suis pas très expérimenté dans ce genre de chose, et je trouve assez difficile de tout aligner.

Mais j'y arriverai à la fin. Cela pourrait ne pas être très joli au moment où j'aurai fini! :)

Peter Bloomfield
la source
3

Régulateur de chauffage

Vous savez comment c'est - vous réglez le chauffage pour qu'il s'allume à une certaine heure et combien de jours travaillez-vous tard et il fonctionne à plein régime depuis des heures, ou vous partez pendant quelques jours et oubliez de l'éteindre? Ou la rare occasion où vous rentrez tôt et où la maison est froide? J'ai décidé que le moyen simple de contourner cela était de construire un appareil qui me permettrait d'allumer ou d'éteindre mon chauffage par SMS / SMS. Il viendrait s'ajouter au système de contrôle existant afin de ne pas perdre la souplesse que cela peut apporter.

Le projet se compose de quelques parties principales: un clone Arduino Uno, un bouclier Seeedstudio GSM, un capteur de température DHT22 et un SSR de 25 ampères.

Comment ça marche:

Les commandes de chauffage existantes sont réglées sur «Off» et le nouveau contrôleur est câblé pour les annuler. L'Uno est programmé pour répondre à trois messages différents - On, Off et Query. Dans ce dernier cas, l'appareil lira le DHT22 et répondra à l'expéditeur avec la température actuelle et l'état de l'appareil (allumé ou éteint). Si la commande est activée ou désactivée, elle répondra par une confirmation de l'action effectuée. Une fois les messages traités, ils sont supprimés; tous les messages qui ne sont pas conformes à la structure de message spécifique sont laissés dans la mémoire de la carte SIM et peuvent être examinés plus tard si vous le souhaitez.

L'alimentation de l'unité est fournie par une alimentation à découpage de cinq volts à trois ampères. Comme les broches d'alimentation de l'Arduino exposent simplement le bus 5v interne de la carte, j'ai décidé d'alimenter l'ensemble à travers celles-ci et de configurer le blindage pour tirer l'alimentation de l'Arduino.

L'unité possède trois LED d'état. Un vert pour indiquer qu'il y a du courant, un bleu pour indiquer que la carte GSM est «sous tension» et un rouge pour indiquer l'état du chauffage. Celles-ci s'ajoutent aux LED d'état fournies sur l'Arduino et le blindage. Il y a aussi un interrupteur à bouton-poussoir qui permet un contrôle manuel du chauffage, avec un condensateur de 100 nF pour gérer le rebond.

Prochain:

Une grande partie du code repose sur un bon vieux délai () pour donner au bouclier suffisamment de temps pour effectuer ses actions. J'ai l'intention d'améliorer le code pour qu'il attende la confirmation du bouclier plutôt que de supposer qu'il a fait ce qu'on lui avait dit dans le temps imparti! J'ajouterai également une fonction `` toujours en vie '' - à intervalles fixes, éteignez la LED bleue, envoyez la commande AT au bouclier et sur un accusé de réception, rallumez la LED. Le bouclier est sous contrôle logiciel, donc s'il ne répond pas, éteignez-le puis rallumez-le.

L'ensemble doit être monté dans un boîtier approprié et monté à côté du contrôleur existant. J'ai un interrupteur à bouton-poussoir éclairé en interne que j'utiliserai au lieu d'un interrupteur séparé et d'une LED rouge pour gérer la dérogation.

À plus long terme, je prévois d'ajouter un RTC, un écran LCD 20 x 4 et des boutons-poussoirs supplémentaires pour permettre à l'unité d'être programmée et agir également comme un interrupteur horaire.

Le prototypage a déjà commencé!

Conclusion.

Il y a quelque chose de légèrement décadent à se réveiller un jour de repos d'hiver froid, à envoyer un SMS / SMS pour allumer le chauffage, à se retourner et à se rendormir pendant une heure! Et quand vous réalisez que vous ne l'avez pas éteint une nuit, vous pouvez le faire dans le confort de votre lit!

Image du contrôleur 1 Image du contrôleur 2

DavidA
la source