esp32(ardunio环境)+python实现网关

2023-05-16

esp32(ardunio环境)+python实现网关

使用ardunio 和VScode 以ESP32为客户端,电脑为服务端收发消息

硬件准备

1.ESP32开发板,数据线

环境准备

ardunio环境
VScode(其实只要能跑python的行)

原理

esp32通过数据线用uart协议与电脑通信,但现在我们用WiFi代替数据线、用TCP协议代替uart协议。
这么一讲是不是开始有了雏形,接下来我们就细讲“数据线”和“协议”。

WiFi连接代替数据线就是将有线变成无线的而已,他能完全代替数据线的数据传递功能。

tcp协议就是约定好的数据传输协议,比如我给发送一个字节的信息(假定是ASCII码中的“F”),走WiFi这条路给你,但是WiFi传送的不是F而是0和1,所以需要TCP协议将之解读。

我们需要干的

走WIFI这条路,我们需要服务器,服务器可以是任何一方,在这里我们用电脑作为服务器。

esp32因为电脑已经是服务器了,所以我们就只能是客户端。
以下就是python的代码:

import tkinter as tk #界面模块
import socket  #服务器模块
#————————界面————————#
win=tk.Tk()
win.geometry("300x60")
win.title("完形填空")
#————————创建服务端——————#
tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_server_socket.bind(("12.78.43.14",3345))#这里填写你的电脑IP地址
tcp_server_socket.listen(128)  #监听
server_socket,ip_port = tcp_server_socket.accept() #等待连接,不连接的话跳不出这句代码
server_data = server_socket.recv(1024)  #先收发一个试试
server_data = server_data.decode() #将接收的转码
print(server_data)
server_socket.send("关灯\n".encode())
#————————————————————#

#----------------------按钮的功能----------------------------------#
def guan():
    server_socket.send("关灯\n".encode())
def kai():
    server_socket.send("开灯\n".encode())
def fasong():
    L=entry.get()+'\n'
    server_socket.send(L.encode())
#--------------------------------------------------------#

D=tk.Button(win,text="关灯",fg="#ac1278",bg="#000000",command=guan)
C=tk.Button(win,text="发送",fg="#ac1278",bg="#000000",command=fasong)
B=tk.Button(win,text="开灯",fg="#ac1278",bg="#000000",command=kai)

entry=tk.Entry(win,bg="#ac1287",fg="#000000")
entry.place(x=0,y=0,width=300,height=20)
B.place(x=0,y=20,width=100,height=40)
C.place(x=100,y=20,width=100,height=40)
D.place(x=200,y=20,width=100,height=40)
win.mainloop()

esp32的代码:



#include <WiFi.h>

const char *ssid = "your wifi";
const char *password = "your password";

const IPAddress serverIP(12,18,43,14); //目标地址,将电脑IP地址写到这里来,注意是逗号分割哦
uint16_t serverPort = 3345;         //目标服务器端口号

WiFiClient client;   //声明一个客户端对象,用于与服务器进行连接

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

    WiFi.mode(WIFI_STA);   //站点模式
    WiFi.setSleep(false);  //关闭STA模式下wifi休眠,提高响应速度
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(2500);
        Serial.print(".");
    }
    Serial.println("已连接");
    Serial.print("本机ip地址:");
    Serial.println(WiFi.localIP());



    Serial.println("尝试访问服务器");
    if (client.connect(serverIP, serverPort))  //尝试访问目标地址
    {
        Serial.println("访问成功");

        client.print("Hello world!");                    //向服务器发送“hello world”
        while (client.connected()) //如果处于连接状态
        {
          if(client.available())
          {
              if (client.available()) //如果有数据可读取
              {
                  String line = client.readStringUntil('\n'); //读取数据到换行符
                  Serial.println(line);

              }
          }
        }
        Serial.println("关闭当前连接");
        client.stop(); //关闭客户端
    }
    else
    {
        Serial.println("访问失败");
        client.stop(); //关闭客户端
    }
}

void loop()
{
}

将电脑和esp32连接到同一个局域网,先打开python程序再esp32上电,打开串口就可以了(注意没连接到客户端的话,电脑是不会出现tkinter的程序界面哦)

服务器和客户端能互相接收和发送信息(靠你自己开发了)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

esp32(ardunio环境)+python实现网关 的相关文章

