用Wokwi仿真ESP-IDF项目

陈拓 2023/10/21-2023/10/21

1. 概述

Wokwi是一个在线的电子电路仿真器。你可以使用它来仿真Arduino、ESP32、STM32和许多其他流行的电路板、元器件以及传感器,免去使用开发板。

Wokwi提供基于浏览器的界面,您可以通过这种简单直观的方式快速开发一个项目。但是对于ESP32来说在浏览器中直接编程的开发模式目前只能用于Arduino架构。

《在Espressif-IDE中使用Wokwi仿真ESP32》

https://blog.csdn.net/chentuo2000/article/details/133935234?spm=1001.2014.3001.5501

一文中我们讲述了在在Espressif-IDE中使用Wokwi仿真ESP32的方法。

在本文中我们讲述直接用Wokwi在线模拟器仿真任何ESP-IDF开发环境构建的项目。

2. WOKWI网址

https://wokwi.com/

选择ESP32。

3. 用Wokwi仿真ESP-IDF项目示例

3.1 Wokwi电路实例

  • 从Wokwi的众多项目中选择一个LED的例子

  • Wokwi编程、仿真界面

左边是arduino的程序代码编写区。右边是电路连接和仿真区。

LED正极通过电阻连接ESP32的D25引脚,LED负极接GND引脚:

3.2 ESP-IDF开发环境

你可以选择不同的环境开发ESP32应用程序:

  • ESP-IDF命令行

参考《Windows系统安装ESP32 ESP-IDF开发环境》

https://blog.csdn.net/chentuo2000/article/details/133922505?spm=1001.2014.3001.5501

  • VSCode + ESP-IDF

参考《VSCode搭建ESP32 ESP-IDF开发环境-Windows》

https://blog.csdn.net/chentuo2000/article/details/133925665?spm=1001.2014.3001.5501

  • Espressif-IDE

参考《ESP32集成开发环境Espressif-IDE安装 – Windows》

https://blog.csdn.net/chentuo2000/article/details/133931499?spm=1001.2014.3001.5501

不论你用什么环境开发最终会生成ESP32运行所需的3个bin文件:

3.3 用ESP-IDF开发ESP32应用程序

我们以ESP-IDF 5.0为例。

对于简单的项目使用命令行开发更为方便。

  • 打开ESP-IDF 5.0 CMD

  • 转到F:盘

  • 在F:盘上建一个工作目录esp

mkdir esp

进入esp

  • 在esp下再建一个项目目录led_blink

  • 复制测试项目到工作目录

xcopy D:\Espressif\frameworks\esp-idf-v5.0.2\examples\get-started\hello_world\ F:\esp\led_blink\ /E

cd led_blink

  • 修改代码

针对Wokwi仿真器中的电路修改main文件夹下的hello_world_main.c

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "driver/gpio.h"#define GPIO_OUTPUT_IO_LED 25 // led在gpio引脚25void led_init(void)
{//定义一个gpio_config类型的结构体,下面的都算对其进行的配置gpio_config_t io_conf;//禁用中断io_conf.intr_type = GPIO_INTR_DISABLE;//设置为输出模式io_conf.mode = GPIO_MODE_OUTPUT;//你想设置的引脚io_conf.pin_bit_mask = (1<<GPIO_OUTPUT_IO_LED);//关闭下拉模式io_conf.pull_down_en = 0;//禁用牵引模式io_conf.pull_up_en = 0;//配置GPIO与给定的设置。gpio_config(&io_conf);
}void led_on(void) {gpio_set_level(GPIO_OUTPUT_IO_LED, 1);
}void led_off(void) {gpio_set_level(GPIO_OUTPUT_IO_LED, 0);
}void app_main(void)
{printf("Hello world!\n");led_init(); // 初始化ledfor (int i = 255; i >= 0; i--) {led_on();vTaskDelay(500 / portTICK_PERIOD_MS);led_off();vTaskDelay(500 / portTICK_PERIOD_MS);}
}
  • 设定目标芯片

idf.py set-target esp32

  • 配置项目

idf.py menuconfig

1) 将闪存设置为4MB

保存,退出。

  • 编译项目

idf.py build

生成3个bin文件:

1) 应用程序:

F:\esp\led_blink\build\hello_world.bin

2) 引导加载程序:

F:\esp\led_blink\build\bootloader\bootloader.bin

3) 分区表:

