Estacionamiento inteligente de diseño de graduación: rango ultrasónico nodemcu, envío de una solicitud al fondo

¿Por qué necesito usar energía ultrasónica aquí? Originalmente, lo que quería era ponerlo en la matrícula para reconocerlo. Siempre que la distancia del objeto medido sea inferior a un cierto valor, deje que la cámara comience a tomar fotografías y reconocerlo.Además, quiero instalarlo en cada espacio de estacionamiento.Un rango ultrasónico puede verificar si hay un automóvil en el espacio de estacionamiento actual, de modo que el número se pueda contar fácilmente, y todavía hay algunas operaciones de seguimiento que aún no han sido resueltos.

Consulte este blog para más detalles.

Como sugiere el nombre, los sensores ultrasónicos pueden medir la distancia mediante el uso de ondas ultrasónicas. El cabezal del sensor emite ondas ultrasónicas y recibe ondas reflejadas desde el objetivo. Los sensores ultrasónicos miden la distancia a un objetivo midiendo el tiempo entre la transmisión y la recepción. Por supuesto, en términos simples, un sensor ultrasónico es un dispositivo que mide la distancia de un objeto mediante el uso de ondas de sonido. Mide la distancia emitiendo una onda de sonido de una frecuencia específica y espera a que esa onda de sonido rebote. Al registrar el tiempo transcurrido entre la onda de sonido resultante y el rebote de la onda de sonido, se puede calcular la distancia entre el sensor y el objeto.

NodeMCU es una placa de desarrollo de hardware IoT de código abierto. Debido a que admite la función WIFI y el método de uso es muy similar a la placa de desarrollo Arduino, ha sido favorecida por más y más fabricantes de todo el mundo en los últimos años. NodeMCU es similar en tamaño a Arduino Nano. No fue desarrollado por el equipo de Arduino, pero también podemos desarrollarlo utilizando el IDE de Arduino. Y también tiene un auténtico "núcleo chino" - módulo ESP8266. Por lo tanto, en términos de rendimiento y precio, nuestro equipo Taiji Maker cree que NodeMCU es más digno de los amigos Maker para dedicar más tiempo a aprender y utilizar en el desarrollo de IoT.

Como base de IoT de Internet of Everything, en primer lugar, el costo del tablero de control de IoT no debe ser demasiado alto. Los costosos componentes de control de IoT no son propicios para el control de costos del proyecto o para que la mayoría de los entusiastas de Maker lo aprendan y lo usen. En este punto, NodeMCU tiene más ventajas que Raspberry Pi y las plataformas IoT de la familia Arduino.

Principio del módulo ultrasónico

Porque el sensor en sí solo mantiene su pin "ECHO" alto durante un período de tiempo que corresponde a la cantidad de tiempo que tarda en pasar de la forma de onda enviada al tiempo que tarda en recibir el reflejo (eco).

El módulo emite una ráfaga de ondas de sonido mientras aplica voltaje al pin de eco.

Este módulo recibe los reflejos de las ondas de sonido y elimina el voltaje del pin de eco.

Durante el rango, se generan pulsos en el sensor ultrasónico para enviar los datos al NodeMCU o cualquier otro microcontrolador.

El pulso de inicio es de aproximadamente 10us y la señal PWM basada en la distancia será de 150us-25us. Si no hay ningún obstáculo, el NodeMCU genera un pulso de 38us para confirmar que no se detecta ningún objeto.

Antes de leer la distancia medida por HC-SR04, primero debe comprender cómo calcular la distancia. Hay una fórmula para esto

Distance = 1/2×T×C
其中Distance是距离,T是发射和接收之间的时间,C是声速。
该值乘以1/2,因为T是返回距离的时间

alambrado

inserte la descripción de la imagen aquí

Código de ultrasonido

// 定义引脚编号
const int trigPin = 2;  //D4
const int echoPin = 0;  //D3
// 定义变量
long duration;
int distance;
void setup() {
    
    
    pinMode(trigPin, OUTPUT); // 将trigPin设置为输出
    pinMode(echoPin, INPUT); // 将echoPin设置为输入
    Serial.begin(9600); // 启动串行通信
}
void loop() {
    
    
    // Clears the trigPin
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    
    //将trigPin设置为HIGH状态10微秒
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    
    // 读取echoPin,以微秒为单位返回声波传播时间
    duration = pulseIn(echoPin, HIGH);
    
    // 计算距离
    distance= duration*0.034/2;
    // 打印距离在串行监视器
    Serial.print("Distance: ");
    Serial.println(distance);
    delay(2000);
}

Señales ultrasónicas al fondo.

#include <Arduino.h>  
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h> 
#include "stdlib.h"
WiFiClient client;
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是 'wifiMulti'

// 定义引脚编号
const int trigPin = 2;  //D4
const int echoPin = 0;  //D3
// 定义变量
long duration;
int distance;

const char *host = "192.168.11.104";//服务器IP
const int httpPort =8090;//端口号
void setup() {
    
    
    pinMode(trigPin, OUTPUT); // 将trigPin设置为输出
    pinMode(echoPin, INPUT); // 将echoPin设置为输入
    
    Serial.begin(9600); // 启动串行通信
    
     Serial.println();
     Serial.println();
     Serial.print("Connecting to ");

     wifiMulti.addAP("FAST_55555", "dyk159357");
     wifiMulti.addAP("dyk", "dyk159357"); // 将需要连接的一系列WiFi ID和密码输入这里
  
     Serial.println("Connecting ...");     
      while (wifiMulti.run() != WL_CONNECTED) {
    
     // 尝试进行wifi连接。
        delay(250);
          Serial.print('.');
        }
 
  // WiFi连接成功后将通过串口监视器输出连接成功信息 
  Serial.println('\n');
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              // 通过串口监视器输出连接的WiFi名称
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           // 通过串口监视器输出ESP8266-NodeMCU的IP
  
}
void loop() {
    
    
    // Clears the trigPin
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    
    //将trigPin设置为HIGH状态10微秒
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    
    // 读取echoPin,以微秒为单位返回声波传播时间
    duration = pulseIn(echoPin, HIGH);
    
    // 计算距离
    distance= duration*0.034/2;
    // 打印距离在串行监视器
    Serial.print("Distance: ");
    Serial.println(distance);
    delay(2000);

    if(distance<=5){
    
    
       wifiClientRequest(1);
       Serial.println("send ok");
    }
    else{
    
    
      wifiClientRequest(0);
       Serial.println("no car");
    }
    delay(5000);
}

void wifiClientRequest(int sta){
    
    
  WiFiClient client;  
 
  // 将需要发送的数据信息放入客户端请求
  String url = "/csb?s="+String(sta);
                         
  // 建立字符串,用于HTTP请求
  String httpRequest =  String("GET ") + url + " HTTP/1.1\r\n" +
                        "Host: " + host + "\r\n" +
                        "Connection: close\r\n" +
                        "\r\n";
                        
  Serial.print("Connecting to "); 
  Serial.print(host); 
  
  if (client.connect(host, httpPort)) {
    
      //如果连接失败则串口输出信息告知用户然后返回loop
    Serial.println(" Sucess");
    
    client.print(httpRequest);          // 向服务器发送HTTP请求
    Serial.println("Sending request: ");// 通过串口输出HTTP请求信息内容以便查阅
    Serial.println(httpRequest);        
  } else{
    
    
    Serial.println(" failed");
  }
  
  client.stop();                         
}

Supongo que te gusta

Origin blog.csdn.net/qq_44866153/article/details/122546820
Recomendado
Clasificación