这是本文的配套资料,最终工程请参考 新_ESP8266资料\stm32f103成功移植的项目
【免费】stm32f103c8t6esp8266资料资源-CSDN文库
一、等到了ready
产品参数
我使用的是ai-thinker的esp8266-01s,以下为产品规格书
引脚定义:
依据引脚定义,GND接GND,VCC接3.3V,TX接USB转TTL的Rx, Rx 接USB转TTL的RX,之后尝试多次,都只是显示
初次尝试
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
[12:27:20.994]
[12:27:20.994] load 0x40100000, len 6960, room 16
[12:27:21.004] tail 0
[12:27:21.004] chksum 0xa5
[12:27:21.004] load 0x3ffe8008, len 24, room 8
[12:27:21.014] tail 0
[12:27:21.014] chksum 0x1c
[12:27:21.014] load 0x3ffe8020, len 3196, room 8
[12:27:21.024] tail 4
[12:27:21.024] chksum 0xde
[12:27:21.024] csum 0xde
[12:27:21.211]
[12:27:21.214] ets Jan 8 2013,rst cause:4, boot mode:(3,6)
[12:27:21.224]
[12:27:21.224] wdt reset
[12:27:21.224] ets_main.c
查了许多资料,说是没刷固件,于是用flash down tool刷固件,可总是停在sync,最终看到这位大佬的文章:ESP8266烧录固件提示等待上电同步,下载失败-CSDN博客
尝试后问题虽解决,但总是烧录不了,以下是日志:
0x3ff00050: 17790000
0x3ff00054: 020078bc
0x3ff00058: 1c00b000
0x3ff0005c: 00c8c9a3
check_err_0: 0bcheck_err_1: 00check_err_2: 00check_err_3: 02check_err_4: 0b====================
EFUSE NORMAL MODE
接到5v依旧不行,我认为不是电源问题。。。
找到问题(电源)
知道某一天,我购买了tft lcd屏幕,vcc gnd接好,但就是不亮!当时改了三天的驱动,依旧不行。抱着死马当活马医的心态,我用两节干电池供电,居然亮了!!!我于是意识到电源不对,用万用表检测3.3v引脚和gnd引脚之间的电压,发现只有2.23V!!!我不用jlink供电,直接供电,再次测量,是3.27V,看来,这jlink害人不浅!!!
最终,终于等到了ready!!!
电脑上也能看到ESP_XXX的WiFi
我尝试了很多供电方式,发现两节干电池供电不稳,一直乱码;插座上的USB供电,电流不够,esp8266反复重启;USB转TTL供电显示ets Jan 8 2013,rst cause:4, boot mode:(3,6) 。只有用USB充电线连接电脑USB口和stm32f103电源接口时才显示ready。
二、测试AT指令
使用友善串口助手测试,但发送了AT、AT\r\n都没反应,使用ai-thinker官方的串口调试助手成功接收到OK
3.2.1. AT—测试 AT 启动
AT+RST—重启模块
AT+GMR—查询版本信息
AT+CIPSERVER—建⽴ TCP 服务器
AT+CIPSERVERMAXCONN—设置服务器允许建⽴的最⼤连接数
AT+CIPMODE—设置传输模式 AT+SAVETRANSLINK—保存透传到 Flash
AT+CIPSTO—设置 TCP 服务器超时时间
AT+PING—Ping 功能
AT+CIUPDATE—通过 Wi-Fi 升级软件
AT+CIPDINFO—接收⽹络数据时是否提示对端 IP 和端⼝
+IPD—接收⽹络数据
AT+CIPRECVMODE—设置 TCP 连接的数据接收⽅式
AT+CIPRECVDATA—被动接收模式时,读取缓存的 TCP 数据
AT+CIPRECVLEN—被动接收模式时,查询缓存 TCP 数据的⻓度
AT+CIPSNTPCFG—设置时域和 SNTP 服务器.
AT+CIPSNTPTIME—查询 SNTP 时间..................................................
详细指令可参考 本文资料
三、移(白)植(嫖)onenet驱动
找驱动
onenet例程可参考本文资料
我是用的是这个免费的公共mqtt服务器:免费的公共 MQTT 服务器 | EMQ (emqx.com)
下载好我提供的资料后,打开 新_ESP8266资料\2.OneNET-V3.2-OneNET-裸机-基础例程\21.MQTT-例程\1.ESP8266-MQTT-订阅、发布主题
查看引脚定义,发现stm32f103c8t6的RX引脚有PA3和PA10 ,TX有PA2和PA9
这里我们使用PA2、PA3和esp8266通信,PA9和PA10和电脑通信,便于调试
main.c中 const char *topics[] = {"kylinBoard"}; 设置mqtt通信的主题,可参考这位大佬的博文:详解MQTT主题和通配符_mqtt topic 通配符-CSDN博客
做微调
esp8266.c中
#define ESP8266_WIFI_INFO "AT+CWJAP=\"ONENET\",\"IOT@Chinamobile123\"\r\n"
ONENET是WIFI名称、IOT@Chinamobile123是WiFi密码,配置成自己家的WIFI
#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"183.230.40.39\",6002\r\n"
183.230.40.39改成自己服务器的IP
6002改成自己服务器的端口
我使用的是emqx的公用服务器,改成#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"broker.emqx.io\",1883\r\n"
成功
最终打印出信息
PROID: 77247, AUIF: test, DEVID:5616839
Tips: 连接成功
Subscribe Topic: stmSmartDesktopScreen/cmd
Tips: MQTT Subscribe OK
topic: /mylocator/sub, topic_len: 14, payload: {"lock_SW":1}
, payload_len: 14
topic: /mylocator/sub, topic_len: 14, payload: {"lock_SW":1}
, payload_len: 14
topic: /mylocator/sub, topic_len: 14, payload: {"lock_SW":1}
, payload_len: 14
topic: /mylocator/sub, topic_len: 14, payload: {"lock_SW":1
最后,请大家一定注意供电,注意供电,注意供电,我就是被供电害惨了!!!