当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]这个想法源于一个实际问题。我住在墨尔本,那里的天气变化非常快。曾有几次,我把衣服晾在外面晾干,去上大学后回来发现它们被雨水淋湿了。这个项目旨在探索嵌入式系统如何通过检测环境条件并自动响应,来帮助解决这个问题。

1. 引言

该项目是一款智能晾衣架机器人,旨在作为现实世界自动化晾衣系统概念验证的实现。

这个想法源于一个实际问题。我住在墨尔本,那里的天气变化非常快。曾有几次,我把衣服晾在外面晾干,去上大学后回来发现它们被雨水淋湿了。这个项目旨在探索嵌入式系统如何通过检测环境条件并自动响应,来帮助解决这个问题。

我没有建造一个完整的晾衣架,而是制作了一个小型机器人,用来模拟自动晾衣架的运行过程。这个机器人能够检测光线方向、感应雨水、沿线路移动,并在干燥区和安全区之间穿梭,同时通过MQTT与树莓派仪表板进行通信。

2. 发展方法

我没有一步到位地完成整个机器人的建造,而是逐步进行,并在添加下一部分之前测试每一部分。

开发过程如下:

•我首先组装了机器人的底盘。

•然后我安装了面包板、L298N电机驱动器和6节电池组。

•我使用一个简单的测试脚本对电机和电机驱动器进行了测试。

•底座运动完成后,我在前面加装了三个线路传感器。

•我用一个简单的脚本单独测试了行传感器。

•然后我加装了雨量传感器,并测试了干湿状态的读数。

•之后,我添加了两个BH1750光传感器,并测试了它们的读数。

•一旦传感器能够独立工作,我便开始开发机器人的实际逻辑。

•我首先让机器人朝向更强的光线旋转。

•然后我使用串行监视器命令,让机器人移动到安全且干燥的区域。

•我多次调整了逻辑,直到动作变得可靠。

•之后,我添加了线条追踪和区域检测功能。

•最后,我添加了MQTT通信和树莓派仪表板。

这种方法行之有效,因为每个新模块在成为最终系统的一部分之前都会经过测试。如果出现问题,我就能知道是哪个部分刚刚被添加或修改了。

3. 所用硬件

我主要使用的硬件是:

•Arduino Nano 33 IoT IoT 板

•L298N电机驱动器

•两轮机器人底盘

•两个直流电机

•面包板

•6节AA电池组

•三线传感器

•雨量传感器

•两个 BH17500 光感传感器

•跳线

•双面胶

•用于安装线路传感器的薄型可锻金属板

•树莓派用于后端/仪表盘

在组装过程中我使用了双面胶,因为它让我可以在测试时重新调整零件位置。

4. 电路图与接线概览

在组装完整机器人之前,我已规划好Arduino Nano、L298N电机驱动器、传感器和电池组之间的接线。电路图展示了这些主要模块在安装到机箱之前如何连接。

最重要的接线要点是所有模块都需要共用一个地线。Arduino Nano、L298N电机驱动器、雨传感器、线路传感器、BH1750传感器以及电池供电必须共用地线,以确保信号能够正确读取。

我最终构建中主要使用的连接方式是:

L298N 的 ENA 和 ENBBB 跳线保持安装,因此我没有使用 PWM PWM 引脚进行速度控制。相反,最终代码采用数字脉冲运动方式,使电机动作更平缓。

5. 搭建底盘

第一步是组装基本的机器人底盘。我安装了两个直流电机,装上车轮,并安装了前轮脚轮。

现阶段还没有安装传感器。我只是想确保机器人有一个稳定的底座,并且有足够的空间来后期安装面包板、电机驱动器、电池组和传感器。

6. 安装面包板、L298N和电池组

底盘组装完成后,我安装了面包板、L298N电机驱动器和6节电池组。

我用双面胶将这些部件固定在机箱上,这样在测试时更容易调整元件位置。L298NNN 被安装在电机附近,以便电机线缆能轻松连接。面包板放在上方,便于之后添加 Arduino 和传感器的线路。电池组则安装在合适的位置,以便独立为机器人供电。

此时,机器人已具备运动所需的基本部件:

•电源用电池组;

•L298N 用于电机控制;

•用于布线的面包板;

