首页 > 其他分享 >树莓派和esp8266在局域网下使用UDP通信,esp8266采集adc数据传递给树莓派,树莓派在web上显示结果

树莓派和esp8266在局域网下使用UDP通信,esp8266采集adc数据传递给树莓派,树莓派在web上显示结果

时间:2023-06-02 23:33:45浏览次数:58  
标签:__ web 树莓 socket udp adc esp8266

树莓派和esp8266需要在同一局域网下

esp8266使用arduino开发:

接入一个电容土壤湿度传感器,采集湿度需要使用adc

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

const char* ssid = "litianmenzhenbu";
const char* password = "LT12345678";
const char* serverIp = "192.168.0.110";
const int serverPort = 5005;
const int adcPin = A0;

WiFiUDP udp;

void setup() {
  Serial.begin(115200);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  udp.begin(udp.localPort());
}

void loop() {
  int adcValue = analogRead(adcPin);
  Serial.print("adcValue:");
  Serial.println(adcValue);
  udp.beginPacket(serverIp, serverPort);
  udp.write((byte*)&adcValue, sizeof(adcValue));
  udp.endPacket();

  delay(1000);
}

 

树莓派使用python开发:

from flask import Flask, render_template
import socket
import threading

app = Flask(__name__)

# 设置树莓派的IP地址和端口
raspberry_pi_ip = '192.168.0.110'
raspberry_pi_port = 5005

adc_value = 0

# 接收UDP数据
def receive_udp_data():
    global adc_value
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket.bind((raspberry_pi_ip, raspberry_pi_port))
    while True:
        data, _ = udp_socket.recvfrom(1024)
        adc_value = 70 - int.from_bytes(data, byteorder='little')
        # 在这里处理ADC数据,例如将其存储到数据库或进行其他操作


# 启动接收UDP数据的线程
udp_thread = threading.Thread(target=receive_udp_data)
udp_thread.daemon = True
udp_thread.start()

# 网页主页
@app.route('/')
def index():
    # 在这里获取ADC数据,例如从数据库中读取最新的ADC值
    return render_template('index1.html', adc_value=adc_value)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8888)

 

index.html

<!DOCTYPE html>
<html>
<head>
    <title>ADC Data</title>
</head>
<body>
    <h1>ADC Data: {{ adc_value }}</h1>
</body>
</html>

 

效果:

 

标签:__,web,树莓,socket,udp,adc,esp8266
From: https://www.cnblogs.com/LiuXinyu12378/p/17453115.html

相关文章

  • 03web安全学习---前端基础
    一、前端是什么?二、HTML最简单的架构三、JS的妙用......
  • 第一章 Web MVC简介
    WebMVC简介1.1、Web开发中的请求-响应模型: 在Web世界里,具体步骤如下:1、 Web浏览器(如IE)发起请求,如访问http://sishuok.com2、 Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html)。3、web服务器处理完成后,返回内容给web客户端(一般就是我......
  • Rust Web 全栈开发之增加教师管理功能
    RustWeb全栈开发之增加教师管理功能增加教师管理功能目标ActixHTTPServerActixAppRoutesGET/teachersGET/teachers/POST/teachersPUT/teachers/DELETE/teachers/Handlersget_all_teachersget_teacher_detailspost_new_teacherupdate_teacher_de......
  • 算网融合也是Web3.0
    Web3.0被视为互联网的下一代,强调用户主权和数据拥有权的重要性。在传统的Web2.0中,用户的个人数据常常由大型中心化平台收集、存储和控制。这种模式导致了数据滥用、隐私侵犯和权力集中等问题。然而,Web3.0通过算网融合的力量,正在为用户提供一个全新的互联网体系结构,使他们能够拥有并......
  • .NET Core WebAPI 认证授权之JWT
    @@.NETCoreWebAPI认证授权之JWT--google from --->NETCoreWebAPI认证授权之JWT(二)  在上一篇 《.NET缓存系列(一):缓存入门》中实现了基本的缓存,接下来需要对缓存进行改进,解决一些存在的问题。一、缓存过期策略问 题:当源数据更改或删除时,服务器程序并不知道,导......
  • APP自动化--webview上下文翻动
    前提工作都做好,包括1、开启webview,打开app对应的h5页面,在chrome://inspect/#devices地址中,检查是否显示对应的webview,如没有,则当前未开启调试模式开启方式:在WebView类中调用静态方法setWebContentsDebuggingEnabled,这种需要App开发人员操作。if(Build.VERSION.SDK_INT>=Buil......
  • NET Core WebAPI 认证授权之JWT
    @@.netcoretoken非对称加密 --Google-->@@wepapi认证授权之jwt NETCoreWebAPI认证授权之JWT(二):HMAC算法实操  一、前言在上一篇 《.NETCoreWebAPI认证授权之JWT(一):JWT介绍》中讲到了JWT的组成,分为三部分,其中标头(header)和载荷(payload)都只是简单的将json......
  • 软件测试|web自动化测试神器playwright教程(十一)
    前言在我们进行web自动化测试的过程中,我们经常会面临需要登录的情况,每一次打开页面如果都需要重新登录的话,就会大大增加测试所需要的时间,体现不出自动化测试的优势,我们都知道selenium可以通过cookie实现登录,那么playwright能不能实现这个功能呢?答案是肯定的,playwright可以实现保存c......
  • 用esp8266开发板制作WiFi Killer
    一、esp8266开发板获取【ESP8266串口wifi模块NodeMCULuaV3物联网开发板CH340】我是用的这个,某宝可购买,14元左右,这个是使用的CH340串口芯片的。还有一种在某宝上可以看到是使用的CP21x型号的芯片的,这里两种都可以的。二、安装驱动以自己的开发板上的串口芯片的型号为准,按需选......
  • 用Windows远程桌面连接树莓派(详细教程)
    一、事先准备1.所需工具:SD卡(最好是大于等于8G),读卡器,树莓派3b+,SD卡格式化工具,Raspbian系统镜像,ssh工具,putty注:必要工具下载链接SD卡格式化工具Raspbian系统镜像镜像烧入软件(我用的是Etcher)ssh工具:64位,32位puttyAdvanced_IP_Scanner(ip查找工具)二、镜像的选择点击上面超链接(Ras......