用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引脚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文件即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以按照以下步骤在 ESP-IDF 中新建项目: 1. 首先,确保已经安装了 ESP-IDF 开发环境。你可以从官方网站下载并按照指南进行安装:https://docs.espressif.***/index.html 2. 打开终端或命令行界面,并进入一个你想要创建项目的目录。 3. 运行 `idf.py create-project <project-name>` 命令,其中 `<project-name>` 是你自己的项目名称。这将会在当前目录下创建一个名为 `<project-name>` 的文件夹,并生成默认的项目文件结构。 4. 进入项目文件夹,运行 `idf.py menuconfig` 命令来配置项目。在配置界面中,你可以设置串口通信参数、WiFi 设置、任务调度器等等。完成配置后,保存并退出。 5. 编写你的代码和应用程序。在 `<project-name>` 文件夹中,你将会找到 `main` 文件夹,其中包含 `main.c` 文件,你可以在这里编写你的应用程序代码。 6. 构建和烧录项目。在项目文件夹下运行 `idf.py build` 命令来构建项目。如果一切顺利,你将会得到一个可执行文件。然后,使用 `idf.py flash` 命令将可执行文件烧录到你的 ESP32 开发板上。 7. 最后,可以使用 `idf.py monitor` 命令来查看串口输出,并与你的应用程序进行交互。 这样,你就成功创建了一个 ESP-IDF 项目,并可以开始开发你的应用程序了。记得在开发过程中参考 ESP-IDF 官方文档和示例代码,以便更深入地了解 ESP-IDF 的功能和特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨之清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值