•使用Arduino Nano作为控制器。

7. 测试电机驱动器

在添加任何传感器之前,我使用一个简单的Arduino脚本测试了电机驱动器和电机。

本次测试的目的是确认:

•左侧电机可以向前和向后移动;

•正确的电机可以向前和向后移动;

•两个电机可以同时运动;

•机器人可以左右旋转;

•停止功能已生效;

•电池和L298N实际上可以为电机供电。

这个阶段很重要,因为电机方向在第一次尝试时并不总是正确。根据电机的接线方式,一侧可能会反向旋转。我调整了电机方向设置,直到机器人能够正确地向前移动、向左旋转、向右旋转并停止。

在我的最终接线中,L298N电机控制引脚是:

我保留了L298N的ENA/ENB跳线,因此机器人没有使用PWM引脚。相反,最终代码采用数字脉冲运动方式,使电机动作更平缓。

8. 添加线路传感器

电机系统运行后,我在机器人的前面加装了三个线路传感器。

三个传感器的排列方式如下:

我用从面包板上剩下的薄可锻金属片将它们固定起来。这种方法效果很好,因为可以稍微弯曲金属片,使传感器朝下放置。我用胶带将传感器和支架固定在原位。

线路传感器已连接到:

此时,我并没有立即添加完整的行跟踪功能。首先,我用一个简单的脚本测试了传感器,该脚本会打印读数。我只使用黑色胶带作为测试表面,以确认传感器能够正确检测暗区和亮区。

这一阶段的目标只是检查每个传感器在经过暗线时是否会产生反应。

9. 添加雨量传感器

在安装并测试了线路传感器后,我加装了雨量传感器。

雨传感器主要有两个部分:

•感应板;

•控制模块。

我将感应板安装在测试时易于触及的位置,控制模块则放置在面包板附近。再次使用双面胶,以便在需要时可调整传感器的位置。

雨传感器输出连接到:

我用一个简单的脚本单独测试了雨传感器,该脚本会打印模拟读数。我将传感器干燥时的数值与湿润时的数值进行比较,这帮助我确定了检测降雨的阈值。

在最终设置中,干区读数大致较高,湿区读数较低,因此最终代码使用阈值来判断是否有降雨。

10. 添加和测试 BH17500 光感传感器

我添加的最后一个传感器是两个BH1750光感传感器。

我在机器人左侧安装了一个BH1750传感器,在右侧也安装了一个。使用垂直支撑使传感器高出机器人机身,这样有助于传感器更好地检测来自不同方向的光线。

两个传感器都使用I2C,因此需要不同的地址:

在编写机器人旋转逻辑之前,我先使用一个简单的测试脚本来确认两个传感器都能正常读取数据。该测试会打印左右两侧的光照强度值,以便我检查当光线指向传感器时,每个传感器是否都能做出响应。

在最终代码中,两个传感器都以如下方式初始化:

这使得机器人在启动时能够检查每个BH1750传感器是否被成功检测到。

11. 让机器人朝向阳光旋转

在确认两个BH1750传感器都能读取数据后,我开始着手处理太阳平衡逻辑。

想法很简单:

最终逻辑比较两个亮度值,并采用死区,以防止机器人在微小差异时发生旋转。

死区很重要,因为如果没有它,机器人即使在光线差异非常小时仍会持续旋转,这使得机器人更加稳定。

太阳追踪功能仅在机器人处于干燥状态且启用洗衣模式时使用。

12. 使用串行命令控制运动

在添加MQTT或仪表板之前,我通过串口监视器命令来控制机器人。这样可以更方便地测试运动,而无需依赖后端服务。

串行命令如下:

命令处理逻辑如下所示:

这个阶段很有用,因为我可以将机器人放置在测试表面上,发送指令,观察其运动,然后调整逻辑。

我多次调整了运动方式,最终才得到一个能正常工作的版本。机器人需要正确旋转、寻找线条、向前移动,并在需要时停止。

13. 开发线传感器逻辑

机器人能够通过简单的串行指令移动后,我开始着手进行线路追踪。

三个线路传感器被读取为一个三位模式:

以下函数读取三个传感器并将它们转换为该模式:

这成为机器人运动逻辑的基础。

总体的运动理念是:

