IoT ESP32
IoT(Internet of Things) —— Espressif32
ESP32位芯片专为物联网场景设计,内置WIFI & BlueTooth双模无线通信,适应多种互联开发场景
内核:Tensilica 的 Xtensa 内核的双核构架
1. MicroPython开发(快速)
将Micropython固件烧入ESP32,即可开始使用 micropython 开发
-
下载 Thonny编辑器、esp32-flash-download-tool(用于将固件写入板子)、 CH343驱动(识别串口)、micropython固件(支持micropython开发)
-
将固件烧入ESP32,让它支持Micropython开发

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

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

-
保存为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 套接字
-
requests HTTP请求
使用requests进行HTTP爬虫
-
zlib 二进制流解压/压缩库
暂时只有解压功能
2. ESP32 SDK开发(全面)
VScode + ESP-IDF extension ESP-IDF编程指南
ESP-IDF ToolChain
-
ESP-IDF Offline Installer
-
VScode ESP-IDF extension (not recommend)
不建议,此方法无openOCD驱动,则无法打开openOCD,需要自己配置
工具链安装好就可以使用 VScode IDF extension,如果找不到开发板串口,请检查USB驱动
Debug with VScode
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
}
}
]
}