一、引子
最近一段时间父爱泛滥
所以此次DIY活动的主题依旧是儿童玩具
前不久给小朋友DIY了一个游戏机
涂红的是犬子的姓名,匿了
只完成了基本俄罗斯方块的功能
计分等等胡里花哨的东西没做进去
项目剩余的STM32F103和一些杂七杂八的器件
1200mAH电池,没有任何代码优化的情况下
可以用差不多20个小时
板载FLASH可以存储多个像素游戏
嗯,水吹完了
接下来说说用GD32F350怎么整个玩具
前段时间领小朋友去万达小卖部玩
了解到一批少儿编程教育的课程
4000块,30节课
准备给娃报一个玩玩
于是回家研究了一下
没成想,最近这少儿编程教育真是大热
国内各种舶来货,换个名称
什么葡萄科技啊,什么啃萝卜啊
稍微像点样就动不动融资xx个亿
感情人民币都是投资机构自己印刷的啊
也许人家有足够牛逼的线下布局
但是啊,能不能拿点自己的货出来宣传
自己总结了一下,市面上针对少儿编程教育的软硬件平台不外乎两类
一类是G语言图形编程,LEGO就是典型,楼主称之为LEGO系
长这样:
尼玛,能不能再复杂点
各种语句的G模块
大孩子都要研究个10天半个月
小朋友咋会有兴趣
LEGO价格昂贵,难以承受
当然,这样的老店,自然有人买单
另一类是Block块编程,都是基于MIT的scratch平台(Arduino也是),楼主称之为MIT系
长这样:
国内很多牛掰哄哄的厂家都是这个模样
几乎一张面孔
想想也是,GPL嘛,要改就得开源
这两类编程平台有一个巨大的缺陷
尼玛不能debug……,不能debug……,debug……,de……
几乎就是盲调验证
逻辑错了都不知道错在哪
不得不定义为辣鸡中的轰炸机
其他需要自行编程的类似micropython,Arduino之类不在讨论之列
二、思考
少儿编程主要目的是锻炼逻辑思维
真正适合少儿编程的平台
窃以为模块得少、界面得简洁、要能debug
正好论坛和GD有这次活动
尝试用GD32F350实现一个少儿编程平台
自定义一套脚本运行规则(包括debug)
在F350上运行解释脚本的程序
从而达到模拟单片机运行的作用
仅仅使用控制器的输入输出、PWM、ADC、SPI、IIC等几个基础外设功能
风靡全球的Arduino好像也就这样把
逻辑模块只实现if-else和while(condition),逻辑判断和条件循环
客户端通过USB或者串口连接平台,进行debug
如果觉得不够,可以自己撸个代码编辑器
把GCC和MicroPython集成进来
全年龄段适用
呃,扯多了
解释脚本这个方案虽然会有比较大的性能损耗
但是F350高达108MHz的主频
加上面向少儿的特点
也不难接受
再加上自定义脚本规则可以加入很多其他譬如在线单步执行等功能
更加有意思
三、规划
脚本规则这个需要慢慢推敲
这里暂时不讨论
懒得画了,拍几张
核心板框图
F350通过IIC连接一块OLED,实时显示单板运行状态
通过SPI连接一块FLASH,用于保存更新固件、脚本文件、显示文件等数据
还有三个按键,分别是唤醒、复位和恢复出厂设置
其中恢复出厂设置是擦除FLASH中的脚本文件
其他对外部模块的管脚,上图中未引出
一般就是IO、PWM、ADC、SPI、IIC等等连接外部模块了
F350内部FLASH
顶部20KB用作BOOT,用于升级F350脚本解释程序或底层驱动
底部30KB用于IO、PWM、ADC、SPI、IIC的底层驱动程序
中间区域就是脚本解释程序,根据脚本数据调用底层驱动程序
基本工作流程就是
上电—进boot—读取FLASH脚本数据到RAM—运行脚本解释程序
能跑多大的脚本,就由RAM决定了
FLASH中空间的分配
主要是三块区域
系统配置数据、脚本数据和杂项数据
系统配置数据保存一些系统的基本配置,譬如是否需要升级固件、版本号等等
脚本数据则是客户端根据界面输入生成的数据,是F350运行脚本解释程序的必须数据
杂项数据则是包含F350的固件、字库、显示图片等等
四、立项
拍拍脑瓜,觉得可行,开搞
上个DIY叫GameKids
这次活动的项目就叫LogicKids吧
Logo都找好了
整个系统看起来简单
牵涉到客户端、美工、UI
实现起来工作量会比较大
很多功能可能在活动期间无法一一实现
但是至少能够打起整个预设的框架
完成简单的编程下载功能
欢迎各路大神来喷
As top