随机推荐

  • gcc编译器与Makefile入门

    在Windows下开发通常使用各种IDE xff0c 但在Linux下进行C编程编译代码的话需要用到GCC编译器 一 编译流程 GCC 编译器的编译流程是 xff1a 预处理 编译 汇编和链接 预处理就是展开所有的头文件 替换程序中的宏 解
  • Linux中HTTP的请求

    HTTP请求的步骤 xff1a 1 建立TCP 通信连接 2 制定HTTP协议例如 xff1a GET HTTP 1 1 r nHost www baidu com r n r n 3 发送制定好的HTTP协议 4 接收服务器所返回的数据
  • Ubuntu安装RealSense驱动SDK

    Ubuntu安装RealSense驱动SDK 参考链接 官方链接 1 添加key span class token function sudo span apt key adv span class token parameter vari
  • (2)LOAM的安装运行——安装及运行问题解决

    真是一言难尽 xff0c 安装一步一个坎 xff0c 算吧差不多花了一天时间 xff0c 还好最后成功啦 xff01 上一篇对PCL的安装及测试进行了介绍 xff0c 下面开始安装LOAM和利用bag运行 参照https blog csdn
  • http是什么_作用以及报文详情_http的常见状态码

    http是什么 xff1f 一 http的定义 xff1a http Hypertext transfer protocol 超文本传输协议 xff0c 通过浏览器和服务器进行数据交互 xff0c 进行超文本 xff08 文本 图片 视频等
  • C++ string与int类型的转换

    Int转String 1 int 43 39 0 39 为对应的ASCLL码 可以通过强制类型转换将ASCLL码转成对应的字符 int digit 61 1 cout lt lt digit 43 39 0 39 lt lt endl 49
  • 设计性大作业(1) 简单路由器程序的设计

    简单路由器程序设计实验的具体要求为 xff1a 可在虚拟机上实现 xff0c 源码和操作文档加企鹅2805531180 xff08 1 xff09 设计和实现一个路由器程序 xff0c 要求完成的路由器程序能和现有的路由器产品 xff08
  • 堆和栈的存放内容

    栈 栈存放的是基本数据类型 43 引用变量名 int a 61 1 这里的a和1都存放在栈中 String b 61 abc 这里只有b存放在栈中 xff0c 而 34 abc 34 则存放在堆中 堆 堆存放的是new出来的对象 上述的St
  • 大字节序和小字节序

    一 基本概念 大字节序和小字节序是数据存储规则 小字节序是高位数据存储在内存高位地址 xff0c 低位数据存储在低位地址 大字节序是高位数据存储在内存低位地址 xff0c 低位数据存储在高位地址 二 程序判断 include lt iost
  • IMU让无人机控制变得更轻松

    多翼无人机广泛应用于监视和侦察 航空摄影和测量 搜索和救援任务 通信中继和环境监测 目前无人机的手动控制大部分基于视觉反馈 xff0c 所以操作环境中的障碍物会造成干扰 因此 xff0c 需要其他感官反馈 xff0c 例如触觉 xff0c
  • DB2reorg 和runstats使用

    DB2中 xff0c 如果使用alter更改表结构后 xff0c 需要执行reorg 命令消除碎片 xff0c 进行重组 xff1b 创建索引后 xff0c 需要执行RUNSTATS更新统计信息 xff0c 使索引生效 xff1b 如果修改
  • HTTP的8种请求方式及常用请求方式的解析

    一 什么是HTTP xff1f HTTP xff0c 即超文本传输协议 xff0c 是一种实现客户端和服务器之间通信的响应协议 xff0c 它是用作客户端和服务器之间的请求 客户端 xff08 浏览器 xff09 会向服务器提交HTTP请求
  • 星网宇达(惯导+IMU)设备实现自动采点

    一 创建和打开gps Road txt文件 xff0c 准备往里写数据 FILE span class token operator span p span class token operator 61 span span class t
  • 车辆自动采点

    一 整体思路 xff1a 车辆自动踩点需要获取千寻差分数据 xff0c 差分数据有两种格式 xff1a 分别是GPGGA和GRHDT xff0c GPGGA内存在车辆经纬度定位信息 xff0c GRHDT内存在转向角信息 xff0c 分别进
  • 安卓实现串口通信

    1 串口通信232的接线 一般通讯使用232串口的话 xff0c 我们会用到2 3 5接口 xff0c 根据安卓平板的标记依次接线 xff08 小白注意 xff1a 接收端要与发送端接入 xff0c 不要根据名称一样就接线 xff09 2
  • vins-mono编译报错

    vins mono 报错 xff08 opencv3 gt opencv4 xff09 报错原因error CV RGB2GRAY was not declared in this scopeerror CV BGR2GRAY was no
  • http协议之libcurl

    一 libcurl简介 libcurl是一个跨平台的网络协议库 xff0c 支持http https ftp gopher telnet dict file 和ldap 协议 libcurl同样支持HTTPS证书授权 xff0c HTTP
  • Vue项目实现页面加载进度条&分布阶段去除console

    目录 进度条 xff08 1 xff09 下载nprogress依赖 xff08 2 xff09 在main js中导入nprogress包 xff08 3 xff09 在request拦截器中 xff0c 展示进度条 xff08 4 xf
  • Jeston XAVIER NX 使用sudo apt-get install 安装ros过程中出现以下问题

    the following packages have unmet dependencies ros noetic desktop full Depends ros noetic desktop but it is not going to
  • esp32(ardunio环境)+python实现网关

    esp32 ardunio环境 xff09 43 python实现网关 使用ardunio 和VScode 以ESP32为客户端 xff0c 电脑为服务端收发消息 硬件准备 1 ESP32开发板 xff0c 数据线 环境准备 ardunio