Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Medição de Distância em Tempo Real com Sonar Arduino e Visualização no Processing

Componentes e Materiais

Arduino UNO1
Micro Servo SG901
Sensor Ultrassônico HC-SR041
Jumpers (genéricos)1
Protoboard Tamanho Completo1

Ferramentas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

Inicialmente pensei em fazer um carro desvia-obstáculos, mas achei muito comum. Decidi criar um sonar usando o mesmo conceito: servo + sensor HC-SR04. Como não tinha display TFT, usei o Processing IDE para visualizar a saída no PC com boa resolução. Pratiquei primeiro no editor web p5 e depois migrei para o Processing com bibliotecas para leitura serial.

O sensor ultrassônico foi colado no servo com cola quente, cobrindo 180°. A saída mostra se objeto foi detectado, além de distância e ângulo precisos.

Código

Código para Arduino IDE (C/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);
}

void loop(){
  for(int i=0;i<180;i+=1){
    s1.write(i);
    delay(30);
    distance = calDist();
    Serial.print(i);
    Serial.print(",");
    Serial.print(distance);
    Serial.print(".");
  }
  for(int i=180;i>0;i-=1){
    s1.write(i);
    delay(30);
    distance = calDist();
    Serial.print(i);
    Serial.print(",");
    Serial.print(distance);
    Serial.print(".");
  }
}

int calDist(){
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance= duration*0.034/2;
  return distance;
}

Código para Processing IDE (Java)

import processing.serial.*;
Serial myPort;
String ang="", distance="", 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, width, height*0.93);
  fill(0,255); rect(0,height*0.93,width,height);
  drawRadar(); drawLine(); 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 = int(ang);
  dist = int(distance);
}

void drawRadar(){ /* desenha arcos e linhas do radar */ }
void drawLine(){ /* desenha linha do ângulo atual */ }
void drawObject(){ /* desenha objeto detectado */ }
void drawText(){ /* desenha textos de escala e distância */ }

Esquemático

Conexões: HC-SR04 (Trig→12, Echo→11), Servo (Sinal→9), alimentação 5V/GND comum.

Processo de manufatura

  1. Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense
  2. Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
  3. Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
  4. Construa um Dispositivo de Levitação Ultrassônica com Arduino – Guia Passo a Passo
  5. Construa um Voltímetro Inteligente com Arduino e Smartphone – Projeto DIY Fácil
  6. Registrador de Temperatura e Umidade com Arduino, DHT11 e Ethernet Shield
  7. Construa um Pote Inteligente IoT com ESP8266, Arduino e Sensor Ultrassônico – Monitoramento em Tempo Real
  8. Contador Inteligente de Vagas: Rastreamento de Veículos em Tempo Real com Arduino, Processing e PHP
  9. Controle Suave de Brilho de LED com Bolt IoT e Arduino UNO
  10. Construa uma Bússola Digital em Tempo Real com Arduino e Processing