惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
小众软件
小众软件
V
Visual Studio Blog
T
Tailwind CSS Blog
博客园 - Franky
F
Fortinet All Blogs
D
DataBreaches.Net
Recorded Future
Recorded Future
雷峰网
雷峰网
GbyAI
GbyAI
博客园 - 聂微东
V
V2EX
Security Archives - TechRepublic
Security Archives - TechRepublic
SecWiki News
SecWiki News
N
News and Events Feed by Topic
PCI Perspectives
PCI Perspectives
Help Net Security
Help Net Security
Y
Y Combinator Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
云风的 BLOG
云风的 BLOG
TaoSecurity Blog
TaoSecurity Blog
K
Kaspersky official blog
AI
AI
The Hacker News
The Hacker News
C
Cybersecurity and Infrastructure Security Agency CISA
Project Zero
Project Zero
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
Hacker News: Ask HN
Hacker News: Ask HN
H
Help Net Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
Spread Privacy
Spread Privacy
Blog — PlanetScale
Blog — PlanetScale
宝玉的分享
宝玉的分享
Cyberwarzone
Cyberwarzone
T
Threatpost
C
CERT Recently Published Vulnerability Notes
L
Lohrmann on Cybersecurity
S
SegmentFault 最新的问题
P
Privacy & Cybersecurity Law Blog
S
Securelist
A
About on SuperTechFans
WordPress大学
WordPress大学
G
Google Developers Blog
L
LINUX DO - 热门话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
MicroBlocks 编程案例: 创建 Sphero RVR 代码库
种瓜 · 2022-01-24 · via 夜行人

文章目录

前言

由于科技节项目和 @yinxi 的演示项目都使用到了 Sphero RVR, 于是我想接管 RVR.

CodeLab Adapter 之前已经接入了 RVR (通过蓝牙),windows 下连接蓝牙有时会连不上(跟 RVR 的蓝牙服务本身也有关),体验不好。最近我们都很喜欢 MicroBlocks, 于是我想在 MicroBlocks 里实现 Sphero RVR 驱动.

思路

查看 Sphero RVR 的官方文档, 了解到 Sphero RVR 已经有 MicroPython 驱动MakeCode 驱动了。

于是我打算将 MicroPython 驱动 翻译到 MicroBlocks,然后作为一个库(library) 提交给官方。

阅读 MicroPython 驱动代码,可以发现是通过 UART 来通信。我试着使用 MicroBlocks 的串口积木来实现目标。

困境

结果遇到了困难,在 MicroBlocks 对 micro:bit 编程, 使用串口积木发送的数据,和通过 USB 端口收到的数据(comtool)不一致。 我将问题提交到了 MicroBlocks 项目 issue ,得到 MicroBlocks 几位作者的热心帮助。

热心帮助

从 @Turgut Guneysu 那儿了解到 USB 端口服务于 MicroBlocks IDE 本身的功能(协议细节)。 @John Maloney 提议将 micro:bit V2 的 0/1 pin 用于 UART 引脚,然后直接用引脚接管 RVR(因为树莓派就是这样驱动 RVR 的)。

我采取了 @John Maloney 的建议,顺利在 MicroBlocks 里完成了 Sphero RVR 的驱动。并提了 Pull Request, @John Maloney 说下个 MicroBlocks 版本(Pilot release)会内置我的 RVR 驱动。

意外的是,使用这种方式,比使用 UART over USB 更优!因为不需要反复插拔 USB 来调试,可以一直将板子连在电脑上,实时编程!当然,需要把 RVR 轮子垫高,不然它会跑掉:)

在 MicroBlocks 的下个版本发布之前,如果你想提前使用 Sphero RVR 库,可手动下载: Sphero-RVR.ubl

可以从这里加载自定义的代码库:

硬件连接

硬件连接比较简单,将控制板(我是用的是 micro:bit V2)和 RVR 的 UART 引脚连在一起即可(RX/TX交叉), 可参考以下信息

我将 Sphero RVR 驱动构建为一个 MicroBlocks 代码库(library)

如果你之前用过 MakeCode 或 Scratch,可以把一个 「MicroBlocks 代码库」看作一个 MakeCode/Scratch 扩展(extension)。

但不同在于, MicroBlocks 代码库是在 MicroBlocks 平台上构建的!不需要绕到底层去实现!这是受 Smalltalk 影响产生特质

接入更多硬件

由于接入新硬件工作非常典型(为新的硬件写驱动库),围绕这块我想多写几句。

MicroBlocks 支持主流的硬件协议: I2C、UART、SPI 等 ,所以我们可以把海量硬件接入 MicroBlocks 中。

MicroBlocks 平台还有个非常有趣的特性,大多数驱动是通用的!在无需修改任何代码的情况下,可以运行在多种硬件上!诸如我构建的 Sphero RVR 驱动,不仅可以用于 micro:bit, 也可用于任何已接入 MicroBlocks 且带有 UART 支持的板子。而大多数板子都有 UART 支持!

如果你打算基于这些主流硬件协议,将更多硬件接入到 MicroBlocks,可展开Sphero-RVR.ubl积木块,查看它的定义(无需进入「下层」)。这是在 MicroBlocks 深入学习的极佳方式:

以上代码翻译自 MicroPython 驱动

我在 MicroBlocks 里的大多数技能都是这样学会的,通过理解正在使用的功能块的原理(展开定义)来学习。在同个编程环境中,可以进入到不同的抽象层里学习!这同样源自Smalltalk 的理念:

如果一个系统要为创造精神服务,它必须能被个体完全理解。

小技巧

MicroBlocks 代码的积木形式和文本形式可以精确地双向转化。所以你愿意,也可以使用代码编辑器编辑文本代码。

当我想导出 Sphero-RVR.ubl 时,想调整积木顺序,发现目前积木 IDE 里做不到。我是在文本代码里做的。

演示

我们来看看使用 Sphero RVR 代码库驱动的 demo:

@John Maloney 很喜欢这个演示,把视频转给了 Micro:bit 基金会的 Katie Henry。

Katie loved the video and asks if it would be okay to share it with other at the Micro:bit Foundation and Sphero team. Is that okay? She can cc you if you like. – John Maloney

很开心大家喜欢这些工作 :)

炫耀

@John Maloney 是我最喜欢的计算机科学家之一。

对计算机抱有跟当前领域不同的愿景, 追随 个人计算(Personal Computing) 的理想, 希望成为 Alan Kay、Daniel Ingalls、John Maloney 和 Bret Victor 的后继者 – 种瓜 aboutme

我跟 John 分享了我在 MicroBlocks 上做的更多项目,很开心得到他的认同。

Your videos are really amazing! Are you a teacher? If so, what ages do you teach? Your blog posts are really amazing! – John Maloney

也很开心 @Bernat Romagosa 喜欢「玩给你看」里的所有视频

WOW! I’ve watched all of your videos and I loved them all. – Bernat Romagosa

几年前设计 CodeLab Adapter 时,想法来源之一就是 @Bernat Romagosa 的 S4A 项目

参考