

将新设备引入 MicroBlocks
source link: http://wwj718.github.io/post/%E7%BC%96%E7%A8%8B/new-device-microblocks-library/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

阅读本文的你可能有这样的需求:你刚在网上买了个新设备,颜色传感器、可编程书包或者 24 路舵机控制板之类的东西。 你在 MicroBlocks 内置的积木库里,怎么也没找到这个新设备的驱动库,可你又想使用 MicroBlocks 对新设备进行编程,怎么办呢?
别着急, 这篇文章正是为你写的。
写驱动库很难吧?
为新设备写驱动库,听起来是一件吓人的事。在大多数硬件编程平台中,你需要进入 “底层” 去工作,这些平台会把用户界面打扮的漂漂亮亮,可等你一旦进入 “底层”,会发现它简直混乱得像你的卧室。
他们将材料一块块胡乱堆在一起,然后用石灰岩做外墙,使其外表光鲜 – Alan Kay 《软件: 艺术,工程,数学还是科学?》
当你在"底层"写驱动,你就不再能够使用之前学到的技能来编程,因为你现在可是在"底层"工作!今天的大多数图形化编程系统都如此,无论是 MakeCode、Scratch、node-red,还是 Mind+、慧编程、Kittenbot…
用户怎么看待这件事呢? 用户似乎应该抱怨这类平台的可扩展性很差,抱怨系统设计者没有能力打造更加一致的系统,抱怨他们根本没有理解终端用户编程的含义…
可用户通常被"底层"开发者教导说,那才是真正的编程。他们好像在说你之前用的东西只是糊弄小孩的玩意儿。这是今天计算机文化相当可悲的一面。 Bret Victor 在 The Future of Programming 里对所谓 “真正的编程” 这种无知和傲慢做了相当辛辣的讽刺。
可生长的系统
一个系统,如果希望随着时间的流逝,帮助用户成长,并且与用户一起成长,它应该认真对待可扩展性和可生长性,它应该支持终端用户轻松扩展它(Hypercard 是这类系统中的典范)。用户社区应该掌控这个系统,而不能指望工作在"底层"的开发者(他们就像垄断"识字"的"神职人员")。
MicroBlocks 正是这样可由用户轻松扩展的可生长系统。在架构设计时,它充分考虑了可生长性和可扩展性。
MicroBlocks 允许你在图形化环境构建驱动库!(另一个拥有强大扩展能力的图形化系统是伯克利的 Snap!)
你不需要进入"底层",在普通用户的编程界面里,就可直接构建新的驱动库,来驱动的新设备。
下面,我们进入操作环节。
具体而言,将新设备引入 MicroBlocks ,可分为以下三步:
- 弄清楚新设备使用的硬件通信协议。
- 在 IDE 创建自定义积木(通常是对通信协议的包装)。
- 将自定义积木移入新创建的库(根据需要分发它)。
接下来,让我们开始逐一讨论。
1. 弄清楚新设备使用的硬件通信协议
如果你购买的新设备有在线文档,通过查阅文档可以快速弄清通信协议。设备厂商通常会开放出主流平台的驱动(诸如 Arduino、MicroPython、JavaScript(MakeCode)), 只需要将这些驱动翻译到 MicroBlocks 中即可。顺便一提,Adafruit 开放了大量优秀的 Arduino/MicroPython 驱动库: Adafruit Github。
以恩孚科技的游戏手柄(Joystick:bit V2)为例。
通过查阅文档, 可以发现它简单使用了模拟信号和数字信号。它的 JavaScript(MakeCode) 驱动在这里
2. 在 IDE 创建自定义积木
弄懂了通信协议,我们就可以在 MicroBlocks IDE 创建自定义积木了。
先在设置中开启 显示高级积木
:
从 文档 和 JavaScript 驱动 可以获知振动马达连接在 Pin 16
接口。
让我们创建一个自定义积木来控制震动马达。
首先点击 IDE 左侧的 我的积木
:
可以看到有两个选项:
- 新建命令积木(输出, 用于控制执行器)
- 新建报告积木(输入,用于从传感器获取数据)
控制震动马达属于第一种。
创建命令积木, 给积木库起一个名字,并且指定它接收的参数(默认为100),这和在 Scratch 中创建自制积木几乎一样。
接下来,让我们参考设备文档和驱动的说明,给积木赋予实际功能:
至此,我们就完成了第一个自定义积木,点击它就可以让你的游戏手柄震动!
在 MicroBlocks IDE 创建自定义积木的好处是,可以复用过去在 MicroBlocks 中的所有经验。也可使用 MicroBlocks 强大的实时调试能力!这带来极大效率提升,更重要的是,整个过程非常有趣,just for fun :-)
同样道理,你可以创建新的自定义积木,来驱动游戏手柄的其他功能。
3. 将自定义积木移入新的库
当你完成驱动新设备所需的自定义积木,可能会想如何分发这些积木给其他用户,就像分发一个软件库。
将自定义积木移入新的库即可。
首先让我们在 IDE 里创建一个新的库(确保你已经开启 显示高级积木
) :
我们给它起名叫 “Joystick”。
我们需要给这个新的库设置一些信息。
填写完库信息后,点击保存。
不同的颜色代表不同类型的设备,游戏手柄通常被视为一种传感器(输入设备),从用户那儿获取输入信息。当然它可能也有输出功能(诸如震动,但这不是它的主要功能)。所以我们选择紫色(输入)。
创建完 “Joystick” 库后,我们就可以把之前创建的自定义积木拖入库中:
完成后,在 “Joystick” 库里就能看到你的积木:
至此,你就为新硬件写完驱动了。
导出驱动库
你可以将驱动库分发给更多用户。 右键点击驱动库,导出为 ubl 文件,把这个文件发给需要的人即可。
如果你获得一个 ubl 文件,想要导入它,只需要将文件直接拖到 IDE 里即可。
更多分发方法
通常你不需要直接分发积木库。如果你的项目中使用到新的驱动库,当你分享你的项目时,驱动库会一并存在于项目文件(udp)和项目 URL 里。
如果你想让驱动库内置在 MicroBlocks 平台里,你可以将它提交给 MicroBlocks 官方仓库(确保你的驱动库是采用英文写的,这样全球用户才能使用它)。
如果你的驱动库,采用中文来写,只打算给中文社区使用,欢迎提交到 中文社区仓库。
如果你想学习更多关于编写驱动库的知识,查看 MicroBlocks 平台内置的驱动库是个好办法。目前已经有很多驱动库内置在 MicroBlocks 里
右键感兴趣的积木,点击``,就可以学习它是怎么做的了:
有些内置的驱动库是我提交的(也列出了它们使用的硬件通信协议):
AI/AILens
Kits and Boards/哪吒扩展板
Kits and Boards/悟空扩展板
- Network/MQTT
- Other/Joystick_bit (本文例子的完整版)
- 数字信号/模拟信号
Robots/酷比特小车
Robots/Sphero-RVR
我对这几个库比较熟悉,如果你在阅读这些积木库的过程中遇到什么疑惑,欢迎与我讨论。
我的博客文章里也记录了一些编写驱动库的经验, 供大家参考。
目前 IDE 支持哪些硬件通信协议
- 数字/模拟信号
这些硬件通信协议足以涵盖主流的绝大多数传感器/执行器。
如果你的新设备,不是采用这些硬件通信协议,那么你可能无法在 IDE 里接入它,如果你不知如何将你的新设备接入到 MicroBlocks,提一个 issue吧,MicroBlocks 团队会给你合适的指引。
如何让 MicroBlocks 支持新的编程主板
MicroBlocks 目前支持 这些主板。
如果你想让 MicroBlocks 支持新的编程主板或芯片模组 ,需要在在虚拟机(VM)层面工作。
Recommend
-
24
一般来说,在处理图形数据时闪存要比 DRAM 慢得多。但现在,麻省理工学院计算机科学和人工智能实验室 (CSAIL) 的研究者们已经设计出了一种由闪存芯片阵列和计算“加速器”组成的新设备,它使用廉价的闪存(和智能手机里用的类型一样),仅需一台个人...
-
37
Android和Google Play的法律总监特里斯坦·奥斯托夫斯基(Tristan Ostrowski)在文章中写道,“谷歌被禁止与
-
11
“机海战术”?荣耀新增7项商标申请,或发布新设备-极果
-
3
微软透露正开发C端 HoloLens 3,新设备将小于90克、使用功率为2W_VR陀螺 微软透露正开发C端 HoloLens 3,新设备将小于90克、使用功率为2W 发布时间:2021-05-17 10:14 | 标签:
-
6
18 April 2021 / 鸿蒙 #鸿蒙 老项目装不上新设备,报错: INSTALL_PARSE_FAILED_USESDK_ERROR 网上下载了一个鸿蒙项目,在本地测试的时候,在...
-
4
苹果春季发布会:新iPhone SE领跑 多款M2新设备亮相 2022年02月10日10:47 CNMO 我有话说(3人参与) 收藏本文 ...
-
3
如何使用水星安防APP添加新设备? MERCURY安防APP可以添加摄像头、录像机来实现本地或远程实时预览和回放,下面介绍APP添加不同新设备的方法。
-
5
FDA批了:告别“捅鼻子”,这款新设备吹气就能测新冠-36氪FDA批了:告别“捅鼻子”,这款新设备吹气就能测新冠硅星人·2022-04-20 00:37而且结果“立等可取”。
-
5
3 分钟出结果!吹气就能测新冠的新设备来了,终于不用捅鼻子喉咙了 新冠肺炎疫情发现至今,已经过去了几年的时间。「狡猾」的病毒在这段时间里还出现了多次变异,让我们防不胜防。时至今日,人类依旧在和病毒抗争,在这当...
-
5
微软警告 Windows 8.1 用户:系统即将停止支持,建议购买 Win11/10 新设备
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK