Robot Cat

40,895

331.

27

简介:机器人猫

关于:如果你不能买一个,可以自己!

This instructables show somethings about building a robot cat.

补给品:

M5 PSRAM摄像头模块:https://m5stack.com/products/esp-32-camera-psram.

Adafruit 16通道12位PWM/伺服驱动器:https://www.adafruit.com/product/815

EMAX ES08MA II伺服系统的13:https://emaxmodel.com/es08ma-ii.html

8.4伏Lipo:https://www.aliexpress.com/wholesale?SearchText=8...

8.4 v Lipo充电器:https://www.aliexpress.com/批发?searchtext = 8 ....

系统直流调节器:https://www.aliexpress.com/item/4000016331112.html

伺服直流调节器:https://www.aliexpress.com/item/32912982626.html

Grove to 4 pin Female Jumper Conversion Cable:https://www.seeedstudio.com/Grove-4-pin-Female-Jum...

第1步:为什么要建立自己的机器人猫?

我在和知名人士玩绞股蓝很多年前,我真的很喜欢人工生命。然后我试着长筒靴,但瓦德瓦格建议说,很抱歉尚未建成漫游者:页

两年前,我开始在网上看到许多机器人猫和狗项目。他们工作,走得好,可以做一些姿势。唯一的缺点是看起来不像猫或狗。

So I try to build my own robot cat. The main target are look like a cat, act like a cat.

ref .:

https://en.wikipedia.org/wiki/Theo_Jansen#The_str...

https://www.strandbeest.com

//www.sledutah.com/id/Design-Robot-Legs...

//www.sledutah.com/id/Lego-Trotbot/

https://www.diywalkers.com/strider-linkage-plans.h...

第二步:仿生学

为了建造一个像猫一样的机器人,我们首先需要研究猫的骨架。

猫是一个数字等级,这意味着他们站在或走在它的数字,或脚趾。所以猫的后腿有明显的3个关节,而人类(Plantigrade)只有2个关节。对于猫的前腿来说,掌骨相对太短。所以前腿的两个关节很明显。因此,机器猫的前腿有2个关节,后腿有3个关节,即10个伺服(大多数其他机器猫和狗的后腿只有两个关节)

头和脖子应该有许多活动部件,转动,点头,还有耳朵,眼睛和月的运动;尾巴的运动实际上是最难模仿的,它实际上是由几十个关节和肌肉组成的。在第一阶段,我想先集中在4条腿的动作上。为了简单起见,我只使用2个伺服来转动和点头,1个伺服来做一些简单的尾部转动。猫的尾巴通常指向地面,但我发现一条长长的尾巴指向上使它看起来很有活力,所以它总是尾巴朝上。

ref .:

https://en.wikipedia.org/wiki/Bionics

https://en.wikipedia.org/wiki/Cat_anatomy

https://en.wikipedia.org/wiki/Digitigrade

第三步:3D打印

机器人猫3D打印原型已经在第三次迭代,以后可能会有更多的迭代。

请下载并打印thingiverse上的所有部分:https://www.thingiverse.com/thing:4164643

Step 4: Servo Driver Board

机器人猫的第一阶段减少了许多活动部件,但它仍然需要13个伺服。在我以前的经验中,使用MCU GPIO的直接驱动程序伺服不是一个不错的选择。频率信号可以随着同时做另一个作业的MCU而变化,并且伺服可以变得不稳定或引入意外行为。专用个人驱动板生成伺服信号好得多。

PCA9685驱动板是一种常用的解决方案,单片机只需使用I2C接口与驱动板进行通信,就可以连续控制16个伺服系统。

第5步:机器人大脑

可以控制伺服机器人的各种MCU,以下是我在其中选择时的一些偏好:

  • 用于未来发展的内置视觉传感器
  • 小到可以装进机器猫的头
  • wireless connective
  • 与伺服驱动板通信的I2C接口

我有一个M5堆栈相机模块在手,它可以满足所有上述要求。

步骤6:测量和调整直流调节器

与大多数开发设备一样,M5Stack相机模块在5v电压下工作。

Most tiny servo operate in 5-6 V and each servo normal operate can draw 200 mA and more, operate 13 servos at the same time are over 2.6 A. In order to avoid the robot brain affected by power shortage, it is better dedicate an individual DC regulator for the brain and servos.

两个直流稳压器的输出电压都是可调的,sticky remember adjust the output voltage to 5V and 6 V分别使用前或部件可能烧坏。

第7步:伺服测试仪

以我的经验,伺服很容易损坏。以同样的顺序多买几件备件比较好。在使用前,您可以使用伺服测试仪检查它是否能正常工作://www.sledutah.com/id/Servo-Tester-2/

步骤8:FSBrowserPlus

ESP32有一个名为fsbrowser的捆绑示例。它是一个简单的Web服务器,托管复制到Sciffs的Web源文件,它有一个简单的Web编辑器,用于修改WiFi的源,也有一个简单的API来读取GPIO值。

