Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

yeux à ultrasons

Composants et fournitures

Capteur à ultrasons - HC-SR04 (Générique)
× 2
Arduino Nano R3
× 1
Résistance photo
× 1
Maxim Integrated 8x8 LED Matrix MAX7219
× 2
Planche à pain sans soudure demi-taille
× 1
Câbles de raccordement (générique)
× 1
Résistance 330 ohm
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

Je voulais faire un projet original en utilisant des LED matricielles 8x8 et des capteurs à ultrasons... quelque chose de différent de ce que les autres font habituellement avec les ultrasons - et je voulais que ce soit amusant et ludique.

J'ai donc créé ce que j'appelle UltrasonicEyes - un projet amusant dans lequel vous vous asseyez quelque part près de l'endroit où les gens se déplacent et il regardera où se trouvent les gens, et clignera des yeux et bien, vous fera juste bizarre d'une manière amusante et effrayante !

De quoi aurons-nous besoin ?

Les modules de capteurs à ultrasons sont conçus pour détecter les obstacles et déterminer à quelle distance se trouve l'obstacle, ils ont donc généralement une distance de détection allant jusqu'à 3-4 mètres, ce qui est une bonne distance pour que ce projet soit placé à l'intérieur d'un salon ou d'un bureau. zone.

J'utilise 2 modules HC-SR04 que j'ai récupérés sur e-Bay. Vous pouvez les trouver super bon marché.

Les modules sont assez simples à utiliser et ne nécessitent que 3 ou 4 fils pour se connecter à un microcontrôleur Arduino.

Les modules Matrix LED 8x8 que j'ai choisi d'utiliser permettent le chaînage, donc un seul d'entre eux doit être connecté à l'Arduino, et le deuxième module se connecte au premier.

Les modules utilisent SPI, nous n'avons donc besoin que de 5 fils pour aller à l'Arduino pour contrôler les images des yeux sur les deux écrans. Nous en avons besoin de deux bien sûr !

REMARQUE : Le code fourni utilise Hardware SPI , donc si vous utilisez une carte Arduino différente de la Nano, veuillez vérifier lesquelles des broches sont des broches matérielles SPI pour MOSI et SCK et câblez-les en conséquence !

Vous aurez également besoin d'un microcontrôleur compatible Arduino d'un certain type. J'utilise un Nano (compatible) car il est assez petit pour tenir dans le boîtier, il a un port USB pour l'alimentation/la programmation du micrologiciel et il a une pile de GPIO pour tout connecter aussi.

J'ai tout soudé sur une proto-planche de la même taille qu'une demi-planche à pain, mais je vous recommande de tout construire d'abord sur une demi-planche à pain, car de cette façon, le projet ne nécessite aucune soudure et peut être facilement démonté ou changé.

Les dernières choses dont vous aurez besoin sont un LDR (photorésistance) pour détecter la lumière, une résistance de 330 ohms et un tas de fils de maquette, à la fois mâle à femelle et femelle à femelle.

REMARQUE : Vous pouvez utiliser n'importe quel fil de couleur dans ce projet... il n'est pas nécessaire d'utiliser les mêmes couleurs que je spécifie, mais , c'est toujours une bonne pratique d'utiliser le rouge et le noir pour POWER et GND, et d'utiliser d'autres couleurs pour d'autres câblages, car cela permet d'identifier très facilement quels fils sont alimentés et quels fils sont utilisés pour les données et les signaux.

Tout assembler

Commençons par brancher le Nano sur la planche à pain juste à la fin pour que l'USB pende du bord, tout en gardant toutes les broches branchées sur la carte.

Connexions POWER et GND

