Snap4Arduino 介绍

Posted by Peter on April 26, 2026

Arduino 的低代码编程 与 Snap4Arduino

低代码编程

寒流!

Snap4Arduino将低代码编程的力量带入Arduino硬件环境。

Scratch 来自麻省理工学院,是一个最初为年轻程序员设计的图形化编码环境。Scratch 与许多树莓派版本捆绑在一起,允许你创建数字故事、游戏和动画,并与树莓派的通用输入输出(GPIO)引脚通信。也有一些选项可以将 Scratch 与 Arduino 模块结合使用,但大多数实现都有一定限制。

Snap!由加州大学伯克利分校创建,是Scratch的扩展实现。Snap!与Scratch的主要区别在于Snap!拥有丰富的技术库。其中一些Snap!库包括数据库和SQL接口、图形趋势、矩阵操作、MQTT(物联网标准消息协议)以及神经网络建模。这些额外的库和其他高级功能使Snap!不仅仅是一个教学工具,更准备好作为物联网解决方案的低代码替代方案。

图形化的低代码模型在物联网环境中非常有用,因为经验较少的程序员有时被迫适应不熟悉硬件的独特特性。Snap4Arduino版本的Snap!提供了一套独特的库,可以在用户无需任何Arduino知识或软件的情况下上传和配置Arduino模块。

你可以从网页运行Snap4Arduino,也可以作为独立的Linux、macOS或Windows应用运行。在本文中,我将向你展示三个项目,帮助你开始使用Snap4Arduino。第一个项目允许用户调整Neopixel阵列上的颜色。第二个项目创建动态条形图,显示来自DHT11传感器的温度和湿度值。最后一个项目使用SciSnap!库以实时线图显示传感器数据,然后将结果保存到CSV文件中。

入门指南

Snap4Arduino与微控制器模块之间的USB/串口通信通过Firmata协议实现。Firmata是一种为支持微控制器与计算机系统通信而设计的协议。在项目设计阶段,用户可以选择想在Arduino模块上安装哪种Firmata配置。

Snap4Arduino项目提供了一个在线网页界面要获得完整功能,你需要安装Chrome/Chromium插件。

也有适用于32位和64位GNU/Linux系统的桌面版本。需要注意的是,在桌面和网页版之间切换时可能存在兼容性问题,因此最好坚持使用一个版本。

启动 Snap4Arduino 网页或桌面应用后,点击左上角的 A 图标(图 1)即可进入参考手册。Snap4Arduino 界面有三个主要区域。左侧面板包含一个调色板区域,包含块块。这些块根据功能被分组并用颜色编码在一起。中央面板是脚本区,逻辑通过向下拖拽块块来创建。右上角面板是舞台区域,显示脚本运行时的视觉输出。

图1

1
              图1:Snap!Snap4Arduino界面中提供了帮助

任何项目的第一步都是将所需的 Firmata 配置加载到 Arduino 模块上(见图 2)。Snap4Arduino 接口支持 Arduino UNO 和 Mega 兼容模块进行上传。在加载 Firmata 配置的同时,你还需要在设置下拉菜单中启用 JavaScript 扩展扩展模块。(注:支持其他模块如 Nano、Leonardo、Micro、Due、NodeMCU 等,但你需要通过 Arduino IDE 手动安装 Firmata。)

fig2_upload.tif
图2:将Firmata固件上传到Arduino UNO模块。

为了证明通信正常,你可以创建一个测试脚本,闪烁模块的板载LED(引脚13)。图3展示了闪烁示例。该脚本使用四个区块(橙色)和三个区块(浅蓝色)。通过点击连接按钮,然后选择端口来实现通信。(对于大多数Linux系统,端口为 。)ControlArduinoArduino/dev/ttyACM0

fig3_blink.tif
图3:UNO板载LED的闪烁脚本。

该测试脚本使用一个块来循环四次,并设置为开关引脚13。块时启用时间延迟。fordigital pinwait

新像素计划

Neopixel 是可单独寻址的 RGB 彩色像素阵列,分为条带、环形和矩形网格。根据之前的测试脚本,Arduino 模块已加载 Neopixel firmata 固件。下一步是将 Neopixel 库导入 Snap4Arduino 项目(见图 4)。

fig4_NeoPixel_Lib.tif
图4:将Neopixel库导入Snap4Arduino项目。

在这个项目中,我使用了一个24-LED的Neopixel环(见图5),不过你也可以使用任何类型的Neopixel阵列。鳄鱼夹用于连接5V、GND和数据引脚(引脚6)。我本项目的目标是让用户在红色LED环绕环绕时调整LED的背景色。脚本逻辑(图6)从设置Arduino连接端口开始,并在数据引脚6上定义24个Neopixel LED。定义了四个变量:引脚、红色、绿色蓝色。在右侧舞台面板上,颜色变量通过用户可调节的滑块定义。

fig5_neo_setup.tif
图5:Neopixel项目的准备。
fig6_Neo_logic.tif
图6:Neopixel项目脚本。

两个环嵌入一个环内。内环将所有LED设置为颜色变量(红、绿、蓝)滑块的值。外环每0.5秒将红色LED绕圈移动一次。脚本运行时,变量会显示红色环绕LED的位置。forforeverforforpin