最初的版本过于敏感,机器人有时会过度校正,因为它对每一个微小的传感器变化都会做出反应。我通过添加逻辑来改进这一问题,该逻辑能够容忍短暂的闪烁,并仅在需要时进行校正。

14. 线路追踪与恢复

跟随线路时的一个问题是机器人可能会偏离轨道。当这种情况发生时,需要一种方法重新寻找线路,而不是完全停止。

最终代码采用了一种线迹追踪状态。当机器人检测到左侧或右侧的线时,会锁定该方向并保持朝该方向旋转一段时间,从而有助于减少随机左右移动。

逻辑的简化解释如下:

部分追踪线路的逻辑是:

这是改进机器人运动性能的部分之一,因为它能防止机器人在读取到快速变化的线路信息时不断改变方向。

15. 通过向前发力改善动作

另一个问题是动作迟缓。如果机器人能立即纠正每一个微小的侧向读数,它就会移动得过慢且不均匀。

为了减少这种情况,我采用了一段较短的前向提交时间。当机器人看到中心线时,它会短暂地认为自己已对齐并继续向前移动。除非出现持续的小幅度闪烁,否则会被忽略。

这是一项重要的改进,因为它使机器人运动更加平稳,不再频繁地左右晃动。

16. 开发安全区与干燥区检测

机器人能够沿线移动后,我添加了用于检测安全区和干燥区的逻辑。

机器人通过标记图案来检测区域。其原理是:

就传感器模式而言:

机器人不会信任任何一次读数,而是在等待稳定且重复的读数后,才确认一个区域。

由于传感器读数中的微小误差可能导致区域检测错误,因此该逻辑经过了多次迭代优化。要求重复读取数据使系统更加可靠。

17. 添加雨效果

一旦运动和区域检测功能正常运行后,我便将雨传感器逻辑连接到机器人的行为控制中。

机器人只有在以下情况下才应移动到安全位置:

雨的逻辑是:

这是项目中最重要的部分之一,因为降雨安全由Nano本地处理。仪表盘虽然有用,但机器人无需等待仪表盘判断降雨不安全。

18. 添加MQTT通信

机器人本地运行后,我添加了MQTT通信。

添加了MQTT协议,以便机器人能够远程发送遥测数据并接收指令。Nano将传感器和状态信息发布到公共的MQTT消息代理,而树莓派后端则订阅这些信息。

MQTT 代理是:

主题包括:

Nano 以 JSON JSON 格式发布遥测数据:

这使得仪表板能够显示机器人的当前状态、降雨情况、光照读数、线路图案以及最新事件。

19. 接收MQTT命令

机器人还可以从仪表盘接收MQTT指令。

支持的命令如下:

命令处理器接收纯文本命令或JSON命令。

例如,当接收到 MOVE_TO_SAFE 信号时,机器人会检查自己是否已处于运动关键状态。如果尚未处于该状态,则开始向安全区域移动。

这使得机器人可以从仪表盘进行控制,同时将主要的安全性和运动逻辑保留在Nano上。

20.添加树莓派仪表板

最后一步是添加树莓派仪表板。

仪表盘是在机器人开始运行后添加的,其目的是使系统更易于监控和控制。

仪表盘显示:

•机器人状态;

•目标区域;

•最新活动;

•线传感器图案;

•雨量传感器读数;

•雨情状态;

•左右关节活动度读数;

•MQTTTT 状态;

•洗衣主动模式;

•最近的日志和事件。

它还提供了按钮,用于向机器人发送手动指令,例如移动到安全区域、返回干燥区域、停止机器人运行,以及启用或禁用洗衣主动模式。

树莓派并未取代机器人的本地逻辑。Nano 仍然负责处理雨天响应、线条追踪、区域检测、运动控制以及传感器决策。仪表板主要用于监控、日志记录和远程控制。

21. 将后端迁移到树莓派

在确认 Flask 仪表板在本地运行正常后,我将后端迁移到了树莓派。

仪表板的第一个版本是在笔记本电脑与后端服务器和Nano处于同一本地网络时进行测试的。这帮助我确认了仪表板能够发送命令,且Nano能正确响应。一旦实现这一功能,我就希望后端能够独立运行,不再依赖我的笔记本电脑。

