跳转至

IoT ESP32

IoT(Internet of Things) —— Espressif32

ESP32位芯片专为物联网场景设计,内置WIFI & BlueTooth双模无线通信,适应多种互联开发场景

内核:Tensilica 的 Xtensa 内核的双核构架

1. MicroPython开发(快速)

将Micropython固件烧入ESP32,即可开始使用 micropython 开发

  1. 下载 Thonny编辑器、esp32-flash-download-tool(用于将固件写入板子)、 CH343驱动(识别串口)、micropython固件(支持micropython开发)

    github-vccgnd esp32 s3

    esp32-flash-download-tool

    南京沁恒-驱动程序

    micropython-esp32

  2. 将固件烧入ESP32,让它支持Micropython开发

  3. 板子烧入固件后,可以用thonny开发了,右下角选择esp32,找到设备对应的串口

  4. 编写你的代码,保存到esp32,若存在boot.py,说明代码可以正常写入esp32。若无,请用esp32-flash-download-tool擦除flash再写入固件试试。

  5. 保存为main.py,重启板子默认运行,开始释放你的创造力吧。

Warning

重启后自动启动main.py,bug代码不要保存为main.py,否则错误重启死循环​

#-----------------EXAMPLE-----------------
#ESP32 作为AP  即wifi热点
import network

##配置ESP32为AP模式
ssid = 'ESP32_AP'
password = '12345678'
authmode = 4  # WPA2-PSK

##创建WLAN对象
wlan = network.WLAN(network.STAIF)  # 默认情况下,STAIF接口已创建,但我们将其禁用
wlan.active(False)  # 禁用STA接口
apif = network.WLAN(network.APIF)  # 创建AP接口
ap_if.active(True)
ap_if.config(essid=ssid, password=password, authmode=authmode)
print('AP mode started with SSID:', ssid)
print('Password:', password)

添加软件包:工具->管理包

  • machine 硬件

    SPI(id, baudrate, polarity, phase, bits, firstbit, sck, mosi, miso)

    id请查看datasheet分组

    注意:sck,mosi,miso都需要定义,否则报错

  • usocket 套接字

    mpython -usocket

  • requests HTTP请求

    使用requests进行HTTP爬虫

  • zlib 二进制流解压/压缩库

    暂时只有解压功能

2. ESP32 SDK开发(全面)

VScode + ESP-IDF extension ESP-IDF编程指南

ESP-IDF ToolChain

  1. ESP-IDF Offline Installer

    Windows 平台工具链的标准设置

    vscode+espidf开发环境搭建(实现单步调试)

  2. VScode ESP-IDF extension (not recommend)

    不建议,此方法无openOCD驱动,则无法打开openOCD,需要自己配置

    ESP32-C3 JTAG调试笔记

工具链安装好就可以使用 VScode IDF extension,如果找不到开发板串口,请检查USB驱动

Debug with VScode

JTAG 调试

vscode+espidf开发环境搭建(实现单步调试)

VScode调试:选择通过USB-JTAG即可打开openOCD,配置launch.json,即可调试。

如果打开调试失败/出问题,请尝试重启openOCD

    //修改launch.json为
    {
    "version": "0.2.0",
    "configurations": [
        {
        "name": "GDB",
        "type": "cppdbg",
        "request": "launch",
        "MIMode": "gdb",
        "miDebuggerPath": "${command:espIdf.getXtensaGdb}",
        "program": "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf",
        "windows": {
            "program": "${workspaceFolder}\\build\\${command:espIdf.getProjectName}.elf"
        },
        "cwd": "${workspaceFolder}",
        "environment": [{ "name": "PATH", "value": "${config:idf.customExtraPaths}" }],
        "setupCommands": [
            { "text": "target remote :3333" },
            { "text": "set remote hardware-watchpoint-limit 2"},
            { "text": "mon reset halt" },
            { "text": "thb app_main" },
            { "text": "flushregs" }
        ],
        "externalConsole": false,
        "logging": {
            "engineLogging": true
        }
        }
    ]
    }