毕业设计智慧停车场--nodemcu超声波测距,向后台发送请求

本文主要是介绍毕业设计智慧停车场--nodemcu超声波测距,向后台发送请求,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为什么我这里需要用到超声波能,本来我想的是一个放在车牌识别哪里,只要测的物体距离小于一定值,就让摄像头开始拍照识别,另外的我想在每个停车位哪里,也装个超声波测距,可以检查当前车位是否有车,这样一来可以方便统计数量,后面还有一些后续的操作还没想清楚

具体参考这篇博客

由名称可以知道,超声波传感器可以通过使用超声波来测量距离。传感器头发射超声波并接收从目标反射回来的波。超声波传感器通过测量发射和接收之间的时间来测量到目标的距离。当然,简单来说,超声波传感器是通过使用声波来测量物体的距离的装置。它通过发出特定频率的声波来测量距离,并等待该声波反弹。通过记录在产生的声波和声波反弹之间所花费的时间,可以计算传感器和物体之间的距离。

NodeMCU是一个开源的IoT物联网硬件开发板,由于它支持WIFI功能且使用方法十分类似Arduino开发板,所以近些年获得了越来越多来自全世界的创客朋友们的青睐。NodeMCU尺寸与Arduino Nano类似。它并不是Arduino团队开发的,但是我们也可以使用Arduino IDE 对它进行开发。而且它还有一颗地道的“中国芯”—ESP8266模块。所以无论在性能还有价格上,我们太极创客团队都认为NodeMCU是更值得创客朋友们在物联网开发上花更多的时间来学习和使用的。

作为万物互联的IoT基础,首先物联网控制板的成本不能过高。高昂的物联网控制元件不利于项目成本控制也不利于广大创客爱好者学习和使用它。在这一点上,NodeMCU比树莓派以及Arduino家族的IoT平台等更具优势。

超声波模块原理

因为传感器本身只是把它的“ECHO”引脚保持在高电平,使之持续一段时间,这对应于从发送的波形到接收反射(回波)所花费的这一段时间。

模块发出一阵声波,同时向回声引脚施加电压。

该模块从声波接收反射并从回波引脚消除电压。

在测距的时候,超声波传感器中产生脉冲将数据发送到NodeMCU或任何其它的微控制器。

起始脉冲约为10us,基于距离的PWM信号将为150 us-25us。如果没有障碍物,则NodeMCU生成38us脉冲,以确认没有检测到物体。

在读取HC-SR04测的距离之前,得先了解如何计算距离的,这有一个公式

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

接线

在这里插入图片描述

超声波代码

// 定义引脚编号
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 trigPindigitalWrite(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);
}

超声波传递信号给后台

#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 trigPindigitalWrite(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)) {  //如果连接失败则串口输出信息告知用户然后返回loopSerial.println(" Sucess");client.print(httpRequest);          // 向服务器发送HTTP请求Serial.println("Sending request: ");// 通过串口输出HTTP请求信息内容以便查阅Serial.println(httpRequest);        } else{Serial.println(" failed");}client.stop();                         
}

这篇关于毕业设计智慧停车场--nodemcu超声波测距,向后台发送请求的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/234577

相关文章

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

Spring Boot Controller处理HTTP请求体的方法

《SpringBootController处理HTTP请求体的方法》SpringBoot提供了强大的机制来处理不同Content-Type​的HTTP请求体,这主要依赖于HttpMessageCo... 目录一、核心机制:HttpMessageConverter​二、按Content-Type​处理详解1.

一文详解如何在Vue3中封装API请求

《一文详解如何在Vue3中封装API请求》在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时,下面我们来看看如何在Vue3项目中封装API请求,让你在实现功能时更加高效吧... 目录为什么要封装API请求1. vue 3项目结构2. 安装axIOS3. 创建API封装模块4. 封装API请求

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt