Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

UltrasonicEyes

Komponenten und Verbrauchsmaterialien

Ultraschallsensor - HC-SR04 (Generic)
× 2
Arduino Nano R3
× 1
Fotowiderstand
× 1
Maxim Integrated 8x8 LED Matrix MAX7219
× 2
Lötbares Breadboard Half Size
× 1
Jumper (generisch)
× 1
Widerstand 330 Ohm
× 1

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Ich wollte ein skurriles Projekt mit einigen 8x8-Matrix-LEDs und einigen Ultraschallsensoren machen ... etwas anderes als das, was andere Leute normalerweise mit Ultraschall machen - und ich wollte, dass es Spaß macht und verspielt ist.

Also habe ich etwas geschaffen, das ich UltrasonicEyes nenne - ein lustiges Projekt, bei dem man irgendwo in der Nähe von Menschen sitzt und sich umschaut, wo sich die Leute aufhalten, und blinzeln und naja, dich auf eine lustige und gruselige Weise verwirren!

Was werden wir brauchen?

Ultraschallsensormodule wurden entwickelt, um Hindernisse zu erkennen und zu bestimmen, wie weit das Hindernis entfernt ist, daher haben sie im Allgemeinen eine Erkennungsentfernung von bis zu 3-4 Metern, was eine gute Entfernung für dieses Projekt ist, um es in einem Wohnzimmer oder Büro zu platzieren Bereich.

Ich verwende 2x HC-SR04-Module, die ich von e-Bay abgeholt habe. Sie finden sie supergünstig.

Die Module sind ziemlich einfach zu bedienen und benötigen nur 3 oder 4 Drähte, um eine Verbindung zu einem Arduino-Mikrocontroller herzustellen.

Die von mir gewählten 8x8-LED-Matrix-Module ermöglichen eine Verkettung, sodass nur eines von ihnen mit dem Arduino verbunden werden muss und das zweite Modul mit dem ersten verbunden wird.

Die Module verwenden SPI, daher benötigen wir nur 5 Drähte, um zum Arduino zu gehen, um die Augenbilder auf beiden Displays zu steuern. Wir brauchen natürlich zwei davon!

HINWEIS: Der bereitgestellte Code verwendet Hardware SPI Wenn Sie also ein anderes Arduino-Board als das Nano verwenden, überprüfen Sie bitte, welche der Pins Hardware-SPI-Pins für MOSI und SCK sind und verdrahten Sie sie entsprechend!

Sie benötigen auch einen Arduino-kompatiblen Mikrocontroller eines Typs. Ich verwende einen Nano (kompatibel), weil er klein genug ist, um in das Gehäuse zu passen, über USB für die Stromversorgung / Programmierung der Firmware verfügt und einen Stapel von GPIOs hat, um auch alles anzuschließen.

Ich habe alles auf ein Proto-Board gelötet, das die gleiche Größe wie ein halbes Steckbrett hat, aber ich würde empfehlen, dass Sie zuerst alles auf ein halbes Steckbrett bauen, da das Projekt auf diese Weise kein Löten erfordert und leicht auseinandergezogen werden kann oder geändert.

Die letzten Dinge, die Sie benötigen, sind ein LDR (Fotowiderstand) zum Erkennen von Licht, ein 330-Ohm-Widerstand und eine Reihe von Steckbrettdrähten, sowohl männlich zu weiblich als auch weiblich zu weiblich.

HINWEIS: Sie können in diesem Projekt alle Farbdrähte verwenden ... es ist nicht erforderlich, die gleichen Farben zu verwenden, die ich vorgebe, aber , es ist immer eine gute Praxis, Rot und Schwarz für POWER und GND zu verwenden und andere Farben für andere Kabel zu verwenden, da es sehr einfach zu erkennen ist, welche Kabel mit Strom versorgt werden und welche Kabel für Daten und Signale verwendet werden.

Alles zusammenfügen

Beginnen wir damit, den Nano ganz am Ende auf das Steckbrett zu stecken, so dass der USB über die Kante hängt, aber alle Pins immer noch in der Platine eingesteckt bleiben.

POWER- und GND-Anschlüsse

Verbinden Sie nun ein schwarzes Kabel vom GND-Anschluss des Nano mit der GND-Schiene des Steckbretts. Machen Sie nun dasselbe mit einem roten Draht und verbinden Sie die 3V (oder 5V, wenn das alles ist, was Sie haben) mit der POWER-Schiene auf dem Steckbrett.

