STM32 ESP8266模块的曲折探索

2024-03-23 11:52

本文主要是介绍STM32 ESP8266模块的曲折探索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是本文的配套资料,最终工程请参考 新_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

最后,请大家一定注意供电,注意供电,注意供电,我就是被供电害惨了!!!

这篇关于STM32 ESP8266模块的曲折探索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838239

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python中的getopt模块用法小结

《Python中的getopt模块用法小结》getopt.getopt()函数是Python中用于解析命令行参数的标准库函数,该函数可以从命令行中提取选项和参数,并对它们进行处理,本文详细介绍了Pyt... 目录getopt模块介绍getopt.getopt函数的介绍getopt模块的常用用法getopt模

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要