ESP32桌面表情互动机器人DIY:OLED表情+触摸反馈+舵机转头

2026-10-22 16:10:50 2阅读

一个能看懂你情绪的桌面小搭档

做机器人不一定都要搞大的,桌面陪伴类的小玩意做起来更有乐趣。这个项目用ESP32做主控,一块0.96寸OLED屏显示表情,两颗SG90舵机控制眼睛方向,加上一个电容触摸传感器,做出来一个能感知你摸它、然后用表情和动作回应你的桌面互动小伙伴。

成本不到100块,半天就能装好。关键代码量也不大,ESP32的Arduino框架加上几个库就搞定。做完放在工位上,摸它一下它就换个表情,持续摸它会从开心变成害羞,放置太久它会自己打瞌睡。

硬件清单与接线

核心硬件:ESP32-DevKitC一块(约20元)、0.96寸SSD1306 OLED屏I2C接口(约10元)、两颗SG90舵机(约10元)、TTP223电容触摸模块(约3元)、一个5V 2A电源或充电宝。外壳可以3D打印,也可以直接用纸板糊一个。

接线很简单:OLED的SDA接GPIO21、SCL接GPIO22;两颗舵机的信号线分别接GPIO16和GPIO17;触摸模块的信号线接GPIO4。供电统一用5V,ESP32的3.3V输出给OLED和触摸模块。总电流不大,充电宝就能带。

表情系统设计

OLED屏上显示的表情是我提前画好的8帧位图,包括开心、害羞、困倦、惊讶、生气、无聊、兴奋和默认。每帧128x64像素,用Adafruit_SSD1306库直接绘制。表情的切换不是随机的,而是根据触摸的次数和间隔来决定状态转移。

状态机设计是这样的:默认状态下它处于"平静"表情;第一次触摸切换到"开心";连续摸3次以上切"害羞";如果超过5分钟没触摸,自动进入"困倦";再超过10分钟就"打瞌睡"。舵机配合表情做动作,比如开心时左右转头、害羞时低头、困倦时缓慢点头。

触摸检测与去抖

TTP223电容触摸模块的输出很干净,检测到触摸时输出高电平,松开后输出低电平。代码里需要做的是去抖和计数:用一个200ms的延时防抖,然后记录触摸次数和最后一次触摸的时间戳。

有个小技巧:触摸的"力度"可以通过检测触摸持续时间来近似估计。快速轻触(<300ms)算一次普通触摸,长按(>1000ms)算"抚摸",抚摸会让它直接从"平静"跳到"开心",比普通触摸多一级好感度。

扩展思路

这个项目的框架可以往很多方向扩展。加一个MP3解码模块和喇叭,它就能发出声音;加一个光敏电阻,它能根据环境光线调整表情亮度;加WiFi功能,可以通过手机App远程看它的状态。如果想做一群这样的桌面机器人互相通讯,用ESP-NOW就能组网。

做桌面陪伴类机器人最大的乐趣在于,它不需要多复杂的算法,靠简单的交互逻辑就能让人觉得"有生命感"。你路过桌子看到它在打瞌睡,伸手摸一下它突然醒来冲你笑,这种体验是纯软件界面给不了的。


作者:菜鸟也想玩
链接:https://www.aiddithome.com/p/12e61123a4d1aa.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
参数党小马
1楼 · 3小时前

ESP-NOW组网这个思路有意思,做一排桌面机器人互相通讯,集体卖萌

第三次终于亮了
2楼 · 3小时前

打瞌睡这个设计太可爱了,放在工位上能治愈精神内耗

胶佬憨憨
3楼 · 3小时前

TTP223触摸模块确实好用,比电阻触摸灵敏多了,而且可以穿透塑料外壳

阿伟不emo
4楼 · 3小时前

100块就能做,这成本太友好了。请问外壳有3D打印文件分享吗