我已将此示例增强为FSBrowserPlus:

  • 新增PCA9685伺服板API
  • 添加了一个WebSocket服务器
  • 添加了机器人猫姿势设计网页

https://github.com/moononournation/FSBrowserPlus

步骤9:程序

Arduino IDE

如果尚未安装Arduino IDE,请下载并安装:

https://www.arduino.cc/en/main/software

ESP32支持

如果尚未添加ESP32支持,请按照安装说明进行操作:

https://github.com/espressif/arduino-esp32

Arduino ESP32文件系统上载程序

如果尚未安装Arduino ESP32 filesystem uploader,请按照安装步骤进行安装:

https://github.com/me-no-dev/arduino-esp32fs-plugi ...

FSBrowserPlus软件

下载fsbrowserplus :(按“克隆或下载” - >“下载zip”)

https://github.com/moononournation/FSBrowserPlus

ESP异步Web服务器库

下载最新的ESPAsyncWebServer库:(按“克隆或下载”->“下载ZIP”)

https://github.com/me-no-dev/ESPAsyncWebServer.git

Import libraries in Arduino IDE. (Arduino IDE "Sketch" Menu -> "Include Library" -> "Add .ZIP Library" -> select downloaded ZIP file)

编译和上载

  1. 使用USB电缆连接摄像头模块
  2. 打开Arduino IDE
  3. 打开fsbrowserplus.
  4. 编辑您自己的WiFi AP凭据的ssid和密码
  5. 按Arduino IDE“上传”按钮
  6. 选择“工具”菜单->ESP32草图数据上传

步骤10:安装电源电路

以下是电源连接摘要:

Lipo Battery plug +ve pin -> 5V DC regulator INPUT +ve pin 6V DC regulator INPUT +ve pin -ve pin -> 5V DC regulator INPUT -ve pin 6V DC regulator INPUT -ve pin PCA9685 Servo Driver Board GND pin -> 5V DC regulator OUTPUT -ve pin 6V DC regulator OUTPUT -ve pin Grove cable black pin SCL pin -> Grove cable yellow pin SDA pin -> Grove cable white pin VCC pin -> 5V DC regulator OUTPUT +ve pin Grove cable red pin V+ pin -> 6V DC regulator OUTPUT +ve pin

Use M2 screws and double adhesive tape to fix all boards under the robot cat body.

第11步:伺服位置和连接

The FSBrowserPlus program have a servo initial process, it will set all the servos to the middle position of the turning range. Before install the servos, it is better connect the servos to the driver board, connect the grove connector to the M5Stack Camera Module and plug in the battery to reset all the servo position to the middle.

以下是伺服连接列表:

端口0:左前腿关节1端口1:左前腿关节2端口2:左后腿关节1端口3:左后腿关节2端口4:左后腿关节3端口5:头转向端口6:头点头端口7:未连接端口8:未连接端口9:未连接端口10:尾端口11:右后腿关节3端口12:右后腿关节2端口13:右后腿关节1端口14:右前腿关节2端口15:右前腿关节1

第12步:爪摩擦和保护

3D印刷的爪子很容易磨损,而且对地面没有足够的摩擦。只需添加一些橡皮筋,可以解决这些问题。

步骤13:安装接头

使用6毫米M3螺钉连接接头。在中间插入尼龙或宠物环可以减少摩擦。

第14步:安装伺服

伺服包装中包含几种类型的尼龙臂。将最短的尼龙臂插入伺服,除了头部转弯需要横臂。

  1. 从手臂侧开始将伺服装置插入关节
  2. 小心地将另一侧推入
  3. 插入电池,确保伺服位置在转弯范围的中间
  4. 拔下电池
  5. 在两侧拧上2个螺丝
  6. screw up the black screw together with the joint

对所有10个腿部关节重复安装关节和伺服步骤。

Step 15: Install Head & Tail

头转向伺服可以安装从上侧或下侧取决于你想有一个较长或较短的脖子。

头部节点伺服安装方法与腿部关节相同。

然后,您可以使用两个12 mm m4螺钉安装M5Stack相机模块

尾部伺服必须从下侧安装,然后可以使用8毫米M2螺钉固定尾部。

第16步:固定电池

Fix the Battery on the Robot Cat back with some double adhesive tape.

第17步:整理电线

头部附近有一个孔,电池,树丛和头部点头伺服电线可以通过该孔到电源或伺服板。

前腿和伺服板之间留有一些空间,所有的电线都可以整理到这个区域。

第18步:机器猫姿势设计

  1. 插上电池为机器猫供电
  2. 浏览到http://fsbrowserplus.local/pose.htm
  3. 调整每个关节的滑块
  4. 机器猫将有实时响应
  5. 伺服连续吸取保持姿势的动力,你可以按下休息按钮让机器猫休息

