前言
本文为学习笔记(水平有限,可能有错误的地方),主要记录学习过程常用的东西以及过程中遇到的疑难问题之类的,后续将会把代码上传到Git上。
1、环境搭建
1.1 Windows环境搭建
1.1.1 驱动下载
将ESP32接入电脑后查看设备管理器,如果在COM口未发现有新设备则设备没有安装驱动,需要安装驱动(我使用的是CP210x_VCP_Windows)。如下图所示,安装完成之后则可以查看到COM口(本机是COM3)。
1.1.2 调试工具nanoff安装
1.1.2.1 安装工具
可以选择在控制台或者Windows PowerShell中输入指令行 dotnet tool install -g nanoff 进行安装。
dotnet tool install -g nanoff
1.1.2.2 下载固件到ESP32开发板
如果不知道板子型号(我的板子型号是ESP_WROOM_32)可以直接使用 nanoff --platform esp32 --serialport COM3 --update。如果中途安装失败可以试一试按下板子的ROOT按键。
# 该命令为 将连接到 COM3 的 ESP32 板子的固件更新到最新的可用版本
# nanoff --serialport 端口 --platform 端口 (--target 板子型号) --update
nanoff --platform esp32 --serialport COM3 (--target ESP32_REV3) --update
# 查看板子信息
nanoff --platform esp32 --serialport COM3 --devicedetails
# 刷新指定版本(不同固件引用的 Nuget 包不同,需要保持一致。若不一致,则会出现报错)
nanoff --target ESP32_REV3 --fwversion 1.9.0.1105 --serialport COM3 --update
1.1.3 VS安装扩展NanoFramework
在VS中选择扩展-管理扩展-联机,搜索nanoframework,然后下载,下载完成后关闭VS将进行安装。
1.2 项目创建
1.2.1 新项目创建
打开VS,创建新项目,搜索nano,选择Blank Application进行创建。
1.2.2 调试窗口选择
选择 VS-视图-其他窗口-“Device Explorer”,来打开“设备调试窗口” ,我电脑不知道有啥问题,Device Explorer上面的菜单按钮显示不出来(╮(╯▽╰)╭)。如下图所示,Devices显示出来则说明添加成功,如果没有,可以尝试重新烧录一次固件或者重新插拔一下板子。
1.2.3 Device Explorer菜单栏简介
从左往右依次为
- ping设备
- 设备信息
- 擦除应用部署区域(移除项目应用)
- 网络信息编辑和设置
- 重启设备
- 启动或者关闭设备监听(就是监听设备是否存在)
- 重新搜寻设备信息
- 输出内部错误(VS输出里看到)
- 设置信息
1.3 新程序烧录
1.3.1 注意事项
注:nanoframework的版本一定要和ESP32板子固件的版本一致,不然会烧录失败,这里我之前不知道,调了一个下午才调好(ಥ﹏ಥ)
如下图所示,nanoFramework.CoreLibrary下面target的版本与板子固件的版本(调试栏第二个按钮)的版本需要一致。
1.3.2 烧录
下面的代码为测试代码,作用是按下Boot按钮,此时会有一个灯亮,松开按钮则灯灭。
public class Program
{
private static GpioController s_GpioController;
public static GpioPin led;
public static GpioPin button;
public static void Main()
{
s_GpioController = new GpioController();//初始化GPIO
led = s_GpioController.OpenPin(2, PinMode.Output);//使能灯
button = s_GpioController.OpenPin(Gpio.IO00, PinMode.Input);//boot按键 使能
button.ValueChanged += Button_ValueChanged; //检测按钮变化
//增加一个循环,不让流程退出
while (true) { Thread.Sleep(1000); }
// Browse our samples repository: https://github.com/nanoframework/samples
// Check our documentation online: https://docs.nanoframework.net/
// Join our lively Discord community: https://discord.gg/gCyBu8T
}
private static void Button_ValueChanged(object sender, PinValueChangedEventArgs e)
{
Debug.WriteLine("按键事件 : " + e.ChangeType.ToString());
Debug.WriteLine("按键当前值: " + button.Read());
if (e.ChangeType != PinEventTypes.Rising)
{
//按下点亮灯
led.Write(PinValue.High);
}
else
{
//松开手灯灭
led.Write(PinValue.Low);
}
}
}
下图的输出栏中未报错则说明程序烧录成功,此时按下板子的Boot可以看到有蓝灯亮起,松开则灭掉,效果图就不展示了。
2、引用
本文部分引用于 执笔小白 博客꧁༺执笔小白༺꧂https://www.cnblogs.com/qq2806933146xiaobai NanoFramework接口可查看官方网站