Während wir an GND und POWER arbeiten, verbinden wir ein schwarzes Kabel zwischen den beiden GND-Schienen auf jeder Seite des Steckbretts. Machen Sie dasselbe mit einem roten Kabel und den beiden POWER-Schienen.

*Hinweis: Einige Matrix-LED-Panels benötigen je nach Marke möglicherweise 5 V anstelle von 3,3 V. Wenn Sie feststellen, dass die Ergebnisse unzuverlässig sind, versuchen Sie es mit dem 5V-Pin des Arduino.

Verdrahten wir die Ultraschallsensoren

Verbinden Sie ein schwarzes Kabel zwischen den GND-Pins an jedem der Ultraschallsensoren mit der GND-Schiene auf dem Steckbrett. Machen Sie dasselbe mit einem roten Draht und den VCC (POWER)-Pins an den Sensoren und der POWER-Schiene am Steckbrett.

Jetzt können wir die folgenden weißen und blauen Drähte anschließen:

  • Weißes Kabel vom TRIG-Pin am Sensor 1 zum Digital-Pin 2 am Arduino
  • Blaues Kabel vom ECHO-Pin an Sensor 1 zum Digital-Pin 3 am Arduino
  • Weißes Kabel vom TRIG-Pin am Sensor 2 zum Digital-Pin 4 am Arduino
  • Blaues Kabel vom ECHO-Pin am Sensor 2 zum Digital-Pin 5 am Arduino

Gut gemacht! Für die Ultraschallsensoren ist gesorgt!

Anschließen der beiden 8x8 LED-Matrix-Displays

Verbinden Sie ein schwarzes Kabel zwischen dem eingehenden GND-Pin auf einem der LED-Matrix-Displays mit der GND-Schiene auf dem Steckbrett. Machen Sie dasselbe mit einem roten Draht und dem eingehenden VCC (POWER)-Pin auf dem Display und der POWER-Schiene auf dem Steckbrett.

Verbinden Sie ein schwarzes Kabel zwischen dem ausgehenden GND-Pin von Display eins und dem eingehenden GND-Pin von Display zwei. Machen Sie dasselbe mit einem roten Draht und dem ausgehenden VCC-Pin auf Display 1 und dem eingehenden VCC-Pin auf Display 2.

Während wir die Kabel zwischen den beiden Displays verbinden, können wir diesen Teil beenden ...

  • Verbinde ein gelbes Kabel zwischen dem ausgehenden SCK (Clock)-Pin auf Display eins und dem eingehenden SCK-Pin auf Display zwei.
  • Verbinde ein blaues Kabel zwischen dem ausgehenden MOSI (Daten)-Pin auf Display eins und dem eingehenden MOSI-Pin auf Display zwei.
  • Schließen Sie ein weißes Kabel zwischen dem ausgehenden CS-Pin (Select) auf Display eins und dem eingehenden CS-Pin auf Display zwei an.

Toll! Jetzt können wir den Rest von Display 1 mit dem Steckbrett verbinden ...

  • Verbinden Sie ein gelbes Kabel zwischen dem eingehenden SCK-Pin auf Display 1 und dem digitalen Pin 13 auf dem Arduino.
  • Verbinden Sie ein blaues Kabel zwischen dem eingehenden MOSI-Pin auf Display 1 und dem digitalen Pin 11 auf dem Arduino.
  • Verbinden Sie ein weißes Kabel zwischen dem eingehenden CS-Pin auf Display 1 und dem digitalen Pin 10 auf dem Arduino.

ERINNERUNG: Der bereitgestellte Code verwendet Hardware SPI Wenn Sie also ein anderes Arduino-Board als das Nano verwenden, überprüfen Sie bitte, welche der Pins Hardware-SPI-Pins für MOSI und SCK sind und verdrahten Sie sie entsprechend!

Gut erledigt. Nun zu den letzten Verdrahtungsschritten...

Anschließen des LDR und des Widerstands zur Erkennung von Umgebungslicht

Warum machen wir diesen Schritt überhaupt, bevor wir diese Drähte anschließen? Nun, ich freue mich, dass Sie gefragt haben! Der mit dem Arduino verbundene LDR ermöglicht es uns zu erkennen, ob es um UltrasonicEyes hell oder dunkel ist, und wir werden diese Informationen verwenden, um die LED-Anzeigen entsprechend aufzuhellen oder zu dimmen.

