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

推荐订阅源

CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
L
Lohrmann on Cybersecurity
aimingoo的专栏
aimingoo的专栏
V
V2EX
S
Security Affairs
T
Threatpost
C
CXSECURITY Database RSS Feed - CXSecurity.com
IT之家
IT之家
J
Java Code Geeks
The Register - Security
The Register - Security
U
Unit 42
C
CERT Recently Published Vulnerability Notes
月光博客
月光博客
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
The Blog of Author Tim Ferriss
Cisco Talos Blog
Cisco Talos Blog
Project Zero
Project Zero
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
DataBreaches.Net
博客园 - 司徒正美
V
Vulnerabilities – Threatpost
T
Tor Project blog
Security Latest
Security Latest
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
Scott Helme
Scott Helme
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
小众软件
小众软件
L
LangChain Blog
Attack and Defense Labs
Attack and Defense Labs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
P
Palo Alto Networks Blog
A
Arctic Wolf
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 最新话题
MongoDB | Blog
MongoDB | Blog
Webroot Blog
Webroot Blog
H
Hacker News: Front Page
Know Your Adversary
Know Your Adversary
Spread Privacy
Spread Privacy
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观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/ 徒步武功山 积木化编程与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开发笔记 创业二三事 blockly与结对编程
WebUSB与micro:bit
种瓜 · 2018-09-27 · via 夜行人

WebUSB API在简介里说到:

WebUSB API提供了一种将USB设备服务安全地公开给Web的方法。

借此API,硬件制造商将能够为其设备构建跨平台JavaScript SDK。web平台成为调度硬件的一等公民。

硬件设备的困扰

我们从numworks说起,numworks是一个支持绘图的计算器,目标是使学习数学更容易。刷hacker news时偶然发现了这个项目,十分惊艳,numworks支持运行python,它甚至写了个自己的操作系统,这些都是开放的:epsilon

numworksWriting a device updater? Seriously consider WebUSB!中描述了它们为更新设备固件所遇到的麻烦,最终发现webusb是理想选择。

文章里写道numworks的目标是确保他们的设备固件可以轻松升级,为了达到目标,需要满足以下要求:

  • 尽可能跨更多的平台
  • 用户不必为了更新设备而安装特定软件。
  • 尽可能少编写代码。代码越少,错误越少。

webusb完美地满足这些要求.在跨平台方面,webusb适用于各种设备和操作系统(Android,Windows,macOS和Linux),而且是开箱即用的

文章里有不少有趣的部分,诸如作者提到,解决方案之一是使用配有USB-to-HTTP桥接器的Web应用程序(Scratch Link和scratch3-adapter都是这种程序),numworks也使用了一段时间这个选项,但我们最终决定放弃它,原因是

  1. 因为无法为localhost提供有效证书
  2. 分发仍然很痛苦,您仍然可能需要更新网桥

这两个问题其实都有很好的解决方案,问题1,我在已经给出了解决方案:本地https/wss服务与SSL安全证书,问题2的理想解决方案是fbs

numworks的案例很好地给出了选择WebUSB更新固件的理由,WebUSB的应用场景当然远不只是更新固件。下边写出一些WebUSB API中提到的使用场景

使用场景

教育设备

基于Web的软件交付模型适合于教育教育领域,因为它们可以快速加载到任何计算机上,而无需考虑平台兼容性。平台的兼容性在教育领域产生的影响可能远远超出你的预期,尤其是国内。

基于Web的硬件API,允许将设备的支持直接构建到现有的在线课程材料中,从而提供无缝的连接体验。而不会增加实施成本,诸如在每台电脑安装一个客户端软件。

学生可利用在线开发人员工具编写和上传他们的代码,老师可以随时查阅,管理和干预。因为数据都在线上,这就提供了AI介入的可能。

此外学生的作品可以在线分享,可以据此构建在线社区。

当设备可以被接入web,那么我们就可以将大量的web玩法引入到硬件教育中。诸如远程指导,协同编程等等

我相信web bluetooth和webusb是教育领域的未来。

网络驱动程序

Web的可组合性,可能发展出生态系统。

以3D打印机为例,想象一下托管3D模型的网站希望将打印直接集成到他们的页面中。目前,Web支持2D打印(普通打印机),但3D版本还没有API。如果使用WebUSB API将数据从网站发送到其打印机,则站点可以使用这些页面来集成对硬件的支持,就像将嵌入式地图等功能一样,可以添加到许多现有站点中。成为一种通用积木。

设备更新和诊断

虽然蓝牙等无线协议通常是消费级设备的更方便选择,但USB端口不断扩散,因为它们是电源传输的简单解决方案,并且可以在设备不工作时作为最后的连接方式。

设备制造商只要将用户引导到自己的网站上,就可以为用户提供在线诊断。

文档

Google的这篇文档很赞: Access USB Devices on the Web

文档里提到chrome内置的一些调试工具:

  • chrome://device-log
  • chrome://usb-internals

使用webusb与microbit通信

microbit是个为编程教育而生的硬件,对microbit不了解的小伙伴,可以参考我之前的文章:micro:bit使用笔记

microbit官方推荐的两个编程工具:Python Editormakecode近期都将支持webusb,这当然是个明智之举,将进一步降低学习者的门槛。

相关文档在: Beta testing - Web USB

在此,我做个操作纪录.

怎么做

为了让microbit能使用webusb,我们首先需要将它的固件更新到0250,我这里直接给出固件,大家烧录即可。

烧入方式为: 按住microbit背后的复位按钮,然后连上电脑,电脑将出现名为MAINTENANCE的设备,把如下固件:0250_kl26z_microbit_0x8000.hex拖入MAINTENANCE即可。

之后你就可以在线为microbit编程了.

有两点值得一提,其一是烧录的过程比较慢,得10s+。原因是每回都得烧录完整的固件(500K左右)

其二是,你可以在线使用REPL功能,它甚至支持自动补全,REPL的另一个好处是,它提供实时反馈!此外它的速度很快!因为每次只有代码文本在阐述,几个字节而已。

所以我目前在进行的工作是,将REPL的管道分离出来。供在线课程使用。我希望提供即时的反馈,关于理由我之前在两种硬件编程风格的比较论述过。

firialabs是一门microbit的课程,它使用webusb来建立网页与microbit的连接。

注意⚠️

WebUSB已被收录在Chrome 61中,在这之后的版本都可以使用,iOS设备不受支持,由于chrome对XP只支持到49,所以XP无法使用WebUSB。

参考