易于编程教育的编程教育控制对象装置的制作方法

文档序号:16091934发布日期:2018-11-27 23:07阅读:246来源:国知局

本发明涉及编程教育技术领域,具体涉及易于编程教育的编程教育控制对象装置。



背景技术:

目前的编程机器人,有两种模式,一种是类似于达奇的编程机器人,达奇的编程机器人是将各种传感器基本封装在机器人体内,只有少部分机械部件在外部扩展。另一种类似于乐高的WeDo编程机器人,乐高的WeDo编程机器人主要就是靠积木拼接来制作机器人,各种传感器则封装为积木块,以标准的接口与其他积木拼接。

达奇的编程机器人的传感器因为都封装在机器人内部,孩子没有感性上的认识,也不能无限扩展各种传感器,发挥创造性。

乐高的WeDo编程机器人的主要目的还在于积木的搭建,孩子大量的时间还在于机械结构的设计和搭建,而编程只是其中的一个步骤,不是主要的目的。

现在主流的编程教育一般都是采用简易编程工具scratch+课程的方式,即采用线上课程和线下课程两种方式。为了学习编程,现在孩子就必须要依赖一个iPad或者一台电脑运行简易编程工具scratch,由于现在孩子使用屏幕的时间已经越来越不可控制,让孩子学习编程而使用屏幕的时间与控制孩子使用屏幕的时间之间形成了冲突,这让家长较为纠结。因此设计一种可以不看屏幕就能学习编程的编程教育系统就显得非常必要。



技术实现要素:

本发明是为了解决孩子在学习编程时必须使用屏幕,而使用屏幕的时间和要控制孩子使用屏幕的时间之间存在冲突的不足,提供一种通过机器人闯关方式学习编程,让孩子在学习编程时无需使用屏幕,采用积木连接方式将要执行的程序写入主控模块中,由主控模块根据写入的程序去控制被控制对象完成相应的指令动作,从而实现无需屏幕就能让孩子学习编程,可靠性高,趣味性好的易于编程教育的编程教育控制对象装置。

以上技术问题是通过下列技术方案解决的:

易于编程教育的编程教育控制对象装置,包括闯关板、闯关图、可移动软磁片、可移动磁性障碍、机器人和可编程的积木,在机器人上设有扩展模块、机端控制模块、以及分别与机端控制模块相连接的机端通信模块、运动模块、声音模块、发光模块、摄像头模块和巡线模块;机端控制模块、机端通信模块、运动模块、声音模块、发光模块、摄像头模块和巡线模块都封装在机器人内;扩展模块通过设置在机器人上的标准接口与机端控制模块连接;在积木上设有主控模块和与主控模块相连接的木端通信模块,木端通信模块与机端通信模块无线连接。

本发明将基本的机器人结构封装起来,即将机端控制模块、机端通信模块、运动模块、声音模块、发光模块、摄像头模块和巡线模块封装在机器人内部。但会开放若干个标准接口,用于对传感器模块和语音识别模块的连接。

另外,本发明将屏幕上的闯关场景拉到现实中,利用闯关板让孩子完成闯关。还可以通过黑色磁片和巡线模块,自己设计闯关。

通过机器人闯关方式学习编程,让孩子在学习编程时无需使用屏幕,采用积木连接方式将要执行的程序写入主控模块中,由主控模块根据写入的程序去控制被控制对象完成相应的指令动作,从而实现无需屏幕就能让孩子学习编程,可靠性高,趣味性好。

作为优选,积木有若干个,并在每个积木上都分别设有能将任意两个积木进行两两相互可分开式固定对接连接在一起的固定连接机构和能将任意两个积木进行两两相互可分开式数据线对接连接在一起的数据传输接口;在若干个积木中包括一个主控积木、若干个指令积木和若干个参数积木;主控模块和木端通信模块都设置在主控积木上,木端通信模块和设置在主控积木上的数据传输接口分别与主控模块连接;在每个指令积木上分别设有指令模块,设置在同一个指令积木上的数据传输接口和指令模块连接;在每个参数积木上分别设有参数模块,设置在同一个参数积木上的数据传输接口和参数模块连接。

