毕业设计智慧停车场--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

相关文章

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

SpringBoot中Get请求和POST请求接收参数示例详解

《SpringBoot中Get请求和POST请求接收参数示例详解》文章详细介绍了SpringBoot中Get请求和POST请求的参数接收方式,包括方法形参接收参数、实体类接收参数、HttpServle... 目录1、Get请求1.1 方法形参接收参数 这种方式一般适用参数比较少的情况,并且前后端参数名称必须