F:\esp\led_blink\build\partition_table\partition-table.bin

3.4 直接用应用程序bin文件仿真

对于简单的项目可以直接使用应用程序bin文件仿真。

  • 打开Wokwi仿真器中的项目

  • 在代码编辑器中按F1

选择Upload Firmware and Start Simulation…

  • 选择应用程序bin文件

  • 打开

开始仿真

有关Wokwi模拟器的中文说明见:

https://docs.wokwi.com/zh-CN/

3.5 用uf2文件仿真

对于复杂项目通常需要重写分区表,这时我们就需要将引导加载程序、应用程序和分区表打包到一个bin文件中,可以使用ESP-IDF的idf.py uf2命令生成UF2为文件。

  • UF2文件乐鑫官方说明:

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/tools/idf-py.html

  • 生成UF2文件

idf.py uf2

  • 仿真

和前面直接用应用程序bin文件仿真方法相同,只要选择uf2.bin文件即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/113714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然语言处理---Transformer机制详解之Transformer优势

1 Transformer的并行计算 对于Transformer比传统序列模型RNN/LSTM具备优势的第一大原因就是强大的并行计算能力. 对于RNN来说&#xff0c;任意时刻t的输入是时刻t的输入x(t)和上一时刻的隐藏层输出h(t-1)&#xff0c;经过运算后得到当前时刻隐藏层的输出h(t)&#xff0c;这个…

京东数据分析:2023厨房小电市场遇冷,空气炸锅等明星产品被抛弃

过去几年间&#xff0c;宅经济的爆发带火了酸奶机、煮蛋器、豆浆机、空气炸锅、养生壶等&#xff0c;一众外观小巧、功能丰富、价格相对便宜的厨房小家电。但随着年轻人走出家门回归工作岗位&#xff0c;厨房小家电们却步入了艰难时刻。 如今&#xff0c;厨房小家电们似乎正在经…

互联网Java工程师面试题·Java 面试篇·第二弹

目录 15、什么是不可变对象&#xff08;immutable object&#xff09;&#xff1f;Java 中怎么创建一个不可变对象&#xff1f; 16、我们能创建一个包含可变对象的不可变对象吗&#xff1f; 17、Java 中应该使用什么数据类型来代表价格&#xff1f; 18、怎么将 byte 转换为 Str…

网络协议--Ping程序

7.1 引言 “ping”这个名字源于声纳定位操作。Ping程序由Mike Muuss编写&#xff0c;目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机&#xff0c;并等待返回ICMP回显应答&#xff08;图6-3列出了所有的ICMP报文类型&#xff09;。 一般来说&#x…

超详细 | 差分进化算法原理及其实现(Matlab/Python)

