终于搞定了!花30元,DIY了一只机器狗!

终于搞定了!花30元,DIY了一只机器狗!
2024年12月31日 15:06 电子产品世界

30元DIY了一只超可爱的机器狗!

本文引用地址:

目前,项目已全开源!

它有哪些功能(第1章)软硬件怎么设计(2-3章)如何校准舵机(4章)开源资料入口(6章)下文咱们一一了解~

  • 支持手机遥控

  • 支持表情、每日天气、时间显示

  • 电路大部分使用插件封装,成本低廉且易于新手焊接,适用于教学

  • 本项目不含电池,成本大致为30元,主要费用在于舵机12元,屏幕4.5元,主控4元

  • 支持功能拓展,代码已完全开源,可以根据现有代码逻辑框架,添加更多好玩有趣的功能

当然你也可以完全重构,使用更好性能的主控

在软件上可以添加语音交互,大模型对话等等

在硬件上也可以添加避障,测温,搭载炮台等等

电路由以下部分组成——电源部分、ESP8266主控、外部接口。

EDA-Robot插件版原理图EDA-Robot插件版原理图
EDA-Robot插件版PCB图EDA-Robot插件版PCB图

①硬件参数

  • 主控:ESP8266,内置WIFI功能,通过AP模式遥控

  • OLED显示屏:0.96寸,可显示表情、时钟、天气等信息

  • LDO线性稳压器:AMS1117 ,负责将8.4V和5V电压分别转换成5V和3.3V,为舵机及主控提供电源

  • 舵机:SG-90/MG90,支持180度/360度版本,本文以360度版本为主

  • 供电:14500双节电池组,通过LDO降压稳压器供电

  • OLED显示屏支持SSD1315,SSD1306驱动,该模块自带屏幕驱动电路,仅需接口接入即可。

  • 电路设计软件:嘉立创EDA

②原理解析

(1)ADC电量检测电路

修改分压器适配 8.4V 到 1V

现在需要适配新的输入电压范围(最大 8.4V)到 ESP8266 的 1.0V ADC 输入。

分压比计算如下:

分压比=1V8.4V=18.4≈0.119分压比=8.4V1V=8.41≈0.119

根据分压公式:

R2R1+R2=0.119R1+R2R2=0.119

假设保持100k ,计算 :

100kR1+100k=0.119R1+100k100k=0.119

R1+100k=100k0.119≈840kR1+100k=0.119100k≈840k

R1≈740kΩR1≈740kΩ

对于 ,输出电压:

Vout=8.4×100k740k+100k=8.4×100840≈1.0VVout=8.4×740k+100k100k=8.4×840100≈1.0V

对于电压较低时(如 4.2V),输出电压为:

Vout=4.2×100k740k+100k=4.2×100840≈0.5VVout=4.2×740k+100k100k=4.2×840100≈0.5V

分压电路成功将8.4V的输入电压,压缩到0-1V范围内

(2)外部接口电路

串口:为方便下载,单独引出了IO0及GND接口作为跳帽插入接口,当插入跳帽时,IO0被拉低,进入下载模式。反之被主控部分电路拉高,进入工作模式。

电池:引出了外部充电拓展接口,VIN与VBAT是开关接口,VIN与GND接口是外部充电模块接口。充电模块选择满电电压大概在8.4V的2串锂电池充电模块。

按键:使用IO2和IO15引脚,IO2按键按下时拉低,空闲时被拉高。但由于IO15必须接下拉电阻,所以这里开关逻辑与IO2相反,按键按下时拉高,空闲时被拉低。

本章节只介绍部分比较重要的关键代码。

开源网址:https://oshwhub.com/course-examples/bot-dog 开发文档:https://wiki.lceda.cn/zh-hans/course-projects/smart-internet/eda-robot/eda-robot-introduce.html

如何通过手机【控制】机器狗?

为了控制机器狗,我写了一个网页,你可以直接使用,也可以参考下方了逻辑,自己写一个,并在此基础上进行拓展。

①控制页面CSS样式表

②控制页面JavaScript代码

③控制页面HTML代码

控制页面的代码是存放在FS文件系统中的,这里主要看AJAX请求函数,这部分的请求与下一小节的页面路由监听代码相对应,我们通过点击页面按钮触发请求

这里进行了一些简化操作,避免html过长过大导致html加载和响应缓慢,这可能导致esp8266无法正确显示页面。

如何让机器狗【运行起来】?给它注入点赛博灵魂~~

④页面路由监听

这部分的代码较长,是所有WebServer的页面路由监听,与页面中按钮触发的url对应,这里的url务必检查仔细,如果不能对应就无法监听到页面请求是否触发,硬件也无法做出对应的响应。

另外,在/connect下还添加了写入信息到FS文件系统中的功能,只要每次开机执行读取就不需要重复配置网络信息了。

⑤读取FS系统保存的json文件

前面我们讲了在/connect路由监听下,添加了将信息保存的FS文件系统,那么,这里的loadWiFiConfig()方法就是读取FS文件系统的Json文件,并将数据同步到全局变量之中,这样就不需要每次开机进入配置页面配网了,程序会自动加载上次配网保存的信息,极为方便。

⑥运动状态

运动状态代码与前面的路由监听对应,之所以没有把动作函数直接写入路由监听的代码,这是因为会导致页面响应过久,导致页面无法加载或者触发程序死机然后重启。

为了避免这个情况发生,我们通过actionstate变量定义运动状态,然后再loop函数中判断。

这里选择的是switch,而并没有使用if-else,理论上对应顺序较长的数据switch性能略好,看个人喜欢,其实都可以用。

⑦前进运动

⑧ADC电量检测

与小车不同,机器狗不能像小车那样简单控制电机正反转,实现前进后退,这里需要观察四足动物,进行一些仿生模拟,用舵机模拟四足动物前进时的四足变化情况。下一章,我们就讲这个!

如何让机器狗麻溜滴【走起来】且不顺拐?

机器小狗使用360度舵机,其拓展性高,但不像180度舵机那样,可以直接控制旋转角度,所有我们需要进行舵机校准,确保舵机转速,角度均合适。

说明:刷入程序的舵机校准数据并不是通用的,这要根据自己的舵机情况进行调整。

精确校准

接着,请按一下步骤进行精调。

1.将所有脚固定到相同角度。 2.滑到校准页的底部,点击4次‘电机左转90度’。 3.找到转动大于360度或小于360度的脚,进行舵机补偿

修改程序重新烧录

记录下认为合理的各个电机补偿值,修改程序的补偿定义,重新刷入程序,当然,不重新输入也可以,这个值是立即生效的。

但是为了能快速响应,避免重复刷写降低寿命,所以不会保存到FS文件系统,下次重启也不会被保留。

当然啦!其实更推荐使用180度版本,因为其自带限位器,为了便于大家DIY,原工程中,已开源了180度舵机的版本。可前往原工程查看!

开源网址:https://oshwhub.com/course-examples/bot-dog 

开发文档:https://wiki.lceda.cn/zh-hans/course-projects/smart-internet/eda-robot/eda-robot-introduce.html

机器狗电路舵机
新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片