写在前面:
当你遇到一件麻烦事的时候,你要做的就是乖乖听它的话,别再自找麻烦。
1.参考资料
2.下载IDF和IDE
不推荐使用esclipse和vscode插件,除非你经常用这两个,对它们很熟悉,而且下载插件时可能需要外部上网
推荐使用乐鑫官方的IDF和IDE,参考见 https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32c6/get-started/windows-setup.html
·
首先下载一个 ESP-IDF 工具安装器
第一个很小那个只是一个下载器,第二个是已经把库一起下好的,建议下载第二个,然后按照步骤安装就行了
下载安装好以后你的桌面上应该会有三个图标
3.下载at固件库
一般是去乐鑫的github下载,详情见 https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32c6/AT_Binary_Lists/index.html
如果没有官方的固件库发布版,只有去github下载临时固件,这种方法不能够设置固件且只能使用串口下载,但使用更方便,见 https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32c6/Compile_and_Develop/How_to_download_the_latest_temporary_version_of_AT_from_github.html
我使用的是另一种方法,详情见 https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32c6/Compile_and_Develop/How_to_clone_project_and_compile_it.html
这种方法比第一种简单,但需要已经安装好IDF,先执行ESP-IDF 5.1 PowerShell,再用ESP-IDF CMD以管理员身份打开,最好把下载路径设置成IDF同一个父级,需要用cd命令跳转到下载好的esp-at文件夹,在其中执行指令。它这个是自带python环境,不需要你下载安装python
第一次使用需要配置工程,在cmd中用python build.py menuconfig指令调出图形界面,按需配置,一般保持默认就好了,直接load
使用python build.py build建立工程文件
下载固件库一般经过USB或者UART0连接电脑,你需要找到连接的COM口,然后使用python build.py -p COM15 flash 命令,这里以COM15为例。当调试信息出现Serial port COM15,你应该按住板子上的boot按键,再按一下复位键,进入下载模式,否则将会出现以下提示:
刷固件库只会写入部分设置,比如波特率不会恢复默认,如果需要全部清除,则使用python build.py erase_flash来擦除全片flash,重新下载固件库
配置AT串口波特率、引脚需要打开esp-at\components\customized_partitions\raw_data\factory_param文件,在对应栏修改即可
修改后还需要使用python build.py build重新建立工程,再下载固件库
4.使用AT指令
乐鑫的下载固件的口和AT通信的口不是同一个,你需要去这里查看
或者当你连接下载固件库的口上电复位板子,它会打印一串信息,其中就有AT cmd port:uart1 tx:7 rx:6 cts:5 rts:4 baudrate:115200,其中tx:7和rx:6表示p7口是tx、p6口是rx,需要自己准备一个UART-USB转接板,一端uart连乐鑫板子,一端usb连pc
如果上电后从调试UART口读到waiting for download,而你已经下载好了固件库,可能是因为供电不足,只需要同时连接串口和USB并复位即可。
5.使用AT建立TCP连接
1.设置模块为AP模式(接收)或STA模式(发送)
AT+CWMODE=<mode>[,<auto_connect>]
AP命令:AT+CWMODE=2
STA命令:AT+CWMODE=1
2.启用DHCP动态主机配置协议(STA端)
如果不启用DHCP,你需要手动配置网关、子网掩码等,很麻烦
AT+CWDHCP=1,1
3.连接AP
AP端既可以是wifi模块,也可以是路由器,连接指令都是一样的。
AT+CWJAP=[<ssid>],[<pwd>][,<bssid>][,<pci_en>][,<reconn_interval>][,<listen_interval>][,<scan_mode>][,<jap_timeout>][,<pmf>]
可选的配置很多,但只需要ssid和pwd即可
如连接模块:AT+CWJAP="ESP","1234567890"
如连接路由器:AT+CWJAP="ssid","123456789"
当你选择模块作为AP时,你可能需要设置或查询它的AP信息
查询:AT+CWSAP?
响应:+CWSAP:<ssid>,<pwd>,<channel>,<ecn>,<max conn>,<ssid hidden>
设置:AT+CWSAP=<ssid>,<pwd>,<channel>,<ecn>,[,<max conn>][,<ssid hidden>]
例如:AT+CWSAP="ESP","1234567890",5,3
<>内是必需,[ ]内是可选
4.建立TCP连接
TCP Servicer 既可以是PC,也可以是wifi模块
- 如果是PC,你需要在PC上创建TCP,用cmd的ipconfig查询你的IP地址,使用网络调试助手可以建立TCP Servicer并设置你的端口号;
- 如果是wifi模块,你需要发送AT指令来查询或设置
设置连接模式
单连接:AT+CIPMUX=0
多连接:AT+CIPMUX=1
查询地址:AT+CIFSR
响应第一个为SoftAP 的 IPv4 地址
设置端口号:AT+CIPSERVER=<mode>[,<param2>][,<"type">][,<CA enable>]
如:AT+CIPSERVER=1,80
上例1为建立服务器,80为端口号
STA端连接的方式是一样的,命令参数为类型+IP地址+端口号
AT+CIPSTART=<"type">,<"remote host">,<remote port>[,<keep_alive>][,<"local IP">]
多接点需要使用AT+CIPSTART=<link ID>,<"type">,<"remote host">,<remote port>[,<keep_alive>][,<"local IP">]
如:AT+CIPSTART="TCP","192.168.11.62",8089
5.发送数据
透传:AT+CIPSEND
退出透传:+++
规定字节发送:AT+CIPSEND=<length>
多连接:AT+CIPSEND=<link ID>,<length>
6.其他
启用TCP_NODELAY可以禁用Nagle算法,当你发送的数据包比较小且连续发送时,可以使用AT+CIPTCPOPT=-1,1,0,0命令
你还可能需要更改串口波特率AT+UART_DEF=1000000,8,1,0,0