单片机编程的新方法:当单片机遇到 MicroBlocks

MicroPython、microbit、makecode等
最新动态
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

单片机编程的新方法:当单片机遇到 MicroBlocks

#1

帖子 shaoziyang »

翻译整理自:https://makezine.com/2020/07/31/microco ... croblocks/ 

作者简介 凯西·乔里(Kathy Giori)是Mozilla的高级产品经理;她在Arduino、高通公司和各种初创公司推广开源硬件和软件。她拥有明尼苏达大学和斯坦福大学的电气工程学位。 

最新一期(vol 74)的Make magazine的主题是“The Rise of Python”(Python的崛起)

图片

除了python之外它还以 “A New Way to Code Microcontrollers”(单片机编程的一种新方法)介绍了 MicroBlocks。MicroBlocks是一个面向微控制器的开发环境,它不仅对用户友好,而且适合教育。当你编程时,你的代码以增量方式编译、下载并存储在单片机的闪存中,这样即使由电池供电也仍然可以正常运行。这种移植性和自主性使MicroBlocks项目可以用于穿戴产品、放在口袋中或部署到户外收集传感器数据。

图片

MicroBlocks 的创始人 约翰·马洛尼(John Maloney )在Scratch工作了十年。他的合伙人伯纳特·罗马戈萨(Bernat Romagosa)创立了Snap4Arduino,第三关键人 JensMönig 领导了 Snap!的开发,因此MicroBlocks可以使用标准的Web服务和 Snap! 进行通信。

通过“实时”编码来改善学习 

MicroBlocks有什么好玩的?它与 Scratch 和 Snap! 相似,带有命令积木(矩形)和报告积木(圆角矩形),并且可以通过单击执行它们。MicroBlocks的工作方式和它们类似,但是这些命令控制可以通过单片机与物理世界进行交互。您可以单击一个积木来打开LED、电动机或者播放音乐,或者接收来自按钮、温度传感器、加速度计等输入。MicroBlocks 脚本为学生提供了他们所期望的 -- 与生活中的现实世界进行编程交互。 

其他基于积木的物理计算环境(例如Snap4Arduino和Scratch micro:bit扩展)是通过在PC上运行程序并将命令发送到微控制器来支持实时控制的,但是但没有连接计算机时,微控制器什么也做不了。 

使用MicroBlocks,您的代码可直接在微控制器上运行。在您编程时,程序将被增量编译,然后下载并存储在闪存中,因此即使微控制器没有连接计算机并由电池供电,它仍然可以正常工作。这种移植性和自主性使MicroBlocks项目可以用于穿戴产品、放在口袋中或部署到户外收集传感器数据。

图片 图片

图片 图片 

 
当MicroBlocks检测到板卡连接到您的计算机时,它将自动导入对应的库。对于BBC micro:bit,会自动添加两个库:基本传感器和LED显示。当您连接外部组件(例如NeoPixels或距离传感器)时,您可以手动添加库以支持这些组件。上图显示了两个核心类别(输入和引脚),以及基本传感器和LED显示。 

这些库使物理计算非常容易。只需单击几下,即可使用它们: 

图片


对于板外部的传感器和执行器,只需输入与所连接组件关联的引脚号即可。例如,attach buzzer to pin (14) 将连接引脚14到扬声器上播放音乐甚至是歌曲,内置的示例是学生最喜欢的哈利·波特主题曲:

图片

不同类别的积木使用不同颜色,从而更容易区分积木的功能。核心类别包括: 
  • 控制:“when”、条件和循环、延时、广播、注释
  • 运算:数学、表达式、逻辑
  • 变量:创建局部或全局变量,设置或更改它们
  • 数据:列表和字符串函数
  • My Blocks:创建您自己的积木功能。
图片


在这些核心功能之外,其余的积木和库通常与物理计算有关。执行器作为输出,传感器作为输入。可以通过有线和无线方式(包括I2C,SPI,对等无线电,HTTP,Wi-Fi和红外遥控器)进行通信。上面显示了一个有趣的内置示例RadioTexting。

图片

MicroBlocks最酷的功能之一是能够实时绘制数据!它可以让您了解传感器的输出,从而可以创建算法。该图像显示了一个人走路时micro:bit加速度计的数据曲线图。实时绘图使创建“计步”库成为可能。


将微控制器变成物联网设备

我们如何教导下一代创造智能、真正互联的设备?物联网供应商喜欢吹嘘“端到端”安全性,但这意味着来自设备的数据直接进入云端,这将禁用本地网络上设备之间的互操作性。如果互联网接入中断怎么办?或者云提供商倒闭?还有谁可以访问你的数据?

幸运的是,MicroBlocks提供了简单的HTTP库和与Snap!兼容的Web Thing库,以及Mozilla WebThings网关。学生可以很容易地创建自己的物联网设备,使用HTTP作为无处不在的交互操作、控制和监控层。这些免费的开源工具提供了完整的隐私和标准的网络安全,不依赖于大型科技巨头,也不需要申请云订阅许可、输入信用卡或通过共享数据放弃隐私。

查看使用BBC micro:bit、Citilab ED1和WebThings 网关制作的一些简单的Web设备,请参阅下面的“使用MicroBlocks构建Web事物”。


板卡低成本,教育价值高