Connectez maintenant un fil noir de la connexion GND sur le Nano au rail GND sur la planche à pain. Faites maintenant la même chose avec un fil rouge, en connectant le 3V (ou 5V si c'est tout ce que vous avez) au rail POWER sur la planche à pain.

Pendant que nous travaillons sur GND et POWER, connectons un fil noir entre les deux rails GND de chaque côté de la maquette. Faites de même avec un fil rouge et les deux rails POWER.

*Remarque : Certains panneaux LED matriciels peuvent nécessiter 5V au lieu de 3,3V selon la marque. Si vous trouvez que vos résultats ne sont pas fiables, essayez d'utiliser la broche 5V de l'Arduino.

Permet de câbler les capteurs à ultrasons

Connectez un fil noir entre les broches GND sur chacun des capteurs à ultrasons au rail GND sur la planche à pain. Faites de même avec un fil rouge et les broches VCC (POWER) sur les capteurs et le rail POWER sur la maquette.

Branchons maintenant les fils blancs et bleus suivants :

  • Fil blanc de la broche TRIG sur le capteur 1 à la broche numérique 2 sur l'Arduino
  • Fil bleu de la broche ECHO sur le capteur 1 à la broche numérique 3 sur l'Arduino
  • Fil blanc de la broche TRIG sur le capteur 2 à la broche numérique 4 sur l'Arduino
  • Fil bleu de la broche ECHO sur le capteur 2 à la broche numérique 5 sur l'Arduino

Bon travail! Voilà les capteurs à ultrasons pris en charge !

Connexion des deux écrans matriciels LED 8x8

Connectez un fil noir entre la broche GND entrante sur l'un des écrans matriciels LED au rail GND sur la planche à pain. Faites de même avec un fil rouge et la broche VCC (POWER) entrante sur l'écran et le rail POWER sur la maquette.

Connectez un fil noir entre la broche GND sortante de l'écran un et la broche GND entrante sur l'écran deux. Faites de même avec un fil rouge et la broche VCC sortante sur l'écran 1 et la broche VCC entrante sur l'écran 2.

Pendant que nous connectons les fils entre les 2 écrans, finissons cette partie...

  • Connectez un fil jaune entre la broche SCK (horloge) sortante sur l'écran un et la broche SCK entrante sur l'écran deux.
  • Connectez un fil bleu entre la broche MOSI (données) sortante sur l'écran un et la broche MOSI entrante sur l'écran 2.
  • Connectez un fil blanc entre la broche CS sortante (Select) sur l'écran un et la broche CS entrante sur l'écran 2.

Super! Connectons maintenant le reste de l'écran 1 à la maquette...

  • Connectez un fil jaune entre la broche SCK entrante sur l'écran 1 et la broche numérique 13 sur l'Arduino.
  • Connectez un fil bleu entre la broche MOSI entrante sur l'écran 1 et la broche numérique 11 sur l'Arduino.
  • Connectez un fil blanc entre la broche CS entrante sur l'écran 1 et la broche numérique 10 sur l'Arduino.

RAPPELEZ-VOUS : Le code fourni utilise Hardware SPI , donc si vous utilisez une carte Arduino différente de la Nano, veuillez vérifier lesquelles des broches sont des broches matérielles SPI pour MOSI et SCK et câblez-les en conséquence !

Bien joué. Passons maintenant aux dernières étapes de câblage...

Connexion du LDR et de la résistance pour détecter la lumière ambiante

Avant de connecter ces fils, pourquoi faisons-nous même cette étape ? Eh bien, je suis content que vous ayez demandé ! Le LDR connecté à l'Arduino nous permettra de détecter s'il fait clair ou sombre autour d'UltrasonicEyes et nous allons utiliser ces informations pour éclairer ou assombrir les affichages LED en conséquence.

Nous ne voulons pas que les écrans soient super lumineux la nuit car dans une lumière plus sombre, nous pouvons toujours voir les écrans assez bien lorsque la luminosité est d'environ 30%, mais à la lumière du jour ou dans une pièce lumineuse, nous devons augmenter la luminosité pour rendre les affichages plus visibles.

Ok, terminons cette dernière étape afin que nous puissions passer à la mise dans le boîtier 3D !

Connectez le LDR sur 2 rangées de broches sur la maquette, comme dans le schéma de câblage ci-dessus. Laissez de la place pour placer la résistance et un fil qui ira à l'Arduino.

Connectez la résistance de 330 ohms entre une rangée de broches sur un côté du LDR et le rail GND de la planche à pain.

Connectez un fil rouge entre la rangée de broches de l'autre côté du LDR au rail POWER de la planche à pain.

Enfin, connectons un fil marron entre la rangée de broches à laquelle la résistance de 330 ohms est connectée et la broche analogique 5 (A5) sur l'Arduino. Il doit s'agir d'une broche analogique car nous devons lire une valeur comprise entre 0 et 255 à partir du LDR (intensité lumineuse) au lieu de seulement 0 et 1, comme nous le ferions avec une broche numérique.

Allumons-le et téléversons le code

Ok, ça y est, nous sommes tous branchés. Il est temps de brancher le câble USB entre l'Arduino et votre ordinateur, et de télécharger le croquis UltrasonicEyes fourni ci-dessous pour voir tout fonctionne.

Une fois qu'il est sous tension et que le code a été téléchargé, promenez-vous devant vos capteurs ou déplacez vos mains devant eux et voyez ce qui se passe !

Vous voulez le rendre plus permanent ?

Vous cherchez à rendre vos UltrasonicEyes plus permanents ? Regardez ma vidéo qui explique comment prendre la version de la maquette et la souder à une proto-carte ici...

Et puis imprimez les 2 parties du boîtier sur n'importe quelle imprimante 3D et assemblez comme je l'ai fait dans la vidéo !

J'envisage également d'étendre UltrasonicEyes pour avoir un bouton tactile capacitif (ou un bouton normal) pour parcourir différentes formes d'yeux... vous pouvez regarder mes expériences ici...

Vous pouvez consulter le reste de mes projets et vidéos sur... inattendumaker.com

Suivez-moi sur Twitter, Facebook, Instagram et Tindie

https://www.patreon.com/unexpectedmaker

C'est tout !

Code

  • Yeux à ultrasons
Yeux à ultrasonsC/C++
#include  // Nous l'utilisons pour contrôler les écrans matriciels à LED 8x8 - Vous devrez installer cette bibliothèque à partir du gestionnaire de bibliothèque si vous ne l'avez pas déjà.#include  // Nous utilisons NewPing pour contrôler les capteurs à ultrasons - Vous devrez installer cette bibliothèque à partir du gestionnaire de bibliothèque si vous ne l'avez pas déjà.// définir les broches attachées à l'affichage matriciel LED 1//#define CLK_PIN 13 / / Nous utilisons un SPI matériel - assurez-vous d'avoir connecté la broche CLK à la broche CLK matérielle de votre appareil//#define DATA_PIN 11 // Nous utilisons un SPI matériel - assurez-vous d'avoir connecté la broche MOSI à la broche MOSI matérielle sur votre appareil#define CS_PIN 10 // Pin de sélection de puce#define MAX_DEVICES 2 // nombre d'affichages - nous en avons besoin de 2, un pour chaque œil#define LIGHT A5 // Nous utilisons la broche analogique 5 pour lire la valeur lumineuse du LDR/ / Nous utilisons du matériel SPI qui automatiquement MD_MAX72XX mx =MD_MAX72XX(CS_PIN, MAX_DEVICES); // Initialiser les 2 affichages matriciels#define t1 2 // Broche de déclenchement sur le capteur à ultrasons 1#define e1 3 // Broche d'écho sur le capteur à ultrasons 1#define t2 4 // Broche de déclenchement sur le capteur à ultrasons 2#define e2 5 // Echo épingler sur le capteur à ultrasons 2#define maxDist 400 // la distance maximale pour l'impulsion ultrasonoreNewPing eyeR(t2, e2, maxDist ); // Initialiser le capteur à ultrasons 2NewPing eyeL(t1, e1, maxDist ); // Initialiser le capteur à ultrasons 1// Nous suivons l'état actuel du système avec cette variable entière, de cette façon après un clin d'œil, nous pouvons retourner les yeux pour regarder la dernière direction dans laquelle ils étaient // Les états possibles sont:// 0 :vers l'avant // 1 :vers la droite // 2 :vers la gauche currentState =-1 ; // Nous stockons le temps et la distance pour les pings pour chaque capteur à ultrasons dans ces variableslong duration1, duration2;int distance1, distance2;// Nous voulons que le clignotement soit inséré au hasard dans le cyclefloat nextBlink =millis() + 1000;// Nous stockons l'intensité lumineuse actuelle dans cette variablefloat lightAmount =0;uint8_t eye_forward[COL_SIZE] ={ 0b00111100, 0b01000010, 0b01011010, 0b10101101, 0b10111101, 0b10011001, 0b01000010, 0b00111100};uint8_t eye_IZE_right,[COL_,{b11000010,[COL_,{b11000010, 0b11011001, 0b11111001, 0b10110001, 0b01000010, 0b00111100};uint8_t eye_left[COL_SIZE] ={ 0b00111100, 0b01000010, 0b01001110, 0b10010111, 0b10011111, 0b10001101, 0b01000010, 000008,110_t};uintb_S,11111, 0b10001101, 0b01000010, 000008,110_t};uib_S, 0b01000010, 000008111_t};ui 0b10111101, 0b11000011, 0b01111110, 0b00111100};void setup(){ // Initialise la bibliothèque Matrix Display mx.begin(); // Définit les modes de broche pour le capteur à ultrasons 1 pinMode( t1, OUTPUT ); pinMode( e1, INPUT ); // Définit les modes de broche pour le capteur à ultrasons 2 pinMode( t2, OUTPUT ); pinMode( e2, INPUT ); // Réglez chaque broche de déclenchement sur les capteurs à ultrasons pour commencer à LOW digitalWrite( t1, LOW ); digitalWrite( t2, LOW ); // Définit le mode de broche pour le LDR pour qu'il soit un INPUT pinMode ( LIGHT, INPUT ); // Commencez avec les yeux en avant ShowEye_Forward(); currentState =0;}void loop(){ // lit le niveau d'éclairage actuel lightAmount =analogRead( LIGHT ); // assurez-vous que la valeur de la lumière est comprise dans la plage d'intensité maximale des affichages lightAmount =( lightAmount / 255 ) * MAX_INTENSITY; // définit l'intensité mx.control(MD_MAX72XX::INTENSITY, lightAmount ); // Ping l'œil gauche avec une récursivité de 5 distance1 =eyeL.ping_median( 5 ); // Retardez 500 ms avant d'envoyer un ping à l'œil droit, afin que nous n'obtenions pas de résultats contradictoires delay(500); // Ping l'œil droit avec une récursivité de 5 distance2 =eyeR.ping_median( 5 ); // Vérifiez s'il est temps d'essayer d'insérer un clignotement if ( nextBlink  0) { ShowEye_Right(); état actuel =1 ; } // Maintenant, si distance2 est supérieur à distance1 et que distance2 est également supérieur à 0, alors nous voulons regarder à gauche else if ( distance1  0 ) { ShowEye_Left(); état actuel =2 ; } // retarde la boucle de 250 ms pour s'assurer que les yeux ont le temps d'afficher correctement delay(250);}/****************************** *************//************ MAX7219 Trucs ************//******* ********************************/void ShowEye_Right(){ // Efface les affichages mx.clear(); // Définit la luminosité actuelle de l'affichage mx.control(MD_MAX72XX::INTENSITY, lightAmount ); // Boucle sur chaque ligne des affichages pour (uint8_t row=0; row 

Pièces et boîtiers personnalisés

Imprimez avec n'importe quelle imprimante 3D, aucun paramètre spécifique requis.Imprimez avec n'importe quelle imprimante 3D, aucun paramètre spécifique requis.

Schémas

ultrasoniceyes_final_Th84xpUyB2.fzz

Processus de fabrication

  1. Attaque d'OVNI !
  2. Stores intelligents
  3. Ardulock 3D RVB
  4. MyRiver
  5. Iron Man
  6. Capteur d'obstacles simple avec Arduino
  7. Jeu de manette
  8. Trouvez-moi
  9. Contrôle de l'humidificateur Arduino