【Arduino+ESP32+腾讯云+sg90】强制门户+腾讯云控制开关灯
作者有话说
博主对于Arduino开发并没有基础,但是为了实现更加方便的配网,这几天一直在尝试用ESP32-12F(因为手头刚好有一个,其他的也可以)来做远程开关灯!不知道大家是否注意到,上一篇利用STM32实现远程开关灯时,对于是开灯还是关灯,完全依赖于接收到的腾讯云发送的指令的次数,这个方式很傻。这样写是因为在使用腾讯连连APP时,发现按下按钮只能发送固定的指令,无法区别是开灯还是关灯。但是最近在使用微信小程序时发现小程序可以实现开灯和关灯的操作,而且发送指令不同。至于为什么APP端只能发送固定指令,博主目前还不明白,如果有大佬知道,欢迎评论区留言指导!
如有其他问题,欢迎关注文末公众号私信讨论!
文章目录
- 作者有话说
- 一、配网问题
- 1.1 网页源码
- 1.2 强制门户+Web配网
- 二、连接腾讯云
- 三、舵机控制
- 四、问题总结
一、配网问题
鉴于上一篇利用STM32实现的远程开关灯的配网问题没有好的思路,这里尝试使用强制门户,Web配网。关于Web配网和强制门户,大家可以参考这篇文章。ESP8266的Web配网以及强制门户的实现(连接wifi自动打开网页)。程序也可以参考这位大佬的程序。博主由于对于Arduino开发不甚了解,所以也参考了大佬的程序,只不过进行了一些修改。修改后实现的强制门户网页是这样子的。

