nanoFramework.Hardware.Esp32 1.6.19

前缀已保留
dotnet add package nanoFramework.Hardware.Esp32 --version 1.6.19                
NuGet\Install-Package nanoFramework.Hardware.Esp32 -Version 1.6.19                
此命令 intended 用来在 Visual Studio 的包管理器控制台内使用,因为它使用了 NuGet 模块的版本 Install-Package.
<PackageReference Include="nanoFramework.Hardware.Esp32" Version="1.6.19" />                
对于支持 包引用 的项目,将此 XML 节点复制到项目文件中以便引用此包。
paket add nanoFramework.Hardware.Esp32 --version 1.6.19                
#r "nuget: nanoFramework.Hardware.Esp32, 1.6.19"                
#r 指令可以用在 F# Interactive 和 Polyglot Notebooks 中。将此复制到交互式工具或脚本的源代码以引用包。
// Install nanoFramework.Hardware.Esp32 as a Cake Addin
#addin nuget:?package=nanoFramework.Hardware.Esp32&version=1.6.19

// Install nanoFramework.Hardware.Esp32 as a Cake Tool
#tool nuget:?package=nanoFramework.Hardware.Esp32&version=1.6.19                

Quality Gate Status Reliability Rating NuGet #yourfirstpr Discord

nanoFramework logo


欢迎使用 .NET nanoFramework nanoFramework.Hardware.Esp32 库仓库

构建状态

组件 构建状态 NuGet 包
nanoFramework.Hardware.Esp32 Build Status NuGet

触控板基础

本节将为您提供有关如何在 ESP32 和 ESP32-S2 上使用触控板引脚的基本要素。

触控板与 GPIO 引脚

触控板引脚的编号与 GPIO 引脚不同。您可以使用以下方式检查哪些 GPIO 引脚对应于哪个 GPIO 引脚:

const int TouchPadNumber = 5;
var pinNum = TouchPad.GetGpioNumberFromTouchNumber(TouchPadNumber);
Console.WriteLine($"Pad {TouchPadNumber} is GPIO{pinNum}");

在 ESP32 和 S2 上,引脚编号不同。ESP32 上有 10 个有效的触控板(0 到 9),而在 S2 上有 13 个(1 到 13)。

在此示例中,触控板 5 在 ESP32 上将对应于 GPIO 12,而在 S2 上将对应于 GPIO 5。

ESP32 基本用法

在 ESP32 上,如果您触摸传感器,则值会变低,因此您必须设置一个低于校准数据的阈值

TouchPad touchpad = new(TouchPadNumber);
Console.WriteLine($"Calibrating touch pad {touchpad.TouchPadNumber}, DO NOT TOUCH it during the process.");
var calib = touchpad.GetCalibrationData();
Console.WriteLine($"calib: {calib} vs Calibration {touchpad.CalibrationData}");
// On ESP32: Setup a threshold, usually 2/3 or 80% is a good value.
touchpad.Threshold = (uint)(touchpad.CalibrationData * 2 / 3);
touchpad.ValueChanged += TouchpadValueChanged;

Thread.Sleep(Timeout.Infinite);

private static void TouchpadValueChanged(object sender, TouchPadEventArgs e)
{
    Console.WriteLine($"Touchpad {e.PadNumber} is {(e.Touched ? "touched" : "not touched")}");
}

S2 基本用法

在S2上,如果您触摸传感器,值将变高,因此您需要设置一个高于校准数据的阈值,并将其触发模式设置为如下

TouchPad touchpad = new(TouchPadNumber);
Console.WriteLine($"Calibrating touch pad {touchpad.TouchPadNumber}, DO NOT TOUCH it during the process.");
var calib = touchpad.GetCalibrationData();
Console.WriteLine($"calib: {calib} vs Calibration {touchpad.CalibrationData}");
// On S2/S3, the actual read values will be higher, so let's use 20% more
TouchPad.TouchTriggerMode = TouchTriggerMode.AboveThreshold;
touchpad.Threshold = (uint)(touchpad.CalibrationData * 1.2);