通过积木这种有形模块让孩子边玩边学习编程。制作一个个有形的积木模块代替复杂的计算机代码,有了它就能让小孩都可以学习编程了。通过积木进行有形编程,正是利用孩子们在玩乐当中学习的天性与计算机思维结合在一起,从而让编程变得简单容易。

本发明将scratch里的部分指令搬到了现实中,成为现实中可搭接的积木,孩子能完全脱离屏幕,直接通过指令积木,完成编程,控制被控制对象机器人等。

同时,本发明相比于Google的ProjectBloks这样的有形编程,本发明解决了能在同一个产品里,将有形编程直接过渡到软件编程,实现编程教育的目的,让孩子最终能够学会通过编程语言进行编程。

本发明可实时将积木搭建出的指令同步到iPad或电脑中,实时查看转化成的高级编程语言,如JavaScript或Python,并可执行或单步执行程序,进行debug编程工具。

作为优选,若干个指令积木则有若干个指令模块,并且这若干个指令模块为基础指令集;基础指令集包括执行函数指令、循环控制指令、逻辑判断指令和基本动作指令;若干个参数积木则有若干个参数模块,并且这若干个参数模块是为基础指令集提供指令参数的辅助指令集;所述辅助指令集包括用于执行函数指令的函数名、可调节数字模块、可调节角度模块和可调节是否模块。

基础指令集和辅助指令集的配合能让机器人运行孩子需要的各种动作,大大提高了机器人运行动作的使用范围,便于孩子探索机器人的各种运行动作,增加编程兴趣和玩积木的乐趣。

作为优选,所述基本动作指令包括能让机器人执行基本动作的机器人基本动作指令,所述机器人基本动作指令包括前进指令、后退指令、左转指令、右转指令、转圈指令、发声指令、闪光指令、前倾斜指令、后倾斜指令、左倾斜指令、右倾斜指令、抬起指令和放下指令。

针对机器人的机器人基本动作指令大大提高了积木编程的娱乐性和趣味性。

作为优选,固定连接机构包括能相互磁性吸住的若干个磁铁;在积木的每个壁面内都分别嵌入有至少一个磁铁;两个积木之间通过设置在这两个积木对应壁面内的磁铁磁性吸住后固定对接连接在一起;

数据传输接口包括若干个插座和与插座匹配的插头,在每个积木的至少一个壁面上设置有插座,在每个积木的至少一个壁面上设置有插头,并且在同一个积木上的插头和插座不在该积木的同一个壁面上;

设置在主控积木上的插头和插座分别与设置在该主控积木上的主控模块连接;设置在同一个指令积木上的插头和插座分别与设置在该个指令积木上的指令模块连接;设置在同一个参数积木上的插头和插座分别与设置在该个参数积木上的参数模块连接。

这种结构易于将两个积木对接连接在一起,并且两个积木对接连接后,这两个积木之间的数据信号传输稳定性好,信号不易中断。

作为优选,在积木内设有木腔,在木腔内设有与该积木上的插头个数相等的支点和与支点个数相等的拉绳,在每个支点上分别设有杠杆;在支点左方的木腔内设有一号定滑轮,在支点右方的木腔内设有二号定滑轮;

在插头处的积木内设有与木腔相连通的头滑孔,插头滑动连接在头滑孔内,并在头滑孔内设有能将插头往头滑孔的木腔端挤压的头挤压弹簧;

在磁铁处的积木内设有与木腔相连通的磁滑孔,磁铁滑动设置在磁滑孔内,并在磁滑孔内设有能将磁铁往磁滑孔的木腔端挤压的磁挤压弹簧;

杠杆的阻力臂端部滑动连接在插头的里端面上;拉绳的一端固定连接在杠杆的动力臂端部,拉绳的另一端依次经过二号定滑轮和一号定滑轮后固定连接在磁铁的里端面上;杠杆的动力臂长度大于杠杆的阻力臂长度。

这种结构可靠性高,在两个积木通过磁铁固定连接在一起后,磁铁的力还能同时让其中一个积木的插头上的金属插条插入连接在另一个积木的插座的插孔内。并在这两个积木分开后,插头上的金属插条缩入到积木内,易于使用,在使用过程中插头上的金属插条不易伤到手,使用简单,安全方便,可靠性好。

