STM32--ESP8266物联网WIFI模块(贝壳物联)--远程无线控制点灯

news2024/11/17 19:40:54

本文适用于STM32F103C8T6等MCU,其他MCU可以移植,完整资源见文末链接

一、简介

随着移动物联网的发展,各场景下对于物联控制、数据上传、远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜好用性价比极高的wifi物联模块——ESP8266,话不多少我们先来看看这个神奇的模块长什么样子!
下图是ESP8266-01模块,与之对应的还有ESP8266-01S,两者基本一致,只是后者内部集成了上拉电阻,ESP8266-01使用的时候需要手动接上拉电阻(CH_PD管脚接10k上拉电阻)
在这里插入图片描述
除了上述简单的wifi模块外,还有如下图所示的WIFI模组,具有更多的IO和控制资源
在这里插入图片描述
ESP8266是智能家居等物联网场景下常用的数传模块,具有强大的功能,通过串口转WIFI的方式可实现远距离无线数据传输、远程控制、在线查询等基本物联网诉求!

ESP8266模块有两种模式:
模式一:连网传输数据,就是连接你家中的路由器,即Station模式,本文主要基于该模式进行介绍
模式二:这个模块本身作为一个热点来让你的手机连接它,即AP模式
如果要彻底搞懂这个模块还需要了解AT指令集和mqtt协议,这些相对比较复杂,不在此展开,本文直接上干活,争取用最短的时间教会大家做出项目,并可以按照自己的需求修改

本系列文章就基于ESP8266-01S+STM32F103进行简单的远程控制介绍,从而了解ESP8266的基本功能。内容比较多,我尽量每一步详细说明,请耐心看完。

二、电气特性

产品参数如下:
在这里插入图片描述
注意:模块电压为3.0-3.6V,不可直接用5V供电,电流大于500mA,需要单独供电

模块管脚定义:
在这里插入图片描述

三、透传设置

透传主要为了设置开机自动透传,断线自动重连,可实现数据连续上传,透传设置包括配置(1)WiFi名称(2)WiFi密码,这个设置对于后续数据自动上传至关重要,若WiFi信息更改需要重新透传设置。

常用的透传设置包括
(1)手动透传:借助串口助手+AT指令配置——本文介绍透传方式
(2)自动透传:这里主要借助Arduino单片机实现配置,如果这个单片机不熟悉的话建议选择方式一手动透传

