Arduino 王子彦 - SUSTC-XLAB/iFood GitHub Wiki
Arduino在厨房机器人项目中的通信
1.背景 自动化,即机器设备或系统在无人或是少有人的参与下可以操控信息、处理控制达到认为目标的过程,毋庸置疑将是未来不可或缺的方向。自动化在解放劳动力和提高生产效率的同时,其对于目标检测、信息处理、逻辑判断等能力要求很高,故而一个完备的自动化系统从设计到实现是相当困难的。 厨房机器人作为一个火热方向,在2017年是英国一公司便设计出了名为Moley Robotics的厨房机器人系统 [1]。相似的,本项目拟完成一个厨房机器人机电系统,旨在帮助人们做出可口的饭菜并节省时间。其预期效果为:当人们在界面上的备选菜单中选中自己想吃的饭菜时,该系统会正确识别并通过机械手臂进行拿取食材然后蒸煮的操作,当饭菜做好后,通知用户完成一次工作。目前设计该厨房机器人系统包含:树莓派、Arduino、机械臂、执行器、图像识别等模块。 厨房机器人项目模块众多,其中各部分联系紧密,而Arduino作为串口通信和控制单元的良好选择,在如此庞大的系统中作用不可小觑。在该项目中,Arduino负责对串口I/O进行处理,处理从树莓派端发送的信息。而后将获得的信息处理为对应的逻辑操作命令,以此对步进电机进行直接操作。
2.关键词 Arduino、串口通信、I/O
3.示意图
Arduino在该厨房机器人项目中的工作示意图如下所示,
上图可见,Arduino在配合Ramps 1.4的情况下需要一个12V的电源进行供电,普通的USB供电已无法满足需求。而后,Arduino与树莓派I/O口成功连接下,接收树莓派发送的信息。接收串口消息后,Arduino将其解析为控制代码以控制步进电机。最后,Arduino向树莓派返回进程信息。示意图为Arduino在该项目中的作用模块。
-
原理 Arduino实现在自动化系统中的通信并不复杂,借鉴其他项目论文 [2],现将本项目的原理总结如下: (1) 树莓派将每一道菜式的流程以(x, y, z)的形式发送给Arduino,即:x轴电机的移动距离, y轴电机的移动距离,z轴电机的移动距离; (2) Arduino接收到树莓派发送的信息后,配合3D打印机的Marlin固件,对步进电机发送对应的指令,每执行完一个过程,反馈给树莓派指令执行成功的信息; (3) 具体难点是如何不借助PC端的打印机控制软件来给步进电机发送正确的指令。
-
主要元件 (1) Arduino Mega2560 (2) Ramps1.4 (3) 步进电机(中途测试用) (4) 液晶显示屏(中途测试用) (5) 12V电源
-
负责工作 (1) 在Arduino与树莓派连接成功的状态下,树莓派向Arduino发送指令信息。Arduino通过串口接收树莓派发送的信息; (2) 在Arduino中当Serial.available()方法正确时,通过Serial.read()方法获取树莓派发送的指令信息的内容; (3) 解析树莓派发送的指令信息,并将其装换成控制代码; (4) 通过Serial.println()方法向树莓派反馈做菜进度的信息
-
参考文献 【1】 智能世界.Moley Robotics机器人厨房[J].五金科技,2015,(3):83-83. 【2】 吴波涛,孔金平,王湘.基于Arduino和树莓派的智能小车的设计与实现[J].电子设计工程,2017,(15):58-61. DOI:10.3969/j.issn.1674-6236.2017.15.015