一、ESP32 与 STM32 的使用场景

简单说一下这两类芯片的定位:ESP32 集成 Wi-Fi/蓝牙,开发快、性价比高,是智能家居、物联网项目的热门选择;STM32 则以丰富的外设、强大的实时响应和工业级稳定性著称,在工业控制、汽车电子等领域占据主流。两者侧重不同,但都能用 PicoServer.Nano 快速提供 Web 能力。


二、快速开始:在 ESP32 上跑一个 Web API

1. 烧录 nanoFramework 固件

nanoff --target ESP32_S3_ALL --serialport COM5 --update --masserase

2. 添加 NuGet 包

dotnet add package PicoServer.Nano

3. 写代码

using PicoServer.Nano;
using System.Net;

var server = new WebAPIServer();
server.AddRoute("/hello", (req, res) => res.Write("Hello from MCU!"), "GET");
server.StartServer();
Console.WriteLine($"服务器已启动: http://{server.GetIPAddress()}/");

编译、部署/运行,浏览器访问 http://<设备IP>/hello 即可看到响应。


三、静态文件托管

一行代码托管整个文件夹:

server.AddStaticFiles("/web", "I:\\www", maxAge: 3600);

访问 http://设备IP/web/index.html 即可看到网页。


四、性能实测

测试平台:ESP32-S3 N16R8,局域网 WiFi

# 6 并发短时压力测试命令
hey -n 50 -c 6 http://192.168.2.67
配置 稳定并发 QPS 平均延迟 成功率
无 PSRAM 6 ~8 ~220ms 100%
有 PSRAM 6 ~26 ~210ms 100%

启用 PSRAM 后 QPS 提升明显。STM32 配合以太网或硬件协议栈,预期性能更高。并发建议控制在 6 以内,过高会导致底层 lwIP 协议栈丢包。


五、一致的 C# 开发体验

PicoServer 在 Windows/Linux/macOS/iOS/Android 上:

server.AddRoute("/hello", async (req, res) => await res.WriteAsync("Hello"));

PicoServer.Nano 在 ESP32/STM32 上:

server.AddRoute("/hello", (req, res) => res.Write("Hello"));

几乎是一套 API,让桌面端、云端、嵌入式微控制器拥有一致的 Web 开发体验。


六、注意事项

  1. 路径格式:nanoFramework 中使用反斜杠 \,如 "I:\\www"
  2. 静态文件托管:文件需部署到设备(生成操作设为"内容")中间件是按顺序执行的,最好是第一个添加
  3. 白名单:路由加入白名单可跳过认证
  4. 长连接WriteChunk 推送结束后必须调用 res.Close()

七、资源链接

更多推荐