该项目使用了树莓派作为小型常驻服务器。我将Flask后端复制到树莓派上,安装了所需的Python依赖,并从那里运行了仪表板。

树莓派后端负责以下工作:

•运行 Flask Flask 界面;

•接收来自机器人的遥测数据;

•显示机器人状态和传感器数值;

•发送手动命令;

•记录事件和状态;

•无需使用笔记本电脑运行后端,即可保持仪表盘可用。

•这使得树莓派成为最终系统的主后端和监控点。

22. 最终演示与结果

最终的机器人成功演示了智能晾衣架概念的主要功能。当启用洗衣模式时,机器人可留在烘干区域,监测雨量传感器,并比较两个BH1750传感器的光照读数,通过MQTT实时将状态信息发送至树莓派仪表板。一旦检测到并确认降雨,Arduino Nano 33物联网模块会本地处理安全响应。机器人会沿线路追踪,识别正确的区域标记,从烘干区自动移动至安全区,无需依赖仪表板做出决策。仪表板仍可用于监控机器人的状态、查看传感器读数,并发送手动指令,例如移动至安全区、返回烘干区、停止机器人运行或开启/关闭洗衣模式。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

按它、戳它,或让它在你的桌面上轻轻发光。Moody Mush 通过光、声和运动来表达不同的情绪。这是一款互动蘑菇机器人,设计上注重对初学者友好,同时力求呈现出富有表现力又可爱的视觉效果。

关键字: 机器人 IR 遥控器 伺服电机

不久前,在我的一个项目中,我向大家展示过如何将一台黑白的老式迷你电视改造成复古时钟。这次,我将介绍另一个项目,你可以用旧电视制作出精美的视频效果——即全屏立体声VU电平表。

关键字: Arduino Nano 微控制器 1N4001 二极管

根据Hexagon全球“机器人一代”研究,最大的分歧出现在照护领域:68%的成年人希望机器人承担重物搬运工作,但只有12%的人会选择机器人来提供照护服务。 机器人应用并非普遍接受,而是具有条件性的:约半数成年人...

关键字: 机器人 GO BSP WORLD

PS5手柄通过蓝牙连接到树莓派5。树莓派使用Python读取摇杆和按钮的数值,然后通过USB串行通信将简单的命令数字发送给Arduino Nano。Arduino Nano接收到这些命令后,会控制机械臂上的相应舵机运动。

关键字: 机械臂 树莓派 Arduino Nano

该项目将计算机视觉与机器人技术集成于一块电路板上。摄像头捕捉视频,轻量级的人脸检测模型(由Edge Impulse提供支持)定位人脸,比例控制器则将该位置转换为差分轮子指令,整个过程每秒约10至15帧。

关键字: 机器人 机器学习 Arduino UNO Q

上海2026年6月15日 /美通社/ -- 近日,全球领先的人工智能(AI)+机器人药物与新材料研发平台晶泰科技(2228.HK)宣布,其与中石化(上海)石油化工研究院有限公...

关键字: AI 智能化 泰科 机器人

上海2026年6月12日 /美通社/ -- 近日,工信部、国资委启动2026年度人形机器人与具身智能实景实训专项行动正式开启,聚焦工业、服务、特种等领域的多个重点场景,部署打造实景实训空间、组建创新应用联合体、攻关实用化...

关键字: 机器人 模型 高精度 麒麟

【2026年6月12日,德国慕尼黑讯】全球功率系统和物联网领域的半导体领导者英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)在其成熟的XENSIV™磁传感器产品组合基础上,推出了隧道磁阻(TMR)...

关键字: 磁传感器 人机交互 机器人

香港2026年6月12日 /美通社/ -- "2026彭博香港投资大会"开幕后,易方达香港首席投资官(国际权益)李剑锋(Jeff Li)先生发表了主题演讲...

关键字: 机器人 电动汽车 AI NEC

我们为我的工程预备二年级老师陈老师创建了这个项目。我们的想法不仅仅是制作一个枯燥的监控摄像头,而是希望利用自己的技能和资源,打造出一个看似有生命且能主动反应的眼睛。除了陈老师课堂上的成绩外,最激励我们的是证明自己是优秀的...

关键字: LCD屏幕 机器人 超声波测距仪
关闭