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

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Komponenten und Materialien

Arduino Nano R3 1
Ultraschallsensor HC-SR04 1
18650-Zelle 1
TP4056 Li-Ion-Lademodul 1
DC-DC 5V Step-Up-Wandler (Boost Converter) 1
Summer (Buzzer) 1
Drehpotentiometer 1
Schieberschalter 1
LED (rot 2×, grün 1×, blau 1×) 4
Widerstand 330 Ω 2
M3 Zylinderschrauben 10 mm 4
Drähte (18 AWG) 1
3D-gedruckte Teile (3 Gehäuseteile) 1
Gewindeadapter (für Stativ) 1

Benötigte Werkzeuge und Maschinen

Apps und Online-Dienste

Über dieses Projekt

Einführung

Die Sportwissenschaftliche Abteilung des Lehman College führte Studien zum Krafttraining durch. Inkonsistenzen im Bewegungsumfang bei Wiederholungen verfälschten Daten. Ich sollte ein Gerät bauen, das den vollen Bewegungsumfang bei Maschinen- oder Freihantelübungen erkennt.

Anforderungen:

Video

(Video im Original)

Teile

Die wichtigsten Teile sind unten abgebildet, vollständige Liste im BoM oben. Auswahl nicht optimal, sondern basierend auf Verfügbarkeit. Footprint ließe sich mit Custom PCBs, SMD-Bauteilen oder LiPo-Akku stark reduzieren.

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse
Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Code

NewPing-Library erforderlich (unten verlinkt).

Summer-Frequenz und untere/obere Grenzen sind globale Variablen, anpassbar. Grenzen = Min/Max-Distanz des Sensors, gemappt auf Analogwert [0,5]V vom Potentiometer.

int frequency = 700; // Frequenz in Hz
int lower_bound = 60; // Distanz in mm
int upper_bound = 200; // Distanz in mm

Beim Start 3 Pieptöne (Boot erfolgreich, siehe setup()). loop() fragt kontinuierlich Ultraschallsensor ab und vergleicht mit Potentiometer-Schwellwert.

3D-Druck

Dateien auf Thingiverse oder als einzelne Datei unten. CAD-Design nicht Thema hier. Modell berücksichtigt 3D-Druck-Limitationen: Überhänge durch 45°-Fasen minimiert (weniger Stützmaterial), großzügige Toleranzen für unterschiedliche Druckerkalibrierung.

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse
Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Druckzeiten (meine Werte):

Montage

Schaltpläne unten. Teile zuerst ohne Verdrahtung einpassen zur Passprüfung.

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse
Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Geborgene IDE-Kabel als Leitungen. Kabelgruppen lassen sich abziehen und bleiben verbunden – für Ordnung.

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse
Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Die meiste Elektronik sitzt auf einem Druckteil – Kabelrouting und -management durchdenken.

SMD-Status-LEDs auf TP4056 abgelötet. Erweiterungsdrähte + 3mm THT-LEDs eingelötet. Vorwiderstände bleiben auf Board. Video dazu verlinkt.

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Arduino Nano hat nur 2 zugängliche GND-Pads → Lochrasterstreifen als GND-Verteilung. Gleiches für 5V-Leitung (siehe Bild).

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse
Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Leiterbahn auftrennen (rotes „X“), damit 5V nicht auf GND kurzschließt. Nur Kupfer oben unterbrechen, nicht ganzes Board.

Komponenten außerhalb des Gehäuses verdrahten, zwischendurch zum Längenmessen und Prüfen auf Kabelinterferenzen einpassen.

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Potentiometer um 6 mm gekürzt, damit es weniger vorsteht.

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

18650 direkt angelötet – schlechte Praxis. Überhitzung beschädigt Zelle und kann verzögert versagen. Richtig: Aluminiumstreifen Punktschweißen.

Heißkleber für Elektronikbefestigung – schämenswert. Vermeiden, wo möglich. Mechanisches Design und Schrauben halten länger. Heißkleber versagt mit der Zeit. Für Prototypen verständlich, für Serie nie.

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Zusammenfassung

Rückblickend wäre IR-Sensor besser als Ultraschall gewesen – aber das wusste ich erst nach Experimenten. IR: schmalerer Erfassungswinkel, aber geringere Max-Distanz (~1 m).

Version 2: LiPo statt 18650. Großer geriffelter Adapter-Mutter schwer und platzraubend. Standard-Stativgewinde 1/4" → simpler 1/4"-Mutter aus Baumarkt reicht. Custom PCBs halbieren Volumen.

Für Prototyp von Konzept bis Übergabe in 2 Wochen: zufriedenstellend.

Zukunft des Projekts

Beim Experimentieren mit Ultraschall Grenzen kennengelernt: Erfassungswinkel ~±15° (30° gesamt). Objekt löst Summer aus, bevor es genau über Sensor ist → Ungenauigkeiten. Auch: Objektebene nicht senkrecht zur Schallwelle → kein reflektiertes Signal → keine Distanzmessung.