Wir möchten nicht, dass die Displays nachts superhell sind, wie bei dunklerem Licht, wir können die Displays immer noch recht gut sehen, wenn die Helligkeit etwa 30 % beträgt, aber bei Tageslicht oder in einem hellen Raum müssen wir die Helligkeit höher einstellen machen die Displays besser sichtbar.

Ok, lass uns diesen letzten Schritt abschließen, damit wir ihn in den 3D-Fall bringen können!

Verbinden Sie den LDR über 2 Stiftreihen auf dem Steckbrett, genau wie im obigen Schaltplan. Lassen Sie Platz, um den Widerstand und einen Draht zu platzieren, der zum Arduino führt.

Verbinden Sie den 330-Ohm-Widerstand zwischen einer Reihe von Pins auf einer Seite des LDR und der GND-Schiene des Steckbretts.

Verbinden Sie ein rotes Kabel zwischen der Stiftreihe auf der anderen Seite des LDR mit der POWER-Schiene des Steckbretts.

Schließlich verbinden wir einen braunen Draht zwischen der Reihe von Pins, mit denen der 330-Ohm-Widerstand verbunden ist, und dem analogen Pin 5 (A5) auf dem Arduino. Es muss ein analoger Pin sein, da wir einen Wert zwischen 0 und 255 aus dem LDR (Lichtstärke) lesen müssen, anstatt nur 0 und 1, wie wir es von einem digitalen Pin bekommen würden.

Lass es uns einschalten und den Code hochladen

Ok, das war's, wir sind alle verkabelt. Es ist an der Zeit, das USB-Kabel zwischen dem Arduino und Ihrem Computer anzuschließen und die unten bereitgestellte UltrasonicEyes-Skizze hochzuladen, um zu sehen, wie alles funktioniert.

Sobald es eingeschaltet ist und der Code hochgeladen wurde, gehen Sie vor Ihren Sensoren herum oder bewegen Sie Ihre Hände davor und sehen Sie, was passiert!

Möchten Sie es dauerhafter machen?

Möchten Sie Ihre UltrasonicEyes dauerhafter machen? Sehen Sie sich mein Video an, in dem es darum geht, die Breadboard-Version zu nehmen und sie hier auf ein Proto-Board zu löten...

Und dann die 2 Teile des Gehäuses auf einem beliebigen 3D-Drucker ausdrucken und wie im Video zusammenbauen!

Ich überlege auch, UltrasonicEyes um eine kapazitive Touch-Taste (oder eine normale Taste) zu erweitern, um durch verschiedene Augenformen zu wechseln... du kannst dir meine Experimente hier ansehen...

Sie können den Rest meiner Projekte und Videos auf... unerwartetmaker.com ansehen

Folge mir auf Twitter, Facebook, Instagram &Tindie

https://www.patreon.com/unexpectedmaker

Das war's!

Code

  • Ultraschallaugen
