一.背景
Mind+,全名Mindplus,诞生于2013年,是一款拥有自主知识产权的国产青少年编程软件,集成各种主流主控板及上百种开源硬件,支持人工智能(AI)与物联网(IoT)功能,既可以拖动图形化积木编程,可以使用Python/C/C++等高级编程语言。该软件由DFRobot旗下子品牌蘑菇云创客教育发布,用户只需要拖动图形化程序块即可完成编程,还可以自动转换Python/C/C++等高级编程语言,适用于校内的大班教学、项目创作、创客比赛等场景,同时能满足学生校外进行创意编程与项目创造的需求。
二.下载模板库
官方模板库:https://gitee.com/dfrobot/ext-oled12864
下载完后解压得到一个文件夹,删除其中的后缀为mpext文件,修改文件夹名字为:ext-MpythonBT,英文数字或下划线,不要用中文和特殊符号
三.修改config.json
1.删除其中files字段部分代码
2.修改name和description对应字段,英文部分可以谷歌翻译
3.修改author(作者)和email(邮箱)为自己的
4.修改id为这个扩展库唯一标识,英文数字或下划线,不要用中文和特殊符号,最好与文件夹后的名字相同
5.version为版本号,可以改成0.0.1,以后每次修改代码数字逐渐升级
6.board填写支持的板子,无法测试的不要写
7.其他部分不用动,保存。
8.具体字段描述见api列表。
{
"name": {
"zh-cn": "掌控板蓝牙",
"en": "MpythonBT"
},
"description": {
"zh-cn": "掌控板的蓝牙功能",
"en": "MpythonBT"
},
"auther": "heweijing",
"email": "1366703561@qq.com",
"license": "MIT",
"isBoard": false,
"id": "MpythonBT",
"platform": [
"win"
],
"asset": {
"arduinoC": {
"dir": "arduinoC/",
"version": "0.0.1",
"board": [
"esp32"
],
"main": "main.ts"
}
}
}
四.修改资源文件
1._images
删除_images中的所有文件
将一张600x372像素的照片放到文件夹中,命名为featured.png
在iconfont(https://www.iconfont.cn/)搜索找到合适的图片,点击SVG下载,保存到文件夹中,命名为icon.png
2.libraries
arduino库,即包含.h和.cpp文件时,需要放到此文件夹中。
3._locales
此文件夹放置翻译文件
4._menus
此文件夹放置下拉菜单文件,例如引脚编号的下拉,默认放置了所有主控器的常见引脚,可以直接在main.ts中调用
五.编写main.ts文件
积木颜色如果需要修改可以用取色板工具取色后修改
namespace名字修改为与id相同
修改block字段设置积木文字和下拉菜单,blocktype设置积木形状
shadow配置下拉菜单 配置menu文件 如果需要翻译可以修改zh-cn文件
配置block函数内容
//% color="#AA278D" iconWidth=50 iconHeight=40
namespace MpythonBT {
//% block="MpythonBT init name [NAME]" blockType="command"
//% NAME.shadow="string" NAME.defl="ESP32BT"
export function MpythonBTInit(parameter: any, block: any) {
let name=parameter.NAME.code;
console.log(name);
Generator.addInclude('MpythonBTInitinclude', '#include "BluetoothSerial.h"');
Generator.addObject("MpythonBTInitobject", "BluetoothSerial", "SerialBT");
Generator.addSetup("MpythonBTInitsetup", `SerialBT.begin(${name});`);
}
//% block="MpythonBT available" blockType="boolean"
export function MpythonBTAvailable(parameter: any, block: any) {
Generator.addCode(["SerialBT.available()",Generator.ORDER_UNARY_POSTFIX]);
}
//% block="MpythonBT read " blockType="reporter"
export function MpythonBTRead(parameter: any, block: any) {
Generator.addCode(["SerialBT.read()",Generator.ORDER_UNARY_POSTFIX]);
}
//% block="MpythonBT write [STR]" blockType="command"
//% STR.shadow="number" STR.defl="1"
export function MpythonBTWrite(parameter: any, block: any) {
let str = parameter.STR.code;
Generator.addCode(`SerialBT.write(${str});`);
}
}
六.效果
此时可以打开Mind+,切换到上传模式,打开扩展,选择掌控板,然后选择刚刚修改好的config.json文件,查看效果:
可以看到已经有调试标志以及快捷刷新按钮了。
七测试
编写一个简单的代码,并检查生成的代码是否正确
代码上传之后,我们手机上下载一个蓝牙串口助手(SSP),并且打开手机蓝牙,打开下载好的蓝牙串口助手,连接名称为"hhh"的蓝牙。我们在蓝牙串口助手聊天界面发送123,打开mind+串口,收到49 50 51(ASCII码类型的123,通过工具设置发送数据格式)。然后我们按下掌控板A键,在手机端收到0x01(16进制数,通过首选项设置数据格式的接收十六进制数据)。
八.导出分享
测试完成之后,在扩展库上右键选择导出,稍等即可导出完成。
此时可以查看库文件目录下有一个.mpext文件,此文件直接加载即可,此时没有调试模式的标志。
八**.结论**
经过此次实验,我懂得了如何加载Mind+第三方用户库,但不可避免的是实验过程中出现了许多问题,比如无法成功编写main.ts文件,无法成功测试等问题,但经过排查代码编写和硬件的连接,终于成功完成了此次实验。