查看: 86096|回复: 88

人工智能之五子棋机器人——人机对弈

  [复制链接]

该用户从未签到

发表于 2012-5-30 00:41 | 显示全部楼层 |阅读模式
废话不多说,先上视频:


该用户从未签到

 楼主| 发表于 2012-6-2 02:03 | 显示全部楼层
CY57 发表于 2012-6-1 22:21
啊,我電子小白啊,加二極管怎麼檢測多個按鍵呢,不太懂

能够识别组合按键的矩阵键盘的解析
http://arduino.cn/forum.php?mod= ... 122&fromuid=509
看这个帖子。。。

可以说专门为你写了。。汗。。。
从你回复帖子编辑到现在。。。洗洗睡了。。。
要给好评哦亲~~~

该用户从未签到

发表于 2012-5-30 09:21 | 显示全部楼层
这个觉得是重磅奉献,见识了!

该用户从未签到

 楼主| 发表于 2012-5-30 01:16 | 显示全部楼层
单片机主控
主控板由一块STC51单片机组成
两组IO负责8X8棋盘上的棋子扫描
一组IO负责控制电机的正转,停止,反转
一组IO接受回馈控制(限位,转速脉冲)
为了留出通信接口,使用了一块三八译码器留出了串口通信。

image023.jpg


电机驱动部分
主控板的工作电压为5V,而电机需要9V的电压才能提供足够的动力。
且单片机的输出电流不足以带动电机
我们采用了L298N模块来驱动电机

image025.jpg

该用户从未签到

 楼主| 发表于 2012-5-30 01:12 | 显示全部楼层
机械臂的回馈控制部分
在机械臂上共设有五个开关作为单片机的回馈控制
有两个开关为纵向以及横向的脉冲回馈开关,使得机械臂能把棋子准确的下在棋盘上
有三个开关分别为机械手臂的纵向行程,横向行程和夹手的极限位置限制开关


image017.jpg

image035.jpg
绿色圈内是限位开关,天蓝色圈内是速度回馈开关

该用户从未签到

 楼主| 发表于 2012-5-30 01:03 | 显示全部楼层
硬件总体设计:
五子棋对弈机器人主要包含由机械部分和电气控制部分组成。
机械部分全部用慧鱼创意组件搭建而成
机械部分有:
1)底盘模块
2)棋子输送模块
3)机械臂模块
电气部分有:
1)棋盘棋子识别
251单片机主控
3)电机驱动模块
4)机械臂反馈模块

image002.jpg

该用户从未签到

 楼主| 发表于 2012-5-30 01:04 | 显示全部楼层
底盘部分与棋子输送装置
底盘上的履带条为机械手臂行走时提供定位
同时支撑着电气部分的棋子识别装置
在后部是棋子输送装置。将棋子送至指定位置以提供机械臂夹取

image004.jpg

该用户从未签到

 楼主| 发表于 2012-5-30 01:05 | 显示全部楼层
棋子输送模块
电机启动后,带动履带,使棋子仓抖动起来,棋子匀速下滑。
当棋子运动到履带上后,触碰挡板,单片机控制电机延时一段距离,将棋子运送到指定位置停止,供机械臂夹取。
当机械臂取走棋子后重复以上过程。



image006.jpg
托盘

image008.jpg
挡板


该用户从未签到

 楼主| 发表于 2012-5-30 01:09 | 显示全部楼层
机械臂的行走部分
机械臂上共装有三组电机
第一组为两个减速电机,驱动齿轮咬合底盘上的履带,带动机械手臂在纵向上行走
第二组为一个电机直接带动蜗杆,驱动机械手臂上的夹手在横向上移动
第三组为减速电机,驱动夹手的夹取和释放棋子的动作


机械臂夹手电机

机械臂夹手电机

夹手电机

螺杆

螺杆

螺杆行程以及电机

行走履带电机

行走履带电机

履带行程以及电机

螺杆驱动电机

螺杆驱动电机

螺杆电机细节


该用户从未签到

 楼主| 发表于 2012-5-30 01:13 | 显示全部楼层
本帖最后由 珜羽 于 2012-6-2 02:02 编辑

棋盘棋子部分

出于成本的控制需求,棋子的位置识别参考了矩阵键盘
棋子的底部为金属,能够导电。落在棋格上的两个焊盘上,将其导通,相当于按键按下
为了能够识别多个按键,添加了多个二极管


image019.gif

image021.jpg


具体的原理见这个帖子:能够识别组合按键的矩阵键盘的解析

该用户从未签到

 楼主| 发表于 2012-5-30 01:17 | 显示全部楼层
程序流程
每个流程图的过程都是由子程序构成,使用C语言编写,虽然与汇编相比降低了一点运行效率,但是能加快软件开发过程,也使整个软件的可读性增强了。便于后期的升级维护。


image027.gif

智能核心算法简介
(空白,具体内容为我自己口述的,要打出来好麻烦,直接看答辩视频吧)

image029.jpg

该用户从未签到

 楼主| 发表于 2012-5-30 01:18 | 显示全部楼层
模块化设计
整个系统的设计都遵循模块化设计,尽力降低了模块之间的耦合度,为整个系统的扩容升级留下余地
增大底盘面积,延长机械臂,并加强强度即可支持更大面积的棋类游戏,例如围棋。如果在机械臂夹臂上加上上下电机,即可支持大富翁,象棋,国际象棋,斗兽棋,飞行棋等等。。。
程序上的模块化,使之只要改写AI模块,即可实现其他落棋游戏。
扩展方案
主控板上留出了串行通信口,加上透传的GPRS模块(或者透传的WIFI模块),改动智能子程序为数据传输接受子程序,那么两个朋友相聚千里也能一起下棋了。



image031.gif
GSM模块

image033.gif
WIFI模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

【Arduino】108种传感器模块系列实验(52)---Micro SD卡读写模块
【Arduino】108种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
DIY炫彩灯带,竟如此简单,更有硬件开发工具免费领!
DIY炫彩灯带,竟如此简单
什么是涂鸦Arduino SDK? Arduino 是全球最流行的开源硬件平台,涂鸦官方推出的 Ardui
步进电机播放音乐
步进电机播放音乐
硬件:使用arduino uno板子与步进电机驱动器TB6600实物图 因为我这里用的是方波,才
esp32控制ws2812灯条会有闪烁
esp32控制ws2812灯条会有
把亮度调为0后第一个灯会一直亮其余一些会闪烁,把亮度调高以后就不会闪烁。之前用esp
想在原有的项目上加上一个呼吸灯怎么做才不影响原程序
想在原有的项目上加上一个
如题,想在原来的程序上加上一个呼吸灯,但是程序中的delay会影响到程序的其他部分,
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表