首页-达尔闻    全部    【项目分享】 STM32+树莓派实现6s解魔方机器人

【项目分享】 STM32+树莓派实现6s解魔方机器人

给你个魔方,最快多久可以恢复? 我们这有台机器人,最快6s可以复原,有没有人敢来PK的?
收藏
  • 给你个魔方,最快多久可以恢复? 我们这有台机器人,最快6s可以复原,有没有人敢来PK的?


    视频中的解魔方机器人出自达粉工控小弟之手,耗时4个月,全部费用约2500元,所以各位摩拳擦掌想一试的兄弟们要考虑下自己的财力哟。

    ◆ 解魔方机器人看着挺复杂的,其实功能非常清晰明了:
    整体系统由上位机与下位机构成,上位机的功能是:采用 Raspberry Pi4 作为主控制器,使用 OV5647 摄像头模组作为图像采集与识别的设备;
    下位机采用 STM32 系列的单片机作为主控制器,使用六台步进电机作为执行机构。

    智能解魔方机器人的工作流程:Raspberry Pi4 调用 OV5647 摄像头模组对魔方六面的色块信息进行采集,将采集到的图像进行边缘分割及二值化,通过颜色阈值对比,得到相对应颜色值,生成色彩信息字符串。色彩信息字符串传入 Kociemba 算法,通过 Kociemba 算法解算出魔方还原指令,将还原指令通过 HC05 蓝牙模组发送至下位机,下位机解析魔方还原指令后执行相应的动作,实现魔方还原。 

    ◆ 接下来看看解魔方机器人的硬件组成:
    上位机:
    单板计算机采用 Raspberry Pi4;
    图像采集设备采用 OV5647 摄像头模组;
    辅助处理器采用 STM32F103C8T6;
    补光灯组件采用四周环绕型补光灯组件;
    拍照平台转动机构采用数字舵机;
    上位机状态显示采用 0.96 寸的 OLED 显示屏;
    按键控制采用五向导航按键组;
    上位机电源变换中,电源输入为 DC 12V 电压,DC 6V 电源使用 XL4005 降压芯片获得,DC 5V 电源使用 XL4005 降压芯片获得,DC 3.3V 使用 AMS1117-3V3 降压芯片获得。

    下位机:
    处理器采用 STM32F103RCT6;

    下位机与上位机的通信方案采用 HC-05 蓝牙模组进行无线通信;
    执行机构采用 42 步进电机,共6个;
    驱动器采用东芝 TB67S109AFTG 步进电机驱动器;
    下位机电源变换中,电源输入为 DC 12V-DC 24V 的宽电压,DC 12V 电源使用 XL4005降压芯片获得,DC 5V电源使用XL4015降压芯片获得,DC 3.3V使用AMS11173V3 降压芯片获得。

    ◆ 有了硬件后就开干,主要硬件设计内容 

    智能解魔方机器人的设计内容还是围绕上位机设计与下位机设计,确保他们都可以完成各自的工作。
    在上位机的设计中,难点在于:图像采集及图像处理、解魔方算法设计、魔方还原指令的生成。

    单板计算机主要负责图像处理、解魔方算法的运行、上位机主程序运行。图像采集设备主要负责采集魔方的六面的色块信息。上位机辅助处理器主要功能为协助上位机做拍照平台控制、补光灯亮度调节、驱动上位机状态显示器件。补光灯主要负责提供合适的光源,辅助图像采集设备准确无误的采集魔方六面色块。上位机电源系统主要为单板计算机、补光灯等部分提供额定电源,保证上位机各部分供电正常。拍照平台作为辅助图像采集设备使用。上位机状态显示主要负责提示拍照顺序、显示当前补光灯的亮度等级、显示当前拍照的魔方面的序号。按键主要功能为控制补光灯的亮度与控制拍照平台的转动。

     而下位机相对简单些,需要魔方还原指令的解析,还需要顺滑的硬件电气连接,机械结构的设计应考虑稳定性、准确性、灵活性,确保在执行机构动作时,不会产生超量的机械误差。在还原指令无误的情况下,提高下位机的设计品质,可大幅度提高还原速度与还原准确性。  

    ◆ 解魔方算法才是重头戏
    解魔方算法是智能解魔方机器人的“灵魂” , 一套高效的解魔方算法可以大幅度提高智能解魔方机器人还原魔方的速度。 这里采用的是直接调用 Kociemba 算法库。在 Python3 中,官方提供了一个 Kociemba 算法库,可以直接调用,使用非常方便。更详细的Kciemba 算法库的配置方法在开源的文档中有介绍,可以在“达尔闻说”微信回复:解魔方机器人,获取。

    图像处理流程


    除了解魔方算法,上位机其他软件功能也非常重要的:图像采集、图像处理、解魔方算法运行、串口发送四大功能,图像采集需要配置摄像头的驱动,图像处理需要配置好 OpenCV 的环境,解魔方算法的运行需要配置支持环境,串口功能需要配置相应的波特率、奇偶检验位、数据位等参数。

    上位机主程序流程图

    下位机的软件流程就非常的简单,主控芯片是STM32,自然下位机的软件设计语言采用 C语言。使用官方提供的标准库开发,移植性高且开发周期更快。
    在STM32正常供电后,片上系统开始初始化,完成内核及外设的复位。调入系统初始化函数,按照初始化函数的基本配置,对 GPIO、USMART、PWM、定时器、中断等外设进行初始化配置。配置完成后,系统开始对外部中断进行监听,当外部中断发生后, 进入外部中断服务程序。外部中断服务程序中,打开串口中断,使能步进电机驱动器的 EN 端口。此时,系统开始监听串口中断,当串口接收中断发生后,程序进入串口中断 服务程序。对接收到的魔方还原指令进行解析,驱动相应的步进电机转动。 

    整个系统调试主要对机器人的魔方还原算法、颜色识别这两项做重点的调试,通过多次随机打乱还原测试,Kociemba 魔方还原算法都能够正常进行还原。
    工控小弟分享了上面提到的上位机和下位机的原理设计图,以及魔方机器人的制作说明文档,给愿意做的小伙伴一些参考,在“达尔闻说”微信回复:解魔方机器人,获取。另外,如果你想和工控小弟交流,可以加入达尔闻交流群,添加妮姐微信(459888529),备注技术交流即可入群。
    做这个项目正是疫情期间,工控小弟在自己家中临时搭建了简陋的工作台完成了这个机器人。妮姐想说,只要你愿意做,就会有100种方法可以成功,加油吧!

Control Render Error!ControlType:productSlideBind,StyleName:Style1,ColorName:Item0,Message:InitError, ControlType:productSlideBind Error:未将对象引用设置到对象的实例。