接下来就重点介绍利用串口助手进行数据透传设置,准备工作如下:
(1)串口助手软件(文末附资源链接)
(2)USB转串口模块,某宝上搜索有很多
(3)服务器网站(本文选用“贝壳物联”,网址:https://www.bigiot.net/)

手动透传接线说明

ESP8266-01SUSB转串口模块
VCC3V3(注意:透传设置时模块功耗不高,可直接连接使用USB供电)
GNDGND
RXDTXD
TXDRXD
CH_PD如果使用ESP8266-01需要接10K上拉,-01s无需接线

接线图
在这里插入图片描述
检测ESP8266模块是否正常
在这里插入图片描述
在串口助手中发送"AT"指令,如果返回“OK”则表示正常启动,否则需要检查下接线是否正确,电源及RXD/TXD是否接反,以及模块单体是否损坏

查询固件版本
使用"AT+GMR"命令查询当前固件版本:
在这里插入图片描述
通过命令透传设置
如果固件是V0.9.5.2版本,在串口助手中依次输入以下命令进行透传设置

//设置WiFi应用模式为Station
AT+CWMODE=1
//连接到WiFi路由器,请将SSID替换为路由器名称,Password替换为路由器WiFi密码
AT+CWJAP="SSID","Password"
//连接贝壳物联服务器
AT+CIPSTART="TCP","www.bigiot.net",8181
//设置为透传模式
AT+CIPMODE=1
//进入透传模式
AT+CIPSEND

完成以上命令重启,自动进入透传模式,并连接贝壳物联服务器

如果固件是V1.0+版本,在串口助手中输入以下命令进行透传设置(本文使用的固件刷新方法)
其中,SSID是路由器名称,Password是路由器WiFi密码,其他不需要修改

+++
AT
ATE0
AT+RESTORE
AT+CWMODE=3
//连接到WiFi路由器,请将SSID替换为路由器名称,Password替换为路由器WiFi密码
AT+CWJAP="SSID","Password"
AT+CIPMUX=0
AT+CIPMODE=1
//这块是贝壳物联网站地址,不用修改
AT+SAVETRANSLINK=1,"121.42.180.30",8181,"TCP"

在这里插入图片描述
自此,ESP8266透传设置完成,后面连接单片机后就可以进行远程无线点灯控制了

四、远程点灯控制

前面介绍了ESP8266模块并完成透传设置,接下来就可以连接STM32单片机进行远程无线点灯控制了,这里以STM32F103C8T6单片机为例说明,其他MCU也是类似的。LED灯使用的是C8T6最小系统板上板载的LED灯,选用其他IO口控制的话修改在代码中修改对应的接口就行了。服务器端选用的是贝壳物联,后面有详细的配置端说明

ESP8266-01S和STM32F103C8T6接线图

ESP8266-01SSTM32F103C8T6
VCC3V3(电流大于500mA,需独立供电)
GNDGND
RXDPA9
TXDPA10
CH_PDESP8266-01需要接10K上拉,-01s不需要

STM32F103C8T6最小系统板
C8T6最小系统板如下图所示,其中控制的板载LED灯管脚就是图中左下角框起来的PC13管脚,如选用其他管脚直接在代码中修改即可
在这里插入图片描述

系统框图
基于ESP8266的远程无线控制点灯如下所示,贝壳物联服务器控制点灯按钮操作后,ESP8266-01S接收控制指令并通过串口传输给STM32F103C8T6 MCU,C8T6接收接收到对应指令后再执行点灯/关灯操作
在这里插入图片描述

贝壳物联服务器端设置
STM32和ESP8266配置好还只是数传的开始,只是硬件模块搭建好了,若想实现数据远程无线控制,还需要对服务器端进行设置,本文以贝壳物联为例进行说明,网站链接如下:
https://www.bigiot.net/

进入网站首页,点击右上角“注册”、“登录”拥有自己的账号
在这里插入图片描述

注册成功后主页面显示如下,注意这里面的 “ID”和“APIKEY” 这两个参数是和你添加智能设备后就有的,不会改变,后面代码中会用到
在这里插入图片描述

如果需要添加新的智能设备的话,可以在“智能设备”——“添加设备”中添加在这里插入图片描述

由于本文是实现远程无线点灯操作,所以选择“智能设备”——“设备对话”界面

这个界面可以查看当前在线的设备,然后在命令输入框中输入对应的点灯控制指令“play”,即可以看见板载的LED灯被点亮
如果命令输入框中输入对应的关灯控制指令“stop”,即可以看见板载的LED灯被关闭
下面命令记录是记录了当前所有的操作过程,详细见后面演示视频
在这里插入图片描述

如果觉得输入指令太麻烦,也可以选择“设备遥控”面板进行控制,原理是一样的。

这里面已经定义了每个模块对应的控制命令,只要在代码中稍作修改就可以实现功能,如下图框起来的分别是“play”和“stop”指令,其他按钮指令鼠标放上即能看见,点击对应按钮同样可实现远程无线控制功能,具体见后面演示视频
在这里插入图片描述

STM32代码下载:(完整代码资源及串口助手见文末链接)
代码打开路径:bigiotSTM32-master\bigiot\Project\STM32F10x_LED\MDK-ARM\Project

其中“DEVICEID”和“APIKEY”就是你网站注册后的数据

/*以下两个变量必须修改为自己的设备ID及APIKEY,在贝壳物联用户中心添加设备即可获得*/
char *DEVICEID = "30017";
char *APIKEY = "90e6c4964";

服务器网站对应参数截图
在这里插入图片描述

远程无线控制指令

        if(strncmp(content, "play", 4) == 0)
        {
            char new_content[] = "led played";
            //do something here....
            Led_On(LED1);//板载LED亮
            Led_On(LED2);//外接LED亮
            say(from_id, new_content);
        }
        else if(strncmp(content, "stop", 4) == 0)
        {
            char new_content[] = "led stoped";
            //do something here....
            Led_Off(LED1);//板载LED灭
            Led_Off(LED2);//外接LED灭
            say(from_id, new_content);
        }

修改LED灯控制管脚,在LED.c和LED.h文件中修改即可

/* LED1端口控制 */
#define Led1SetHigh()       GPIO_SetBits(GPIOC, GPIO_Pin_13)
#define Led1SetLow()        GPIO_ResetBits(GPIOC, GPIO_Pin_13)
#define Led1Status()        GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)

五、结果展示

远程无线控制点灯视频展示如下(高清视频请前往哔哩哔哩观看)

STM32--ESP8266物联网WIFI模块(贝壳物联)--远程无线控制点灯

完整代码链接:

代码打开路径:bigiotSTM32-master\bigiot\Project\STM32F10x_LED\MDK-ARM\Project
百度网盘下载
链接:https://pan.baidu.com/s/1nmwGjhvpNqJKe_irC9WyUQ
提取码:rqhk

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/634302.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS 7.6安装 MongoDB 5.0.2

1、选择下载地址 进入下载官网 https://www.mongodb.com/try/download/community 选择右侧MongoDB Community Server Version:5.0.2(current) Platform:RedHat / CentOS 7.0 Package:tgz 点击Copy复制 安装位置&am…

爆肝总结,软件测试-常见并发问题+解决方案,测试进阶...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 并发测试的定义 …

LVS负载均衡--NET模式

目录 企业群集应用概率 群集的含义 问题 根据群集所针对的目标差异,可分为三种类型 负载均衡群集(Load Balance Cluster) 高可用群集(High Availability Cluster) 高性能运算群集(High Performance Computer Cluster) 负载均衡群集架构 负载均衡的结构 LV…

XuperChain搭建+报错+注意事项

安装依赖 golang 这里安装的是15-17版本 wget -c https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local 添加环境变量 这个可以通过添加下面的行到/etc/profile文件(系统范围内安装)或者$HOME/.profile文件(当前用户安装 vim /etc…

论文笔记--GPT-4 Technical Report

论文笔记--GPT-4 Technical Report 1. 报告简介2. 报告概括3 报告重点内容3.1 Predictable Scaling3.2 Capabilities3.3 limitations3.3 Risks & mitigations 4. 报告总结5. 报告传送门6. References 1. 报告简介 标题:GPT-4 Technical Report作者:…

机器学习——单变量线性回归、梯度下降

文章目录 一、机器学习的分类二、线型回归Linear regression(单变量线性回归)三、代价函数3.1 建模误差3.2 平方误差代价函数 Squared error cost function3.3 梯度下降3.4 梯度下降与线性回归相结合 一、机器学习的分类 监督学习:学习数据带…

算法模板(3):搜索(6):做题积累

算法模板(3):搜索(6):做题积累 一、DFS 1. 1113. 红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻(上下…

【剑指offer专项突破版】链表篇——“C“

文章目录 前言一.删除链表的倒数第 n 个结点题目分析思路分析细节分析步骤代码 二.链表中环的入口节点题目分析思路分析写法①代码写法②代码: 三.两个链表的第一个重合节点题目分析思路分析代码 四.反转链表题目分析思路分析法①代码法②代码法③代码 五.链表中的两数相加题目…

西南交通大学智能监测 培训课程练习4

2023.056.07和09培训 项目实战 目录 一、infracore(基础核心层) 1.1database 1.2config 1.3util 二、业务领域模块 2.1structure模块 2.1.1domain层 2.1.2application层 2.1.3adapter层 2.2sensor模块 2.2.1domian层 2.2.2application层 2.2.…

一文搞懂什么是Docker

一、什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇…

Java ~ Reference ~ Finalizer【总结】

前言 文章 相关系列:《Java ~ Reference【目录】》(持续更新)相关系列:《Java ~ Reference ~ Finalizer【源码】》(学习过程/多有漏误/仅作参考/不再更新)相关系列:《Java ~ Reference ~ Final…

基于Python的接口自动化-Requests模块

目录 引言 一、模块说明 二、Requests模块快速入门 1 发送简单的请求 2 发送带参数的请求 3 定制header头和cookie 4 响应内容 5 发送post请求 6 超时和代理 三、Requests实际应用 引言 在使用Python进行接口自动化测试时,实现接口请求…

2023春期末考试选择题R2-9AVL树插入调整详解

题目: 将 8, 9, 7, 2, 3, 5, 6, 4 顺序插入一棵初始为空的AVL树。下列句子中哪句是错的? A. 4 和 6 是兄弟 B. 5 是 8 的父结点 C. 7 是根结点 D. 3 和 8 是兄弟 解题要点: 需要对AVL树的4种旋转方式熟悉。 AVL旋转过程: 根据…

体验ChatGPT使用

ChatGPT是一种基于GPT(Generative Pre-train Transformer)模型的大型语言模型,由OpenAI公司开发。 交互时,有一定的技巧,可以快速准确的反馈正确答案。 一、开发贪吃蛇游戏 浏览器访问:https://chat.opena…

taro使用小记 —— 持续更新

目录 1、在 taro 中使用 axios2、在 taro 中添加全局组件自动引入和方法自动引入3、在 taro 中使用 pinia 1、在 taro 中使用 axios taro 3.6 版本已经支持了网络请求库。 需安装插件 tarojs/plugin-http 使用和注意事项说明: https://www.npmjs.com/package/taroj…

【笔试强训选择题】Day22.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!! 文章目录 前言 一、…

mac电脑m1搭建java开发环境参考手册

1 背景介绍 开发人员经常会换电脑,或者换新电脑,意味着重新搭建开发环境,很麻烦。但新电脑到手里面了,不换又不好,此篇专门用来记录mac电脑m1搭建java开发环境的步骤。希望对读者有所帮助,一条龙服务。 后…

初探 transformer

大部分QA的问题都可以使用seq2seq来实现。或者说大多数的NLP问题都可以使用seq2seq模型来解决。 但是呢最好的办法还是对具体的问题作出特定的模型训练。 概述 Transformer就是一种seq2seq模型。 我们先看一下seq2seq这个模型的大体框架(其实就是一个编码器和一个解码器)&a…

OpenGL 光照贴图

1.简介 现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成。想想一辆汽车:它的外壳非常有光泽,车窗会部分反射周围的环境,轮胎不会那么有光泽,所以它没有镜面高光,轮毂非常闪亮。 2.漫反射…