差分进化(Differential Evolution&#xff0c;DE)算法是由美国学者Storn和 Price在1995年为求解Chebyshev多项式拟合问题而提出的。算法主要通过基于差分形式的变异操作和基于概率选择的交叉操作进行优化搜索&#xff0c;虽然其操作名称和遗传算法相同&#xff0c;但实现方法有…

golang 反射机制

在 go 语言中&#xff0c;实现反射能力的是 reflect包&#xff0c;能够让程序操作不同类型的对象。其中&#xff0c;在反射包中有两个非常重要的 类型和 函数&#xff0c;两个函数分别是&#xff1a; reflect.TypeOfreflect.ValueOf 两个类型是 reflect.Type 和 reflect.Value…

[自定义 Vue 组件] 小尾巴 Logo 组件 TailLogo

文字归档于&#xff1a;https://www.yuque.com/u27599042/coding_star/apt6y731ybmxgu5g 组件效果 组件依赖 自定义字符串工具函数 stringIsNull https://www.yuque.com/u27599042/coding_star/slncupw7un3ce7cb import {stringIsNull} from "/utils/string_utils.js&q…

Hadoop3教程(三十二):(生产调优篇)NameNode故障恢复与集群的安全模式

文章目录 &#xff08;159&#xff09;NameNode故障处理&#xff08;160&#xff09;集群安全模式&磁盘修复集群安全模式磁盘修复等待安全模式 参考文献 &#xff08;159&#xff09;NameNode故障处理 如果NameNode进程挂了并且存储的数据也丢失了&#xff0c;如何恢复Nam…

PCA降维可视化

二维 import pandas as pd import warnings warnings.filterwarnings("ignore")df pd.read_csv(data/data.csv).dropna() features df.columns[:-1] X, y df[features], df[label]from sklearn.preprocessing import MinMaxScaler # 创建MinMaxScaler对象 scaler…

单目3D目标检测论文汇总

基于语义和几何约束的方法 1. Deep3DBox 3D Bounding Box Estimation Using Deep Learning and Geometry [CVPR2017] https://arxiv.org/pdf/1612.00496.pdfhttps://zhuanlan.zhihu.com/p/414275118 核心思想&#xff1a;通过利用2D bounding box与3D bounding box之间的几何约…

基于yolov5的目标检测和双目测距

目录 一.简介 1.双目视觉 2 YOLOv5 二.双目准备 1双目矫正 2.测距部分代码和函数 三.yolov5部分代码代码展示 效果展示 一.简介 1.双目视觉 双目视觉是通过两个摄像机同时拍摄同一场景&#xff0c;通过计算两幅图像的差异来获取深度信息的一种计算机视觉技术。在双目视…

博客系统中的加盐算法

目录 一、为什么要对密码进行加盐加密&#xff1f; 1、明文 2、传统的 MD5 二、加盐加密 1、加盐算法实现思路 2、加盐算法解密思路 3、加盐算法代码实现 三、使用 Spring Security 加盐 1、引入 Spring Security 框架 2、排除 Spring Security 的自动加载 3、调用 S…

CSS常见的预处理器有哪些?

CSS常见的预处理器有以下几种&#xff1a; 1&#xff1a;Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;&#xff1a;Sass是一种成熟且广泛使用的CSS预处理器。它提供了许多功能&#xff0c;如变量、嵌套规则、混合&#xff08;Mixins&#xff09;、继承&am…

EF执行迁移时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的

ef在执行时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。 只需要在数据库链接字符串后增加EncryptTrue;TrustServerCertificateTrue;即可 再次执行

Qt第六十六章:展示数据的标签

目录 一、效果图 二、qtDesigner ①拖出一个frame作为组容器并贴上背景样式 ②拖出主要的三个控件&#xff1a;frame、line、frame、label*2 ③固定大小并设置字体、布局一下 ④拷贝三份并水平布局一下 ⑤设置样式 ⑥调整布局 三、ui文件 四、代码 一、效果图 二、qtD…

【Java 进阶篇】深入了解 Bootstrap 全局 CSS 样式

Bootstrap 是一个流行的前端框架&#xff0c;以其强大的全局 CSS 样式而闻名。这些样式能够帮助开发者快速创建漂亮的、响应式的网页&#xff0c;而无需从头编写复杂的 CSS。在本文中&#xff0c;我们将深入探讨 Bootstrap 的全局 CSS 样式&#xff0c;适合初学者&#xff0c;帮…

C#通过Entity Framework实体对数据表增删改查

目录 一、创建实体数据模型 1.建立数据库连接 2.建立EF实体模型 二.设计窗体和EF应用 1.窗体设计 2.应用程序设计 3.源码 4.生成效果 &#xff08;1&#xff09;查询 &#xff08;2&#xff09;修改 &#xff08;3&#xff09;删除 &#xff08;4&#xff09;增加 …

[AUTOSAR][诊断管理][$11] 复位服务

文章目录 一、简介(1) 应用场景&#xff08;2&#xff09; 请求格式&#xff08;3&#xff09; 重启类型 二、示例代码(1) 11_ecu_reset.c 一、简介 ECU复位服务就是可以此诊断指令来命令ECU执行自复位&#xff0c;复位有多种形式&#xff0c;依据子功能参数来区分&#xff08…

Excel函数中单元格的引用方式

如下图在D列第一行输入sum(A1:C1)&#xff1b; 回车之后结果如下&#xff1b;先要输入等号&#xff0c;然后输入sum&#xff0c;以及左括号&#xff0c;这是调用了sum求和函数&#xff1b; A1表示A列第一行&#xff0c;C1表示C列第一行&#xff1b; A1:C1&#xff0c;中间是冒号…

数字图像处理实验记录五(图像的空间域增强-锐化处理)

前言&#xff1a; 文章目录 一、基础知识1&#xff0c;什么是锐化&#xff1f;2&#xff0c;为什么要锐化&#xff1f;3&#xff0c;怎么进行锐化&#xff1f; 二、实验要求任务1&#xff1a;任务2&#xff1a;任务3&#xff1a; 三、实验记录&#xff1a;任务1&#xff1a;任…