touchpad.ValueChanged += TouchpadValueChanged;

Thread.Sleep(Timeout.Infinite);

private static void TouchpadValueChanged(object sender, TouchPadEventArgs e)
{
    Console.WriteLine($"Touchpad {e.PadNumber} is {(e.Touched ? "touched" : "not touched")}");
}

其他功能

您还有许多其他功能可供选择,包括过滤器,一些特定去噪功能。您可以在样本仓库中查看更多详情。

睡眠模式

您可以通过触摸唤醒ESP32或ESP32-S2。

ESP32上的睡眠模式

ESP32可以通过1或2个触摸垫唤醒。以下是使用1个触摸垫的方式

Sleep.EnableWakeupByTouchPad(PadForSleep1, thresholdCoefficient: 80);

以及使用2个触摸垫的方式

Sleep.EnableWakeupByTouchPad(PadForSleep1, PadForSleep2);

请注意,系数可以通过进行几次测试来调整,默认值为80,似乎适用于所有情况。该系数表示一个百分比值。

S2上的睡眠模式

S2只能通过1个触摸垫唤醒。建议进行测试以找到最佳系数

Sleep.EnableWakeupByTouchPad(PadForSleep, thresholdCoefficient: 90);

从轻睡眠模式唤醒UART

您可以使用UART唤醒任何受支持的nanoFramework ESP32的轻睡眠模式。以下是一些需要注意的元素

  • 必须正确设置您的串行端口号,以下为COM2

    nanoFramework.Hardware.Esp32.Configuration.SetPinFunction(19, nanoFramework.Hardware.Esp32.DeviceFunction.COM2_TX);
    nanoFramework.Hardware.Esp32.Configuration.SetPinFunction(21, nanoFramework.Hardware.Esp32.DeviceFunction.COM2_RX);
    
  • 支持COM1和COM2。请注意,默认情况下COM1用于调试。除非您已构建自己的版本,否则您可能不必将其用作常规UART。但是,您可以肯定地将其用于唤醒您的板子。在这种情况下,引脚是默认的,并且不需要执行前面的步骤。

  • 为了唤醒板子,您需要设置一个阈值,指定接收引脚(UART的接收引脚)中必须有多少变化。根据文档,您将会丢失一些字符。因此,发送方应在协议中考虑到这一点。

使用方法简单直接

EnableWakeupByUart(WakeUpPort.COM2, 5);
StartLightSleep();

脉冲计数器

脉冲计数器允许在不设置GPIO控制器和事件的情况下计数脉冲。这是在特定时间内获取计数的快速方法。此脉冲计数器还允许使用2个不同的引脚,并根据各自的极性获取脉冲计数值。

单引脚脉冲计数器

以下代码演示了如何设置一个单引脚的计数器

Gpio​PulseCounter counter = new Gpio​PulseCounter(26);
counter.Polarity = GpioPulsePolarity.Rising;
counter.FilterPulses = 0;

counter.Start();
int inc = 0;
GpioPulseCount counterCount;
while (inc++ < 100)
{
    counterCount = counter.Read();
    Console.WriteLine($"{counterCount.RelativeTime}: {counterCount.Count}");
    Thread.Sleep(1000);
}

counter.Stop();
counter.Dispose();

计数器始终是正数且递增的。您可以通过调用《code>Reset函数将计数重置为0

GpioPulseCount pulses = counter.Reset();
// pulses.Count contains the actual count, it is then put to 0 once the function is called

双引脚脉冲计数器

这通常是旋转编码器场景。在这种情况下,您需要2个引脚,并且它们的作用如下所示:

rotary encoder principal

然后您可以使用连接到2个引脚的旋转编码器

rotary encoder

相关的代码与单引脚相同,除了在构造函数中

