用Wokwi仿真ESP-IDF项目

news2024/11/18 13:34:48

陈拓 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引脚25

void 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(); // 初始化led

    for (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.coloradmin.cn/o/1118317.html

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

相关文章

农产品农货经营小程序商城的作用是什么

农产品行业涵盖的产品很多&#xff0c;以小麦、稻子、玉米、高粱等为主&#xff0c;还有粮油、果蔬、畜牧等产品。 自建技术团队&#xff0c;耗时耗力&#xff0c;培养成本较高&#xff0c;销售渠道单一、等客上门、产品无法高效宣传及促进用户购买&#xff0c;营销力不足&…

会声会影2023官方破解版激活码

随着短视频、vlog等媒体形式的兴起&#xff0c;视频剪辑已经成为了热门技能。甚至有人说&#xff0c;不会修图可以&#xff0c;但不能不会剪视频。实际上&#xff0c;随着各种智能软件的发展&#xff0c;视频剪辑已经变得越来越简单。功能最全的2023新版&#xff0c;全新视差转…

JavaWeb学生管理系统(详细源码+解析)

​ 很多人大学的第一个小项目就是使用JavaWeb实现了一个学生管理系统或者是图书管理系统。在没有项目经验的情况下&#xff0c;前后端都需要自己去完成&#xff0c;还是要耗费不少时间精力的。本次我就分享一下我在大学期间完成的第一个小项目&#xff1a;学生管理系统。采用的…

2023年【司钻(钻井)】及司钻(钻井)作业模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 司钻&#xff08;钻井&#xff09;是安全生产模拟考试一点通生成的&#xff0c;司钻&#xff08;钻井&#xff09;证模拟考试题库是根据司钻&#xff08;钻井&#xff09;最新版教材汇编出司钻&#xff08;钻井&#…

Tuxera NTFS2023破解版苹果电脑磁盘读写工具

当您获得一台新 Mac 时&#xff0c;它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac&#xff0c;您需要一个附加的 NTFS 驱动程序。Tuxera 的 Microsoft NTFS for Mac 是一款易于使用的软件&#xff0c;可以在 Mac 上打开、编辑、复制、移动或删…

性能优化:JIT即时编译与AOT提前编译

优质博文&#xff1a;IT-BLOG-CN 一、简介 JIT与AOT的区别&#xff1a; 两种不同的编译方式&#xff0c;主要区别在于是否处于运行时进行编译。 JIT:Just-in-time动态(即时)编译&#xff0c;边运行边编译&#xff1a;在程序运行时&#xff0c;根据算法计算出热点代码&#xf…

CVE-2019-1388 UAC提权实战

1.查看用户权限&#xff1a;guest来宾权限 2.右键-以管理员身份运行&#xff1a; 3.这个时候会弹出UAC&#xff0c;不用管它&#xff0c;点击&#xff1a;显示详细信息 4.然后点击蓝色字体&#xff1a;显示有关此发布者的证书信息 5.来到证书信息这里&#xff0c;点击颁发着…

线程是如何在 6 种状态之间转换的?

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 今天我们主要学习线程是如何在 6 种状态之间转换的。 线程的 6 种状态 就像生物从出生到长大、最终死亡的过程一样&#xff0c;线程也有自己的生命周期&#xff0c;在 Java 中线程的生命周期中一共有 6 种状态。 …

揭开 Amazon Bedrock 的神秘面纱 | 基础篇

在 2023 年 4 月&#xff0c;亚马逊云科技曾宣布将 Amazon Bedrock 纳入使用生成式人工智能进行构建的新工具集。Amazon Bedrock 是一项完全托管的服务&#xff0c;提供各种来自领先 AI 公司&#xff08;包括 AI21 Labs、Anthropic、Cohere、Stability AI 和 Amazon 等&#xf…

Python学习第一天-安装Python

文章目录 前言一、下载Python二、执行安装程序三、命令行验证总结 前言 以下榜单来自于TIOBE编程语言流行指数 不多说了&#xff0c;Python天下第一 一、下载Python 从官网下载Python安装程序 二、执行安装程序 找到python-3.12.0-amd64.exe执行&#xff0c;选择Install …

基于Python3的Scapy构造DNS报文

一&#xff1a;DNS协议 DNS&#xff08;Domain Name System&#xff09;协议是计算机网络中的一种基础协议&#xff0c;它用于将域名&#xff08;如www.baidu.com&#xff09;转换为IP地址&#xff08;如192.168.0.1&#xff09;&#xff0c;从而实现计算机之间的通信。 DNS 分…

【Unity地编细节】为什么Unity笔刷在地形上面刷不出来

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

【编解码】解码字符串中的 UNICODE 字符

前言 由于前后端交互中编码的问题&#xff0c;出现了这样的一串字符&#xff1a; {"share_names":["\u4e2d\u6587\u8def\u5f84"]}出现了unicode编码作为字符串内容的情况&#xff0c;直接用json解析的话会报错&#xff0c;所以在json解析前需要先进行转码…

Linux | 深入浅出冯诺依曼

前言 但凡是科班出生的小伙伴多多稍稍应该都听过冯诺依曼体系吧&#xff0c;这似乎已成为入门计算机的必备知识了&#xff0c;本章就带着大家一起去理解冯诺依曼体系&#xff1b; 一、体系构成 冯诺依曼体系主张计算机由五大部件组成&#xff0c;如下所示&#xff1b; 输入设备…

进程(0)——计算机的中的软硬件【Linux】

进程&#xff08;0&#xff09;——计算机的中的软硬件【Linux】 一.硬件&#xff1a;1.1 冯诺依曼结构&#xff1a;1.2 存储金字塔1.2.1输入设备和存储器&#xff1a;1.2.2输出设备和存储器&#xff1a; 二.软件&#xff1a;2.1 操作系统2.1.1 如何理解管理&#xff1a; 博主自…

【Asp.net】Asp.net core中IIS配置注意事项

1、应用地址池设为无托管代码 一、提示&#xff1a;关于IIS上运行ASP.NET Core 站点的“HTTP 500.19”错误 安装dotnet-hosting-3.1.2-win.exe ASP.NET Core 3.1 Runtime (v3.1.2)下载地址&#xff1a; https://download.visualstudio.microsoft.com/download/pr/dd119832-dc4…

visual studio Qt 开发环境中手动添加 Q_OBJECT 导致编译时出错的问题

问题简述 创建项目的时候&#xff0c;已经添加了类文件&#xff0c;前期认为不需要信号槽&#xff0c;就没有添加宏Q_OBJECT,后面项目需要&#xff0c;又加入了宏Q_OBJECT&#xff0c;但是发现只是添加了一个宏Q_OBJECT&#xff0c;除此之外没有改动其它的代码&#xff0c;原本…

AWS Lambda 操作 RDS 示例

实现目标 创建一个 Lambda 接收调用时传入的数据, 写入 RDS 数据库 Post 表存储文章信息. 表结构如下: idtitlecontentcreate_date1我是标题我是正文内容2023-10-21 15:20:00 AWS 资源准备 RDS 控制台创建 MySQL 实例, 不允许 Public access (后面 Lambda 需要通过 VPC 访问…

【Qt进阶之自定义控件】使用QListWidget实现自定义Item效果

目的 Q&#xff1a;如何在Qt库的基础上&#xff0c;实现自定义控件呢&#xff1f; A&#xff1a;根据官方文档回答&#xff0c;就是继承需实现的控件&#xff0c;然后实现自定义功能。 以下是实现QListWidget控件的自定义item。 先看下最终效果是如何&#xff1a; listItem 主…

基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习 计算机竞赛

文章目录 0 前言1 课题介绍2 算法原理2.1 算法简介2.2 网络架构 3 关键代码4 数据集4.1 安装4.2 打开4.3 选择yolo标注格式4.4 打标签4.5 保存 5 训练6 实现效果6.1 pyqt实现简单GUI6.3 视频识别效果6.4 摄像头实时识别 7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xf…