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

Sonar utilisant arduino et affichage lors du traitement de l'IDE

Composants et fournitures

Arduino UNO
× 1
Micro-servomoteur SG90
× 1
Capteur à ultrasons - HC-SR04 (Générique)
× 1
Câbles de raccordement (générique)
× 1
Planche à pain sans soudure pleine grandeur
× 1

Outils et machines nécessaires

Pistolet à colle chaude (générique)
Kit de fer à souder, SolderPro 150

Applications et services en ligne

Arduino IDE
The Processing Foundation Processing

À propos de ce projet

Bonjour à tous, on m'a suggéré de faire une voiture d'évitement d'obstacles mais j'ai pensé qu'il était trop courant et peu pratique d'en faire une..., alors j'ai pensé à faire un sonar en utilisant le concept de servo de voiture d'évitement d'obstacles et de capteur HC-SR04.

Je n'avais pas d'écran lcd tft à cause duquel je ne savais pas comment afficher la sortie du sonar. Ensuite, j'ai pensé à utiliser l'IDE de traitement car il permettait d'afficher la sortie du sonar sur mon PC avec une belle résolution ! mais comme j'étais nouveau dans le traitement de l'IDE, je ne savais pas l'utiliser, donc pour la pratique, j'ai utilisé l'éditeur Web p5 (juste pour la pratique) que j'ai utilisé le traitement de l'IDE et certaines bibliothèques pour lire la sortie du sonar et l'afficher sur le PC !

J'ai attaché un capteur à ultrasons sur un servomoteur à l'aide d'un pistolet à colle chaude afin que le capteur à ultrasons tourne avec un servo et couvre une plage de 180 degrés, puis la sortie, qu'un objet soit détecté ou non, est affichée sur le traitement IDE et j'ai écrit un peu plus de code qui affiche avec précision la distance et l'angle !

Amis, j'ai également partagé à quoi ressemble la sortie sur le traitement de l'IDE, vous pouvez utiliser l'image comme référence avec votre projet :)

Comme nous savons à quoi ressemblent l'assemblage et la sortie, la seule chose qui reste est la vidéo de sortie, regardez la vidéo jusqu'à la fin pour comprendre la sortie beaucoup plus correctement.

Code

  • Code sonar pour arduino IDE
  • Code sonar pour le traitement de l'IDE
