1.本技术涉及智能棋盘技术领域,特别是涉及一种电子围棋棋盘及其数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
背景技术:2.围棋是一种策略型两人棋类游戏,使用矩形格状棋盘及黑白二色圆形棋子进行对弈。传统围棋比赛的时间、棋谱的记录还是人工手动记录,十分繁琐。
3.智能仿真围棋棋盘的市场前景广阔,目前产品研发和市场开拓还处于起步阶段,目前主要通过图像识别方法来进行棋盘识别,也可以通过电子传感器进行棋盘检测。
4.但是目前的棋盘识别方案需要进行复杂的棋盘数据处理,其识别处理步骤繁琐,无法实现高效的棋盘数据处理。
技术实现要素:5.基于此,有必要针对上述技术问题,提供一种数据处理效率高的电子围棋棋盘系统以及一种高效的电子围棋棋盘数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
6.第一方面,本技术还提供了一种电子围棋棋盘系统,包括主控模块、行列地址选通模块以及传感器阵列。主控模块分别与行列地址选通模块以及传感器阵列连接;主控模块通过行列地址选通模块侦测落子位置,激活传感器阵列中与落子位置对应的传感器;传感器阵列中激活的传感器感应电压信号变化,发送电压变化数据至主控模块;主控模块根据电压变化数据确定棋子颜色。整个方案中,电子围棋棋盘的主控模块首先通过行列地址选通模块来侦测落子位置,当确定落子位置后,激活落子位置对应的传感器组件,进而通过落子位置传感器组件的电压变化来判断棋子颜色,传感器组件在未激活时可以处于休眠状态,在激活后进入工作状态,可以提高传感器寿命,通过主控模块与行列地址选通模块、传感器阵列的高效数据传输,实现高效的棋盘数据处理。
7.第二方面,本技术提供了一种电子围棋棋盘数据处理方法。该方法包括:
8.获取电子围棋棋盘的矩阵扫描结果;
9.根据矩阵扫描结果,确定落子位置;
10.激活落子位置对应的传感器组件;
11.接收传感器组件反馈的电压数据;
12.根据电压数据,确定棋子颜色。
13.在其中一个实施例中,获取电子围棋棋盘的矩阵扫描结果之前,还包括:上电启动,对电子围棋棋盘进行全盘扫描,获取电子围棋棋盘的无子电压;推送白子放置提示,侦测电子围棋棋盘电压的变化,获取白子放置后的电压值,根据无子电压以及白子放置后的电压值的差值,确定电子围棋棋盘的白子电压;推送黑子放置提示,侦测电子围棋棋盘电压的变化,获取黑子放置后的电压值,根据无子电压以及黑子放置后的电压值的差值,确定电
子围棋棋盘的黑子电压。
14.在其中一个实施例中,根据电压数据,确定棋子颜色包括:将电压数据与白子电压以及黑子电压进行比较;若电压数据与白子电压相同,则判定棋子颜色为白子;若电压数据与黑子电压相同,则判定棋子颜色为黑子。
15.在其中一个实施例中,电子围棋棋盘设置有行通断电路和列通断电路;获取电子围棋棋盘的矩阵扫描结果包括:获取电子围棋棋盘的行通断电路扫描结果和列通断电路扫描结果;根据矩阵扫描结果,确定落子位置包括:根据行扫描结果和列扫描结果中的通断电路交集,确定落子位置。
16.在其中一个实施例中,接收传感器组件反馈的电压数据包括:接收传感器组件反馈的多次初始电压数据;对多次初始电压数据进行中位值平均滤波,得到电压数据。
17.在其中一个实施例中,还包括:获取每局棋局的落子位置以及棋子颜色;根据棋局的落子位置以及棋子颜色,生成棋局复盘数据。
18.第三方面,本技术还提供了一种电子围棋棋盘数据处理装置。该装置包括:
19.获取模块,用于获取电子围棋棋盘的矩阵扫描结果;
20.位置确定模块,用于根据矩阵扫描结果,确定落子位置;
21.激活模块,用于激活落子位置对应的传感器组件;
22.接收模块,用于接收传感器组件反馈的电压数据;
23.颜色确定模块,用于根据电压数据,确定棋子颜色。
24.第四方面,本技术还提供了一种计算机设备。该计算机设备包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现以下步骤:
25.获取电子围棋棋盘的矩阵扫描结果;
26.根据矩阵扫描结果,确定落子位置;
27.激活落子位置对应的传感器组件;
28.接收传感器组件反馈的电压数据;
29.根据电压数据,确定棋子颜色。
30.第五方面,本技术还提供了一种计算机可读存储介质。该计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下步骤:
31.获取电子围棋棋盘的矩阵扫描结果;
32.根据矩阵扫描结果,确定落子位置;
33.激活落子位置对应的传感器组件;
34.接收传感器组件反馈的电压数据;
35.根据电压数据,确定棋子颜色。
36.第六方面,本技术还提供了一种计算机程序产品。该计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
37.获取电子围棋棋盘的矩阵扫描结果;
38.根据矩阵扫描结果,确定落子位置;
39.激活落子位置对应的传感器组件;
40.接收传感器组件反馈的电压数据;
41.根据电压数据,确定棋子颜色。
42.上述电子围棋棋盘及其数据处理方法、装置、计算机设备、存储介质和计算机程序产品,获取电子围棋棋盘的矩阵扫描结果;根据矩阵扫描结果,确定落子位置;激活落子位置对应的传感器组件;接收传感器组件反馈的电压数据;根据电压数据,确定棋子颜色。整个方案通过对电子围棋棋盘进行矩阵扫描,得到落子位置,然后激活落子位置对应的传感器组件,传感器组件在未激活时则处于休眠状态,可以提高传感器寿命,并对落子位置进行电压采集,根据电压来判断棋子颜色,进而实现高效的棋盘数据处理。
附图说明
43.图1为一个实施例中电子围棋棋盘数据处理方法的应用环境图;
44.图2为一个实施例中电子围棋棋盘的原理图;
45.图3为一个实施例中行列地址选通器的内部电路示意图;
46.图4为一个实施例中主控模块的电路示意图;
47.图5为一个实施例中电子围棋棋盘的电路示意图;
48.图6为一个实施例中功能按键和复位按键的原理图;
49.图7为一个实施例中降压模块的原理图;
50.图8为一个实施例中电子围棋棋盘数据处理方法的流程示意图;
51.图9为一个实施例中电子围棋棋盘数据处理装置的结构框图;
52.图10为一个实施例中计算机设备的内部结构图。
具体实施方式
53.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
54.本技术实施例提供的电子围棋棋盘数据处理方法,可以应用于如图1所示的应用环境中。其中,电子围棋棋盘102通过网络与终端104进行通信。电子围棋棋盘获取电子围棋棋盘的矩阵扫描结果;根据矩阵扫描结果,确定落子位置;激活落子位置对应的传感器组件;接收传感器组件反馈的电压数据;根据电压数据,确定棋子颜色,并将落子位置和棋子颜色推送至终端进行保存并显示。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
55.在一个实施例中,如图2所示,提供了一种电子围棋棋盘,包括主控模块 202、行列地址选通模块204以及传感器阵列206。主控模块分别与行列地址选通模块以及传感器阵列连接;主控模块通过行列地址选通模块侦测落子位置,激活传感器阵列中与落子位置对应的传感器;传感器阵列中激活的传感器感应电压信号变化,发送电压变化数据至主控模块;主控模块根据电压变化数据确定棋子颜色。
56.其中,主控模块是电子围棋棋盘的核心控制部分,可通过单片机来实现,本技术以主控模块用stm32单片机为例来解释说明,其他单片机实现原理类似,本实施例在此不再赘述。
57.主控模块需要进行大量数据的采集和处理以及多路开关控制,通过综合分析本实施例选择stm32f407vet6开发板作为主控。
58.stm32f407vet6是cortexm4类型微控制器处理芯片,其主要信息如下:最大工作频率:168mhz;工作电压:1.8至3.6v;工作温度范围:
–
40至+85℃;内存空间:高达1mb;sram:高达192kb;备用ram:高达4kb;引脚数目:100个;adc数量:3个,总共19个转换通道,最大精度可达12位;4个通用异步串口(usart);共14个16位定时器/计数器。
59.行列地址选通模块主要对电子棋盘的行地址和列地址的连通情况进行判断。可以采用cd4051作为行列地址选择。cd4051是一个单端8通道多路选通器,它有a、b、c三个通道选择输入端和一个禁止输入端inh。a、b、c三个端接入单片机控制管脚,通过高低电平来模拟三位2进制信号控制cd4051的通道选择。inh用来对cd4051输出通道的锁定,当inh为高电平时,cd4051所有端口均不导通,当inh为低电平时,cd4051选择端口导通。cd4051是双向开关,可以让模拟量输入或输出。cd4051示例图如图3所示。
60.传感器阵列可以采用光敏电阻传感器阵列、光电三级管传感器阵列或者光电对管传感器阵列中任意一种来实现。光敏电阻传感器阵列采用9*9路光敏电阻作为电子围棋棋盘上的每一个落子点,利用光敏电阻对光不同的光照强度而改变电阻的阻值的特性通过单片机检测每个光敏电阻串联分压电阻的电压来判断各个点的棋子状态信息。光电三级管传感器阵列采用9*9路光敏三极管作为电子围棋棋盘上的每一个落子点,通过光电三极管对光不同的光照强度改变输出的电流值再通过单片机检测每个三极管的并联电阻上的电压来判断各个点的棋子状态信息。光电对管传感器阵列采用9*9路光电对管作为电子围棋棋盘上的每一个落子点,通过光电对管对不同颜色的棋子所反射光照强度的改变输出的电压值再通过单片机检测每个光电对管的电压来判断各个点的棋子状态信息。
61.本实施例从体积、采集方式、价格以及稳定性等方面对三种传感器阵列进行对比,得到的比较结果如表1所示:
62.表1三种传感器阵列方案对比
63.对比方式光敏电阻方案光电三极管方案光电对管方案体积小小大采集方式电压电流电压价格低较高高稳定性较好较好一般
64.由此可见光敏电阻相对于光电三极管和光电对管有着较好的优势,它体积最小,价格也是最便宜,且可以直接进行电压采集,相比于光电对管稳定性更好,所以本技术以使用光敏电阻传感器阵列作为电子围棋棋盘的采集模块进行解释说明。
65.电子围棋棋盘还可以包括显示模块208,显示模块可以采用0.96寸的oled 对棋盘信息进行显示,oled能自发光,有对比度高、厚度薄、视角广、构造及制程简单等特点。采用有机材料图层和玻璃基板制成,当有电流通过时,有机材料就会发光。可以显示ascii字符集,还可以通过软件生成所需要的点阵信息来显示所需要的汉字。该模块分辨率为128*64,能满足棋盘所需要的信息显示功能。采用7针spi接口方式,由stm32主控发送信息至oled屏幕上进行显示。其主要功能用来引导用户进行设置,并且包含倒计时功能提醒用户下棋时需要把握好时间。
66.电子围棋棋盘还可以包括通信模块,用于将下棋过程中的数据传输至终端进行保存,以使用户对棋局进行复盘,还可以在终端显示界面进行显示。本实施例可以采用esp8266(nodemcu)通讯模块。nodemcu是集成了下载电路、线性稳压电路和esp-12e模块的一类微型开发板得益于其微小及完整的电路,可以作为单独的协处理器帮助单片机完成通信和数据处理,在设计中可以便利地直接连接电脑下载程序和与系统完美兼容。更重要的是nodemcu经过大量工程师对其应用的开发,与原先使用linux系统下的开发相比,现在已经转为使用 arduino中更为集成和便利的库进行开发,提高了便利性。
67.esp8266在本实施例中最主要的作用是作为stm32的通讯转接的协处理,在stm32对棋盘进行数模转换和列出棋盘矩阵后利用串口通讯传输棋盘矩阵至esp8266,然后将其使用tcp协议将数据传输至终端,每下一步棋循环操作。
68.电子围棋棋盘可采用电源供电,电源部分可以由一块12v可充电式锂电池以及一个220v可调直流电源组成。选用lm2596 dc-dc直流可调降压模块来对电源进行降压。其中电源可以使用12v可充电式锂电池来供电,也可以使用 220v可调直流电源接家里的220v交流电,既满足了可便携的功能又满足了用户在家里直接插电使用。
69.电子围棋棋盘的stm32主控通过输出不同的高低电平控制cd4051的不同通道,进而控制传感器矩阵每个点位的行和列的电路通断,当该点位的行和列电路导通时,此时该点位光敏电阻电路导通,再用stm32的adc采集分压电阻的电压。每下一个子时,该点位的电压就会改变,通过变化的电压差来判断棋子的状态。图4为棋盘矩阵原理图。
70.stm32的adc最大精度达到16位,可以选择16个转换通道,本次设计主要使用的是adc1的3和4通道,采样时间为56个周期,保障了棋盘每个点位状态电压的采集。
71.其他电路组成包含oled显示屏、esp8266wifi模块、按键以及两个直流可调降压模块。将oled、esp8266、按键连接到stm32主控上即可进行总体控制。其他模块原理图与连线如图5所示。
72.显示模块的oled使用的是spi接口,其中d0脚为spi通信的时钟管脚, d1脚为spi通信的数据管脚,res脚用来复位(低电平复位),dc脚为数据和命令控制管脚,cs脚为片选管脚。该模块可以对图片、字符、汉字取模,通过pctolcd2002软件进行模式配置,将图片、字符或者汉字导入,确定好输出字符的大小后输出16进制的点阵数组,将数组导入字符库之后即可进行显示。
73.电子围棋棋盘还可以包括通信模块210,通信模块用于与终端104进行通信。通信模块采用的是esp8266(nodemcu)模块,nodemcu是一款开源的物联网开发平台,上面集成了esp8266wifi芯片,其固件和开发板均开源。本实施例中通信模块作为中转模块使用,将esp8266的tx端口接到stm32主控的 rx接口,将esp8266的rx端口接到stm32主控的tx端口,连接好后即可传输数据。先将esp8266配置为tcp client,连接有网络的wifi后,stm32主控将棋盘数据通过usart串口发送给esp8266,esp8266的usart串口接收到数据后再通过http协议发送get请求,最后将数据发送至服务器上。
74.电子围棋棋盘上还可以设置功能按键,key0、key1、wk_up和复位按键。按键key0用来实现棋盘初始化功能,按键key1用来实现采集判断标志功能,按键wk_up用来实现结束对局功能,复位按键用来实现棋盘复位功能。其中 key0、key1采用的是低电平触发,wk_up采用的是高电平触发。图6为功能按键和复位按键原理图。
75.降压模块采用lm2596稳压电源模块,可输入电压范围为3.2~40v,输出电压范围为1.2~35v,限最大输出电流为3a,其中输入电压必须高于输出电压 1.5v以上。本实施例采用该模块来对电源进行降压,共使用两块降压模块,一块将12v左右电源降压到3.3v给棋盘采集电路供电,一块将12v左右电源降压到5v给stm32单片机和wifi模块供电。该模块电路图如图7所示。
76.该电路设计为开关电源,其中c1为电解电容,c2位陶瓷电容,在输入电源波动时,c1可以滤除较大的电压波动作为无源补偿,c2可以抑制输入电源的尖峰脉冲,具有保护电路的意义,rp1和r1构成反馈电路,可以将输出电压反馈回芯片与之构成闭环电路,要注意的是反馈端应该接在最靠近输出端,这样经过输出电容滤波后的直流电压更加精准,且可以适当减少大负载时产生线损导致的电压采样不精确,rp1和r1的选择如公式(1):
[0077][0078]
如图7所示r1选择为1k,输出电压为3.3v,v
fb
在lm2596中设定为1.23v,所以电位器rp1应当旋转为2.3k,输出电压为5v电位器rp1应当旋转为3.1k。
[0079]
具体地,电子围棋棋盘上电后,进行初始化,以使esp8266连接到wifi 进行联网操作,当esp8266成功连接到终端时led灯会常亮,之后根据oled 显示屏的提示进行后面的操作,检测完当前状态下白子的电压差和黑子的电压差后开始对整个棋盘进行扫描,将采集的数据与上一次数据进行对比,如果发现某个点位的电压差较大时进行判断,根据之前保存的检测数据进行对比即可判断出该点位当前状态是黑子还是白子,然后将棋盘数据上传至服务器处理,之后每下一子就重复上述扫描判断过程。
[0080]
进一步地,主控模块上电后,主控模块控制cd4051地址选通器中行选通器以及列选通器的通断来侦测落子位置,当落子位置确定后,主控模块控制落子位置光敏电阻的连通,落子位置的光敏电阻采集落子位置的电压变化,将电压变化发送至主控模块,也可以直接通过主控模块的adc模数转换采集落子位置光敏电阻的电压变化,根据落子之前的电压以及落子之后的电压差来判断棋子颜色。主控模块控制通信模块使用esp8266wifi模块将落子位置以及棋子颜色发送至终端,还可以将每一步的对弈时间发送至终端,终端可根据一局完整棋局中每一步的落子位置以及棋子颜色生成棋局信息,以使用户根据棋局信息进行复盘。
[0081]
主控模块采用freertos进行任务调度。freertos支持灵活的多任务调度策略,占用内存小,可移植、可裁减的嵌入式实时内核,轻型,简单且易于使用。对于stm32单片机来说,在任何时间段实际上只有一个任务被执行,但由于每个任务执行时间极短,才使多任务看起来是同时执行一样。
[0082]
主控模块采用主要用到freerots来进行多任务处理,分别为按键检测任务、 oled显示任务、矩阵扫描任务。通过对多任务调度做到每个任务同时进行并且不会互相干扰,这样能使程序的运行更加流畅,并且不会影响各模块的程序处理。
[0083]
esp8266通过usart串口接收来自stm32主控发送的棋盘信息。通用同步异步收发器(universal synchronous/asynchronous receiver/transmitter,usart)简称串口。最常见的帧格式由1个起始位、8个数据位、1个校验位和 1个停止位组成,帧与帧之间可以有空闲位。先对esp8266进行配置,输入所需连接的wifi名称密码和终端的ip跟端口号。等待
led灯亮代表连接终端成功。esp8266接收数据后按照http协议发送get请求到终端。
[0084]
在棋盘与终端通信的过程中,需要约定两者之间的通信协议,该通信协议的主要构成为:例“1h111111111”,其中“1h”代表行数,“111111111”这9 个数字的顺序分别代表第1至9列,其中“1”为无子状态,“2”为白子状态,“3”为黑子状态。由此棋盘将9行的数据一次性发送给终端进行处理。
[0085]
在一个实施例中,如图8所示,提供了一种电子围棋棋盘数据处理方法,以该方法应用于图1中的电子围棋棋盘为例进行说明,包括以下步骤:
[0086]
步骤802,获取电子围棋棋盘的矩阵扫描结果。
[0087]
其中,矩阵扫描结果指的是电气围棋棋盘中电路的通断情况,通过扫描行列地址选通器的通断情况,得到矩阵扫描结果。
[0088]
具体地,电子围棋棋盘的主控模块通过对行列地址选通器的通断情况进行扫描,得到扫描结果,得到电气围棋棋盘的矩阵扫描结果。
[0089]
步骤804,根据矩阵扫描结果,确定落子位置。
[0090]
具体地,主控模块通过行列地址选通器中连通电路的情况,与上一步中的矩阵扫描结果进行对比,将变化的连通点位作为当前步数中的落子位置。
[0091]
步骤806,激活落子位置对应的传感器组件。
[0092]
具体地,主控模块确定落子位置后,通过输出不同的高低电平控制cd4050 的不同通道,进而控制传感器阵列中落子位置光敏电阻的连通。
[0093]
步骤808,接收传感器组件反馈的电压数据。
[0094]
具体地,当落子位置的光敏电阻被激活后,检测电压数据,将采集到的电压数据发送至主控模块。主控模块接收落子位置的光敏电阻反馈的电压数据。
[0095]
步骤810,根据电压数据,确定棋子颜色。
[0096]
具体地,将落子位置的电压数据与落子位置上一步的电压进行对比,根据两次电压的差值,与存储的黑白棋子的电压值进行对比,将与两次电压的差值与一致的电压值的颜色作为棋子颜色。存储的黑白棋子的电压值是通过采集黑白棋子落子前后光敏电阻的电压值得到的。
[0097]
上述电子围棋棋盘数据处理方法中,电子围棋棋盘的主控模块获取电子围棋棋盘的矩阵扫描结果;根据矩阵扫描结果,确定落子位置;激活落子位置对应的传感器组件;接收传感器组件反馈的电压数据;根据电压数据,确定棋子颜色。整个方案通过对电子围棋棋盘进行矩阵扫描,得到落子位置,然后激活落子位置对应的传感器组件,传感器组件在未激活时则处于休眠状态,可以提高传感器寿命,并对落子位置进行电压采集,根据电压来判断棋子颜色,进而实现高效的棋盘数据处理。
[0098]
在一个可选的实施例中,获取电子围棋棋盘的矩阵扫描结果之前,还包括:上电启动,对电子围棋棋盘进行全盘扫描,获取电子围棋棋盘的无子电压;推送白子放置提示,侦测电子围棋棋盘电压的变化,获取白子放置后的电压值,根据无子电压以及白子放置后的电压值的差值,确定电子围棋棋盘的白子电压;推送黑子放置提示,侦测电子围棋棋盘电压的变化,获取黑子放置后的电压值,根据无子电压以及黑子放置后的电压值的差值,确定电子围棋棋盘的黑子电压。
[0099]
具体地,电子围棋棋盘上电启动后,主控模块控制电气围棋棋盘的行列地址选通
器全部连通,因此传感器阵列全部连通上电,通过传感器阵列采集电子围棋棋盘每个点位的无子电压。接着,主控模块推送白子放置提示,白子放置提示还可以携带放置的点位信息,即提示用户在指定的位置放置白子。之后,主控模块侦听并采集白子放置后的点位的电压变化情况,根据电压变化情况获取白子放置后放置点位的电压值,将白子放置后放置点位的电压值和放置点位的无子电压进行相减,得到电子围棋棋盘的白子电压。
[0100]
同样的,主控模块推送黑子放置提示,黑子放置提示还可以携带黑子放置的点位信息,即提示用户在指定的位置放置黑子。之后,主控模块侦听并采集黑子放置后的点位的电压变化情况,根据电压变化情况获取黑子放置后放置点位的电压值,将黑子放置后放置点位的电压值和放置点位的无子电压进行相减,得到电子围棋棋盘的黑子电压。
[0101]
主要说明的是,本实施例中的传感器阵列中每个光敏电阻采集的电压一致,因此,在任意位置采集的白子电压和黑子电压可以作为后续进行棋子颜色判断的电压。
[0102]
本实施例中,可以在每一次棋局开始前,采集所处环境中光敏电阻在无子状态的电压、放置白子后的电压以及放置黑子后的电压,根据放置白子后的电压和无子状态的电压的差值,得到白子电压,根据放置黑子后的电压和无子状态的电压的差值,得到黑子电压,使得对弈过程中棋子的颜色判断更加准确。
[0103]
本实施例中,还可以是在电子围棋棋盘初始化时,即第一次使用时,采集固定对弈环境中光敏电阻在无子状态的电压、放置白子后的电压以及放置黑子后的电压,根据放置白子后的电压和无子状态的电压的差值,得到白子电压,根据放置黑子后的电压和无子状态的电压的差值,得到黑子电压,使得对弈过程中棋子的颜色判断更加准确。
[0104]
在一个可选的实施例中,根据电压数据,确定棋子颜色包括:将电压数据与白子电压以及黑子电压进行比较;若电压数据与白子电压相同,则判定棋子颜色为白子;若电压数据与黑子电压相同,则判定棋子颜色为黑子。
[0105]
具体地,在实际对弈过程中,主控模块接收传感器阵列反馈的落子后落子位置的电压值,将落子后的电压值与预设电子围棋棋盘的无子电压进行相减,得到落子前后的电压差值,然后,将落子前后的电压差值与预先采集的对弈环境中黑子电压、白子电压进行对比,若落子前后的电压差值与黑子电压相同,则确定棋子为黑子;若落子前后的电压差值与白子电压相同,则确定棋子为白子。
[0106]
本实施例中,可以在整个对弈过程中,当落子位置的传感器组件被激活后,再根据落子后的电压值与当前对弈环境中采集的无子电压进行相减,根据落子后的电压值与无子电压的差值得到落子前后的电压差值,根据落子前后的电压差值以及对弈环境中的白子电压以及黑子电压来确定棋子颜色,得到棋子颜色更加准确,且可以提高传感器阵列中光敏电阻的寿命,进而提高电子围棋棋盘的寿命。
[0107]
在一个可选的实施例中,电子围棋棋盘设置有行通断电路和列通断电路;获取电子围棋棋盘的矩阵扫描结果包括:获取电子围棋棋盘的行通断电路扫描结果和列通断电路扫描结果;根据矩阵扫描结果,确定落子位置包括:根据行扫描结果和列扫描结果中的通断电路交集,确定落子位置。
[0108]
具体地,主控模块采集行列地址选通器中行地址选通器的连通情况以及列地址选通器的连通情况,得到行扫描结果和列扫描结果;将行扫描结果与上一步中采集的行扫描结果进行对比,将有变化的行坐标作为新增的行连通坐标,将列扫描结果与上一步中采集
的列扫描结果进行对比,将有变化的列坐标作为新增的列连通坐标;根据每一步中新增的行连通坐标和新增的列连通坐标,得到落子位置的坐标。
[0109]
在一个可选的实施例中,接收传感器组件反馈的电压数据包括:接收传感器组件反馈的多次初始电压数据;对多次初始电压数据进行中位值平均滤波,得到电压数据。
[0110]
具体地,主控模块确定落子位置之后,激活落子位置的对应的传感器组件,多次采集落子位置对应的传感器组件的电压数据,接收落子位置对应的传感器组件反馈的多次初始电压数据,对多次电压数据进行排序,去除排序结果中的最大值和最小值,再计算剩下的初始电压数据的平均值,将初始电压数据的平均值作为电压数据。
[0111]
本实施例中,通过中值滤波可以去除采集到的异常数据,使得采集得到的电压数据更加准确,进而根据准确的电压数据进行判断,棋子颜色的判断更加精确。
[0112]
在一个可选的实施例中,电子围棋棋盘设置有行通断电路和列通断电路;获取电子围棋棋盘的矩阵扫描结果包括:获取电子围棋棋盘的初始矩阵扫描结果,执行延时消抖线程,再次获取电子围棋棋盘的矩阵扫描结果。
[0113]
具体地,主控模块对行列地址选通器进行初次扫描后,得到初始矩阵扫描结果,执行延时消抖线程,进行程序消抖处理,运用延时判断来提高落子位置判断的准确性,防止误操作带来的干扰。消抖之后,再次获取电子围棋棋盘的矩阵扫描结果,提高落子位置判断的准确性。
[0114]
主控模块还可以采集功能按键和复位按键是否被触发,由于按键容易发送抖动导致误判。主控模块还可以通过延时消抖线程对功能按键key0、key1、 wk_up和复位按键的是否按下进行判断,进一步提高功能按键和复位按键控制的准确性。
[0115]
主控模块可以通过oled进行棋子放置提示,以及倒计时显示等功能,在每一步下棋后,开始倒计时显示,初始倒计时设定为100秒,也可以根据需要自信设定。用户将主控模块所需的汉字取模后放到字库中,再通过 oled_showchinese()函数将字库中的汉字分别显示出来。oled显示屏设置为列行式,每个点位按照从上到下,从左到右循环显示。利用功能按键来赋值标志位,从而显示不同的文字信息。程序设定每隔200毫秒屏幕刷新一次,同时还有倒计时功能,初始倒计时设定为100秒,能够提醒用户注意控制时间。
[0116]
在一个可选的实施例中,还包括:获取每局棋局的落子位置以及棋子颜色;根据棋局的落子位置以及棋子颜色,生成棋局复盘数据。
[0117]
具体地,主控模块可以将对弈过程中每一步的落子时间、落子位置以及棋子颜色发送至终端,终端根据每一步的落子位置以及棋子颜色,生成棋局复盘数据,并根据棋局时间生成复盘标识,以方便用户根据复盘标识获取复盘数据,进行棋局复盘,开始对棋局进行回看,复盘界面显示对局开始和结束时间、黑白子数量以及每一步棋的顺序等信息,有调节复盘速度、开始复盘和暂停复盘等功能。
[0118]
主控模块还可以收集对弈过程中每一步的落子时间、落子位置以及棋子颜色,并根据一局棋局的每一步生成棋局复盘数据,将棋局复盘数据发送至终端。终端将接收到的棋局复盘数据保存至棋局数据库中,并保存复盘标识,以方便用户根据复盘标识获取复盘数据,进行棋局复盘,开始对棋局进行回看。
[0119]
在一个可选的实施例中,终端可以实时将获取的棋局信息进行显示,基于 apicloud开发,显示界面采用基本的前端三件套加apicloud原生组件进行开发,终端的后
端基于nodejs和springcloudalibaba微服务,维护棋盘信息,保障棋盘数据,前端利用apicloud组件发送请求拿到服务器端数据,实时进行展示。
[0120]
终端还可以设置房间模块进行多人棋局游戏,房间模块主要用于页面数据渲染、创建房间、加入房间、实时对战的数据维护,该模块维护了两大数据缓存(1.智能棋盘信息,2.实时对战房间信息)。该模块与网关模块、数据库模块进行交互,是围棋软件部分的核心模块。房间模块分为以下三个核心部分。
[0121]
页面渲染部分采用thymeleaf用于渲染服务器端数据,围棋在线实战pc端所有页面均是由服务器端渲染出来,分为:首页部分、新建房间、加入房间、单机模式、对局复盘、实时对战、残局模式,对于部分数据会借助持久化模块进行数据获取。
[0122]
实时对战部分采用本地@autowired缓存持久化部分对局信息,下棋核心信息将采用openfeign进行远程调用持久化模块进行数据保存,同时还会搭配第二后台nodejs,进行对数据的共同维护,实现了功能解耦和缓存解耦。
[0123]
房间信息部分采用本地@autowired缓存持久化房间核心信息,下棋信息采取的是持久化模块逻辑,该后台存储房间的核心信息,如:房间在线用户、房间号、棋盘信息等。
[0124]
网关模块依托springcloudalibaba微服务的gateway组件,用于接收用户请求,根据不同的请求路径路由到指定的微服务模块上,同时在该网关层前面依托了一层nginx反向代理,由nginx服务器接收用户请求,反向代理到云服务器,将请求转发给网关层,最后由网关层进行统一的代理配置。服务依托gateway 组件进行统一的用户限流、接口限流、跨域实战、熔断回退、重试配置、异常处理。
[0125]
数据库模块主要用于数据的持久化保存,如:用户下棋数据,是将请求转给nginx,由nginx转给gateway,最后由网关转给本模块,本模块与数据库进行交互,用于将用户下棋数据持久化到mysql数据库中,同时提供数据对外支撑功能。用户可以通过指定的复盘编号查询到对弈胜负记录,同时可以根据该记录进行对弈的复盘,复盘信息主要有:用户下棋时间、用户下棋角色信息、黑白棋角色名称、房间号、对局复盘编号等。
[0126]
在应用实施例中,具体的电子围棋棋盘调试过程如下:先对电子围棋棋盘进行供电,等待wifi模块led灯亮后按下按键1,此时棋盘将会对检测点进行扫描,得到无子状态下的电压。等待oled显示屏提示将白子放至检测点后按下按键1,此时得到白子状态下的电压,通过与无子状态的电压相减得到白子的电压差。等待oled显示屏提示将黑子放至检测点后按下按键1,此时得到黑子状态下的电压,通过与无子状态的电压相减得到黑子的电压差。清空棋盘,按下按键2,等待棋盘初始扫描结束后再下棋。将终端通过usb转ttl模块连接 stm32单片机的usart1串口可以根据程序打印出的信息进行调试。终端将收到的数据打印出来。
[0127]
为了易于理解本技术实施例提供的技术方案,以完整的电子围棋棋盘数据处理过程对本技术实施例提供的电子围棋棋盘数据处理方法进行简要说明:
[0128]
(1)上电启动,对电子围棋棋盘进行全盘扫描,主控模块获取电子围棋棋盘的无子电压;推送白子放置提示,侦测电子围棋棋盘电压的变化,获取白子放置后的电压值,根据无子电压以及白子放置后的电压值的差值,确定电子围棋棋盘的白子电压;推送黑子放置提示,侦测电子围棋棋盘电压的变化,获取黑子放置后的电压值,根据无子电压以及黑子放置后的电压值的差值,确定电子围棋棋盘的黑子电压。
[0129]
(2)主控模块获取电子围棋棋盘的行通断电路扫描结果和列通断电路扫描结果。
[0130]
(3)主控模块根据行扫描结果和列扫描结果中的通断电路交集,确定落子位置
[0131]
(4)主控模块激活所述落子位置对应的传感器组件。
[0132]
(5)传感器组件多次采集落子位置的初始电压数据,并将多次初始电压数据发送至主控模块。
[0133]
(6)主控模块接收所述传感器组件反馈的多次初始电压数据,对多次初始电压数据进行中位值平均滤波,得到电压数据;
[0134]
(7)主控模块将电压数据与白子电压以及黑子电压进行比较;若电压数据与白子电压相同,则判定棋子颜色为白子;若电压数据与黑子电压相同,则判定棋子颜色为黑子。
[0135]
(8)主控模块获取每局棋局的落子位置以及棋子颜色;根据棋局的落子位置以及棋子颜色,生成棋局复盘数据,将棋局复盘数据发送至终端,以使用户根据棋局复盘数据进行复盘。
[0136]
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0137]
基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的电子围棋棋盘数据处理方法的电子围棋棋盘数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个电子围棋棋盘数据处理装置实施例中的具体限定可以参见上文中对于电子围棋棋盘数据处理方法的限定,在此不再赘述。
[0138]
在一个实施例中,如图9所示,提供了一种电子围棋棋盘数据处理装置,包括:获取模块902、位置确定模块904、激活模块906、接收模块908和颜色确定模块910,其中:
[0139]
获取模块902,用于获取电子围棋棋盘的矩阵扫描结果。
[0140]
位置确定模块904,用于根据矩阵扫描结果,确定落子位置。
[0141]
激活模块906,用于激活落子位置对应的传感器组件。
[0142]
接收模块908,用于接收传感器组件反馈的电压数据。
[0143]
颜色确定模块910,用于根据电压数据,确定棋子颜色。
[0144]
在一个实施例中,颜色确定模块910还用于上电启动,对电子围棋棋盘进行全盘扫描,获取电子围棋棋盘的无子电压;推送白子放置提示,侦测电子围棋棋盘电压的变化,获取白子放置后的电压值,根据无子电压以及白子放置后的电压值的差值,确定电子围棋棋盘的白子电压;推送黑子放置提示,侦测电子围棋棋盘电压的变化,获取黑子放置后的电压值,根据无子电压以及黑子放置后的电压值的差值,确定电子围棋棋盘的黑子电压。
[0145]
在一个实施例中,颜色确定模块910还用于将电压数据与白子电压以及黑子电压进行比较;若电压数据与白子电压相同,则判定棋子颜色为白子;若电压数据与黑子电压相同,则判定棋子颜色为黑子。
[0146]
在一个实施例中,获取模块902还用于获取电子围棋棋盘的行通断电路扫描结果和列通断电路扫描结果;根据行扫描结果和列扫描结果中的通断电路交集,确定落子位置。
[0147]
在一个实施例中,接收模块908还用于接收传感器组件反馈的多次初始电压数据;对多次初始电压数据进行中位值平均滤波,得到电压数据。
[0148]
在一个实施例中,电子围棋棋盘数据处理装置还包括复盘模块,用于获取每局棋局的落子位置以及棋子颜色;根据棋局的落子位置以及棋子颜色,生成棋局复盘数据。
[0149]
上述电子围棋棋盘数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0150]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、移动蜂窝网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种电子围棋棋盘数据处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0151]
本领域技术人员可以理解,图10中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0152]
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
[0153]
获取电子围棋棋盘的矩阵扫描结果;
[0154]
根据矩阵扫描结果,确定落子位置;
[0155]
激活落子位置对应的传感器组件;
[0156]
接收传感器组件反馈的电压数据;
[0157]
根据电压数据,确定棋子颜色。
[0158]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取电子围棋棋盘的矩阵扫描结果之前,还包括:上电启动,对电子围棋棋盘进行全盘扫描,获取电子围棋棋盘的无子电压;推送白子放置提示,侦测电子围棋棋盘电压的变化,获取白子放置后的电压值,根据无子电压以及白子放置后的电压值的差值,确定电子围棋棋盘的白子电压;推送黑子放置提示,侦测电子围棋棋盘电压的变化,获取黑子放置后的电压值,根据无子电压以及黑子放置后的电压值的差值,确定电子围棋棋盘的黑子电压。
[0159]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据电压数据,确定棋子颜色包括:将电压数据与白子电压以及黑子电压进行比较;若电压数据与白子电压相同,则判定棋子颜色为白子;若电压数据与黑子电压相同,则判定棋子颜色为黑子。
[0160]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:电子围棋棋盘设置有行通断电路和列通断电路;获取电子围棋棋盘的矩阵扫描结果包括:获取电子围棋棋盘的行通断电路扫描结果和列通断电路扫描结果;根据矩阵扫描结果,确定落子位置包括:根据行扫描结果和列扫描结果中的通断电路交集,确定落子位置。
[0161]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收传感器组件反馈的电压数据包括:接收传感器组件反馈的多次初始电压数据;对多次初始电压数据进行中位值平均滤波,得到电压数据。
[0162]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取每局棋局的落子位置以及棋子颜色;根据棋局的落子位置以及棋子颜色,生成棋局复盘数据。
[0163]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0164]
获取电子围棋棋盘的矩阵扫描结果;
[0165]
根据矩阵扫描结果,确定落子位置;
[0166]
激活落子位置对应的传感器组件;
[0167]
接收传感器组件反馈的电压数据;
[0168]
根据电压数据,确定棋子颜色。
[0169]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取电子围棋棋盘的矩阵扫描结果之前,还包括:上电启动,对电子围棋棋盘进行全盘扫描,获取电子围棋棋盘的无子电压;推送白子放置提示,侦测电子围棋棋盘电压的变化,获取白子放置后的电压值,根据无子电压以及白子放置后的电压值的差值,确定电子围棋棋盘的白子电压;推送黑子放置提示,侦测电子围棋棋盘电压的变化,获取黑子放置后的电压值,根据无子电压以及黑子放置后的电压值的差值,确定电子围棋棋盘的黑子电压。
[0170]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据电压数据,确定棋子颜色包括:将电压数据与白子电压以及黑子电压进行比较;若电压数据与白子电压相同,则判定棋子颜色为白子;若电压数据与黑子电压相同,则判定棋子颜色为黑子。
[0171]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:电子围棋棋盘设置有行通断电路和列通断电路;获取电子围棋棋盘的矩阵扫描结果包括:获取电子围棋棋盘的行通断电路扫描结果和列通断电路扫描结果;根据矩阵扫描结果,确定落子位置包括:根据行扫描结果和列扫描结果中的通断电路交集,确定落子位置。
[0172]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收传感器组件反馈的电压数据包括:接收传感器组件反馈的多次初始电压数据;对多次初始电压数据进行中位值平均滤波,得到电压数据。
[0173]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取每局棋局的落子位置以及棋子颜色;根据棋局的落子位置以及棋子颜色,生成棋局复盘数据。
[0174]
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
[0175]
获取电子围棋棋盘的矩阵扫描结果;
[0176]
根据矩阵扫描结果,确定落子位置;
[0177]
激活落子位置对应的传感器组件;
[0178]
接收传感器组件反馈的电压数据;
[0179]
根据电压数据,确定棋子颜色。
[0180]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取电子围棋棋盘的矩阵扫描结果之前,还包括:上电启动,对电子围棋棋盘进行全盘扫描,获取电子围棋棋盘的无子电压;推送白子放置提示,侦测电子围棋棋盘电压的变化,获取白子放置后的电压值,根据无子电压以及白子放置后的电压值的差值,确定电子围棋棋盘的白子电压;推送黑子放置提示,侦测电子围棋棋盘电压的变化,获取黑子放置后的电压值,根据无子电压以及黑子放置后的电压值的差值,确定电子围棋棋盘的黑子电压。
[0181]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据电压数据,确定棋子颜色包括:将电压数据与白子电压以及黑子电压进行比较;若电压数据与白子电压相同,则判定棋子颜色为白子;若电压数据与黑子电压相同,则判定棋子颜色为黑子。
[0182]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:电子围棋棋盘设置有行通断电路和列通断电路;获取电子围棋棋盘的矩阵扫描结果包括:获取电子围棋棋盘的行通断电路扫描结果和列通断电路扫描结果;根据矩阵扫描结果,确定落子位置包括:根据行扫描结果和列扫描结果中的通断电路交集,确定落子位置。
[0183]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收传感器组件反馈的电压数据包括:接收传感器组件反馈的多次初始电压数据;对多次初始电压数据进行中位值平均滤波,得到电压数据。
[0184]
需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
[0185]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器 (ferroelectric random access memory,fram)、相变存储器(phase changememory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器 (random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random accessmemory,sram)或动态随机存取存储器(dynamic random access memory, dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0186]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0187]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。