Table des matières:
- Étape 1: Logiciels et matériel requis
- Étape 2: Codes (Vivado)
- Étape 3: Comprendre comment ils s'assemblent (schémas des composants VHDL)
- Étape 4: Coder (Arduino)
- Étape 5: Comment nos composants s'assemblent
- Étape 6: Démonstration
- Étape 7: Il est temps de le tester
Vidéo: Capteur de mouvement/lumières contrôlées par compteur : 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Ce projet a été créé comme projet final pour un cours de conception numérique à Cal Poly, San Luis Obispo (CPE 133).
Pourquoi faisons-nous cela ? Nous voulons aider à conserver les ressources naturelles dans le monde. Notre projet se concentre sur l'économie d'électricité. En économisant plus d'électricité, nous pourrons conserver les ressources naturelles qui sont utilisées pour produire de l'électricité. Au début de 2018, les ressources naturelles sont consommées à un rythme incroyable. Nous voulons être conscients de notre impact sur notre environnement et jouer notre rôle dans la préservation des ressources naturelles. L'électronique peut être mise en œuvre de différentes manières pour économiser de l'énergie, ce qui aide l'environnement ainsi que notre situation économique. * Ce modèle a été créé à l'aide des composants dont nous disposons.
Quelle a été notre inspiration ? Les gens oublient souvent d'éteindre leurs lumières de Noël et gaspillent de l'énergie en les laissant allumées toute la nuit. En réalité, ce projet permettra d'économiser l'électricité car les «lumières de vacances» ne seraient allumées que lorsque les gens sont à proximité, économisant ainsi l'énergie lorsque personne n'est là. De plus, nous avons voulu concevoir une minuterie pour que les lumières s'éteignent complètement après un temps donné pour s'assurer qu'elles ne s'allument pas en raison d'un mouvement détecté à 3 heures du matin, par exemple.
Comment pourriez-vous utiliser ce design ? Ce design peut être mis en œuvre pour toutes sortes de lumières, qu'elles soient décoratives, pratiques ou les deux. Si vous voulez que votre lampe de bureau ne fonctionne que 6 heures d'affilée, par exemple. Vous devrez régler un compteur à 21 600 secondes (6 heures x 3 600 secondes/heure). Pendant que le compteur augmente activement, le capteur de mouvement contrôle la lumière. Ainsi, chaque fois qu'il s'éteint pendant ce laps de temps, il vous suffit de passer votre main devant le capteur de mouvement et il se rallumera. Si vous vous endormez à votre bureau et que vous vous réveillez 7 heures plus tard, votre mouvement ne l'activera pas.
Étape 1: Logiciels et matériel requis
Logiciel:
- Vivado 2016.2 (ou une version plus récente) peut être trouvé ici
- Arduino IDE 1.8.3 (ou une version plus récente) peut être trouvé ici
Matériel:
- 1 carte Basys 3
- 1 Arduino Uno
- 2 planches à pain
- 1 capteur de télémétrie à ultrasons HC-SR04
- 9 fils mâle-mâle
- 1 DEL
- 1 100Ω Résistance
Étape 2: Codes (Vivado)
Machine à états finis (voir diagramme d'état ci-dessus):
La LED nécessitait une machine à états finis. Une LED a seulement deux états d'être allumé et éteint. Seules deux entrées contrôlent l'état de la LED, du compteur et du capteur. Le seul moment où la LED doit être allumée est lorsque le capteur détecte un mouvement et lorsque le compteur compte de zéro à trente secondes. Dans tout autre cas, la LED sera éteinte.
Nom du fichier: LEDDES
Contrer:
Le compteur permet de limiter la durée pendant laquelle le détecteur de mouvement peut activer la LED. Sa valeur est affichée sur l'affichage à sept segments de la carte Basys 3 via un code source (« sseg_dec »). Lorsque le bouton Reset est abaissé (valeur: '0'), le compteur commence à augmenter chaque seconde de 0 à 30. Lorsqu'il atteint 30, il se fige sur ce nombre. Il ne redémarrera pas à partir de 0 jusqu'à ce que le commutateur de réinitialisation soit basculé sur « 1 » et de nouveau sur « 1 ». Lorsque Reset repasse à « 0 », le compteur redémarre de 0 à 30. Cette implémentation nécessite également l'utilisation d'un signal d'horloge, son code est fourni ci-dessous ("clk_div2").
Nom du fichier: FinalCounter
FICHIERS FOURNIS:
Affichage à sept segments:
Ce code permet à l'affichage à sept segments d'afficher des valeurs décimales. Un sous-module agit comme décodeur entre une entrée binaire à 8 bits et une décimale codée binaire à 4 bits. L'autre divise le signal d'horloge pour rafraîchir sa valeur à une certaine fréquence.
Nom du fichier: sseg_dec
Signal d'horloge:
Ce code permet au compteur d'augmenter par incréments de 1 seconde. Il divise la fréquence d'horloge d'entrée en une fréquence plus lente. Nous nous sommes adaptés pour fournir une période de 1 seconde en changeant la constante max_count: entier:= (3000000) » en « constante max_count: entier:= (50000000) ».
Nom du fichier: clk_div2
Fichiers fournis: sseg_dec, clk_div2 *Ces fichiers sources ont été fournis par le professeur Bryan Mealy.
Étape 3: Comprendre comment ils s'assemblent (schémas des composants VHDL)
Le fichier principal (" MainProjectDES ") contient tous les sous-fichiers évoqués précédemment. Ils sont connectés de la manière ci-dessus. Les différents composants sont interconnectés à l'aide de mappages de ports pour envoyer un signal d'un élément à un autre.
Comme vous l'avez peut-être remarqué, le FinalCounter fournit une sortie 5 bits tandis que sseg_dec nécessite une entrée 8 bits. Pour compenser, nous définissons le signal reliant les deux composants pour commencer par "000" et ajoutons la sortie 5 bits du compteur. Fournissant ainsi une entrée 8 bits.
Contraintes:
Afin d'exécuter ces codes sur la carte Basys 3, un fichier de contraintes était nécessaire, indiquant à chaque signal où aller et comment les pièces étaient connectées.
Étape 4: Coder (Arduino)
Nous avons programmé l'Arduino Uno pour utiliser le capteur de mouvement pour détecter les mouvements et fournir une sortie qui signale à la LED de s'allumer. De plus, l'utilisation du capteur pour détecter un mouvement nécessite des boucles de course qui recherchent constamment un changement de distance. Essentiellement, il a besoin d'une minuterie qui fonctionne simultanément pour produire un signal "élevé" pour que la LED s'allume tandis que la minuterie doit être réinitialisée une fois qu'un nouveau mouvement est détecté, ce qui est presque impossible à mettre en œuvre sur Vivado en fonction de l'étendue des connaissances. de la classe. De plus, nous avons utilisé un Arduino car il ne serait pas envisageable d'utiliser le HC-SR04 avec la carte Basys 3 car la carte ne fournit que 3,3V alors que le capteur nécessite une alimentation 5V. Pour la mise en œuvre du mouvement de détection, c'est le codage réel par opposition à la CAO en VHDL.
Nous avons utilisé la fonction intégrée d'impulsion du capteur pour récupérer le temps écoulé entre le son initialement émis par le capteur et le son qui rebondit lors de la frappe d'un objet. Ensuite, nous utilisons la vitesse du son et l'intervalle de temps pour calculer la distance entre l'objet et le capteur. À partir de là, nous stockons la distance actuelle et en gardons une trace. Nous vérifions la distance toutes les 150ms. Nous avons également utilisé la bibliothèque elapsedmil pour exécuter une minuterie interne à l'intérieur de l'arduino afin de suivre le temps écoulé. Si nous détectons un changement de distance, qui correspond à un mouvement, le chronomètre est remis à zéro et il gardera la lumière allumée jusqu'à ce que 3 secondes se soient écoulées. Chaque fois que le capteur détecte un autre mouvement, la minuterie est réinitialisée à 0 et le signal de la lumière LED sera "élevé" pendant les 3 prochaines secondes. Nous avons joint une copie de notre code Arduino ci-dessous.
Étape 5: Comment nos composants s'assemblent
Comme vous pouvez le voir dans le "Basys3: Pmod Pin-out Diagram*" et la photo de la carte Arduino Uno, nous avons mis en évidence et étiqueté les ports que nous avons utilisés.
1. La carte LED et Basys 3
La LED est connectée en série avec la résistance 100Ω. -Le fil blanc relie la résistance à la broche PWR de la carte Basys 3. -Le fil jaune relie la LED à la broche H1 de la carte Basys 3.
2. Le capteur de mouvement et l'Arduino Uno
-Le fil orange relie Vcc (alimentation) du capteur de mouvement à la broche 5V de la carte Arduino Uno.-Le fil blanc relie la broche Trig du capteur de mouvement à la broche 10 de la carte Arduino Uno.-Le fil jaune relie la broche Echo de le capteur de mouvement à la broche 9 de la carte Arduino Uno.-Le fil noir relie la broche GND du capteur de mouvement à la broche GND de la carte Arduino Uno.
[Les fils que nous avons utilisés étaient trop courts pour atteindre les composants, ils étaient donc interconnectés]
3. La carte Basys 3 et l'Arduino Uno
Le fil jaune relie la broche A14 de la carte Basys 3 à la broche 6 de la carte Arduino Uno.
*Ce diagramme est tiré du "Manuel de référence de la carte FPGA Basys 3™" de Digilent, disponible ici.
Étape 6: Démonstration
Étape 7: Il est temps de le tester
Toutes nos félicitations! Vous avez atteint la fin de notre projet de détection de mouvement et de lumière contrôlée par compteur ! Merci beaucoup d'avoir lu notre article Instructables. Il est maintenant temps pour vous d'essayer de construire ce projet vous-même. Si vous suivez attentivement chaque étape, vous devriez avoir un détecteur de mouvement et une lumière contrôlée qui fonctionne de la même manière que la nôtre ! Nous vous souhaitons bonne chance dans la construction de ce projet, et espérons qu'il pourra contribuer à économiser l'électricité ainsi que les ressources naturelles !
Conseillé:
Lumières déclenchées par le mouvement : 5 étapes
Lumières déclenchées par le mouvement : ce guide vous montrera comment utiliser un FPGA pour créer une lumière déclenchée par un capteur de mouvement de couleur variable tant qu'il y a du mouvement. Les niveaux de rouge, bleu et vert sont tous contrôlés en verrouillant une valeur pour chaque couleur individuelle. Ce projet a
DIY : Mini boîtier de capteur monté au plafond avec capteur de mouvement focalisable : 4 étapes
DIY : Mini boîtier de capteur monté au plafond avec capteur de mouvement focalisable : Bonjour. Il y a quelque temps, j'ai aidé mon ami avec le concept de maison intelligente et j'ai créé un mini boîtier de capteur avec un design personnalisé qui pourrait être monté au plafond dans le trou de 40x65 mm. Ce coffret permet de :• mesurer l'intensité lumineuse• mesurer l'humidité
Bandes lumineuses à DEL à décoloration contrôlées par capteur, alimentées par Arduino : 6 étapes (avec images)
Bandes lumineuses à DEL à décoloration contrôlées par capteur et alimentées par Arduino : j'ai récemment fait rénover ma cuisine et je savais que l'éclairage « rehausserait » l'apparence des placards. J'ai opté pour ‘True Handless’ donc j'ai un espace sous le plan de travail, ainsi qu'une planche, sous le placard et sur le dessus des placards disponibles et
Lumières contrôlées par l'application Lego Mini Cooper : 7 étapes (avec photos)
Lego Mini Cooper App Controlled Lights : Danger, UXB ! Votre travail de rêve est-il celui d'expert en déminage mais vous hésitez à cause de la partie mourante ? Alors ce projet est fait pour vous ! Vous passerez de longues heures à faire de petits ajustements sur un appareil très instable, la sueur coulant de votre fr
Créez des lumières de Noël contrôlées par la musique : 6 étapes
Créez des lumières de Noël contrôlées par la musique : Créez des lumières de Noël contrôlées par la musique pour très bon marché. Cela utilise des pièces très basiques. Cette idée ne vient pas de moi. C'est un dérivé du design de Rybitski situé ici