UltraschallaugenC/C++
#include  // Wir verwenden dies, um die 8x8 LED-Matrix-Displays zu steuern - Sie müssen diese Bibliothek vom Bibliotheksmanager installieren, wenn Sie sie noch nicht haben.#include  // Wir verwenden NewPing, um die Ultraschallsensoren zu steuern - Sie müssen diese Bibliothek vom Bibliotheksmanager installieren, wenn Sie sie noch nicht haben.// Definieren Sie Pins, die an das LED-Matrix-Display angeschlossen sind 1//#define CLK_PIN 13 / / Wir verwenden Hardware-SPI - stellen Sie sicher, dass Sie den CLK-Pin mit dem Hardware-CLK-Pin Ihres Geräts verbunden haben // #define DATA_PIN 11 // Wir verwenden Hardware-SPI - stellen Sie sicher, dass Sie den MOSI-Pin mit dem Hardware-MOSI-Pin verbunden haben auf Ihrem Gerät#define CS_PIN 10 // Chip Select Pin#define MAX_DEVICES 2 // Anzahl der Displays - wir brauchen 2, eines für jedes Auge#define LIGHT A5 // Wir verwenden Analog Pin 5 um den Lichtwert aus dem LDR auszulesen/ / Wir verwenden Hardware-SPI, die automatisch MD_MAX72XX mx =MD_MAX72XX(CS_PIN, MAX_DEVICES); // Initialisieren der 2 Matrix-Anzeigen#define t1 2 // Trigger-Pin auf Ultraschallsensor 1#define e1 3 // Echo-Pin auf Ultraschallsensor 1#define t2 4 // Trigger-Pin auf Ultraschallsensor 2#define e2 5 // Echo Pin auf Ultraschallsensor 2#define maxDist 400 // die maximale Entfernung für den UltraschallpulsNewPing eyeR (t2, e2, maxDist); // Ultraschallsensor initialisieren 2NewPing eyeL (t1, e1, maxDist); // Ultraschallsensor initialisieren 1// Wir verfolgen den aktuellen Zustand des Systems mit dieser Integer-Variablen, auf diese Weise können wir nach einem Blinzeln die Augen ausmachen, um in die letzte Richtung zu schauen, in der sie sich befanden// Mögliche Zustände sind:// 0:Blick nach vorne // 1:Blick nach rechts // 2:Blick nach linksint currentState =-1; // Wir speichern die Zeit und die Entfernung für die Pings für jeden Ultraschallsensor in diesen Variablenlong Duration1, Duration2;int Distance1, Distance2; // Wir möchten, dass das Blinken zufällig in den Cyclefloat eingefügt wird nextBlink =millis() + 1000;// In dieser Variable speichern wir die aktuelle Lichtintensität.float lightAmount =0;uint8_t eye_forward[COL_SIZE] ={ 0b00111100, 0b01000010, 0b01011010, 0b10101101, 0b10111101, 0b10011001, 0b01000010, 0b00111100};uint8_t eye_right[COL_010SI_100,b_010001ZE] 0110,b_010001ZE] 0,b_010001ZE11 ={B_010100 1 0b10111101, 0b11000011, 0b01111110, 0b00111100};void setup(){ // Initialisieren der Matrix Display-Bibliothek mx.begin(); // Stellen Sie die Pin-Modi für Ultraschallsensor 1 ein PinMode (t1, OUTPUT); pinMode (e1, EINGANG); // Stellen Sie die Pin-Modi für Ultraschallsensor 2 ein PinMode (t2, OUTPUT); PinMode (e2, EINGANG); // Stellen Sie jeden Trigger-Pin der Ultraschallsensoren so ein, dass er bei LOW beginnt digitalWrite (t1, LOW); digitalWrite (t2, LOW); // Setze den Pin-Modus für den LDR als INPUT pinMode (LIGHT, INPUT); // Beginnen Sie mit den nach vorne gerichteten Augen ShowEye_Forward(); currentState =0;}void loop () {// Lesen der aktuellen Lichtstärke lightAmount =analogRead (LIGHT); // Stellen Sie sicher, dass der Lichtwert im Bereich der maximalen Intensität des Displays liegt lightAmount =( lightAmount / 255 ) * MAX_INTENSITY; // setze die Intensität mx.control (MD_MAX72XX::INTENSITY, lightAmount); // Ping das linke Auge mit einer Rekursion von 5 distance1 =eyeL.ping_median( 5 ); // 500ms verzögern, bevor wir das rechte Auge anpingen, damit wir keine widersprüchlichen Ergebnisse erhalten delay(500); // Ping das rechte Auge mit Rekursion von 5 distance2 =eyeR.ping_median( 5 ); // Überprüfe, ob es Zeit ist, ein Blinken einzufügen if ( nextBlink  0) { ShowEye_Right(); aktueller Zustand =1; } // Wenn nun Distance2 größer als Distance1 und Distance2 auch größer als 0 ist, dann wollen wir nach links schauen else if ( Distance1  0 ) { ShowEye_Left(); aktueller Zustand =2; } // verzögere die Schleife um 250 ms, um sicherzustellen, dass die Augen Zeit haben, korrekt anzuzeigen delay(250);}/**************************** ************ //************ MAX7219 Zeug ************ //******** ********************************/void ShowEye_Right () { // Anzeigen löschen mx.clear (); // Aktuelle Displayhelligkeit einstellen mx.control(MD_MAX72XX::INTENSITY, lightAmount ); // Jede Zeile des Displays durchlaufen for (uint8_t row=0; row 

Kundenspezifische Teile und Gehäuse

Drucken Sie mit jedem 3D-Drucker, keine speziellen Einstellungen erforderlich. Drucken Sie mit jedem 3D-Drucker, keine speziellen Einstellungen erforderlich.

Schaltpläne

Ultraschallaugen_final_Th84xpUyB2.fzz

Herstellungsprozess

  1. UFO-Angriff!
  2. Smart Blinds
  3. 3D RGB Arduclock
  4. MyRiver
  5. Iron Man
  6. Einfacher Hindernissensor mit Arduino
  7. Joystick-Spiel
  8. Finde mich
  9. Arduino-Befeuchtersteuerung
  10. Kleiner Rover