作为优选,在插座的插孔里端面上设有接触开关,在插孔内的上孔壁上向上设有竖直孔,在竖直孔内上下滑动设有绝缘竖直滑块,在绝缘竖直滑块上方的竖直孔内上下滑动设有永磁铁,在永磁铁上方的竖直孔内固定设有电磁铁,在绝缘竖直滑块与永磁铁之间的竖直孔内活动设有竖直弹簧,竖直弹簧的上端固定连接在永磁铁的下表面上,竖直弹簧的下端固定连接在绝缘竖直滑块的上表面上;在接触开关上方的插孔里端面上设有弹性导电金属片,弹性导电金属片的外端位于绝缘竖直滑块的正下方;弹性导电金属片导电连接在数据传输接口的数据传输线上;接触开关串联连接在电磁铁的电源回路上。

接触开关为常开接触开关。当插头的金属插条插入连接在插座的插孔内后,接触开关闭合,电磁铁的电源回路导通,电磁铁通电后所发出的电磁力与永磁铁的磁力相互排斥,从而使得永磁铁向下移动,永磁铁向下移动的结果就会让绝缘竖直滑块下端压紧在弹性导电金属片的上表面外端,从而让弹性导电金属片的下表面压紧导电连接在插头的金属插条上,使得金属插条与数据传输接口的数据传输线之间导通,从而使得两个积木之间的数据传输更加稳定可靠。当插头的金属插条从插座的插孔内退出后,电磁铁的电源回路断开,电磁铁上没有电磁力,从而使得永磁铁向上移动降低绝缘竖直滑块压在弹性导电金属片上的压力,可靠性好。

作为优选,编程教育控制对象装置还包括闯关板、闯关图、可移动软磁片和可移动磁性障碍。

作为优选,闯关板的闯关策略如下:

8.1、闯关板将虚拟的闯关移到现实当中,每闯过一关,机器人要找到预先设定的寻找物,就需要按照预定的路线走;

8.2、闯关图是已经画好的路线图,用画好的路线图代表预设好的闯关;

8.3、孩子需要根据路线图,设计程序,搭建指令积木,并执行程序;

8.4、机器人上的巡线模块会检查机器人是否在预定的路线上行进,如果偏离路线,则发送消息给机端控制模块,声音模块提示程序设计错误;

8.5、当机器人到达目的地,巡线模块发送消息给机端控制模块,声音模块发出成功闯关的欢呼声;

8.6、自由设定关卡:

8.6.1、孩子能在空的背景图上自由设定关卡;用可移动软磁片吸附在闯关板上,设定路线;

8.6.2、起始点和目的地都要用不同颜色的可移动软磁片表示;

8.6.3、设定关卡后,孩子设定程序,搭建指令积木,并执行程序;

8.6.4、机器人上的巡线模块会检查机器人是否在路线上行进,如果偏离路线,则发送消息给机端控制模块,声音模块提示程序设计错误;

8.6.5、当机器人到达目的地后,巡线模块发送消息给机端控制模块,声音模块发出成功闯关的欢呼声;

8.7、可移动磁性障碍:

若传感器模块检测到障碍,则根据程序执行转弯或者后退;当自由设定关卡时,则利用可移动磁性障碍,在闯关板上自由设置障碍;并通过传感器模块的全局变量,设定程序。

作为优选,闯关板的闯关过程如下:

9.1、在闯关板上吸附上闯关图;

9.2、开启机器人,将机器人放在闯关图的起始点上;

9.3、搭建指令积木,并点击按钮,指令积木通过机端通信模块传送指令给机器人;

9.4、机器人收到指令,开始执行指令;

9.5、巡线模块始终监视机器人的行走路线是否在预设的路线上,如果偏离路线,则通知机端控制模块,发出报错的语音;

9.6、如果机器人按照预设的路线行走,机器人到达终点后,巡线模块通知机端控制模块,声音模块发出成功的语音;

9.7、当自由设置关卡时,闯关图上没有预设的路线,由孩子将起点、终点212和行驶路线的磁片吸附在闯关板上,其余流程同前;

9.8、在自由设置障碍时,孩子将可移动磁性障碍吸附在闯关板上,其余流程同前。

本发明能够达到如下效果:

本发明通过机器人闯关方式学习编程,让孩子在学习编程时无需使用屏幕,采用积木连接方式将要执行的程序写入主控模块中,由主控模块根据写入的程序去控制被控制对象完成相应的指令动作,从而实现无需屏幕就能让孩子学习编程,可靠性高,趣味性好。