Ursprünglicher Plan: Gerät am Boden, Hantelscheiben lösen Auslöser beim Absenken. Engineering-Kollege schlug Inversion vor: Sensor an bewegter Stange, nach unten gerichtet → Boden wird Auslöser. Eliminiert FOV-Ungenauigkeiten.

Tolle Lösung, einfach umsetzbar. Bestellter 1/4"-Stativadapter kam mit 1/4"→3/8" UND 3/8"→1/4" Adapter – der zweite kommt nun zum Einsatz!

Da Dremel erst später verfügbar war, musste ganzes Stativadapter-Gewinde im 3D-Modell berücksichtigt werden. In Kombination mit 18650 deutlich schwerer. Ich will kein Gewicht hinzufügen – zweiten Adapter kürzen vor neuem Mount-Modell. In einer Woche zurück am Projekt für alternative Montage. Bis dahin: funktioniert trotzdem!

Code

RangeDetectionDevice.ino (Arduino)
/** Viktor Silivanov 3/22/2018 Portable distance detection device using the HC-SR04 Ultrasonic sensor with distance adjustment for triggering the buzzer. **/ 
//******************** Libraries ****************************************************************************************************************************************************************************************************************
#include <NewPing.h>
//******************** Pins ********************************************************************************************************************************************************************************************************************
//Analog Pins
#define wiper A5
//Digital Pins
#define echo 2
#define trig 3
#define ON_LED 7
#define buzzer 8
#define buzzer_LED 9
//******************** Global Variables ********************************************************************************************************************************************************************************************************* 
//User Modification Allowed
int frequency = 700; //Frequency in Hz
int lower_bound = 60; //Distance in mm
int upper_bound = 200; //Distance in mm
//Do Not Modify
int buzz_time = 250; //Time in milliseconds for buzzer right upon startup
int buzz_delay = 280; //Time in milliseconds for buzzer delay right upon startup
int max_distance = 400; //Argument for object in the NewPing library
int i = 0;
int distance;
int threshold;
NewPing sonar(trig, echo, max_distance); //Instanciation of object "sonar"
//******************** Setup ********************************************************************************************************************************************************************************************************************
//This function runs only once
void setup() {
  Serial.begin(9600);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(buzzer_LED, OUTPUT);
  pinMode(ON_LED, OUTPUT);
  digitalWrite(ON_LED, HIGH); //Turns on green LED; Stays on while unit is on
  //Buzzer beeps 3 times upon turning on device
  while(i < 3){
    digitalWrite(buzzer_LED, HIGH);
    tone(buzzer, frequency, buzz_time);
    delay(buzz_delay);
    i++;
  }
  digitalWrite(buzzer_LED, LOW);
}
//******************** Runs Endlessly ***********************************************************************************************************************************************************************************************************
void loop() {
  distance = sonar.ping_cm(); //Object "sonar" utilizes ping_cm() function from the library, which returns a value in cm.
  threshold = analogRead(wiper); //Obtain analog value from wiper of the potentiometer
  threshold = map(threshold, 0, 1023, lower_bound, upper_bound); //Translate analog readings into trigger range.
  if(distance != 0 && distance < threshold){
    //Condition to trigger the buzzer
    tone(buzzer, frequency);
    digitalWrite(buzzer_LED, HIGH);
  } else{
    //State of buzzer & LED otherwise
    noTone(buzzer);
    digitalWrite(buzzer_LED, LOW);
  }
  //serial_test(); //Uncommment this to view data from the serial monitor
}
//******************** Test Function ************************************************************************************************************************************************************************************************************
//Utilizes serial monitor to display some values. Used for testing/debugging purposes.
void serial_test(){
  Serial.print("Ping: ");
  Serial.print(distance);
  Serial.println("cm");
  Serial.print("Range: [");
  Serial.print(lower_bound);
  Serial.print(", ");
  Serial.print(upper_bound);
  Serial.println("] cm");
  Serial.print("Threshold: ");
  Serial.print(threshold);
  Serial.println("cm");
  delay(100);
}

Benutzerdefinierte Teile und Gehäuse

Alle 3 Teile in einer Datei zusammengefasst

Schaltpläne

Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse

Herstellungsprozess

  1. TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
  2. Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
  3. Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
  4. 37-LED-Roulette-Spiel mit Arduino Nano bauen – Europäisches Layout
  5. ATtiny85 Mini-Arcade: Snake – Handheld OLED-Spielekonsole selbst bauen
  6. Audio-reaktive Schreibtischlampe mit Arduino Nano bauen
  7. Autonomes Gesichtsverfolgungs-Robotercar mit Arduino Nano & OpenCV
  8. Kupfer-Galvanik-Projekt: Intelligentes System mit Arduino UNO bauen
  9. NeoPixel-Matrix Pong auf Arduino Nano: Neon-Pong selbst bauen
  10. Tragbare Temperatur-Messstation – TMP36 & LCD-Display