在 Snap4Arduino 屏幕右上角有三个图标,分别用于启动(绿色旗帜)、暂停和停止脚本运行。你也可以通过点击逻辑块顶部来启动脚本。when green flag clicked

DHT11温度与湿度传感器项目

DHT11传感器可以通过扩展板连接,也可以通过手动接线到Arduino引脚。注意,Firmata固件将DHT11数据引脚设置为第4引脚。

测试时我使用了兼容TdR-STEAM的主板(见图7)。这些扩展板价格相对便宜(~12美元),配备双色LED、Neopixel LED、蜂鸣器、光传感器、DHT11传感器和两个输入按钮。

fig7_Hy-M302.tif
图7:兼容TdR-STEAM的扩展板。

该项目使用不同的Firmata配置,因此Arduino固件需要重新上传(推荐的)FirmataSA5音调固件。

接下来,Snap4Arduino 要求你导入两个库(见图8),分别是条形图库和 TdR STEAM v2 库。条形图库期望数据存在表格或 CSV 文件中。表格可以在 Snap! 中创建,通过将变量设为列表列表。

fig8_dht_import.tif
图8:导入DHT11传感器项目的条形图和TdR STEAM库。

变量可以通过使用三个块和一个块(见图9)来生成2x2的表格。该块(位于部分)会传递变量,并附带x-y坐标、宽度和高度值。Readingslistsetplot bar chartReadings

fig9_readings.tif
图9:在Snap!中创建静态条形图。

当这三个模块运行完毕后,阶段会显示变量已更新表格信息,并会出现一个灰色静态柱状图。最后一步是让条形图与DHT11传感器数据动态化。为此我创建了两个额外变量,和,并将变量放置在条形图阶段周围(见图10)。ReadingshumiditytempC

fig10_dht_bar.tif
图10:显示DHT11传感器数据。

这两个新变量通过使用块读取和块来更新传感器数据。图表颜色由块定义。在绘制新的条形图之前,需要先绘制一个块。setTdR temperatureTdR humidityset pen colorclear

当最终脚本运行时,柱状图和变量每五秒刷新一次新的传感器数据。一些不错的未来功能可以包括在图表中添加时间值,或在C度和F之间切换。

在下一个项目中,我会研究如何将传感器数据保存到CSV文件中。

科学快拍!图书馆

在开始最终项目之前,了解一下SciSnap!的背景是很有价值的。图书馆。这个软件包和其他图书馆一样是导入的,并且提供了大量额外的模块,这些模块被归入九个额外类别。

图11展示了SciSnap库的强大性能。这个示例允许用户从本地系统中选择CSV文件。数据随后显示在表格中,第2列的最大值作为独立变量显示。整个脚本只需四个模块!

277_123RF_21459386_nenovbrothers_Legos.tif
图11:打开用户选择的CSV文件并显示最大值。

在项目中使用该库时,你需要先调用一个块,才能使用其任何库块。这个示例使用了分组。块配置为使用文件选择器选项来选择CSV文件并将数据插入预定义变量。start SciSnapData toolsimportSciSnap!Data

为了显示最大数据值,a嵌入在块中,结果在变量中设置。(注:第1行为标题,第2行为最大值。)sortselect rowMax_Value

搜索功能

生日气象 从CSV文件中发先某年月日(可以是生日哟)的气象数据。 SciSnap!库支持大量高级功能,如图像处理、SQL工具、表格和矢量管理以及神经网络。在期末项目中,我将使用 SciSnap!以显示线图上的动态更新。

实时图项目

你可以在最终项目中使用任何传感器输入。我用了TdR光传感器,配合手电筒生成一些峰值值。开始的第一步是将SciSnap!TdR STEAM库导入到Snap4Arduino中。

图12展示了包含60个光传感器数据点的线图完整脚本和结果。脚本逻辑以a和一个块开始。块构建一个两列的采样数表和变量中的传感器读数。connect arduinostart SciSnapadd rowSciSnap!Data

fig12_light_sensor.tif
图12:传感器数据的脚本和实时图。

数据图是通过分组创建的。该块定义图表的大小和位置。它设定图的x-y比例尺。(注意,随着新增实时数据的加入,图会动态增长。)块定义标题和x-y标签。块创建均匀采样数据的折线图。最后,显示完整的标签和轴描述。PlotPad for data plotsconfigure as a PlotPadset PlotPad rangesset PlotPad labelsadd dataplot of mixed dataadd axes and scales to PlotPad

循环完成后,采样数据会写入CSV文件(),并会有消息框提醒用户脚本已完成。要保存数据图副本,右键点击舞台并选择图片forlightdata.csv

该项目使用了一个数据值,但也可以使用 SciSnap!来处理多个传感器值,并绘制带有线性回归的 X-Y 图。

摘要

低代码编程技术让新手用户更容易上手编程,而Snap4Arduino则负责Arduino细节,为新用户提供了一个理想的入门点,快速连接并玩弄Arduino模块和简单传感器。

我发现,当我在不同的 Arduino 模块和项目之间切换时,有时不得不重启 Snap4Arduino 应用程序或网页。对于寻求更复杂功能的用户,SciSnap!库提供了丰富的功能。

作者:

皮特·梅特卡夫

皮特·梅特卡夫是一名退休自动化工程师,喜欢在Linux和微控制器项目上做各种尝试。当皮特不玩科技时,他喜欢户外徒步和水上运动。

摘自:皮特·梅特卡夫