esp32 spi 驱动 oled 屏显示来自 PC 的画面

博主使用ESP32通过SPI驱动OLED显示屏,展示来自PC的截图。通过Python进行屏幕捕获、缩放和颜色转换,然后通过socket发送到ESP32。遇到帧率低和内存问题,尝试优化socket缓冲大小和数据处理策略。目标是学习C/C++和STM32,最终实现穿戴设备从硬件到软件的完整设计。
摘要由CSDN通过智能技术生成

esp32 spi 驱动 oled 屏显示来自 PC 的画面

实验代码

gayhub 实验源码

设备及运行环境

  1. 装有python的电脑
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
  1. esp32开发板(ttgo-t-display)
  2. 0.96 OLED(80 * 160 ST7735S)

流程

  • PC端
    1. py截屏
    2. py缩小图片
    3. py将缩小的图由rgb转成 rgb565
    4. 将图片转码完成后以字节流的方式存入临时bin文件
    5. 读取bin文件,通过socket发送
    6. 因为需要转码、转存文件,测试之后大概是一秒四帧。(这个时候socket缓冲默认,后来缓存调整得很大,发送帧率上去了,但是数据还是堵在服务端没发送出去。。。)
  • esp32
    1. 连接 wifi 的同时设置好端口(跟PC端设置的socket端口一样,我只是使用了 arduino中的WIFI库, 可以使用socket方式接收数据也是偶然发现的,~~后续有新的发现会做记录(谁知道我还会不会想起来嘿嘿)~)
    2. 设置 oled 屏 io 口,使用SPI驱动oled屏(这里有一些不理解。。。 查看 ttgo 的 io 说明,发现上面标注我所使用到的 io 口都是gpio,并不是被标注为 SPI。所以有可能是gpio模拟的 spi???~~后续有新的发现会做记录 嘿嘿~)

使用的库

  • TFT_eSPI
  • arduino 的 wifi 库(不确定是arduino的通用库,还是esp32的专属库。。。。。)

OLED 配置方式

  • 软件配置
    1. 修改配置文件。修改 TFT_eSPI 根目录里面的 User_Setup_Select.h, 将#include <User_Setups/Setup43_ST7735.h> // Setup file configured for my ST7735S 80x160的注释删掉,然后将其它不需要用到的配置头文件注释掉

    2. 修改 io 口。 修改 TFT_eSPI/User_Setups/Setup43_ST7735.h 的文件, 修改 io 口(这里直接就是对应开发板上面标注的 io, 这里直接没有设置背光 )

    #define TFT_MOSI            26 // 对应 oled板的 sda
    #define TFT_SCLK            27 // 对应 oled板的 scl
    #define TFT_CS              32 // 对应 oled板的 cs
    #define TFT_DC              33 // 对应 oled板的 dc
    #define TFT_RST             25 // 对应 oled板的 res
    #define TFT_BL          0  // Display backlight control pin
    
    1. 设置 wifi 得 client
    const IPAddress serverIP(192,168,0,104); //欲访问的地址
    uint16_t serverPort = 8080;         //服务器端口号
    

运行时发现的问题

  • 问题: 帧率低(一秒一帧。。。)。
    • 实际测试来看,屏可以实现更高帧率,问题有可能是出现在了数据接收这一块,因为没有找到arduino 的 wifi库里面 client类设置缓冲大小的方法,所以缓冲是没有设置的。
  • 问题: 内存告急
    • 为了解决无法设置缓冲大小的问题&#x
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值