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

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

Composants et fournitures

ComposantQuantitéNotes
Arduino Nano R31
Capteur ultrasonique HC-SR041
Cellule 186501
Chargeur Li-ion TP40561
Convertisseur DC-DC 5V Boost1
Buzzer1
Potentiomètre rotatif1
Interrupteur à glissière1
LED (générique)4Rouge (2), Verte (1), Bleue (1)
Résistance 330 Ω2
Vis M3 tête cylindrique 10 mm4OpenBuilds
Fils 18 AWG1
Pièces imprimées 3D (3 parties)1Boîtier
Adaptateur de filetage (pour trépied)1

Outils et machines nécessaires

Applications et services en ligne

À propos de ce projet

Introduction

Le département des sciences de l'exercice du Lehman College menait des études sur l'haltérophilie. Des incohérences dans l'amplitude des répétitions pouvaient fausser les données. On m'a demandé de créer un dispositif identifiant l'amplitude complète pour les exercices sur machines ou gros poids.

Le dispositif devait répondre aux conditions suivantes :

Vidéo

(Vidéo de démonstration disponible sur la page originale)

Pièces

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D
Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

La plupart des pièces sont montrées ; pour la liste complète, voir la nomenclature (BoM) ci-dessus. Le choix des composants n'est pas optimal mais basé sur ce que j'avais. L'encombrement pourrait être grandement réduit avec des PCB personnalisés, composants CMS ou batterie LiPo.

Code

La bibliothèque NewPing est requise (fournie en bas).

La fréquence du buzzer et les bornes supérieures/inférieures sont des variables globales modifiables. Les bornes correspondent à la distance min/max lue par le capteur, mappée sur la tension analogique [0,5]V du potentiomètre.

int frequency = 700;      // Fréquence en Hz
int lower_bound = 60;     // Distance min en mm
int upper_bound = 200;    // Distance max en mm

Au démarrage (setup()), 3 bips indiquent un démarrage réussi. Ensuite, loop() interroge en continu le capteur ultrasonique et compare la distance au seuil défini par le potentiomètre.

Impression 3D

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D
Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

Tous les fichiers sont sur Thingiverse, ou en un fichier condensé en bas de page. La conception tient compte des limites de l'impression 3D : déportés minimisés par des chanfreins à 45° (moins de supports), jeux généreux pour s'adapter à différentes calibrations d'imprimantes.

Temps d'impression (mesuré) :

Assemblage

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D
Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

Les schémas sont en bas de page. On insère d'abord les pièces sans câbler pour vérifier les ajustements.

J'ai utilisé des câbles IDE récupérés : on peut peler des groupes de fils restants attachés, ce qui maintient l'ordre.

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D
Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

La plupart de l'électronique est fixée sur une pièce imprimée, nécessitant une réflexion sur le routage des fils.

Les LED CMS indicatrices sur la carte TP4056 ont été dessoudées. Des fils d'extension et des LED THT 3 mm ont été soudées à leur place. Les résistances de limitation de courant restent intégrées à la carte. Une vidéo montre cette relocation.

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

L'Arduino Nano n'ayant que 2 pads GND accessibles, une plaque à pastilles (stripboard) a servi à multiplier les connexions GND et 5V.

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D
Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

Important : Il faut couper la piste de cuivre (marquée par un « X » rouge) pour ne pas court-circuiter 5V sur GND. Seule la piste supérieure doit être coupée, pas toute la plaque.

Le câblage a été fait hors de l'enceinte, avec essais réguliers d'insertion pour vérifier les longueurs et interférences.

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

Le potentiomètre a été rogné de 6 mm pour moins dépasser.

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

La connexion à la 18650 a été soudée directement (mauvaise pratique : surchauffe = danger). Le soudage par points d'une bande d'aluminium est la méthode correcte.

La colle chaude a été utilisée honteusement pour fixer l'électronique. À éviter quand possible : conception mécanique et fixations durent plus longtemps. La colle finit par lâcher. Acceptable pour prototype, jamais pour production.

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

Bilan

Avec le recul, j'aurais préféré un capteur IR plutôt qu'ultrasonique, mais je ne l'ai su qu'en expérimentant. Les capteurs IR ont un champ de vision plus étroit (trade-off : distance max ~90 cm).

Pour une V2 : batterie LiPo à la place de la 18650 (l'adaptateur fileté est lourd et encombrant). Le pas de vis standard trépied est 1/4", un simple écrou 1/4" du commerce suffit. Des PCB personnalisés diviseraient le volume par deux.

Pour un prototype conçu à la main en 2 semaines, je suis satisfait.

Évolution future du projet

En testant le capteur ultrasonique, j'ai découvert ses limites : champ de vision ~±15° (30° total). Un objet peut déclencher le buzzer avant d'être juste au-dessus → imprécisions. De plus, si le plan de l'objet n'est pas perpendiculaire (ou dans l'angle de tolérance) à l'onde sonore, le capteur ne reçoit pas d'écho et ne mesure pas la distance.

Mon plan initial : unité au sol, plaques de la barre d'haltérophilie déclenchent le buzzer en descendant sous le seuil (capteur fixe, déclencheur mobile). Un collègue ingénieur a proposé d'inverser le système : fixer le capteur sur la barre mobile, pointé vers le sol. Le sol devient le déclencheur. Cela élimine les imprécisions dues au large champ de vision.

Cette solution est non seulement excellente, mais facile à implémenter. La commande de l'adaptateur trépied 1/4" incluait un adaptateur 1/4"→3/8" ET un 3/8"→1/4". Le second servira !

N'ayant pas accès à mon Dremel au début de la modélisation 3D, j'ai dû prévoir tout l'adaptateur trépied. Cela, combiné à la 18650, alourdissait l'ensemble. Je veux éviter le superflu, donc je raccourcirai le second adaptateur avant de modéliser le nouveau support. Je reprends le projet dans une semaine pour finaliser ce montage alternatif. En attendant, ça fonctionne !

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();
  threshold = analogRead(wiper);
  threshold = map(threshold, 0, 1023, lower_bound, upper_bound);
  if(distance != 0 && distance < threshold){
    tone(buzzer, frequency);
    digitalWrite(buzzer_LED, HIGH);
  } else{
    noTone(buzzer);
    digitalWrite(buzzer_LED, LOW);
  }
  //serial_test(); //Uncommment this to view data from the serial monitor
}
//******************** Test Function ************************************************************************************************************************************************************************************************************
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);
}

Pièces personnalisées et boîtiers

Les 3 pièces sont sauvegardées dans un seul fichier.

Schémas

Détecteur de distance portable – Kit DIY Arduino Nano avec HC-SR04, alimentation 18650 et boîtier imprimé 3D

Processus de fabrication

  1. Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense
  2. Construire un jeu gyroscopique temps réel avec Arduino Nano et capteur MPU-6050
  3. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  4. Créer votre propre jeu de roulette à 37 LED avec Arduino Nano
  5. ATtiny85 Mini Arcade : Snake – Construire une console de jeu portable OLED
  6. Construire une lampe de bureau réactive à l'audio avec Arduino Nano
  7. Voiture robot autonome de suivi de visage avec Arduino Nano et OpenCV
  8. Projet de galvanoplastie au cuivre : Construisez un système intelligent avec Arduino UNO
  9. Jeu Pong sur Matrice NeoPixel avec Arduino Nano