Gpio​PulseCounter encoder = new Gpio​PulseCounter(12, 14);
encoder.Start();
int incEncod = 0;
GpioPulseCount counterCountEncode;
while (incEncod++ < 100)
{
    counterCountEncode = encoder.Read();
    Console.WriteLine($"{counterCountEncode.RelativeTime}: {counterCountEncode.Count}");
    Thread.Sleep(1000);
}

encoder.Stop();
encoder.Dispose();

结果,您将得到正脉冲和负脉冲

反馈与文档

有关文档,提供反馈、问题以及了解如何贡献,请参阅主仓库

加入我们的Discord社区 这里

致谢

此项目的贡献者名单可在CONTRIBUTORS中找到。

许可协议

nanoFramework类库是按照MIT许可证授权的。

行为准则

本项目采用了贡献者公约中定义的行为准则,以明确我社区中预期的行为。有关更多信息,请参阅.NET基金会行为准则

.NET基金会

本项目由.NET基金会支持。

产品 兼容和额外的计算目标框架版本。
.NET Framework net is compatible. 
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET Standard

NuGet 包 (12)

显示依赖 nanoFramework.Hardware.Esp32 的前 5 个 NuGet 包

下载
nanoFramework.M5Core2

该包包含用于 .NET nanoFramework C# 项目的 nanoFramework.M5Core2 程序集。

nanoFramework.M5StickC

该包包含用于 .NET nanoFramework C# 项目的 nanoFramework.M5StickC 程序集。

nanoFramework.M5Core

该包包含用于 .NET nanoFramework C# 项目的 nanoFramework.M5Core 程序集。

nanoFramework.M5StickCPlus

该包包含用于 .NET nanoFramework C# 项目的 nanoFramework.M5StickCPlus 程序集。

nanoFramework.AtomLite

该包包含用于 .NET nanoFramework C# 项目的 nanoFramework.AtomLite 程序集。

GitHub 仓库 (2)

显示依赖 nanoFramework.Hardware.Esp32 的前 2 个最受欢迎的 GitHub 仓库

