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

推荐订阅源

L
LINUX DO - 最新话题
G
Google Developers Blog
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
F
Full Disclosure
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Vercel News
Vercel News
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
Help Net Security
Help Net Security
The Hacker News
The Hacker News
IT之家
IT之家
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
L
Lohrmann on Cybersecurity
C
CERT Recently Published Vulnerability Notes
V
Visual Studio Blog
博客园 - 聂微东
Hacker News: Ask HN
Hacker News: Ask HN
H
Hacker News: Front Page
Know Your Adversary
Know Your Adversary
Security Latest
Security Latest
Security Archives - TechRepublic
Security Archives - TechRepublic
Simon Willison's Weblog
Simon Willison's Weblog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Last Week in AI
Last Week in AI
Schneier on Security
Schneier on Security
N
News and Events Feed by Topic
博客园 - 【当耐特】
有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
Blog — PlanetScale
Blog — PlanetScale
博客园_首页
Google DeepMind News
Google DeepMind News
Cloudbric
Cloudbric
N
News | PayPal Newsroom
A
About on SuperTechFans
S
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hugging Face - Blog
Hugging Face - Blog
M
MIT News - Artificial intelligence
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
雷峰网
雷峰网
T
The Exploit Database - CXSecurity.com
罗磊的独立博客
K
Kaspersky official blog
The Cloudflare Blog
I
Intezer

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观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 编程案例: 扩展 OctoStudio 库
种瓜 · 2024-01-14 · via 夜行人

文章目录

前言

更新(2024-07-31): 最新版本已经内置了通用的 BLE Radio 库

前几天, @yinxi 问我 MicroBlocks 团队何时推出 BLE radio 库。 他想要使用 BLE radio 构建手柄和受控小车项目。相比于 wifi radio, BLE radio 功耗更低(手柄和小车因此会有更长的续航时间)而且可以带到户外去玩。

BLE radio 基于这样一种想法: 它像 micro:bit radio, 在无需配对的情况下, 两个板子之间广播消息来达成通信的目的。 BLE radio 与 micro:bit radio 的不同之处在于, 它支持任何有蓝牙的板子之间的通信, 即使它们采用不同的芯片。

John Maloney 之前在邮件里与我讨论了关于 BLE radio 的构想:

在 CodeLab 群里, 有用户发现 OctoStudio 库不仅可支持手机(安装 OctoStudio 软件) 与板子的通信, 也可支持两个板子之间的通信, 就像一个弱化版本的 BLE radio 。

OctoStudio 目前只支持 5 种不同的消息信号, 这是 MIT 团队出于易用性考虑刻意做出的设计,而不是因为技术限制。 这对于映射手柄的按钮来说,信号类型太少了。

通过 hack OctoStudio 库, 我们可以将信号数量扩展到 10 个, 这对于映射手柄上的按钮通常是足够的。

在 MicroBlocks 中编程的乐趣之一就是, 你不仅可以在积木层面理解系统的工作方式,而且可以随意扩展它 !

Hack

只需 hack 两处即可, 其一是下拉菜单,其二是 _OctoInit :

从这里开始 OctoStudio-Demo-hack

进一步

@yinxi 还提出"多个手柄遥控不同的车"的问题, micro:bit radio 通过不同的 “广播分组” 解决这个问题。John 规划中的 BLE radio 也支持广播分组。

OctoStudio 目前还支持广播分组, 如果我们愿意的话,我们可以进一步扩展 OctoStudio 库来支持广播分组。但需要修改 vm 中代码, 关键的代码是 shape_id = deviceName.back() - ‘0’;

我们可以将广播消息的倒数第二个数字用作"分组标识"(从 0 到 9 一共也是 10 组)

目前的 OctoStudio 广播机制有 8 个字符位置是可用的, 可扩展性很不错,即使仅使用数字(10)和大小写字母(26x2),它也允许我们传递 218340105584896 种不同的信号(10+26x2 的 8 次方).

但考虑到 MIT 团队没有公开 OctoStudio 广播消息的协议细节, 并且无法知道它在未来会如何变化, John 决定在 MicroBlocks 中, 我们实现自己的 BLE radio 协议。

Simple BLE Radio

在正式开始构建 BLE Radio 之前, 我打算先按照上边的思路构建一个简单的版本。

支持最多 99 个消息通道, 以及最多 6 个字符作为广播消息。

这是示例项目


提醒 : 最新版本的 MicroBlocks(1.2.54) 已经支持 Simple BLE Radio (刷入标准固件即可)。 这是 MicroBlocks 的开发方式: 试验性的新功能会通过特定固件推出,供爱好者尝鲜。一旦稳定下来,就努力合并到默认固件里,以开箱可用的易用性提供给所有人.