第19步:画廊

第20步:下一步是什么?

这个项目已经启动两年多了,但还处于起步阶段。我想做的更多。。。

硬件的第一阶段刚刚开始工作,是时候使用软件部分了:

Simply edit the HTML and Javscript:

  • 添加一个姿势序列设计网页,将多个姿势按顺序组合起来做一些动作

更好地修改Arduino程序:

  • 将动作序列数据存储到闪存
  • 视觉传感器,添加一些AI因子来使环境互动
  • web远程控制接口与相机图像流

Hardware part:

  • reduce weight
  • better weight balance design especially when only 2 legs touch the ground
  • 增加触脚传感器,确保触地
  • 添加平衡传感器以避免意外坠落(cat应具有良好的平衡)
  • 添加麦克风,以便收听语音识别,甚至做出响应
  • 更多的头部和尾部关节更多的运动
  • 为喵喵添加扬声器!

跟随my twitter for the latest news:https://twitter.com/moononournation

机器人比赛

年度二等奖
机器人比赛

是第一个分享

    Recommendations

    • 任何事都有可能

      任何事都有可能
    • 方块码竞赛

      方块码竞赛
    • Make it Real Student Design Challenge

      Make it Real Student Design Challenge

    27Discussions

    0
    化学试剂

    2个月前

    是否有可能为ESP32-CAM Aithinker交换M5Stack PSRAM相机?
    我已经试过了,我已经改变了SDA->14和SCL->15个引脚,修复了我的网络和密码,用arduinoide编译和上传没有问题。
    但是我不能访问网页,串行监视器给了我这个

    / *
    IP地址:192.168.1.162
    E(7829)SPIFFS:装载失败,-10025
    ESP异步Web服务器已启动。
    找不到:获取http://fsbrowserplus.local/
    _header [主机]:fsbrowserplus.local
    _头[连接]:保持活动
    _HEADER [Cache-Control]: max-age = 0
    _HEADER [升级 - 不安全的请求]:1
    _header [用户 - 代理]:Mozilla / 5.0(Windows NT 10.0; Win64; X64)AppleWebkit / 537.36(如壁虎)Chrome / 85.0.4183.121 Safari / 537.36 EDG / 85.0.564.68
    _HEADER[Accept]:text/html,application/xhtml+xml,application/xml;q=0.9,图像/webp,图像/apng,*/*;q=0.8,申请/签字交换;v=b3;q=0.9
    _HEADER [Accept-Encoding]: gzip, deflate
    _HEADER [Accept-Language]: es, es-ES; q = 0.9, en; q = 0.8, en-GB; q = 0.7, en-US; q = 0.6
    未找到:获取http://192.168.1.162/
    _HEADER [主机]:192.168.1.162
    _头[连接]:保持活动
    _HEADER [升级 - 不安全的请求]:1
    _header [用户 - 代理]:Mozilla / 5.0(Windows NT 10.0; Win64; X64)AppleWebkit / 537.36(如壁虎)Chrome / 85.0.4183.121 Safari / 537.36 EDG / 85.0.564.68
    _HEADER[Accept]:text/html,application/xhtml+xml,application/xml;q=0.9,图像/webp,图像/apng,*/*;q=0.8,申请/签字交换;v=b3;q=0.9
    _HEADER [Accept-Encoding]: gzip, deflate
    _HEADER [Accept-Language]: es, es-ES; q = 0.9, en; q = 0.8, en-GB; q = 0.7, en-US; q = 0.6
    找不到:获取http://fsbrowserplus.local/ov2640.htm.
    _header [主机]:fsbrowserplus.local
    _头[连接]:保持活动
    _HEADER [升级 - 不安全的请求]:1
    _header [用户 - 代理]:Mozilla / 5.0(Windows NT 10.0; Win64; X64)AppleWebkit / 537.36(如壁虎)Chrome / 85.0.4183.121 Safari / 537.36 EDG / 85.0.564.68
    _HEADER[Accept]:text/html,application/xhtml+xml,application/xml;q=0.9,图像/webp,图像/apng,*/*;q=0.8,申请/签字交换;v=b3;q=0.9
    _HEADER [Accept-Encoding]: gzip, deflate
    _HEADER [Accept-Language]: es, es-ES; q = 0.9, en; q = 0.8, en-GB; q = 0.7, en-US; q = 0.6
    [E] [camera.c:495]i2s\u run():等待VSYNC超时
    Camera capture failed
    找不到:获取http://fsbrowserplus.local/favicon.ico
    * /

    当我尝试访问其他选项时,会有更多。

    And another thing, would it be possible to leave the fixed IP?

    Thanks in advance and sorry for the translation ... ;-)

    0
    陳亮

    4周前回复

    很抱歉回复太晚,关键错误是第二行日志:
    E(7829)SPIFFS:装载失败,-10025
    我省略了上传SPIFFS数据的步骤,第8步更新为SPIFFS数据上传。

    0
    茴香

    回复2个月前

    美好的

    0
    茴香

    2个月前

    良好的工作!

    0
    霍尔格5

    3个月前第17步

    我总是犯错误:
    请帮帮我!


    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(esp32 hal uart.C.o):(.literal.uartDetachRx+0x0):未定义对“pinMatrixInDetach”的引用
    C:\ info \ appdata \ local \ temp \ arduino_cache_87931 \ core_881f6d9dafe9d930d52e885a753c1c1b.a(esp32-hal-uart.c.o):(。文字.uartdetachtx + 0x0):未定义引用“Pinmatrixoutdetach”
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(esp32 hal uart.C.o):(.literal.uartatchrx+0x0):未定义对“pinMatrixInAttach”的引用
    C:\ info \ appdata \ local \ temp \ arduino_cache_87931 \ core \ core_881f6d9dafe9d930d52e885a753c1c1b.a(esp32-hal-uart.c.o):(。literal.uartattachtx + 0x0):未定义引用“PINMATRIXOUTATTACH”
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(esp32 hal uart.C.o):(.literal.uartEnd+0x4):未定义对“removeApbChangeCallback”的引用
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(esp32 hal uart.C.o):(.literal.uartSetBaudRate+0x0):未定义对“getApbFrequency”的引用
    C:\ info \ appdata \ local \ temp \ arduino_cache_87931 \ core \ core_881f6d9dafe9d930d52e885a753c1c1b.a(esp32-hal-uart.c.o):(。文字.uartbegin + 0x14):对`addapbchangecallback的未定义引用
    C:\ Users \ Info \ appdata \ local \ temp \ arduino_cache_87931 \ core \ core_881f6d9dafe9d930d52e885a753c1c1b.a(esp32-hal-uart.c.o):在功能`uartdetachrx'中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32 hal uart.C:411:未定义对“pinMatrixInDetach”的引用
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(esp32 hal uart.C.o):在函数“uartDetachTx”中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32 hal uart.C:411:未定义对“pinMatrixOutDetach”的引用
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(esp32 hal uart.C.o):在函数“uartatchrx”中:
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 \ cores \ esp32 / esp32-hal-uart.c:411:未定义的“pinmode”
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32 hal uart.C:411:未定义对“pinmatrixinatch”的引用
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(esp32 hal uart.C.o):在函数“uartatchtx”中:
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 \ cores \ esp32 / esp32-hal-uart.c:411:未定义的“pinmode”
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 \ cores \ esp32 / esp32-hal-uart.c:411:未定义的“pinmatrixoutattach”
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881F6D9DAFE9D930D52E885A753C1B.a(esp32 hal uart.C.o):在函数“uartEnd”中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32-hal-uart.c:411: undefined reference to `removeApbChangeCallback'
    C:\用户\ info \ appdata \ local \ temp \ arduino_cache_87931 \ core \ core_881f6d9dafe9d930d52e885a753c1c1b.a(esp32-hal-uart.c.o):在功能`uartsetbaudrate':
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 \ cores \ esp32 / esp32-hal-uart.c:411:未定义引用`getapbfrequency'
    C:\用户\ info \ appdata \ local \ temp \ arduino_cache_87931 \ core_881f6d9dafe9d930d52e885a753c1c1b.a(esp32-hal-uart.c.o):在功能`uartbegin':
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32 hal uart.C:411:对“addApbChangeCallback”的引用未定义
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(esp32 hal uart.C.o):在函数“uartDetectBaudrate”中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32 hal uart.C:555:未定义对“getApbFrequency”的引用
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \硬件\ esp32 \ 1.0.4 / tools / sdk / lib \ libesp32-camera.a(camera.o):(。文字照相机_fb_init + 0xc):未定义引用“pathtofilename”
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4/tools/sdk/lib\libesp32 camera.a(camera.o):在函数“camera\u fb\u init”中:
    /home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/driver/camera.c:250:未定义对“pathToFileName”的引用
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 / tools / sdk / lib \ libesp32-camera.a(camera.o):在功能`skip_frame':
    /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/esp32-camera/driver/camera.c:205:未定义的参考`pathtofilename'
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4/tools/sdk/lib\libesp32 camera.a(camera.o):在函数“i2s\u run”中:
    /home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/driver/camera.c:495:未定义对“pathToFileName”的引用
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4/tools/sdk/lib\libesp32 camera.a(camera.o):在函数“camera\u probe”中:
    /home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/driver/camera.c:1036:未定义对“pathToFileName”的引用
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4/tools/sdk/lib\libesp32 camera.a(camera.o):/home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/driver/camera.C:1120:后面还有更多未定义的对“pathToFileName”的引用
    草图\FSBrowserPlus.ino.cpp.o:(.literal._ZL10pca9685Offv+0x4): undefined reference to `PCA9685::setChannels(unsigned char, unsigned char, unsigned short)'
    素描\ fsbrowserplus.ino.cpp.o :(。literal._zl7setgpiohh + 0x4):未定义引用“pinmode”
    sketch\FSBrowserPlus.ino.cpp.o:(.literal.\u ZL7setGPIOhh+0x8):未定义对“digitalWrite”的引用
    素描\ fsbrowserplus.ino.cpp.o :(。literal._zl10setchannelht + 0x4):未定义的参考`pca9685 :: setchannel(无符号字符,unsigned short)'
    sketch\FSBrowserPlus.ino.cpp.o:(.literal.\u ZL10setChannelht+0x8):未定义对“delay”的引用
    sketch\FSBrowserPlus.ino.cpp.o:(.literal.\u ZNSt17\u Function\u handlerIFvP22AsyncEventSourceClientEZ5setupvEUlS1\u E3\u E9\u M\u invokeERKSt9\u Any\u dataOS1\u+0x4):未定义对“millis”的引用
    素描\ fsbrowserplus.ino.cpp.o :(。literal._znst17_function_handlerifvp21asyncwebserverrequestez5setupveuls1_e8_e9_m_invokeerkst9_any_dataos1_ + 0x1c):未定义引用“Analogread”
    素描\ fsbrowserplus.ino.cpp.o :(。literal._znst17_function_handlerifvp21asyncwebserverrequestez5setupveuls1_e8_e9_m_invokeerkst9_any_dataos1_ + 0x20):未定义引用“DigitalRead”
    草图\FSBrowserPlus.ino.cpp.o:(.literal._Z9onWsEventP14AsyncWebSocketP20AsyncWebSocketClient12AwsEventTypePvPhj+0x70): undefined reference to `PCA9685::setChannelsValues(unsigned char, unsigned char, unsigned short*)'
    素描\ fsbrowserplus.ino.cpp.o :( literal._z5setupv + 0x114):未定义引用“PCA9685 :: begin()”
    素描\ fsbrowserplus.ino.cpp.o :( literal._z5setupv + 0x118):未定义的参考“pca9685 :: setfrequency(unsigned short)”
    sketch\FSBrowserPlus.ino.cpp.o:(.literal.startup.\u GLOBAL\u sub\u I\u ssid+0xc):未定义对“PCA9685::PCA9685(unsigned char)”的引用
    sketch\FSBrowserPlus.ino.cpp.o:在函数“pca9685Off()”中:
    C:\ user \ info \ documents \ arduino \ libraries \ fsbrowserplus-master / pca9685api.h:7:未定义的`pca9685 :: setchannels(未签名的char,unsigned char,unsigned short)'
    sketch\FSBrowserPlus.ino.cpp.o:在函数“setGPIO(unsigned char,unsigned char)”中:
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/gpioAPI.h:6:对“pinMode”的引用未定义
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/gpioAPI.h:26:对“digitalWrite”的引用未定义
    sketch\FSBrowserPlus.ino.cpp.o:在函数“setChannel(unsigned char,unsigned short)”中:
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/pca9685API.h:24:对“PCA9685::setChannel(unsigned char,unsigned short)”的引用未定义
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus-master/pca9685API.h:25: undefined reference to `delay'
    sketch\FSBrowserPlus.ino.cpp.o:In function`std::\u function\u handler::\u M\u invoke(std::\u Any\u data const&,AsyncEventSourceClient*&&)':
    c:\users\info\documents\arduinodata\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0/functional:1871:未定义对“millis”的引用
    素描\ fsbrowserplus.ino.cpp.o:在函数`std :: _ function_handler :: _ m_invoke(std :: _ any_data const&,asyncwebserverrequest* &&)':
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/gpioAPI.h:35:对“analogRead”的引用未定义
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/gpioAPI.h:41:对“digitalRead”的引用未定义
    sketch\FSBrowserPlus.ino.cpp.o:在函数“onWsEvent(AsyncWebSocket*,AsyncWebSocketClient*,AwsEventType,void*,unsigned char*,unsigned int)”中:
    C:\用户\ info \ documents \ arduino \ libraries \ fsbrowserplus-master / pca9685api.h:32:未定义的参考`pca9685 :: setchannelsvalues(未签名的char,unsigned char,unsigned short *)'
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/pca9685API.h:35:对“delay”的引用未定义
    sketch\FSBrowserPlus.ino.cpp.o:在函数“setup()”中:
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/gpioAPI.h:6:对“pinMode”的引用未定义
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/gpioAPI.h:6:对“pinMode”的引用未定义
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/gpioAPI.h:6:对“pinMode”的引用未定义
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/gpioAPI.h:6:对“pinMode”的引用未定义
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/gpioAPI.h:6:对“pinMode”的引用未定义
    sketch\FSBrowserPlus.ino.cpp.o:在函数“setup()”中:
    C:\ users \ info \ documents \ arduino \ libraries \ fsbrowserplus-master / pca9685api.h:12:未定义引用`pca9685 :: begin()'
    C:\用户\ info \ documents \ arduino \ libraries \ fsbrowserplus-master / pca9685api.h:13:未定义引用`pca9685 :: setfriquency(unsigned short)'
    C:\用户\ info \ documents \ arduino \ libraries \ fsbrowserplus-master / pca9685api.h:15:未定义引用`pca9685 :: setchannels(未签名的char,unsigned char,unsigned short)'
    C:\用户\ info \ documents \ arduino \ libraries \ fsbrowserplus-master / pca9685api.h:16:未定义的“延迟”引用
    sketch\FSBrowserPlus.ino.cpp.o:在函数“setup()”中:
    C:\Users\info\Documents\Arduino\FSBrowserPlus/FSBrowserPlus。ino:287:未定义对“delay”的引用
    sketch\FSBrowserPlus.ino.cpp.o:在函数“\u GLOBAL\u sub\u I\u ssid”中:
    C:\Users\info\Documents\Arduino\libraries\FSBrowserPlus master/pca9685API.h:3:未定义对“PCA9685::PCA9685(unsigned char)”的引用
    libraries\WiFi\WiFiGeneric.cpp.o:(.literal.\u Z9tcpipInitv+0x1c):未定义对“xTaskCreateUniversal”的引用
    libraries\WiFi\WiFiGeneric.cpp.o:在函数“tcpipInit()”中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi\src/WiFiGeneric。cpp:264:未定义对“xTaskCreateUniversal”的引用
    libraries\WiFi\WiFiSTA.cpp.o:在函数“WiFiSTAClass::waitForConnectResult()”中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi\src/WiFiSTA。cpp:718:未定义对“delay”的引用
    libraries\ESPAsyncWebServer master\AsyncWebSocket.cpp.o:在函数“AsyncWebSocketClient::AsyncWebSocketClient(AsyncWebServerRequest*,AsyncWebSocket*)”中:
    C:\Users\info\Documents\Arduino\libraries\ESPAsyncWebServer master\src/AsyncWebSocket。cpp:853:未定义对“millis”的引用
    libraries\ESPAsyncWebServer-master\AsyncWebSocket.cpp.o: In function `AsyncWebSocketClient::ping(unsigned char*, unsigned int)':
    C:\Users\info\Documents\Arduino\libraries\ESPAsyncWebServer master\src/AsyncWebSocket。cpp:853:未定义对“millis”的引用
    libraries\ESPAsyncWebServer master\AsyncWebSocket.cpp.o:在函数“AsyncWebSocketClient::\u onPoll()”中:
    C:\Users\info\Documents\Arduino\libraries\ESPAsyncWebServer master\src/AsyncWebSocket。cpp:853:未定义对“millis”的引用
    libraries\ESPAsyncWebServer master\AsyncWebSocket.cpp.o:在函数“AsyncWebSocketClient::\u onAck(unsigned int,unsigned int)”中:
    C:\Users\info\Documents\Arduino\libraries\ESPAsyncWebServer master\src/AsyncWebSocket。cpp:853:未定义对“millis”的引用
    libraries\ESPAsyncWebServer master\SPIFFSEditor.cpp.o:在函数“SPIFFSEditor::handleUpload(AsyncWebServerRequest*,String const&,unsigned int,unsigned char*,unsigned int,bool)”中:
    C:\Users\info\Documents\Arduino\libraries\ESPAsyncWebServer master\src/ESPAsyncWebServer.h:347:未定义对“millis”的引用
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4/tools/sdk/lib\libesp32 camera.a(sccb.o):在函数“sccb\u Read”中:
    /home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/driver/sccb.c:114:未定义对“pathToFileName”的引用
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4/tools/sdk/lib\libesp32 camera.a(sccb.o):在函数“sccb\u Write”中:
    /home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/driver/sccb.c:151:未定义对“pathToFileName”的引用
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 / tools / sdk / lib \ libesp32-camera.a(sccb.o):在功能`sccb_read16'中:
    /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/esp32-camera/driver/sccb.c:190:未定义引用“pathtofilename”
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 / tools / sdk / lib \ libesp32-camera.a(sccb.o):在功能`sccb_write16'中:
    /home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/driver/sccb.c:234:未定义对“pathToFileName”的引用
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4/tools/sdk/lib\libesp32 camera.a(ov3660.o):在函数“set\u aec\u value”中:
    /home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/sensors/ov3660.c:147:未定义对“pathToFileName”的引用
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4/tools/sdk/lib\libesp32 camera.a(ov3660.o):/home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/sensors/ov3660.C:147:下面是对“pathToFileName”的更多未定义引用
    libraries \ arduinoota \ arduinoota.cpp.o :( literal._zn15arduinootaclass5_onrxev + 0x10):未定义的参考“micros”
    libraries\ArduinoOTA\ArduinoOTA.cpp.o:在函数“ArduinoOTAClass::\u onRx()”中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\libraries\ArduinoOTA\src/ArduinoOTA。cpp:181:未定义对“micros”的引用
    libraries\ArduinoOTA\ArduinoOTA.cpp.o: In function `ArduinoOTAClass::_runUpdate()':
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\libraries\ArduinoOTA\src/ArduinoOTA。cpp:271:未定义对“delay”的引用
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 \ libraries \ arduinoota \ src / arduinoota.cpp:328:未定义引用“延迟”
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\libraries\ArduinoOTA\src/ArduinoOTA。cpp:334:未定义对“delay”的引用
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 \ libraries \ arduinoota \ src / arduinoota.cpp:343:未定义的“延迟”引用
    libraries\Update\Updater.cpp.o:在函数“UpdateClass::_reset()”中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\libraries\Update\src/Updater。cpp:360:未定义对“digitalWrite”的引用
    libraries \ spiffs \ spiffs.cpp.o :(。literal._zn2fs8spiffsfs6formatev + 0x0):未定义引用“disablecore0wdt”
    Libraries \ spiffs \ spiffs.cpp.o :(。literal._zn2fs8spiffsfs6formatev + 0x4):未定义引用“enablecore0wdt”
    libraries\SPIFFS\SPIFFS.cpp.o:在函数“fs::SPIFFSFS::format()”中:
    c:\users\info\documents\arduinodata\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\bits/shared\u ptr\u base.h:127:未定义对“disableCore0WDT”的引用
    c:\users\info\documents\arduinodata\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\bits/shared\u ptr\u base.h:127:未定义对“enableCore0WDT”的引用
    libraries \ asynctcp-master \ asynctcp.cpp.o:in function` _start_async_task()':
    C:\Users\info\Documents\Arduino\libraries\AsyncTCP master\src/AsyncTCP。cpp:1116:未定义对“xTaskCreateUniversal”的引用
    libraries\AsyncTCP master\AsyncTCP.cpp.o:在函数“AsyncClient::send()”中:
    C:\用户\ info \ documents \ arduino \ libraries \ asynctcp-master \ src / asynctcp.cpp:1116:未定义的“毫米”
    libraries\AsyncTCP master\AsyncTCP.cpp.o:在函数“AsyncClient::AsyncClient(tcp\u pcb*)”中:
    C:\用户\ info \ documents \ arduino \ libraries \ asynctcp-master \ src / asynctcp.cpp:1116:未定义的“毫米”
    libraries\AsyncTCP master\AsyncTCP.cpp.o:在函数“AsyncClient::\u sent(tcp\u pcb*,unsigned short)”中:
    C:\用户\ info \ documents \ arduino \ libraries \ asynctcp-master \ src / asynctcp.cpp:1116:未定义的“毫米”
    C:\用户\ info \ documents \ arduino \ libraries \ asynctcp-master \ src / asynctcp.cpp:1116:未定义的“毫米”
    libraries\AsyncTCP master\AsyncTCP.cpp.o:在函数“AsyncClient::\u recv(tcp\u pcb*,pbuf*,signed char)”中:
    C:\用户\ info \ documents \ arduino \ libraries \ asynctcp-master \ src / asynctcp.cpp:1116:未定义的“毫米”
    libraries\AsyncTCP master\AsyncTCP.cpp.o:C:\Users\info\Documents\Arduino\libraries\AsyncTCP master\src/AsyncTCP。cpp:1116:后面有更多未定义的对“millis”的引用
    libraries\Wire\Wire.cpp.o:(.literal._ZN7TwoWire5flushEv+0x0): undefined reference to `i2cFlush'
    libraries\Wire\Wire.cpp.o:(.literal.\u ZN7TwoWireD2Ev+0x4):未定义对“i2cRelease”的引用
    libraries\Wire\Wire.cpp.o:(.literal.\zn7twowire5begineij+0x0):未定义对“i2cInit”的引用
    libraries\Wire\Wire.cpp.o:在函数“TwoWire::flush()”中:
    C:\ users \ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 \ cores \ esp32 / stream.h:104:未定义引用“i2cflush”
    libraries\Wire\Wire.cpp.o: In function `TwoWire::~TwoWire()':
    C:\ users \ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 \ cores \ esp32 / stream.h:104:未定义引用“i2ccrelease”
    库\Wire\Wire.cpp.o:在函数`TwoWire::begin(int,int,unsigned int)'
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/Stream.h:104:未定义对“i2cInit”的引用
    C:\Users\info\AppData\Local\Temp\arduino_cache_87931\core\core_881f6d9dafe9d930d52e885a753c1c1b.a(HardwareSerial.cpp.o):(.literal._ZN14HardwareSerial5beginEmjaabm+0x4): undefined reference to `yield'
    C:\用户\ info \ appdata \ local \ temp \ arduino_cache_87931 \ core \ core_881f6d9dafe9d930d52e885a753c1c1b.a(hardwareserial.cpp.o):在功能`hardwareserial :: begin(unsigned long,unsigned int,签署的char,bool,毫无符号)':
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/Stream.h:104: undefined reference to `millis'
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/Stream.h:104: undefined reference to `millis'
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/Stream.h:104: undefined reference to `delay'
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/Stream.h:104:未定义对“yield”的引用
    C:\用户\ info \ documents \ arduinodata \ packages \ esp32 \ hardware \ esp32 \ 1.0.4 / tools / sdk / lib \ libesp32-camera.a(xclk.o):in function` camera_enable_out_clock':
    /home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/driver/xclk.c:23:未定义对“pathToFileName”的引用
    /home/runner/work/esp32 arduino lib builder/esp32 arduino lib builder/components/esp32 camera/driver/xclk.c:37:未定义对“pathToFileName”的引用
    C:\用户\ info \ appdata \ local \ temp \ arduino_cache_87931 \ core \ core_881f6d9dafe9d930d52e885a753c1c1b.a(main.cpp.o):(文字.app_main + 0xc):对`initarduino的引用未定义
    C:\用户\ info \ appdata \ local \ temp \ arduino_cache_87931 \ core \ core_881f6d9dafe9d930d52e885a753c1c1b.a(main.cpp.o):(文字.app_main+0x10):未定义对“xTaskCreateUniversal”的引用
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(main.cpp.o):在函数“app\u main”中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/main。cpp:26:未定义对“initArduino”的引用
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/main。cpp:27:未定义对“xTaskCreateUniversal”的引用
    C:\Users\info\AppData\Local\Temp\arduino\u cache\u 87931\core\core\u 881f6d9dafe9d930d52e885a753c1c1b.a(Stream.cpp.o):在函数“Stream::timedRead()”中:
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/Stream。cpp:76:未定义对“millis”的引用
    C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\cores\esp32/Stream。cpp:76:未定义对“millis”的引用
    collect2.exe:错误:LD返回1个退出状态
    Mehrere Bibliotheken WurdenFür“Wifi.h”Gefunden
    Benutzt:C:\Users\info\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
    Nicht benutzt: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi
    退出状态1
    Fehler beim Kompilieren f公司ür das板ESP32开发模块。
    Ungültigebibliothekc:\ users \ info \ documents \ arduino \ libraries \ heltec_esp32-master在keine header-dateien(.h)中的c:\ users \ info \ documents \ arduino \ libraries \ heltec_esp32-master gefunden gefunden

    0
    陳亮

    回复3个月前

    对于旧库,请尝试删除文件夹:C:\Users\info\Documents\Arduino\libraries\Heltec\u ESP32-master

    2
    阿伯坦P1369

    三个月前

    NOTE: URL links given below have been corrected. If they do not work try copy and paste to a url address in your browser. 200926

    做得好。我对这篇文章还没有完全了解。但这是一个“房子”版本的松鼠追逐者,这是简短地讨论了会议https://create.arduino.cc/projecthub/redbug. 基本上,这个版本是一个户外版的半自主猫追逐小动物。生物追逐者的渲染是一个gampead arduino/uno otg android/tablet-wifi-mega256车辆。对实现的严格限制是开源的,并且是用“手头上的零件”创建的。该项目的详细描述见http://abbottanp.com/table_projects.html。代码文物已加载到GitHub:https://github.com/trooker/a038_squirrel-chase。最后阶段仍在发展。但实地试验应于2020年9月11日结束。

    再次做好记录你的“猫”。我也许可以利用你介绍的几个概念。谢谢。


    0
    iamsetsetiam

    回复3个月前

    你提供的3个链接都不起作用。

    0
    阿伯坦P1369

    回复3个月前

    I just confirmed what you observed.

    请参阅所附图片。它们的顶部都显示了“正确的URL”。

    I can not explain why the addresses provided above failed to link properly. "Instructables" may use some HMTL tag for setting the links of which I am not familiar: my-hompage . If you need more assistance copy/paste this url and look along the bottom of the webpage that is rendered for a hot link to an email form.

    作记号。

    0
    陳亮

    回复3个月前

    有关于你的机器人设计的图片吗?

    1
    wadevag

    3个月前步骤20

    简直 不可思议!忘掉“漫游者”,继续走这条路!;)

    0
    陳亮

    回复3个月前

    strider仍在我的愿望清单上,我会打印一个“曾经”我有时间

    0
    万岁999

    三个月前

    制作它的总成本是多少??

    0
    克内德乌诺

    回复3个月前

    从他发布的链接,我会说200美元到300美元

    0
    万岁999

    回复3个月前

    谢谢