图片你编程用什么硬件?任何可以运行MicroBlocks虚拟机(VM)。MicroBlocks内置了一些常用的预编译的vm固件,可以通过菜单命令将其安装到微控制器板上。对于不太常见的板卡,可以使用PlatformIO构建和安装VM。支持以下处理器系列中的许多板: 
  • Microchip(Atmel)SAMD21(Arm Cortex M0)
  • Nordic nRF51,nRF52(Arm Cortex M0,M4)
  • 乐鑫 ESP8266,ESP32(Tensilica Xtensa)
这些硬件的其他板卡通常很容易添加。例如,数十个ESP8266板可以运行预编译的NodeMCU VM,尽管有些板的用户LED灯使用不同的引脚。 


部分支持MicroBlocks的芯片和开发板

图片

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 单片机编程的新方法:当单片机遇到 MicroBlocks

#2

帖子 shaoziyang »

MicroBlocks 入门 
  1. 下载适用于Windows、Mac、Linux或Chromebook的MicroBlocks软件,然后按照说明进行操作。
  2. 也可以在基于Chromium内核的浏览器(例如Chrome或Edge)中运行MicroBlocks。需要通过WebSerial API连接到您的电路板,请访问   chrome://flags  并启用“实验性Web平台功能”(Experimental Web Platform Features)标志。(如果WebSerial成为Chrome的标准功能,则不再需要该步骤)。最后在浏览器地址栏输入 microblocks.fun/run/microblocks.html。
  3. 运行 MicroBlocks 后,请参见  microblocks.fun/learn  学习后续步骤。对于教育工作者和创客,该网站提供了优秀的活动卡和指导活动,帮助您入门。
使用MicroBlocks构建Web事物 

网络时钟 — 这是一个连接设备的简单示例。它显示了如何将带Wi-Fi的小型微控制器(例如任何ESP32或ESP8266设备)变成“网络”时钟。 

图片

图片
在Citilab ED1上运行的时钟程序。它每分钟通过服务器同步一次。


接下来的两个示例利用将微控制器板编程为“ Web事物”的优势,可以通过在Raspberry Pi上运行的WebThings网关(或在您的PC上运行Snap! )来对其进行管理。Wi-Fi板与网关进行无线通信。诸如micro:bit之类的不带Wi-Fi的板可以使用MicroBlocks附加组件通过USB串行电缆进行通信。

网关提供了一个复杂的Web界面,使学生数据可以留在教室中 — 无需Internet连接。如果网关连接到Internet,则可以通过HTTPS连接到它,从而进行远程访问和控制。这种“教室中的数据中心”方法使学生和教师可以仅通过Web浏览器从家里或其他任何地方访问Raspberry Pi。想要检测到教室的门被打开了还是检测到了运动?或者计算仓鼠轮的旋转次数?还是要确保鱼缸的温度在正确的范围内?都没问题!

网关的规则引擎可实现Web层的互操作性。各个设备不必彼此了解,它们只是发布自己的属性、操作和事件。您可以将自己制造的设备与在商店购买的设备混合搭配。

Web按钮 — 这个项目显示了如何将BBC micro:bit变成“ Web按钮”。MicroBlocks脚本生成事件,这些事件以WebThings网关接收的JSON字符串进行通信。这样,两个micro:bit板可以使用无线电协议进行通信,因此其中一个是便携式的。用户可以使用网关创建一个简单的规则,“按下”事件触发打开RPi-HAT的8个LED,“双击”事件可以与将其关闭的规则联系在一起。当使用两个通过无线电协议进行通信的micro:bit板卡时,其中之一可以携带并由电池供电。结果,按下任一micro:bit上的按钮A或B将导致“按下”或“双击”事件,这将打开或关闭其他RGB LED。

图片
micro:bit编程为Web按钮,可产生按下、双击和长按的事件,这些事件可用于打开和关闭其他设备。

图片
WebThings网关发现micro:bit作为Web按钮。

图片
与“按下”事件相关的规则将打开RGB LED。

图片
WebThings Gateway Web界面显示按下Web按钮时RGB LED点亮。

图片
远程micro:bit程序使用的按钮按下事件与直接连接到网关的按钮按下事件相同,但是它是便携式的,因此可以用电池供电,并可以放置在教室(或家庭)的任何位置。

图片
连接到网关的micro:bit接收远程micro:bit事件(来自上一个图像中编程的事件),并且当按下自己的按钮时会触发这些相同的事件。

图片
当发生“双击”事件时,规则将关闭RGB LED。

图片

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 单片机编程的新方法:当单片机遇到 MicroBlocks

#3

帖子 shaoziyang »

智能灯 — 最后一个示例利用了广播库,将两个BBC micro:bit板变成了可通过网络控制的“智能灯”。一个通过USB连接到Raspberry Pi网关,另一个通过无线方式(使用无线电库)与其通信。可以使用micro:bit按钮打开或关闭灯,或在网络用户界面上切换“网络灯”图标。

图片
两个micro:bit使用无线电进行通信。其中之一连接到运行Mozilla的WebThings网关的Raspberry Pi,后者可以通过任何Web浏览器进行控制。

图片
WebThings网关会自动发现连接的micro:bit。

图片
单击该图标将使网络指示灯亮起。再次单击该图标将关闭网络灯(micro:bit LED显示屏)。

图片
当网络指示灯“亮”时,micro:bit同步显示


通常,WebThings网关的Web用户界面(在Raspberry Pi上运行)控制micro:bit LED显示屏,作为Web事物的“智能灯”。micro:bit的按钮A也可以打开/关闭灯光。

社区近期将详细介绍在不同开发板上MicroBlocks的用法。
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章