从0开始的构建的天气预报小时钟(基于STM32F407ZGT6,ESP8266 + SSD1309)——第1章 简单的介绍一下ESP8266和他的编程指令
目录
ESP8266编程指令前导——三种工作模式
ESP8266编程指令
工作确认指令(用于非穿透模式下)
设置工作模式:AT+CWMODE=X
两个重要的复位
硬复位AT+RESTORE
软复位AT+RST
加入Wifi AT+CWJAP
开始一次TCP通信
进入和退出穿透模式
进入
ESP8266是由上海乐鑫信息科技(Espressif Systems)设计开发的一款高度集成的Wi-Fi系统级芯片(SoC),而市场上常见的ESP8266模块则是深圳安信可公司基于该芯片开发的完整解决方案(增加了必要的外围电路、串口Flash和板载天线等)。这款芯片首次将Wi-Fi连接功能以极低成本带入大众视野,彻底改变了物联网设备的开发方式。(上述事情是我从手册里CV的)
简单的说,如果我们只是关心器件的编程特性的话,我们要看的实际上就是
让我们看到我们的器件的引脚。笔者的板子上,有6个引脚,其中GND和VCC是没啥好说的,这两个引脚是供电使用的。我们需要注意的是,RXD和TXD这两个引脚,需要我们介入一个串口进行通信。你可以我们的USB转TTL模块,测试我们的ESP8266是否工作正常。办法就跟板子之间或者是板子和上位机之间的通信原理完全一致:USB转TTL的TX段接我们的ESP8266的RXD段,RX段接我们的ESP8266的TXD段。然后,笔者的ESP8266可以耐压5V,所以看清楚了,别把自己的ESP8266烧坏了。
下面我们就来看看ESP8266的交互问题,关于ESP8266的内部器件特性,留给我们的关心的问题是如何跟ESP8266交互。好在我们的器件都已经封装好了,需要做的事情也就是使用串口发送我们想要的信息即可。
ESP8266编程指令前导——三种工作模式
我们必须要说明ESP8266的工作模式,不然的话,我们真的没有办法完成我们的工作
-
STA(Station)模式:在此模式下,ESP8266作为客户端设备连接到现有的无线网络(如家庭路由器)。这种配置使得设备能够通过互联网被远程访问和控制,是大多数物联网应用的理想选择。STA模式的典型应用场景包括智能家居设备、远程传感器节点等需要接入互联网的设备。
-
AP(Access Point)模式:在此配置下,ESP8266自身充当无线接入点,创建独立的无线网络。其他设备(如智能手机、笔记本电脑)可以直接连接到该模块,形成局域网通信。AP模式适用于需要快速建立设备间直接通信的场景,如配置工具、本地控制面板等。模块支持多种安全机制,包括WEP、WPA-PSK和WPA2-PSK加密,确保通信安全。
-
STA+AP混合模式:这种配置允许ESP8266同时作为STA客户端和AP热点运行,实现了互联网访问与本地控制的无缝结合2。在这种模式下,设备既可以通过路由器接入互联网,又能直接与附近设备通信,提供了极高的操作灵活性。混合模式特别适合需要多种控制方式的智能设备,如既支持手机APP远程控制又支持本地按键操作的智能插座。
对于STA模式下,我们还有穿透模式和非穿透模式一说,默认的情况下,我们会是非穿透模式,设置好我们的TCP连接对象后,就可以进入穿透模式,让ESP8266直接转发我们发给他的数据,这样就实现了远程跟我们的服务器沟通的效果。
现在,理论知识差不多就这些,我们的思路差不多是这样的:
获取天气或者是时钟信息,需要我们进入STA模式,连接好我们手机的WiFi(你需要注意的是,ESP8266只可以连接2.4G频段的WIFI,我的电脑的热点他不认,但是各位看官都先尝试一下,不认的话,手机的热点他是一定认的)后,我们设置沟通的网站对象(TCP和端口号),然后进入穿透模式跟我们的目标网站进行通信。拿到的数据进行json分析后展示出来
ESP8266编程指令
工作确认指令(用于非穿透模式下)
现在,你可以先暂时先将我们的ESP8266跟我们的USB转TTL连接起来,然后,打开串口(波特率115200),现在,你可以尝试发送指令检查我们的设备工作是否正常。
办法是,打开你的串口调试助手,端口号记得选择USB-TTL的端口后,波特率设置为115200,然后其他设置为默认。随后,发送AT指令。
AT OK
出现这个,就表明我们的ESP8266的工作是一切正常的。
设置工作模式:AT+CWMODE=X
AT+CWMODE
是 ESP8266 Wi-Fi 模块中用于设置 Wi-Fi 工作模式的核心 AT 指令。该指令决定了模块如何与其他 Wi-Fi 网络和设备进行交互,是 ESP8266 网络配置的基础。基本上我们做ESP8266的应用层的东西,起手都会设置工作模式
模式值 | 工作模式 | 描述 |
---|---|---|
1 | Station (STA) | 作为客户端连接到现有 Wi-Fi 网络(如家庭路由器) |
2 | SoftAP (AP) | 作为接入点创建自己的 Wi-Fi 网络,允许其他设备连接 |
3 | STA+AP | 同时工作在 Station 和 SoftAP 模式,兼具两种模式的特性 |
试一下这个:这个时候我们就会设置为工作模式了
AT+CWMODE=1 OK
两个重要的复位
硬复位AT+RESTORE
AT+RESTORE
是 ESP8266 Wi-Fi 模块中用于恢复出厂设置的 AT 指令。该指令会将模块的所有参数重置为出厂默认值,清除用户配置的所有网络参数和其他设置。
AT+RESTORE ready
这个事情需要查手册来解决,我的是Ready,一些的可能是OK
软复位AT+RST
AT+RST
是 ESP8266 Wi-Fi 模块中用于软件重启模块的 AT 指令。该指令会重新初始化模块,但不改变任何用户配置参数,相当于给模块发送了一个"软复位"信号。
AT+RST OK
特性 | AT+RST (重启) | AT+RESTORE (恢复出厂设置) |
---|---|---|
参数保持 | 保留所有用户配置 | 清除所有用户配置 |
执行速度 | 较快(3-5秒) | 较慢(可能需要更长时间) |
波特率 | 保持不变 | 通常恢复为115200 |
网络配置 | 自动尝试重新连接 | 需要完全重新配置 |
使用频率 | 可频繁使用 | 应谨慎使用 |
加入Wifi AT+CWJAP
AT+CWJAP
是 ESP8266 Wi-Fi 模块中用于连接/配置无线接入点(AP)的核心 AT 指令。该指令允许模块以 Station (STA) 模式连接到指定的 Wi-Fi 网络。
AT+CWJAP="<ssid>","<password>"
注意,<ssid>
和<password>
替换成你手机热点的WIFI名称和密码
开始一次TCP通信
AT+CIPSTART
是 ESP8266 Wi-Fi 模块中用于建立 TCP/UDP/SSL 连接的核心 AT 指令。该指令允许模块作为客户端连接到指定的服务器,支持多种协议类型,是网络通信的基础。
我们这里只需要掌握TCP通信的请求即可
AT+CIPSTART="TCP", "<Target>", "<Port>"
Target换成目标的网站,Port换成通信的端口号,我们这里一般是80(HTTP),或者是443(HTTPS)
进入和退出穿透模式
进入
AT+CIPMODE=1
我们进入穿透模式很简单,就是AT+CIPMODE=1,进入穿透模式之后,我们需要做的预备动作就是准备好发送数据,
AT+CIPSEND
发送结束后,我们的串口就会输出就会有>
,这个时候,任何的request都会直接被转发到ESP8266上送到我们的服务器
+++
注意,不要带回车换行,否则会失败!,退出我们的穿透模式
上面几个就是我们会用到的指令!
相关文章:
从0开始的构建的天气预报小时钟(基于STM32F407ZGT6,ESP8266 + SSD1309)——第1章 简单的介绍一下ESP8266和他的编程指令
目录 ESP8266编程指令前导——三种工作模式 ESP8266编程指令 工作确认指令(用于非穿透模式下) 设置工作模式:ATCWMODEX 两个重要的复位 硬复位ATRESTORE 软复位ATRST 加入Wifi ATCWJAP 开始一次TCP通信 进入和退出穿透模式 进入 ES…...
Cadence Integrity 3D-IC的解密
Early System-Level Analysis and Signoff Flow 请看下期发布...
清晰易懂的 Flutter 开发环境搭建教程
Flutter 是 Google 推出的跨平台应用开发框架,支持 iOS/Android/Web/桌面应用开发。本教程将手把手教你完成 Windows/macOS/Linux 环境下的 Flutter 安装与配置,从零到运行第一个应用,全程避坑指南! 一、安装 Flutter SDK 1. 下载…...
NO.63十六届蓝桥杯备战|基础算法-⼆分答案|木材加工|砍树|跳石头(C++)
⼆分答案可以处理⼤部分「最⼤值最⼩」以及「最⼩值最⼤」的问题。如果「解空间」在从⼩到⼤的「变化」过程中,「判断」答案的结果出现「⼆段性」,此时我们就可以「⼆分」这个「解空间」,通过「判断」,找出最优解。 这个「⼆分答案…...
Python星球日记 - 第1天:欢迎来到Python星球
🌟引言: 上一篇:Python星球日记专栏介绍(持续更新ing) 名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 创作者:Code_流苏(CSDN)(一个喜欢古诗…...
去中心化交易所(DEX)
核心概念与DEX类型 DEX vs CEX 中心化交易所(CEX)风险:资产托管风险(如2019年超2.9亿美元被盗)、隐私泄露(如50万用户信息泄漏)。 DEX优势:用户自持资产(非托管&#x…...
HTTP数据传输的几个关键字Header
本文着重针对http在传输数据时的几种封装方式进行描述。 1. Content-Type(描述body内容类型以及字符编码) HTTP的Content-Type用于定义数据传输的媒体类型(MIME类型),主要分为以下几类: (一)、基础文本类型 text/plain …...
Redis 的 Raft 选举协议
Redis 的 Raft 选举协议 主要用于 Redis Sentinel 和 Redis Cluster 的高可用实现中(尽管 Redis Cluster 默认使用类似 Gossip 的协议,但 Raft 的思想在 Sentinel 的领导者选举中有体现)。以下是关于 Raft 协议在 Redis 中的应用及脑裂问题的详细解析: 一、Redis 中的 Raft…...
sshd启动报错“Failed to start OpenSSH Server daemon”
“systemctl restart sshd”启动sshd服务异常,报错“Failed to start OpenSSH Server daemon”。 使用sshd -t命令检查sshd配置文件,返回关键信息gssapikexalgorithms相关错误。 解决方法 禁用 GSSAPI 相关的 KEX 算法 编辑sshd配置文件,注…...
MIT6.828 Lab3-2 Print a page table (easy)
实验内容 实现一个函数来打印页表的内容,帮助我们更好地理解 xv6 的三级页表结构。 修改内容 kernel/defs.h中添加函数声明,方便其它函数调用 void vmprint(pagetable_t);// lab3-2 Print a page tablekernel/vm.c中添加函数具体定义 采用…...
AI本地部署之ragflow
Ubunturagflowdeepseek本地部署目录 一、配置说明1. 软件配置说明2. 硬件配置说明 二、RagFlow安装和部署1. 前置条件2. 安装注:如果发现没有出现这个界面,可以进入ragflow/docker/ragflow-logs这个路径,查看ragflow_server.log文件中的内容&…...
源码分析之Leaflet属性控件Control.Attribution实现原理
概述 Control.Attribution 是一个 Leaflet 地图控件,用于显示地图的版权信息。它可以显示地图提供者的名称和链接,以及地图上的图层的版权信息。 源码分析 源码实现 Control.Attribution的源码实现如下 var ukrainianFlag <svg aria-hidden"…...
NO.62十六届蓝桥杯备战|基础算法-二分查找|查找元素的第一个和最后一个位置|牛可乐和魔法封印|A-B数对|烦恼的高考意愿(C++)
⼆分算法是我觉得在基础算法篇章中最难的算法。⼆分算法的原理以及模板其实是很简单的,主要的难点在于问题中的各种各样的细节问题。因此,⼤多数情况下,只是背会⼆分模板并不能解决题⽬,还要去处理各种乱七⼋糟的边界问题 34. 在…...
开源模型应用落地-Qwen2.5-Omni-7B模型-部署 “光速” 指南
一、前言 2025年3月,阿里巴巴通义千问团队开源的全模态大模型Qwen2.5-Omni-7B,犹如一记惊雷划破AI领域的长空。这个仅70亿参数的"小巧巨人",以端到端的架构实现了对文本、图像、音频、视频的全模态感知,更通过创新的Thinker-Talker双核架构,将人类"接收-思…...
顺序容器 -forward list单链表
forward list单链表是C11加入到STL的。 使用forward list,必须包含头文件<forward_list> #include <forward_list> 这个头文件被定义在命名空间std内。 namespace std {template <typename T,typename Allocator allocator<T> >class …...
C++:算术运算符
程序员Amin 🙈作者简介:练习时长两年半,全栈up主 🙉个人主页:程序员Amin 🙊 P S : 点赞是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全…...
缺页异常导致的iowait打印出相关文件的绝对路径
一、背景 在之前的博客 增加等IO状态的唤醒堆栈打印及缺页异常导致iowait分析-CSDN博客 里,我们进一步优化了D状态和等IO状态的事件的堆栈打印,补充了唤醒堆栈打印,也分析了一种比较典型的缺页异常filemap_fault导致的iowait的情况。 在这篇…...
【Centos】centos7内核升级-亲测有效
相关资源 通过网盘分享的文件:脚本升级 链接: https://pan.baidu.com/s/1yrCnflT-xWhAPVQRx8_YUg?pwd52xy 提取码: 52xy –来自百度网盘超级会员v5的分享 使用教程 将脚本文件上传到服务器的一个目录 执行更新命令 yum install -y linux-firmware执行脚本即可 …...
多模态模型:专栏概要与内容目录
文章目录 多模态模型📚 核心内容模块Stable Diffusion基础教程Stable Diffusion原理深度解析部署与环境配置其他多模态模型实践 多模态模型 🔥 专栏简介 | 解锁AI绘画与多模态模型的技术奥秘 探索多模态AI技术,掌握Stable Diffusion等流行框…...
1. 购物车
1. 购物车 咱们购物车基于 V2 装饰器进行开发,底气来源于 自定义组件混用场景指导 1.1. 素材整合 observedv2和Trace 数据模型和页面 // 其他略 // 购物车 export interface CartGoods {count: number;id: string;name: string;picture: string;price: number;…...
frp 让服务器远程调用本地的服务(比如你的java 8080项目)
1、服务器上安装frp 2、本地安装frp 服务器上 frps.toml 配置信息: bindPort 30000auth.token "密码" # 客户端连接密码vhostHTTPPort 8082 本地 frpc.toml serverAddr "服务器ip" serverPort 30000 auth.token "服务器上设置的…...
《AI大模型应知应会100篇》第56篇:LangChain快速入门与应用示例
第56篇:LangChain快速入门与应用示例 前言 最近最火的肯定非Manus和OpenManus莫属,因为与传统AI工具仅提供信息不同,Manus能完成端到端的任务闭环。例如用户发送“筛选本月抖音爆款视频”,它会自动完成: 爬取平台数据…...
大模型——如何在本地部署微软的OmniParser V2
微软的 OmniParser V2 是一款尖端的人工智能屏幕解析器,可通过分析屏幕截图从图形用户界面中提取结构化数据,使人工智能代理能够与屏幕元素进行无缝交互。该工具是构建自主图形用户界面代理的完美选择,它改变了自动化和工作流程优化的游戏规则。在本指南中,我们将介绍如何在…...
Oracle触发器使用(一):DML触发器
Oracle触发器使用(一):DML触发器 DML触发器条件谓词触发器INSTEAD OF DML触发器复合DML触发器Oracle数据库中的触发器(Trigger)本质上也是PL/SQL代码,触发器可以被Enable或者Disable,但是不能像存储过程那样被直接调用执行。 触发器不能独立存在,而是定义在表、视图、…...
智慧园区大屏如何实现全局监测:监测意义、内容、方式
智慧园区的价值不容小觑呀,可以说园区的大部分数据都在这个大屏上,监测数据越多,那么大屏的价值就越大。很多小伙伴拿到需求后感觉无从下手,本文在这里智慧园区大屏可以监测哪些内容、监测的意义、监测的方式等,欢迎点…...
LeetCode 解题思路 31(Hot 100)
解题思路: 递归参数: 字符串 s、结果集 result、当前路径 path、回文子串数组 dp、开始位置 start。递归过程: 当当前路径 path 的长度等于 s.length() 时,说明已经分割完成,加入结果集。若当前起止位置满足回文条件…...
fastAPI详细介绍以及使用方法
FastAPI是一个现代的Python web框架,它提供快速构建API的能力。它具有高性能、易用性和文档自动生成的特点,使得开发者能够快速开发高效的API服务。 以下是一些FastAPI的主要特点和优势: 快速:FastAPI基于Python 3.6的异步框架St…...
数字人训练数据修正和查看 不需要GPU也能运行的DH_live-加载自己训练-
自己训练模pth报错 le "D:\ai\dh_live\app.py", line 42, in demo_mini interface_mini(asset_path, wav_path, output_video_name) File "D:\ai\dh_live\demo_mini.py", line 21, in interface_mini renderModel_mini.loadModel("checkpoi…...
WGAN-GP 原理及实现(pytorch版)
WGAN-GP 原理及实现 一、WGAN-GP 原理1.1 WGAN-GP 核心原理1.2 WGAN-GP 实现步骤1.3 总结二、WGAN-GP 实现2.1 导包2.2 数据加载和处理2.3 构建生成器2.4 构建判别器2.5 训练和保存模型2.6 图片转GIF一、WGAN-GP 原理 Wasserstein GAN with Gradient Penalty (WGAN-GP) 是对原…...
chromium魔改——navigator.webdriver 检测
chromium源码官网 https://source.chromium.org/chromium/chromium/src 说下修改的chromium源码思路: 首先在修改源码过检测之前,我们要知道它是怎么检测的,找到他通过哪个JS的API来做的检测,只有知道了如何检测,我们…...
Sentinel[超详细讲解]-7 -之 -熔断降级[异常比例阈值]
📖 主要讲解熔断降级之 --- 异常比例阈值 🚀 1️⃣ 背景 Sentinel 以流量作为切入点,提供了很多的丰富的功能,例如🤗: 流量控制,熔断降级等,它能够有效的适用各个复杂的业务场景&am…...
程序化广告行业(56/89):S2S对接与第三方广告监测全解析
程序化广告行业(56/89):S2S对接与第三方广告监测全解析 大家好!在前面的博客中,我们一起深入学习了程序化广告的人群标签、用户标签生成、Look Alike原理,以及DMP与DSP对接和数据统计原理等内容。今天&…...
C++进阶知识复习 31~38
目的 写这一系列文章的目的主要是为了秋招时候应对计算机基础问题能够流畅的回答出来 (如果不整理下 磕磕绊绊的回答会被认为是不熟悉) 本文章题目的主要来源来自于 面试鸭 部分面试鸭上没有而牛客网上有的博主会进行查缺补漏 题目编号按照面试鸭官网…...
Spring Boot 整合mybatis
2025/4/3 向全栈工程师迈进!!! 配置文件在实际开发中如何使用呢,接下去将通过Spring Boot整合mybatis来看配置文件如何在实际开发中被使用。 一、引入mybatis起步依赖 在pom.xml中引入mybatis的起步依赖,如下。 在这…...
新能源汽车测试中的信号调理模块:从原理到实战应用
摘要 信号调理模块(Signal Conditioning Module, SCM)是新能源汽车(NEV)测试系统中的关键环节,直接影响数据采集的精度与可靠性。本文面向HIL测试工程师、电机测试工程师及整车动力经济性测试工程师,系统性…...
一篇关于Netty相关的梳理总结
一篇关于Netty的梳理总结 一、Netty1.1 什么是netty?为什么要用netty1.2 Netty是什么? 二、Netty关于网络基础2.1 线程池2.2 线程池线程的生命周期和状态2.3 为什么要使用线程池2.4 简述线程池原理,FixedThreadPool用的阻塞队列是什么2.5 并发…...
纺织车间数字化转型:降本增效新路径
在纺织行业竞争日益激烈的当下,如何提升生产效率、降低成本成为企业关注的焦点。某纺织车间通过创新引入明达技术MBox20网关并部署IOT 平台,成功接入千台设备,实现了生产模式的重大变革。 以往,纺织车间生产犹如黑箱,…...
递归典例---汉诺塔
https://ybt.ssoier.cn/problem_show.php?pid1205 #include<bits/stdc.h> #define endl \n #define pii pair<int,int>using namespace std; using ll long long;void move(int n,char a,char b,char c) // n 个盘子,通过 b,从 a 移动到 …...
Unity2D:从零开始制作一款跑酷游戏!
目录 成品展示 美术资源 制作步骤 场景预布设: 实现人物基础功能: 移动背景——横向卷轴: 生成障碍物: 生成敌人与攻击逻辑: UI制作与重新开始: 导出游戏: 小结 大家小时候都玩过《…...
维拉工时自定义字段:赋能项目数据的深度洞察 | 上新预告
原文链接:维拉工时自定义字段:赋能项目数据的深度洞察 | 上新预告 在项目管理实践中,每个企业都有独特的数据统计与分析需求。为了帮助用户实现个性化数据建模,从而更精准地衡量项目进度和预算投入,维拉工时全新升级的…...
C++ | 文件读写(ofstream/ifstream/fstream)
一、C文件操作核心类 C标准库通过<fstream>提供了强大的文件操作支持,主要包含三个关键类: 类名描述典型用途ofstream输出文件流(Output File Stream)文件写入操作ifstream输入文件流(Input File Stream&#…...
flux文生图部署笔记
目录 依赖库: 文生图推理代码cpu: cuda版推理: 依赖库: tensorrt安装: pip install nvidia-pyindex # 添加NVIDIA仓库索引 pip install tensorrt 文生图推理代码cpu: import torch from diffusers import FluxPipelinemodel_id = "black-forest-labs/FLUX.1-s…...
二语习得理论(Second Language Acquisition, SLA)如何学习英语
二语习得理论(Second Language Acquisition, SLA)是研究学习者如何在成人或青少年阶段学习第二语言(L2)的理论框架。该理论主要关注语言习得过程中的认知、社会和文化因素,解释了学习者如何从初学者逐渐变得流利并能够…...
策略模式实际用处,改吧改吧直接用,两种方式
controller RestController RequestMapping("admin/test") RequiredArgsConstructor(onConstructor __(Autowired)) public class TestController {Autowiredprivate VideoFactory VideoFactory;GetMapping("getList")public R getList(){// 第一种方式T…...
计算机网络-TCP的流量控制
内容来源:小林coding 本文是对小林coding的TPC流量控制的精简总结 什么是流量控制 发送方不能无脑的发数据给接收方,要考虑接收方处理能力 如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制 从而导致网…...
搬砖--贪心+排序的背包
a在上面b在下面->a.v-M-b.m>b.v-M-a.m->剩余率大 所以我先遍历a,让a在上面 这就是要考虑贪心排序的01背包 因为它有放的限制条件 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int>…...
git克隆数据失败
场景:当新到一家公司,然后接手了上一个同时的电脑,使用git克隆代码一直提示无法访问,如图 原因:即使配置的新的用户信息。但是window记录了上一个同事的登录信息,上一个同事已经被剔除权限,再拉…...
Dart 语法
1. 级联操作符 … var paint Paint()..color Colors.black..strokeCap StrokeCap.round..strokeWidth 5.0;2. firstWhereOrNull 3. 隐藏或导入部分组件 // Import only foo. import package:lib1/lib1.dart show foo;// Import all names EXCEPT foo. import package:lib…...
34、web前端开发之JavaScript(三)
十. DOM操作详解 1、DOM简介 文档对象模型(DOM,Document Object Model)是JavaScript与网页内容交互的接口。它将HTML文档表示为一种树状结构(DOM树),其中每个节点代表文档的一部分(例如元素、…...
自适应卡尔曼滤波
目录 自适应卡尔曼滤波 自适应卡尔曼滤波 主要作用,去抖动 AdaptiveKalmanFilter.py import cv2 import numpy as np from collections import deque# ------------------ 核心去抖算法 ------------------ import cv2 import numpy as np from collections import deque#…...