仓库 星标
nanoframework/Samples
🍬 nanoFramework 团队用于测试、构想证明和其他探索性活动的代码示例
nanoframework/nanoFramework.IoT.Device
📦 此仓库包含各种传感器、芯片、显示屏、帽子驱动程序的 .NET nanoFramework 实现
版本 下载 最后更新
1.6.19 799 7/19/2024
1.6.18 53 7/19/2024
1.6.15 3,362 5/13/2024
1.6.12 7,938 11/9/2023
1.6.10 133 11/9/2023
1.6.8 4,053 9/4/2023
1.6.3 10,335 3/25/2023
1.6.1 11,352 2/15/2023
1.5.1 10,242 12/28/2022
1.4.8 18,511 10/21/2022
1.4.4 5,564 10/8/2022
1.4.1 36,959 8/3/2022
1.3.6.7 48,641 6/15/2022
1.3.6 80,237 3/28/2022
1.3.5-preview.14 155 3/28/2022
1.3.5-preview.12 136 3/28/2022
1.3.5-preview.10 463 3/17/2022
1.3.5-preview.9 316 3/14/2022
1.3.5-preview.7 727 2/17/2022
1.3.5-preview.6 818 1/28/2022
1.3.5-preview.5 402 1/20/2022
1.3.5-preview.3 516 12/28/2021
1.3.4 1,754 12/2/2021
1.3.4-preview.18 159 12/2/2021
1.3.4-preview.16 165 12/2/2021
1.3.4-preview.14 174 11/30/2021
1.3.4-preview.11 404 11/3/2021
1.3.4-preview.8 561 10/22/2021
1.3.4-preview.7 246 10/20/2021
1.3.4-preview.5 442 10/17/2021
1.3.4-preview.4 399 9/25/2021
1.3.3 1,913 7/16/2021
1.3.3-preview.24 214 7/15/2021
1.3.3-preview.23 199 7/14/2021
1.3.3-preview.22 848 6/19/2021
1.3.3-preview.21 300 6/7/2021
1.3.3-preview.20 243 6/6/2021
1.3.3-preview.19 194 6/4/2021
1.3.3-preview.18 259 6/1/2021
1.3.3-preview.17 241 5/31/2021
1.3.3-preview.16 204 5/31/2021
1.3.3-preview.15 217 5/30/2021
1.3.3-preview.14 281 5/19/2021
1.3.3-preview.13 206 5/19/2021
1.3.3-preview.12 214 5/13/2021
1.3.3-preview.11 211 5/11/2021
1.3.3-preview.10 193 5/11/2021
1.3.3-preview.3 853 3/21/2021
1.3.3-preview.1 577 3/10/2021
1.3.2-preview.26 193 3/8/2021
1.3.2-preview.24 200 3/2/2021
1.3.2-preview.21 827 1/6/2021
1.3.2-preview.19 404 12/29/2020
1.3.2-preview.14 239 12/7/2020
1.3.2-preview.11 358 10/20/2020
1.3.2-preview.9 296 9/30/2020
1.3.2-preview.7 265 9/30/2020
1.3.2-preview.5 266 9/28/2020
1.3.2-preview.1 240 9/24/2020
1.3.1-preview.6 344 7/2/2020
1.3.1-preview.4 273 7/1/2020
1.3.1-preview.2 280 6/16/2020
1.3.0 845 6/16/2020
1.3.0-preview.5 272 6/16/2020
1.2.1 574 6/12/2020
1.2.1-preview.17 264 6/12/2020
1.2.1-preview.15 298 6/11/2020
1.2.1-preview.12 365 5/8/2020
1.2.1-preview.11 284 5/8/2020
1.2.1-preview.10 279 4/27/2020
1.2.1-preview.9 297 4/16/2020
1.2.1-preview.8 269 4/14/2020
1.2.1-preview.7 322 3/15/2020
1.2.1-preview.5 265 3/10/2020
1.2.1-preview.4 255 3/10/2020
1.2.1-preview.3 288 3/9/2020
1.2.1-preview.1 338 2/27/2020
1.2.0-preview.8 413 11/18/2019
1.2.0-preview.7 279 11/7/2019
1.2.0-preview.6 297 11/5/2019
1.2.0-preview.5 288 11/4/2019
1.2.0-preview.4 281 10/23/2019
1.2.0-preview.3 280 10/18/2019
1.1.0 778 10/17/2019
1.1.0-preview.3 267 10/17/2019
1.0.10 613 10/15/2019
1.0.10-preview.31 278 10/15/2019
1.0.10-preview.30 304 10/15/2019
1.0.10-preview.29 293 9/30/2019
1.0.10-preview.21 350 7/18/2019
1.0.10-preview.18 297 7/16/2019
1.0.10-preview.16 365 6/23/2019
1.0.10-preview.9 330 6/20/2019
1.0.10-preview.6 385 6/12/2019
1.0.10-preview.2 329 6/12/2019
1.0.9-preview-003 530 4/24/2019
1.0.9-preview-001 686 4/23/2019
1.0.8 874 2/4/2019
1.0.7 801 1/22/2019
1.0.6-preview-022 559 4/23/2019
1.0.6-preview-017 498 4/7/2019
1.0.6-preview-015 483 4/3/2019
1.0.6-preview-013 506 3/11/2019
1.0.6-preview-009 497 3/10/2019
1.0.5 839 1/3/2019
1.0.2-preview-012 636 11/20/2018
1.0.2-preview-009 633 11/9/2018
1.0.2-preview-004 618 11/8/2018
1.0.0 908 10/17/2018
1.0.0-preview031 653 10/9/2018
1.0.0-preview021 678 9/18/2018
1.0.0-preview020 693 9/18/2018
1.0.0-preview017 676 9/12/2018
1.0.0-preview012 713 8/27/2018
1.0.0-preview009 754 8/9/2018
1.0.0-preview008 886 8/3/2018
1.0.0-preview007 744 7/24/2018
1.0.0-preview004 835 6/16/2018
0.0.0 343 12/27/2022