C# NanoFramework使用ESP32开发超声波距离传感器(HC-SR04)

前言

最近自己开始研究ESP32,本身是对c#比较熟悉就在网上找了关于c#开发开发esp32的框架,最后选择了NanoFramework框架.具体支持的功能和详细资料可以参考github上NanoFramework的项目

一.ESP32刷机

1.环境准备

  • 安装好VisualStudio2019或者VisualStudio2022.我这边用的VisualStudio2022.
    具体安装步骤这里忽略

  • 本机的dotnet 环境安装好.
    具体安装步骤这里忽略

2.刷机

  • 1.将esp32使用数据线连接到电脑上.
  • 2.打开电脑设备管理器,查看端口设备.
    在这里插入图片描述
    这边显示是COM3的端口,如果没有看到对应的端口设备,可能是数据线坏了,也可能是esp32的驱动没装,我这边用的esp32的驱动是CH340的.
  • 3.安装刷机工具Nanoff
dotnet tool install -g nanoff
  • 4.执行刷机命令
nanoff --serialport COM3 --target ESP32_PSRAM_REV0 --update

对应的COM3需要换成你自己的电脑上的端口号
正常刷完后就行是这样
在这里插入图片描述

二.NanoFramework安装

1.安装NanoFreamwork VS 扩展安装

打开VS,选择继续但无需代码
在这里插入图片描述
点击扩展,选择管理扩展.
在这里插入图片描述
点击联机,搜索nano,选择.Net 哪弄Framework Extension 点击下载.下载完后点击下一步安装就OK.安装完成后需要关闭VS.
如果下载的太慢或者无法下载,可以在VS扩展网站下载该插件
在这里插入图片描述

三.超声波测距模块开发

1.创建NanoFreamwork 项目

  • VS关闭后从新打开>选择创建新项目> 搜索nano> 选择 Blank Application(空白的应用) > 点击下一步 > 输入项目名字> 点击创建
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    打开设备管理
  • 点击视图>其他窗口>Device Explorer
    在这里插入图片描述

在这里插入图片描述
(1). ping 设备,点击后 VS 输出里会有以下的信息
(2). 设备信息收集
(3). 擦除应用部署区域(移除项目应用)
(4). 网络信息编辑和设置
(5). 重启设备
(6). 启动或者关闭设备监听(就是监听设备是否存在)
(7). 重新搜寻设备信息
(8). 输出内部错误(VS输出里看到)
(9). 设置信息
连接不上的处理
如果不正常那就是刷机(固件)有问题,请重新刷一下,然后,重启一下单片机,试试,应该就好了。

2.安装相关NanoFreamwork 开发包

NanoFreamwork 相关的开发都可以在Nuget中安装,包括用的的GPIO,串口,各种传感器,蓝牙,wifi,server等,目前这里只安装需要的超声波测距模块HC-SR04的开发包.

  • 点击工具>Nuget包管理器>管理解决方案的Nuget程序包.
    在这里插入图片描述
    更新nanoFramework.CoreLibrary

在步骤一种刷机使用的固件默认是最新版本的,但是在新建项目中使用的核心组件库不一定是最新版本的,这里需要保持刷机的固件和项目中的nanoFramework.CoreLibrary保持版号一致,否则会在运行的时候报错

  • 搜索nanoFramework.CoreLibrary > 选择nanoFramework.CoreLibrary > 勾选对应的解决方案 > 选择最新的版本 > 点击安装
    在这里插入图片描述

安装nanoFramework.Iot.Device.Hcsr04.Esp32

这个是开发超声波测距传感器需要用的组件包

  • 搜索nanoFramework.Iot.Device.Hcsr04.Esp32 > 选择nanoFramework.Iot.Device.Hcsr04.Esp32> 勾选对应的解决方案 > 选择最新的版本 > 点击安装
    在这里插入图片描述

3.超声波测距模块代码及调试

对于nanoFramework支持的各种传感器可以在github上的nanoFramework.IoT.Device中找到对应的代码示例.
下面用超声波测距传感器HC-SR04为例,对应的github上的README.md

这里对应ESP32上我使用的gpio口是17和16. trig用的是17,echo用的是16

using System;
using System.Diagnostics;
using System.Threading;
using Iot.Device.Hcsr04.Esp32;
using UnitsNet;
namespace NanoFreamworkDemo
{
    public class Program
    {
        public static void Main()
        {
            using (var sonar = new Hcsr04(17, 16))
            {
                while (true)
                {
                    if (sonar.TryGetDistance(out Length distance))
                    {
                        Debug.WriteLine($"Distance: {distance.Centimeters} cm");
                    }
                    else
                    {
                        Debug.WriteLine("Error reading sensor");
                    }

                    Thread.Sleep(1000);
                }
            }
        }
    }
}
  • 点击运行按键,就会开始将代码烧录到esp32中了.
    在这里插入图片描述
  • 正常情况就看到下面出现测距传感器的输出.

在这里插入图片描述

常见问题解决办法

提示版本不对
更新组件库

烧录没有反应
esp32重启一下,可以直接拔插数据线,也可以通过VS中的Device Explorer点击reboot.

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值