附图说明

图1为本发明实施例的一种电路原理连接结构示意框图。

图2为本发明的若干个积木连接在一起的一种连接结构示意图。

图3为本发明实施例主控积木和参数积木都还没有连接在指令积木上时的一种连接结构示意图。

图4为本发明实施例主控积木和参数积木都已经分别连接在指令积木上后的一种连接结构示意图。

图5为本发明实施例参数积木还未连接在指令积木上时的一种连接结构示意图。

图6为本发明实施例参数积木已经连接在指令积木上后的一种连接结构示意图。

图7为本发明实施例执行函数指令的一种流程图。

图8为本发明实施例存储函数定义的一种流程图。

图9为本发明实施例指令积木控制机器人的一种流程图。

图10为本发明实施例指令模块的一种电路原理连接结构示意图。

图11为本发明实施例参数模块的一种电路原理连接结构示意图。

图12为图6中竖直孔处的一种局部放大连接结构示意图。

图13为本发明实施例弹性导电金属片通过导线导电连接在数据传输接口的数据传输线上的一种电路原理连接结构示意图。

图14为本发明实施例接触开关串联连接在电磁铁的电源回路上的一种电路原理连接结构示意图。

图15为本发明实施例将机端控制模块、机端通信模块、运动模块、声音模块、发光模块、摄像头模块和巡线模块都设置在机器人内部的一种示意图。

图16为本发明实施例闯关板的一种流程图。

图17为本发明实施例机器人在闯关板上的一种使用状态示意图。

具体实施方式

下面结合附图与实施例对本发明作进一步的说明。

实施例,易于编程教育的编程教育控制对象装置,参见图1-图6所示,包括闯关板205、闯关图206、可移动软磁片207、可移动磁性障碍208、机器人48和可编程的积木202,在机器人上设有扩展模块、机端控制模块、以及分别与机端控制模块相连接的机端通信模块、运动模块、声音模块、发光模块、摄像头模块和巡线模块201;机端控制模块、机端通信模块、运动模块、声音模块、发光模块、摄像头模块和巡线模块都封装在机器人内;在机器人上设有两个分别与机端控制模块连接的标准接口;扩展模块包括传感器模块61和语音识别模块204,传感器模块通过一个标准接口与机端控制模块连接,语音识别模块通过另一个标准接口与机端控制模块连接。

参见图15所示,将机端控制模块51、机端通信模块37、运动模块63、声音模块59、发光模块60、摄像头模块200和巡线模块201都设置在机器人内部203。

积木有若干个,并在每个积木上都分别设有能将任意两个积木进行两两相互可分开式固定对接连接在一起的固定连接机构和能将任意两个积木进行两两相互可分开式数据线对接连接在一起的数据传输接口;在若干个积木中包括一个主控积木、若干个指令积木和若干个参数积木;在主控积木26上分别设有主控模块44和木端通信模块43,木端通信模块43和设置在主控积木上的数据传输接口27分别与主控模块44连接;在每个指令积木1上分别设有指令模块45,设置在同一个指令积木1上的数据传输接口30和指令模块连接;在每个参数积木上分别设有参数模块,设置在同一个参数积木21上的数据传输接口22和参数模块46连接。木端通信模块与机端通信模块无线连接。

参见图3所示,主控积木26上的固定连接机构29还没固定对接连接在指令积木1上的固定连接机构31上,并且此时指令积木1上的数据传输接口30也没对接连接在主控积木26上的数据传输接口27上,指令积木1上的固定连接机构34也没固定对接连接在参数积木21上的固定连接机构35上,指令积木1上的数据传输接口25也没对接连接在参数积木21上的数据传输接口22上。在指令积木上还设有数据传输接口24。在参数积木上还设有数据传输接口23。在主控积木上还分别设有固定连接机构28、数据传输接口32和数据传输接口33。

参见图4所示,主控积木26上的固定连接机构29已经固定对接连接在指令积木1上的固定连接机构31上,并且此时指令积木1上的数据传输接口30也已经对接连接在主控积木26上的数据传输接口27上,指令积木1上的固定连接机构34也已经固定对接连接在参数积木21上的固定连接机构35上,指令积木1上的数据传输接口25也已经对接连接在参数积木21上的数据传输接口22上。

