esp8266MCU驱动0,96寸oled+Python+TCP协议通信

ESP8266NodeMCU驱动0,96寸oled+Python+TCP协议通信

(Arduino IDE + PyCharm)

一、ESP8266部分

使用到的头文件

#include <ESP8266WiFi.h> // 引入ESP8266 WiFi库
#include <U8g2lib.h> // 引入U8g2库,用于OLED显示屏

初始化–1部分

const char* ssid = "Leon"; // 要连接的WiFi名称(可以使用手机热点连接测试)
const char* password = "123456"; // WiFi密码
WiFiServer server(12345); // 设置服务器端口

// 初始化OLED显示屏对象
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

初始化–2部分setup()部分

void setup() {//此处的代码只会在上电后运行一次,相当于初始化代码
  Serial.begin(115200); // 初始化串口通信,波特率为115200
  WiFi.begin(ssid, password); // 连接到WiFi网络
  while (WiFi.status() != WL_CONNECTED) { // 等待连接成功
    delay(500);
    Serial.print("."); // 打印连接进度(会在串口监视器打印“......”)
  }
  Serial.println("WiFi connected"); // 打印连接成功信息
  Serial.println(WiFi.localIP()); // 在串口监视器打印ESP8266的IP地址
  server.begin(); // 启动服务器
  u8g2.begin(); // 初始化OLED显示屏
}

应用主循环部分

void loop() {//本质上,loop 函数就是一个死循环,Arduino会不断循环执行其中的代码,直到程序停止或用户干预。
  WiFiClient client = server.available(); // 检查是否有客户端连接
  if (client) {
    Serial.println("Client connected"); // 打印客户端连接信息
    while (client.connected()) { // 当客户端连接时
      if (client.available()) { // 如果客户端有数据可读
        String message = client.readStringUntil('\n'); // 读取客户端发送的消息
        Serial.println("Received: " + message); // 打印接收到的消息
        u8g2.clearBuffer(); // 清空OLED显示屏缓冲区
        u8g2.setFont(u8g2_font_ncenB08_tr); // 设置字体
        u8g2.drawStr(0, 18, message.c_str()); // 在OLED显示屏上绘制字符串
        u8g2.sendBuffer(); // 将缓冲区内容发送到显示屏
        client.println("Message received"); // 向客户端发送确认消息
      }
    }
    client.stop(); // 断开客户端连接
    Serial.println("Client disconnected"); // 打印客户端断开连接信息
  }
}

二、Python部分

import socket  # 导入socket库,用于网络通信

def start_client():
    host = '192.168.234.26'  # 替换为ESP8266的IP地址
    port = 12345  # 端口号,需与ESP8266上的端口号一致

    # 创建一个TCP/IP套接字
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 连接到服务器
    client_socket.connect((host, port))

    try:
        while True:
            # 从用户输入获取消息
            message = input("请输入要发送的消息(输入'exit'退出):")
            if message.lower() == 'exit':
                break  # 如果输入'exit',则退出循环
            # 发送消息到服务器
            client_socket.sendall((message + '\n').encode())
            # 接收服务器的响应
            response = client_socket.recv(1024)
            print("服务器返回: " + response.decode())
    finally:
        # 关闭套接字
        client_socket.close()

if __name__ == "__main__":
    start_client()  # 调用函数启动客户端

三、附件

Arduino环境搭建

参考一文速通ESP8266NodeMCU(基于ArduinoIDE)——万字爆肝含示例代码-CSDN博客

这篇博客写的非常非常非常好,胎教级别!!!

Python环境搭建

自己去查,非常非常简单…网上很多教程,这里不再赘述

ESP8266NodeMCU原理图

在这里插入图片描述

U8g2库简介+使用教程

U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,并支持如SSD1306等多种类型的OLED驱动。

U8g2源码的开源库地址:https://github.com/olikraus/u8g2

U8g2专为Arduino提供的方便安装的库地址:https://github.com/olikraus/U8g

U8g2详细使用教程https://zhuanlan.zhihu.com/p/477322369

四、成品展示

引脚连接
在这里插入图片描述

python客户端

在这里插入图片描述

esp8266客户端

在这里插入图片描述

I love you xunn ! --from Leon.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EtherealXXX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值