1.1 网页源码
<!DOCTYPE html>
<html lang='en'>
<head><meta charset='UTF-8'><meta name='viewport' content='width=device-width, initial-scale=1.0'><title>Document</title>
</head>
<body style='background: #e5e9f2'><div align='center' style='margin-top:80px;'><div align='center' style='width:300px;height:240px;background:#FFFFFF;border-radius: 30px;'><form name='input' action='/' method='POST'><input type='text' value='ERTU Elec' disabled='disabled' style='color:#FFFFFF;background:#90EE90;border-radius:30px;width:170px;height:30px;border:none;margin-top:15px;text-align:center;'><br><input type='text' name='ssid' placeholder='请输入 WiFi 名称' style='margin-top:20px;width:170px;height:30px;text-align:center;border-radius: 10px;'><br><input type='text' name='password' style='width:170px;height:30px;text-align:center;margin-top:15px;border-radius: 10px;' placeholder='请输入 WiFi 密码'><br><input type='submit' value='确定' style='border-radius:30px;width:170px;height:30px;margin-top:20px;border:none;background:#90EE90;color:#FFFFFF;'></form></div></div>
</body>
</html>
1.2 强制门户+Web配网
上面介绍了,代码是参考的上面文章里面的,但是稍做了修改。这里只说明一下问题,并且介绍一下修改的部分。
先贴一小部分大佬的代码
void connectNewWifi(void){WiFi.mode(WIFI_STA);//切换为STA模式WiFi.setAutoConnect(true);//设置自动连接WiFi.begin();//连接上一次连接成功的wifiSerial.println("");Serial.print("Connect to wifi");int count = 0;while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}if(WiFi.status() == WL_CONNECTED){//如果连接上 就输出IP信息 防止未连接上break后会误输出Serial.println("");Serial.println("WIFI Connected!");Serial.print("IP address: ");Serial.println(WiFi.localIP());server.stop();}
}
————————————————
版权声明:本文为CSDN博主「江麟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44220583/article/details/111562423
这部分代码的关键问题在于,即使获取到了新的需要连接的Wifi名称和密码,也无法连接成功。因为在函数WiFi.begin();中并没有用到我们新输入的Wifi名称和Wifi密码。其实在原文的评论区里有看到大家将程序改成WiFi.begin(sta_ssid,sta_password);。但是这样也存在问题。原程序中,在没有配网之前,sta_ssid和sta_password都是空的字符串,因此第一次尝试连接Wifi时必定是失败的,必须等到获取到输入的信息后才可以连接指定Wifi。这样每次上下电都需要进行一次配网,不太友好。所以博主进行了以下改进。
// 如果输入了新的Wifi,连接新的Wifiif(strlen(sta_ssid) != 0 && strlen(sta_password) != 0){WiFi.begin(sta_ssid,sta_password); // 连接新wifiSerial.println("");Serial.println("新Wifi连接中");}else{WiFi.begin(); // 连接上一次连接成功的wifiSerial.println("");Serial.println("上次连接的Wifi连接中");}
在准备连接Wifi时,首先判断一下sta_ssid和sta_password都是否都是空的字符串,如果都是空的,那么说明我们直接尝试连接之前连接过的Wifi即可。如果sta_ssid和sta_password不是空的字符串,那么说明我们输入了新的Wifi,直接连接新的Wifi即可。
二、连接腾讯云
连接腾讯云,博主参考了这位大佬的文章,这里贴一下Esp32_Arduino接入腾讯云笔记。
三、舵机控制
完成了连接Wifi并且上云之后,剩下的就是舵机控制部分程序。这里贴一个ESP32控制舵机的例子,仅供参考。
#include <Servo.h> //调用舵机库Servo myservoD2; // 定义舵机对象void setup(){myservoD2.attach(D2);myservoD2.write(70); // 原始位置delay(1000);myservoD2.write(0); // 关灯delay(1000);myservoD2.write(140); // 开灯}void loop(){}
四、问题总结
在进行腾讯云调试时,可能会出现设备上线后,点击按钮,发送控制指令后,立刻显示设备离线。遇到这种情况,可以先将ESP32断电,等待两分钟后再重新上电调试即可。
相关文章:
【Arduino+ESP32+腾讯云+sg90】强制门户+腾讯云控制开关灯
作者有话说 博主对于Arduino开发并没有基础,但是为了实现更加方便的配网,这几天一直在尝试用ESP32-12F(因为手头刚好有一个,其他的也可以)来做远程开关灯!不知道大家是否注意到,上一篇利用STM32…...
windows中elasticsearch7中添加用户名密码验证
1.找到elsatic的bin目录输入cmd 2.生成ca证书 输入 elasticsearch-certutil ca 在es7根目录生成ca证书,输入密码时直接回车即可,否则后面会报错 Please enter the desired output file [elastic-stack-ca.p12]: #这里直接回车即可 Enter password for…...
linux安装达梦数据库(命令行安装)
安装达梦数据库 创建安装用户 1,创建安装用户组dinstall [rootdmDMServer1 ~]# groupadd -g 12345 dinstallgroupadd : 创建组 -g : 指定组id(GID) 12345: 指定的组名称 dinstall : 组名 2,创建安装用户dmdba [rootdmDMSe…...
Flutter——最详细(CustomScrollView)使用教程
CustomScrollView简介 创建一个 [ScrollView],该视图使用薄片创建自定义滚动效果。 [SliverList],这是一个显示线性子项列表的银子列表。 [SliverFixedExtentList],这是一种更高效的薄片,它显示沿滚动轴具有相同范围的子级的线性列…...
解决容器内deepspeed微调大模型报错
解决容器内deepspeed微调大模型报错:[launch.py:315:sigkill_handler] Killing subprocess 问题描述:解决办法 问题描述: 在容器中用deepspeed微调百川大模型2时,出现上述错误,错误是由于生成容器时,共享内…...
UE 插件模块引用
如Plugons中的模块A想要引用模块B: 1、模块A中的.uplugin文件加入↓ 2、模块A中的.Build.cs文件加入↓ 3、在模块A需要用到模块B的地方直接include 4、重新generate Project 5、重新编译 注意两个模块之间不能循环引用...
python元组、拆包和装包
注意 元组不能修改元素 元组:如果元素为字符串且元素为1个,必须加一个, ********* t1 (aa,) 下标和切片 in not in for ... in ... 元组转为列表 拆包、装包...
1-Docker安装MySQL8.0
1 背景知识记录 1.1 MySQL 的基本配置记录 MySQL的配置文件目录(/etc/mysql): root2dd6033b5c17:/etc/mysql# pwd /etc/mysql root2dd6033b5c17:/etc/mysql# ls conf.d my.cnf my.cnf.fallback MySQL的data文件目录(/var/lib/my…...
配电房智能化改造在加油站等的应用
随着科技的发展和智能化趋势的推进,对加油站配电房进行智能化改造成为了一个必然的选择。智能化改造不仅可以提高加油站的工作效率,减少事故发生率,还可以实现能源的合理利用,提高经济效益。 力安科技加油站智能化改造升级是一种高…...
集准测试-架构真题(五十六)
如果数据库单标即可实现业务功能,采用()方式进行数据交换与处理较为合适。如果通过数据库不同表的连接操作获取数据才能实现业务功能,这时候采用()方式进行数据交换与处理合适。 主动记录数据网关包装器数…...
木与空间的舞蹈:奥地利住宅的独特设计
国外著名设计师,为一位业主设计了一座住宅,附带有附属建筑和有盖的入口,形成了像庭院一样的建筑群。 这座住宅采用了当地的传统建筑风格,有长方形的平面和陡峭的顶棚,与周围的房屋相符。然而,内部设计别具一…...
性能优化-卡顿优化-tarce抓取及分析
性能优化(卡顿分析) 文章目录 一、抓取trace的方法1.使用systrace抓取trace2.使用atrace抓取3.使用Perfetto抓取trace 二、trace文件的分析1.快捷操作1.1 导航操作1.2 快捷操作 2.chrome trace工具分析trace文件3.Prefetto分析trace文件 一、抓取trace的…...
P5740 【深基7.例9】最厉害的学生
题目描述 现有 N N N 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 8 8 个字符的仅有英文小写字母的字符串)、语文、数学、英语成绩(均为不超过 150 150 150 的自然数)。总分最高的学…...
Hive引擎MR、Tez、Spark
Hive引擎包括:默认MR、Tez、Spark 不更换引擎hive默认的就是MR。 MapReduce:是一种编程模型,用于大规模数据集(大于1TB)的并行运算。 Hive on Spark:Hive既作为存储元数据又负责SQL的解析优化࿰…...
不写前端代码,curl直接调试sse
不写前端代码,curl直接开两个终端调试sse 过程: 客户端向服务端发送建立连接请求; 服务端向客户端推送内容; 服务端向客户端发送结束信号并结束 注意事项: 只有连接时要求content-type是xxx 其他问题: …...
百分点科技受邀参加“一带一路”国际合作高峰论坛
10月17-18日,第三届“一带一路”国际合作高峰论坛在北京成功举行。作为新一代信息技术出海企业代表,百分点科技董事长兼CEO苏萌受邀出席高峰论坛开场活动——“一带一路”企业家大会,与来自82个国家和地区的企业或机构、有关国际组织、经济机…...
git学习——第4节 时光机穿梭
我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version control system. Git is free software. 现在&…...
golang 在 Mac、Linux、Window 下交叉编译
目录 交叉编译参数说明CGO_ENABLEDGOOS : 目标操作系统【darwin、linux、windows】GOARCH :目标架构【386、amd64、arm】 Mac 下编译,Linux / Windows 下执行Linux 下编译,Mac / Windows 下执行Windows 下编译,Mac / Linux 下执行…...
半导体可靠性测试方法都有哪些?
半导体测试是半导体设备中的一种技术,其中半导体组件(芯片、模块等)在组装到系统就会出现故障。在特定电路的监控下,部件被迫经历一定的半导体试验条件,并分析部件的负载能力等性能。这种半导体测试有助于确保系统中使用的组件导体器件&#…...
百度智能云发布AI原生应用工作台,为大模型落地五类需求提供最优
10月17日,百度世界在北京首钢园召开。百度智能云在大会期间的重磅发布,先来个主要内容总结: 首先,百度智能云在百度世界2023大会上宣布了以下重要消息:面向企业客户的文心大模型4.0 API调用服务得到了广泛应用&#x…...
XCOM2模组管理器终极指南:如何用AML替代原生启动器
XCOM2模组管理器终极指南:如何用AML替代原生启动器 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/x…...
软件测试中的bug管理:高效定位、跟踪与修复全流程解析
在软件测试全生命周期中,bug管理是保障产品质量、提升开发效率的核心环节。从bug的精准定位到全流程跟踪,再到最终的有效修复,每一个步骤都需要专业的方法、工具与团队协作。对于软件测试从业者而言,掌握科学的bug管理体系&#x…...
Perplexity Pro高阶用法深度解密:结合Obsidian/Notion实现知识自动蒸馏的完整链路(含可复用JSON Schema)
更多请点击: https://intelliparadigm.com 第一章:Perplexity Pro高阶用法深度解密:结合Obsidian/Notion实现知识自动蒸馏的完整链路(含可复用JSON Schema) Perplexity Pro 的 API 提供了结构化响应能力,配…...
从QRegExp迁移到QRegularExpression避坑全记录:我们项目踩过的雷和最佳实践
从QRegExp迁移到QRegularExpression避坑全记录:我们项目踩过的雷和最佳实践 当团队决定将代码库从Qt4/Qt5升级到Qt6时,正则表达式模块的迁移往往是最容易被低估的挑战之一。我们项目组在重构过程中,曾因QRegExp到QRegularExpression的语法差异…...
加热套、半导体加热带、工业加热夹克是同一种东西吗?
首先明确这个答案是肯定的,,这三种名称指同一种产品。作为北京龙腾圣华(LOTUSANA)的技术人员,我常被客户问到这个问题。我司自2002 年成立之初便自主研发投产此类柔性温控产品,最早行我们定名为加热套&…...
终极英雄联盟辅助工具League Akari:3分钟快速上手指南
终极英雄联盟辅助工具League Akari:3分钟快速上手指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否厌倦了在英雄联盟客户…...
别再只用Leaflet了!Mapbox GL JS加载本地MVT矢量瓦片保姆级教程(附避坑点)
从Leaflet到Mapbox GL JS:解锁MVT矢量瓦片的进阶玩法 当传统WebGIS开发者第一次看到Mapbox GL JS渲染的矢量瓦片地图时,那种震撼感不亚于从黑白电视切换到4K HDR。Leaflet就像一把可靠的瑞士军刀,而Mapbox GL JS则像一套专业厨房设备——当你…...
别再被AD值乱跳搞懵了!CS1237电子秤芯片的5个硬件设计避坑点(附电路图)
别再被AD值乱跳搞懵了!CS1237电子秤芯片的5个硬件设计避坑点(附电路图) 电子秤设计中最令人头疼的莫过于AD值不稳定问题。作为一款高精度Σ-Δ ADC芯片,CS1237在电子秤、压力测量等领域应用广泛,但硬件设计中的细微偏差…...
原生AI助手架构解析:从上下文感知到本地化部署的工程实践
1. 项目概述:一个“原生”的AI助手意味着什么?最近在GitHub上看到一个挺有意思的项目,叫natively-cluely-ai-assistant。光看这个名字,就透着一股“原教旨主义”的味道。在AI工具满天飞、各种套壳应用层出不穷的今天,一…...
RPG Maker MV Decrypter:解决游戏资源保护与合法访问的技术平衡方案
RPG Maker MV Decrypter:解决游戏资源保护与合法访问的技术平衡方案 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项目地址: ht…...
