用ESP32给电脑做个无线副屏,这也太酷了!

 

说实话,我第一次看到这个项目的时候,整个人都有点愣住了。

你想象一下这个画面:我正坐在电脑前码字,一转头,发现旁边一个小小的屏幕上,竟然实时显示着我电脑桌面的画面。不是那种通过HDMI线连接的副屏,而是纯无线的,画质虽然不算惊艳,但这种“黑科技”的感觉,真的让人忍不住想分享。

事情是这样的。前几天我在GitHub上瞎逛,看到一个叫ESP32-Desktop-Monitor的项目。简单来说,就是用一个带屏幕的ESP32开发板,通过WiFi把电脑屏幕的画面实时“投屏”到这个小屏幕上。

我当时的第一反应是:这玩意儿能流畅吗?延迟会不会高得离谱?

这玩意儿到底能干啥?

你可能会问,做个这么小的副屏有什么用?

说实话,实用性可能确实比不上正经的显示器。但是,把它摆在桌面上当监控面板,显示系统状态、CPU占用、天气信息,或者干脆就让它循环播放一些像素风格的动画,逼格瞬间就上来了。

而且,对于喜欢折腾的极客来说,这种“把不可能变成可能”的过程,本身就是最大的乐趣。

硬件准备:其实就两样东西

先说说需要啥硬件,其实特别简单:

1. ESP32开发板
项目推荐的是 TENSTAR T-Display,某宝几十块钱就能拿下。这块板子最大的特点就是自带一块1.14英寸的ST7789屏幕,135×240的分辨率,不用自己接线焊接,到手就能用。当然手里其他的带屏开发板改下代码一样可以。

2. 你的电脑
随便什么电脑都行,只要能跑Python。Windows、macOS、Linux通吃。


软件设置:看起来复杂,其实就两步

这部分可能是很多人觉得头疼的地方。别担心,我踩过坑了,你跟着我做就行。

第一步:搞定ESP32接收端

打开Arduino IDE,加载项目里的receiver.ino文件。首先得改WiFi密码:

const char* ssid = "你家WiFi名字";
const char* password = "你家WiFi密码";

这一步没啥技术含量,照做就行。

然后是最容易出问题的地方——TFT_eSPI库的配置。如果你用的是T-Display板子,驱动和引脚定义其实都是现成的。你需要找到Arduino库文件夹里的User_Setup.h文件,确保这几行是“活着的”(没有被注释掉):

#define ST7789_DRIVER
#define TFT_WIDTH 135
#define TFT_HEIGHT 240

上传代码,打开串口监视器,你就能看到屏幕上显示出ESP32获取到的IP地址。记下这个地址,一会儿要用。

第二步:搞定电脑发送端

电脑这边需要Python环境,然后用pip装几个库:

pip install opencv-python mss numpy

这几个库的作用分别是图像处理、屏幕截图和数组运算,都是专业工具,靠谱。

然后运行发送脚本:

python transmitter.py --ip 你刚才记下的IP地址

如果一切顺利,你就能看到小屏幕上开始显示电脑画面了。

一些小窍门

折腾过程中我发现几个小技巧,分享给你:

画面不动的时候,项目会自动检测变化区域,只发送变化的像素。这样既省带宽又省电。你可以在命令行里调整--threshold参数,数值越大,对变化的敏感度越低,传输压力也越小。

如果感觉卡顿,试试降低帧率。默认是15帧,改成10帧甚至8帧,日常看个系统监控完全够用,流畅度会好很多。

颜色不对怎么办? 我一开始也遇到这个问题,画面颜色发紫发蓝。后来发现需要在receiver.ino里改一行:

bool useBgrSetting = false;  // 如果颜色不对,试试改成true

写在最后

说实话,这个项目可能算不上“实用”,但它让我重新感受到了折腾的乐趣。看着自己动手让两个毫不相干的设备“对话”,那种成就感,真的很棒。

如果你手头也有闲置的ESP32开发板,不妨试试这个项目。就算最终不常用,光是折腾的过程,也能学到不少东西。

项目地址:https://github.com/tuckershannon/ESP32-Desktop-Monitor

 



发表评论