所述木端通信模块和所述机端通信模块分别包括wifi和或蓝牙。

若干个指令积木则有若干个指令模块,并且这若干个指令模块为基础指令集;基础指令集包括执行函数指令、循环控制指令、逻辑判断指令和基本动作指令;若干个参数积木则有若干个参数模块,并且这若干个参数模块是为基础指令集提供指令参数的辅助指令集;所述辅助指令集包括用于执行函数指令的函数名、可调节数字模块、可调节角度模块和可调节是否模块。

所述基本动作指令包括能让机器人执行基本动作的机器人基本动作指令,所述机器人基本动作指令包括前进指令、后退指令、左转指令、右转指令、转圈指令、发声指令、闪光指令、前倾斜指令、后倾斜指令、左倾斜指令、右倾斜指令、抬起指令和放下指令。

运动模块能根据指令模块的指令让机器人进行各种基本动作。

机器人48通过设置在机器人48上的机端通信模块37与主控积木26上的木端通信模块43无线连接。机器人48上的机端控制模块51与设置在该机器人48上的机端通信模块51连接。机器人48上的声音模块59、发光模块60、传感器模块61、扩展模块62和运动模块63分别与机器人48上的机端控制模块51连接。

参见图5、图6所示,固定连接机构包括能相互磁性吸住的若干个磁铁;在积木的每个壁面内都分别嵌入有至少一个磁铁;两个积木之间通过设置在这两个积木对应壁面内的磁铁磁性吸住后固定对接连接在一起;数据传输接口包括若干个插座和与插座匹配的插头,在每个积木的至少一个壁面上设置有插座,在每个积木的至少一个壁面上设置有插头,并且在同一个积木上的插头和插座不在该积木的同一个壁面上;设置在主控积木上的插头和插座分别与设置在该主控积木上的主控模块连接;设置在同一个指令积木上的插头和插座分别与设置在该个指令积木上的指令模块连接;设置在同一个参数积木上的插头和插座分别与设置在该个参数积木上的参数模块连接。

在图5中,指令积木1上的磁铁14还没被参数积木21上的磁铁18磁性吸住。指令积木1上的插头15的金属插条16还没插入连接在参数积木21上的插座20的插孔19内。

在图6中,指令积木1上的磁铁14已经被参数积木21上的磁铁18磁性吸住。指令积木1上的插头15的金属插条16已经插入连接在参数积木21上的插座20的插孔19内。

参见图5、图6、图12所示,

在积木内设有木腔10,在木腔内设有与该积木上的插头个数相等的支点6和与支点个数相等的拉绳5,在每个支点上分别设有杠杆3;在支点左方的木腔内设有一号定滑轮2,在支点右方的木腔内设有二号定滑轮9;在插头处的积木内设有与木腔相连通的头滑孔13,插头滑动连接在头滑孔内,并在头滑孔内设有能将插头往头滑孔的木腔端挤压的头挤压弹簧11;在磁铁处的积木内设有与木腔相连通的磁滑孔17,磁铁滑动设置在磁滑孔内,并在磁滑孔内设有能将磁铁往磁滑孔的木腔端挤压的磁挤压弹簧12;杠杆的阻力臂4端部设有滚轮8,滚轮滑动连接在插头的里端面上;拉绳的一端固定连接在杠杆的动力臂7端部,拉绳的另一端依次经过二号定滑轮和一号定滑轮后固定连接在磁铁的里端面上;杠杆的动力臂长度大于杠杆的阻力臂长度。

在插座20的插孔19里端面上设有接触开关72,在插孔内的上孔壁上向上设有竖直孔65,在竖直孔内上下滑动设有绝缘竖直滑块69,在绝缘竖直滑块上方的竖直孔内上下滑动设有永磁铁67,在永磁铁上方的竖直孔内固定设有电磁铁66,在绝缘竖直滑块与永磁铁之间的竖直孔内活动设有竖直弹簧68,竖直弹簧的上端固定连接在永磁铁的下表面上,竖直弹簧的下端固定连接在绝缘竖直滑块的上表面上;在接触开关上方的插孔里端面上设有弹性导电金属片71,弹性导电金属片的外端位于绝缘竖直滑块的正下方。