Code sonar pour arduino IDEC/C++
#include const int trigPin=12;const int echoPin=11;long duration;int distance;Servo s1;void setup() { Serial.begin(9600); pinMode(trigPin,OUTPUT); pinMode(echoPin, INPUT); s1.attach(9);}boucle vide(){ for(int i=0;i<180;i=i+1){ s1.write(i); retard(30); distance =calDist(); Serial.print(i); Serial.print(","); Serial.print(distance); Serial.print("."); } for(int i=180;i>0;i=i-1){ s1.write(i); retard(30); distance =calDist(); Serial.print(i); Serial.print(","); Serial.print(distance); Serial.print("."); }} int calDist(){ digitalWrite(trigPin, LOW); délaiMicrosecondes(2) ; digitalWrite(trigPin, HAUT); délaiMicrosecondes(10) ; digitalWrite(trigPin, LOW); durée =pulseIn(echoPin, HIGH); distance=durée*0.034/2; distance de retour ;}
Code sonar pour le traitement de l'IDEJava
import processing.serial.* ; myPort série; String ang="";String distance="";String data="";int angle, dist;void setup() { size (2000,800); myPort =new Serial(this,"COM3", 9600); myPort.bufferUntil('.'); background(0);}void draw() { fill(0,5); noStroke(); rect(0, 0, largeur, hauteur*0,93); noStroke(); remplir (0,255); rect(0,hauteur*0.93,largeur,hauteur); dessinerRadar(); dessiner une ligne(); drawObject(); drawText();}void serialEvent (Serial myPort) { data =myPort.readStringUntil('.'); data =data.substring(0,data.length()-1); int index1 =data.indexOf(","); ang=data.substring(0, index1) ; distance=data.substring(index1+1, data.length()); angle =entier(ang); dist =int(distance); System.out.println(angle);}void drawRadar(){ pushMatrix(); aucun remplissage(); poids du trait (0,5); course (10,255,10) ; translate(largeur/2,hauteur-hauteur*0,06) ; ligne(-largeur/2,0,largeur/2,0) ; arc(0,0,(largeur*0,5),(largeur*0,5),PI,TWO_PI); arc(0,0,(largeur*0,25),(largeur*0,25),PI,TWO_PI); arc(0,0,(largeur*0,75),(largeur*0,75),PI,TWO_PI); arc(0,0,(largeur*0.95),(largeur*0.95),PI,TWO_PI); line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30))); line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60))); line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90))); line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120))); line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150))); accident vasculaire cérébral (175, 255, 175); line(0,0,(-width/2)*cos(radians(15)),(-width/2)*sin(radians(15))); line(0,0,(-width/2)*cos(radians(45)),(-width/2)*sin(radians(45))); line(0,0,(-width/2)*cos(radians(75)),(-width/2)*sin(radians(75))); line(0,0,(-width/2)*cos(radians(105)),(-width/2)*sin(radians(105))); line(0,0,(-width/2)*cos(radians(135)),(-width/2)*sin(radians(135))); line(0,0,(-width/2)*cos(radians(165)),(-width/2)*sin(radians(165))); popMatrix();}void drawLine() { pushMatrix(); poids de la course(9) ; course (0,255,0); translate(largeur/2,hauteur-hauteur*0,06) ; line(0,0,(largeur/2)*cos(radians(angle)),(-largeur/2)*sin(radians(angle))); popMatrix();}void drawObject() { pushMatrix(); poids de la course(9) ; trait (255,0,0); translate(largeur/2,hauteur-hauteur*0,06) ; float pixelDist =(dist/40.0)*(width/2.0); float pd=(largeur/2)-pixelDist ; float x=-pixelDist*cos(radians(angle)); float y=-pixelDist*sin(radians(angle)); if(dist<=40){ line(-x,y,-x+(pd*cos(radians(angle))),y-(pd*sin(radians(angle)))); } popMatrix();}void drawText(){ pushMatrix(); remplir(100,200,255); textSize (25); texte("10cm",(largeur/2)+(largeur*0.115),hauteur*0.93) ; texte("20cm",(largeur/2)+(largeur*0,24),hauteur*0,93); texte("30cm",(largeur/2)+(largeur*0.365),hauteur*0.93) ; texte("40cm",(largeur/2)+(largeur*0.45),hauteur*0.93) ; if(dist<=40) { text("Distance :"+dist,width*0.7,height*0.99) ; } translate(width/2,height-height*0.06) ; tailletexte(25); text(" 30",(largeur/2)*cos(radians(30)),(-width/2)*sin(radians(30))); text(" 60",(largeur/2)*cos(radians(60)),(-width/2)*sin(radians(60))); text("90",(largeur/2)*cos(radians(91)),(-width/2)*sin(radians(90))); text("120",(largeur/2)*cos(radians(123)),(-width/2)*sin(radians(118))); text("150",(largeur/2)*cos(radians(160)),(-width/2)*sin(radians(150))); popMatrix(); }

Schémas


Processus de fabrication

  1. Détecteur de langage TinyML basé sur Edge Impulse et Arduino
  2. Jeu de gyroscope Arduino avec MPU-6050
  3. Dés numériques Arduino
  4. Machine à LÉVITATION ULTRASONIQUE utilisant ARDUINO
  5. Voltmètre DIY utilisant Arduino et Smartphone
  6. Enregistreur de données de température et d'humidité
  7. IOT - Smart Jar utilisant ESP8266, Arduino et capteur à ultrasons
  8. Compteur de voitures utilisant Arduino + Traitement + PHP
  9. Comment faire une boussole en utilisant Arduino et Processing IDE