跳转到内容

Scratch可视化编程入门

本节介绍ESP32的可视化(积木式)编程工具。通过本节学习,你将能够:

  • 识别支持ESP32的主要可视化编程平台
  • 为ESP32设置积木式编程环境
  • 使用类似Scratch的积木块编程ESP32
  • 就可视化编程选项向教育类买家提供建议
  • 基本熟悉Scratch或其他积木式编程界面
  • ESP32开发板

可视化编程降低了ESP32开发的门槛。用户无需编写C++语法,而是拖放逻辑积木块。这种方法特别适用于:

  • K-12教育:学生学习编程逻辑(循环、条件、变量)而无需为语法困扰
  • 快速原型:无需编写代码即可快速测试硬件想法
  • 非开发者受众:产品经理、设计师和教育工作者需要了解ESP32能力
  • 工作坊设置:短时间的课程中重点在硬件交互而非编码

mBlock(Makeblock)

最成熟的基于Scratch的ESP32平台。

  • 基于:Scratch 3.0
  • 平台:桌面(Windows/macOS)和Web
  • ESP32支持:通过”mBuild”生态系统或通用ESP32原生支持
  • 特性
    • 拖放积木块生成Arduino C++代码
    • 可在积木视图和代码视图间切换
    • 内置串行监视器
    • 直接上传到ESP32
    • 支持Wi-Fi和MQTT积木块
  • 最适合:课堂教学、K-12 STEM项目

Mixly(北师大/中国)

在中国STEM教育中广泛使用的可视化编程工具。

  • 基于:Google Blockly
  • 平台:桌面(Windows/macOS/Linux)
  • ESP32支持:支持,带有开发板包
  • 特性
    • 生成Arduino C++代码
    • 支持大多数常见传感器和执行器
    • 中英文界面
    • 轻量级安装(~100 MB)
  • 最适合:中国教育市场、预算有限的课堂

ArduBlock

一个较老但仍可运行的积木编程插件,用于Arduino IDE。

  • 基于:OpenBlocks
  • 平台:Arduino IDE插件(基于Java)
  • ESP32支持:通过Arduino IDE的ESP32核心
  • 特性
    • 在Arduino IDE内部运行
    • 生成标准Arduino代码
    • 非常简单的界面(积木块比mBlock少)
  • 最适合:在Arduino IDE内从积木过渡到文本编程

Arduino PLC IDE(可视化编程)

Arduino官方用于工业应用的可视化编程环境。

  • 平台:桌面
  • ESP32支持:通过Arduino Portenta(非标准ESP32)
  • 注意:不推荐用于标准ESP32教育
  1. mblock.makeblock.com 下载mBlock
  2. 安装桌面应用程序
  3. 启动mBlock
  4. 进入 Devices 标签并添加新设备
  5. 搜索”Arduino”或”ESP32”
  6. 选择适当的开发板(如”Arduino Uno”——mBlock将其用作通用代码生成器)
  7. 通过USB连接ESP32

注意:mBlock生成Arduino C++代码。编译后的代码通过标准Arduino上传过程上传到ESP32。你需要安装ESP32 Arduino Core(见01-04)。

  1. Events 类别中拖出”when Arduino starts”积木块
  2. Pins 类别中拖出”set pin 13 to HIGH”积木块
  3. Control 类别中拖出”wait 1 seconds”积木块
  4. Pins 类别中拖出”set pin 13 to LOW”积木块
  5. Control 类别中拖出”wait 1 seconds”积木块
  6. 在第2-5步周围添加”forever”循环积木块

积木块排列

when Arduino starts
forever
set pin 13 to HIGH
wait 1 seconds
set pin 13 to LOW
wait 1 seconds
  1. 点击 Upload 编译并上传到ESP32
  2. 观察内置LED(大多数ESP32 DevKit上为GPIO 2)闪烁
  1. 将DHT11/DHT22传感器连接到ESP32:
    • VCC → 3.3V
    • DATA → GPIO 4
    • GND → GND
  2. 在mBlock中,从扩展菜单添加”DHT11”扩展
  3. 使用”read temperature from DHT11 pin 4”积木块
  4. 使用”read humidity from DHT11 pin 4”积木块
  5. 使用”say”积木块或发送到Serial显示值

积木块排列

when Arduino starts
forever
set variable temperature to (read temperature from DHT11 pin 4)
set variable humidity to (read humidity from DHT11 pin 4)
Serial print (join "Temp: " temperature)
Serial print (join " Humidity: " humidity)
Serial print newline
wait 5 seconds

在mBlock中,切换到 Code View(代码视图)查看积木块生成的Arduino C++代码:

#include <Arduino.h>
#include <DHT.h>
DHT dht(4, DHT11);
float temperature = 0;
float humidity = 0;
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(13, OUTPUT);
}
void loop() {
temperature = dht.readTemperature();
humidity = dht.readHumidity();
Serial.print("Temp: ");
Serial.print(temperature);
Serial.print(" Humidity: ");
Serial.print(humidity);
Serial.println();
delay(5000);
}

这是一个强大的学习功能:学生可以看到他们的可视化积木块如何转化为真实的C++代码,建立通往文本编程的桥梁。

  • mBlock(或所选工具)成功安装并检测到ESP32
  • 闪烁程序上传并正确执行
  • 传感器读取程序在串行监视器中显示正确的值
  • 可以查看和理解生成的C++代码
  • 可以在积木视图和代码视图之间切换

原因

  • USB驱动未安装
  • 选择了错误的端口
  • mBlock Arduino连接器未激活

解决方案

  1. 安装CP2102或CH340驱动
  2. 在mBlock中进入 Connect 并选择正确的USB端口
  3. 安装驱动后重启mBlock

原因

  • 后台Arduino IDE中未安装ESP32开发板包
  • 编译时选择了错误的开发板

解决方案

  1. 先在Arduino IDE中手动安装ESP32开发板支持
  2. 在mBlock中验证上传设置指向正确的开发板
  3. 通过Arduino IDE手动上传导出的.ino文件

原因

  • 扩展未安装
  • 可视化工具不支持该传感器

解决方案

  1. 检查是否存在传感器的扩展
  2. 使用”自定义积木块”功能编写简单的Arduino代码片段
  3. 对于不支持的传感器,切换到Arduino IDE或PlatformIO
  • 积木视图用于逻辑学习,代码视图用于语法过渡:可视化工具最大的优势是展示积木块和代码之间的联系
  • K-12教育从mBlock开始:它对ESP32支持最好、积木库最大、课堂资源最多
  • 将可视化编程限制在入门内容:学生理解逻辑概念后(通常4-8次课后)应过渡到文本编程
  • 结合物理计算:可视化编程在连接真实LED、传感器和电机时最具吸引力
  • 用于售前演示:可视化编程是向非技术买家展示ESP32工作方式而不展示代码的绝佳方式
  1. 可视化编程工具(mBlock、Mixly、ArduBlock)无需编写C++代码即可编程ESP32
  2. mBlock是最全面的选择,通过扩展支持Wi-Fi、MQTT和常见传感器
  3. 可视化工具生成标准的Arduino C++代码——学生可以看到积木块背后的代码
  4. 最适合K-12教育、快速原型设计和非开发者受众
  5. 可视化编程应作为通往文本编程的阶梯(Arduino IDE或PlatformIO)