在弹性导电金属片的外端设有开口朝上的圆弧段70,并且弹性导电金属片的圆弧段外端位于绝缘竖直滑块的正下方。在绝缘竖直滑块的下端面上设有滚珠64。

参见图13所示,弹性导电金属片71通过导线73导电连接在数据传输接口22的数据传输线74上。

参见图14所示,接触开关72串联连接在电磁铁66的电源76回路75上。

接触开关为常开接触开关。当插头15的金属插条16插入连接在插座20的插孔19内后,接触开关闭合,电磁铁的电源回路导通,电磁铁通电后所发出的电磁力与永磁铁的磁力相互排斥,从而使得永磁铁向下移动,永磁铁向下移动的结果就会让绝缘竖直滑块下端面上的滚珠压紧在弹性导电金属片的上表面外端,从而让弹性导电金属片的下表面压紧导电连接在插头15的金属插条上,使得金属插条与数据传输接口22的数据传输线74之间导通,从而使得两个积木之间的数据传输更加稳定可靠。当插头15的金属插条16从插座20的插孔19内退出后,电磁铁的电源回路断开,电磁铁上没有电磁力,从而使得永磁铁向上移动降低滚珠压在弹性导电金属片上的压力,可靠性好。

闯关板的闯关策略如下:

8.1、闯关板将虚拟的闯关移到现实当中,每闯过一关,机器人(蜜蜂)要找到预先设定的寻找物(花朵),就需要按照预定的路线走;

8.2、闯关图就是已经画好的路线图,用画好的路线图代表预设好的闯关;

8.3、孩子需要根据路线图,设计程序,搭建指令积木,并执行程序;

8.4、机器人上的巡线模块会检查机器人是否在预定的路线上行进,如果偏离路线,则发送消息给机端控制模块,声音模块提示程序设计错误;

8.5、当机器人到达目的地,巡线模块发送消息给机端控制模块,声音模块发出成功闯关的欢呼声;

8.6、自由设定关卡:

8.6.1、孩子能在空的背景图上自由设定关卡;用可移动软磁片吸附在闯关板上,设定路线;

8.6.2、起始点和目的地都要用不同颜色的可移动软磁片表示;

8.6.3、设定关卡后,孩子设定程序,搭建指令积木,并执行程序;

8.6.4、机器人上的巡线模块会检查机器人是否在路线上行进,如果偏离路线,则发送消息给机端控制模块,声音模块提示程序设计错误;

8.6.5、当机器人到达目的地后,巡线模块发送消息给机端控制模块,声音模块发出成功闯关的欢呼声;

8.7、可移动磁性障碍:

若传感器模块检测到障碍,则根据程序执行转弯或者后退;当自由设定关卡时,则利用可移动磁性障碍,在闯关板上自由设置障碍;并通过传感器模块的全局变量,设定程序。

假如用蜜蜂209代表机器人48,用花朵211代表寻找物210,则蜜蜂每闯过一关,蜜蜂就需要按照预定的路线走;而蜜蜂只有按照设定的路线走才能找到预先设定的花朵。当蜜蜂走错路线时,蜜蜂就不能找到设定的滑动,通过判断蜜蜂是否能够找到设定的花朵就能确定蜜蜂是否走错路线,进而也就判断出了机器人是否也走错了路线没,可靠性高。

闯关板的闯关过程如下:参见图16、图17所示。

9.1、在闯关板上吸附上闯关图;

9.2、开启机器人,将机器人放在闯关图的起始点上;

9.3、搭建指令积木,并点击按钮,指令积木通过机端通信模块传送指令给机器人;

9.4、机器人收到指令,开始执行指令;

9.5、巡线模块始终监视机器人的行走路线是否在预设的路线上,如果偏离路线,则通知机端控制模块,发出报错的语音;

9.6、如果机器人按照预设的路线行走,机器人到达终点212后,巡线模块通知机端控制模块,声音模块发出成功的语音;

9.7、当自由设置关卡时,闯关图上没有预设的路线,由孩子将起点213、终点和行驶路线的磁片吸附在闯关板上,其余流程同前;

9.8、在自由设置障碍时,孩子将可移动磁性障碍吸附在闯关板上,其余流程同前。

