文章不介绍具体参数,有需求可去网上搜索。
特别声明:不论年龄,不看学历。既然你对这个领域的东西感兴趣,就应该不断培养自己提出问题、思考问题、探索答案的能力。
提出问题:提出问题时,应说明是哪款产品,在哪一步,遇到了什么问题,并提供必要的图片与视频信息。一个好的问题,可以更快的得到答案。
思考问题:思考如何快速、有效的解决问题?如果需要3D模型等文件,机器人使用遇到问题,肯定是直接在群里问。如果是想了解开发板等模块的具体参数,一定是网上搜索最快捷,最丰富。
探索答案:现如今AI已经十分智能,豆包、千问、DeepSeek,每一个都是经验丰富的大师。相比较而言个人的知识储备反而十分有限。所以,有什么困惑,不如先问问AI。
前言:发货前已经烧录程序
资料介绍
资料详情

注:无PCB文件。
代码详情
cpp
/**
作者:然也电子 2022.12.04
*/
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <Servo.h>
#include <Ticker.h>
//定义引脚
#define XARM_PIN D5 //X轴
#define YARM_PIN D4 //Y轴
#define XARM_LEFT 50 - 40 //x轴在最左边时角度
#define XARM_RIGHT 120 +50 //x轴在最右边时角度
#define YARM_TOP 50 -0 //Y轴上拉,眼向下看
#define YARM_BOTTOM 120 + 30 //Y轴下拉,眼向上看
WiFiUDP udp; //定义一个UDP对象
const char *ssid = "ESP8266_EYES";
const char *password = "12345678";
char incomingPacket[255]; // 保存Udp工具发过来的消息
//定义舵机
Servo Xarm; //X轴
Servo Yarm; //Y轴
// xarm(减顺) , yarm(减顺)
int calValues[] = { 0, 0}; //调整值,对舵机初始状态角度的误差调整
void oper_eye(int xarm = -1, int yarm = -1) {
if (xarm > 0) {
Xarm.write(xarm + calValues[0]);
}
if (yarm > 0) {
Yarm.write(yarm + calValues[1]);
}
}
void setup() //程序加电后初始化
{
Serial.begin(115200);
// Serial.setDebugOutput(true);
Xarm.attach(XARM_PIN);
Yarm.attach(YARM_PIN);
WiFi.mode(WIFI_AP); //wifi初始化
while (!WiFi.softAP(ssid, password)) //启动AP
{
}
Serial.println("AP启动成功");
while (!udp.begin(10001)) //等待本机udp监听端口设置成功
{
}
init_eye();
delay(100);
}
void loop() {
//解析Udp数据包
int packetSize = udp.parsePacket(); //获得解析包
if (packetSize) //解析包不为空
{
//收到Udp数据包
if (udp.remoteIP().toString().equals("192.168.4.2")) {
// Serial.printf("a收到来自远程IP:%s(远程端口:%d)的数据包字节数:%d\n", udp.remoteIP().toString().c_str(), udp.remotePort(), packetSize);
// 读取Udp数据包并存放在incomingPacket
int len = udp.read(incomingPacket, 255); //返回数据包字节数
if (len > 0) {
incomingPacket[len] = 0; //清空缓存
}
//收到的命令
String curCommand = String(incomingPacket);
String cmd = curCommand;
String tmp;
int xValue, yValue;
int pos = curCommand.indexOf(",");
if (pos > 0) {
cmd = curCommand.substring(0, pos);
if (cmd.equals("rxy")) {
tmp = curCommand.substring(pos + 1);
pos = tmp.indexOf(",");
xValue = tmp.substring(0, pos).toInt();
yValue = tmp.substring(pos + 1).toInt();
}
}
oper_eye( map(xValue, 0, 180, XARM_LEFT, XARM_RIGHT), map(yValue, 0, 180, YARM_BOTTOM, YARM_TOP));
}
}
}
//初始状态
void init_eye() {
oper_eye( 90, 90 + 5);
}
模型文件

文件为STL格式,用于打印。可用SOLIDWORKS打开(其他能打开STL格式文件的软件理论上都可以打开)。不再提供其他格式,勿问。
视频教程
介绍组装和使用。

手机APP
用于识别人的眼球转动。

赠送资料
此资料用于配置环境,代码编译。

开发板是esp8266。
代码编译软件是arduino。
下载驱动是CP2102或者CH340。
注:因为配置环境相当复杂,每个人电脑不一样还会出现各种小问题,所以发货前统一烧好程序了。群内只负责组装问题的答疑,因人力有限,环境配置、二次开发、毕设等相关问题不在答疑范围。