主控模块:基于树莓派(Raspberry Pi)系统,如果是树莓派0,需要加上wifi模块和蓝牙模块。如果是树莓派3(树莓派3自带wifi和蓝牙)。开始模块通过磁吸方式,通过usb转uart芯片与树莓派通信。运行nodejs,通过蓝牙模块控制机器人。

若干指令模块:为基础指令集,包括执行函数指令(Func())、循环控制指令(for循环)、逻辑判断(条件)指令(if/else)、基本动作指令(前进、后退、左转、右转、转圈、发声、LED闪灯等)。

指令模块的主要功能:存储自身的指令关键字,供主控模块识别;读取参数模块,将参数加入自身的指令;收集下方的指令,加入自身的指令,上传;读取当前正在执行的指令ID,如果符合自身ID,则高亮LED灯。指令模块的电路原理示意图如图10所示。

若干参数模块:辅助基础指令,提供指令参数,包括函数名(用于执行函数指令)、可调节数字模块、可调节角度模块、可调节是否模块等。参数模块的电路原理示意图如图11所示。

参数模块的主要功能:可调节参数数值,包括数字、角度、TRUE/FALSE等;可调节关系,包括等于、大于、小于、大于等于、小于等于等;承载函数名,用于定义和执行自定义函数。

指令模块的核心芯片为Attiny85,用于接收输入指令,处理输入指令,并返回输出指令。

当”结束”积木上的开关被触发时,结束指令开始向上传递指令。收到下方的指令集后,当前指令积木会询问参数模块。如果后面吸附着参数模块,参数模块会返回当前设定的参数值,如果参数模块后面还吸附着其他的参数模块,参数模块会继续向后询问。当前指令积木收到参数模块返回后,将自己存储的指令和参数组成完整的指令,加入从下方收到的指令集,组成新的指令集,向上传递。开始模块收到了全部指令集后,加入开始模块自身的指令,通过磁吸弹针将完整的指令集传递给主控模块。

参数模块的核心芯片也是Attiny85,主要功能就是读取电位器的电压值,通过ADC转换成预设的枚举值(不同的参数模块,设置不同的枚举变量),有数值的选择,有角度的选择,有是否的选择,也有运算符号的选择(如=,<,>,<=,>=等)。

参数模块是可以扩展的,可以是一个,也支持多个参数模块串联。

参见图9所示,指令积木控制机器人的流程为:

主控积木的主控模块启动后,通过蓝牙模块,搜索机器人和iPad,主控模块作为蓝牙主机,机器人和iPad作为蓝牙外设,机器人和iPad随时启动,随时蓝牙连接成功。

孩子开始根据自己的意愿或课程要求,自行设计程序,添加指令模块和参数模块,参数模块上的数字、角度、是否等可以随意调整,参数模块还包含针对传感器状态的判断。

完成指令模块和参数模块的搭建后,打开开关,完成指令。主控模块将指令通过蓝牙同步给iPad。

同时,主控模块基于blockly平台解析指令,生成可执行程序并运行,执行过程中将控制机器人的命令通过蓝牙发送给机器人。

iPad的程序启动后,在蓝牙连接主控模块后,一直监听蓝牙输入。收到主控模块同步的指令后,基于blockly平台解析指令,将指令展示为blockly积木形式,转换成JavaScript和Python语言,并生成可执行程序,开始运行,在iPad上画出机器人的行走路线。

机器人程序启动后,在蓝牙连接主控模块后,一直监听蓝牙输入。机器人上的传感器通过蓝牙不断返回传感器状态,主控模块通过全局变量,记录传感器状态值。收到主控模块发出的命令后,机器人执行命令,完成舞蹈动作或者闯关。

主控积木的主控模块为树莓派(RaspberryPi)的linux操作系统,运行环境为Nodejs,加载googleblockly模块。利用googleblockly平台提供的接口,实现对于指令积木的xml解析,指令积木的功能配置和参数配置。

例如:

1、调用为blockly封装的nodejs模块。

varBlockly=require(’node-blockly’)。//调用googleblockly模块。

2、通过Blockly的Blocks函数,对指令积木进行定义。

Blockly.Blocks[’bee_moveforward’]={

init:function(){

this.appendDummyInput()

.appendField(″向前走″)

.appendField(newBlockly.FieldNumber(10,1,10000),″moveSteps″)

.appendField(″步″);

this.setPreviousStatement(true,null);

this.setNextStatement(true,null);

this.setColour(255);

this.setTooltip(’letbeemoveforward’);

this.setHelpUrl(”);

}}。

3、通过JavaScript函数,定义指令积木对应的JavaScript函数。

Blockly.JavaScript[’bee_moveforward’]=function(block){

varnumber_movesteps=block.getFieldValue(’moveSteps’);

varcode=″Bee.moveForward″+″(″+number_movesteps+″);\n″;

returncode;

}。

4、定义对应函数需要完成的功能,比如通过蓝牙向机器人发出向前走的指令。

//自定义Blocks的功能,与ble的蓝牙模块进行ajax通信,传递指令

Bee.moveForward=function(number_steps){

console.log(″moveforward″+number_steps);

BLE.runBLECommand(″command″,″moveForward″,number_steps)

}。

5、通过Blockly.Xml.textToDom函数,将主控模块读到的积木指令对应xml转换为blockly可以识别的workspace,然后通过

Blockly.JavaScript.workspaceToCode函数把workspace转换为可执行的JavaScript代码:

Bee.workspace=newBlockly.Workspace();

varcommandXml=XML.generateXml(commandString);

try{

varxml=Blockly.Xml.textToDom(commandXml);

}catch(e){console.log(e);

Return

}

Blockly.Xml.domToWorkspace(xml,Bee.workspace);

varcode=Blockly.JavaScript.workspaceToCode(Bee.workspace)。

可自定义函数模块:

当机器人需要完成复杂的动作组合时,指令模块和参数模块就会越积越多,不仅浪费模块,也不能养成好的编程习惯。所以,本项目还支持自定义的函数模块,让孩子学会通过函数来优雅地实现复杂的功能。

定义函数模块需要:

主控模块:用于读取函数定义,并写入函数定义文件;

定义模块:承载函数定义的关键字;

函数模块:承载函数名,如“新动作1”,“新动作2”,硬件同参数模块;

指令模块:用于搭建完成定义函数功能的各个指令;

参数模块:用于搭建完成定义函数功能的指令参数。

定义函数模块的流程为:

指令积木主控模块启动;

将开始模块改为定义模块,后面添加函数模块,函数模块用于承载函数名;

添加该函数功能所需的指令模块和参数模块,比如让机器人跳8字舞所需的所有动作和参数;

主控模块收到指令后,判断是否为函数定义,如果是函数定义,则将该函数定义的指令存储到定义文件里。

函数定义以JSON串的格式存储到文件中。参见图8所示。

执行函数模块需要:

主控模块:用于蓝牙通信,读取指令,解析指令,执行程序;

执行模块:用于触发自定义函数的执行;

函数模块:承载函数名;

指令模块:用于搭建编程的各个指令;

参数模块:用于搭建编程的指令参数。

执行函数模块的流程为:参见图7所示。

主控积木的主控模块启动;

添加执行模块和函数模块;

添加其他需要的指令模块和参数模块;

确认完成指令搭建;

主控模块收到指令后,判断是否有执行模块,如果有,则读取函数定义文件,将函数定义的指令加入到要执行的指令集中;

主控模块解析指令,执行程序。

本发明将scratch里的部分指令搬到了现实中,成为现实中可搭接的积木,孩子能完全脱离屏幕,直接通过指令积木,完成编程,控制被控制对象机器人等。

同时,本发明相比于Google的ProjectBloks这样的有形编程,本发明解决了能在同一个产品里,将有形编程直接过渡到软件编程,实现编程教育的目的,让孩子最终能够学会通过编程语言进行编程。

本发明可实时将积木搭建出的指令同步到iPad或电脑中,实时查看转化成的高级编程语言,如JavaScript或Python,并可执行或单步执行程序,进行debug编程工具。

通过机器人闯关方式学习编程,让孩子在学习编程时无需使用屏幕,采用积木连接方式将要执行的程序写入主控模块中,由主控模块根据写入的程序去控制被控制对象完成相应的指令动作,从而实现无需屏幕就能让孩子学习编程,可靠性高,趣味性好。

上面结合附图描述了本发明的实施方式,但实现时不受上述实施例限制,本领域普通技术人员可以在所附权利要求的范围内做出各种变化或修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1