ESP8266+CH340+SG90舵机远程控制开关

news/2025/9/26 20:44:36/文章来源:https://www.cnblogs.com/LiuFqiang/p/18715727

因为晚上不想下去关灯,所以打算搞一个可以替代手关灯的操作,最后采用控制舵机的方式实现,物理层面实现远程开关

所需硬件

  • ESP8266
    是一款高性价比、低功耗的wifi模块,主要作用是使设备接入wifi网络,提供 GPIO、UART、SPI、I2C、PWM、ADC 等接口,频率范围2.4GHz–2.5GHz,应用层协议支持http/https、MQTT、WebSocket
  • CH340
    USB转串口,主要作用是程序烧录,使用3.3V/5V逻辑电平,直接连接单片机等嵌入式设备,无需额外电平转换
  • SG90
    PWM信号控制的小型的位置伺服驱动器,主要作用是实现物理操作,这里直接选择了180的就可以
    这里直接购买了以下硬件
  • ESP12F
    板子直接集成了CH340,不用额外布线,直接usb插入电脑即可(如果是安卓micro口,最好买一条usb数据线,因为有的只有充电功能,没有数据传输功能),成本价11

    或者也可以使用ESP-01s,最好用配套的烧录器
  • SG90
    180度的舵机绰绰有余,成本价4.13
  • 若干杜邦线
    最好公对母,公对公,母对母都买单,成本价3.32
  • 5V电源
    因为esp12f板子上的电为3.3v,而sg90舵机的需要5v电压,用3.3v会出现供电不足打滑的清空,需要5v电源为舵机单独供电

所需软件

  • Arduino
    https://www.arduino.cc/en/software
    开发工具,核心功能包括代码编写、编译、上传至开发板、调试(通过串口监视器)及库管理
  • 点灯科技
    https://www.diandeng.tech/doc/getting-start-8266
    如果自己有服务器或者只在局域网内操作,就没必要用点灯科技了,用这个平台也是简化一下

软件开发

首先检查板子是否正确,可以用示例代码测试一下

#include <ESP8266WiFi.h>void setup() {pinMode(LED_BUILTIN, OUTPUT); // 设置引脚为输出模式Serial.begin(115200);    // 初始化串口通信
}void loop() {digitalWrite(LED_BUILTIN, LOW);   // 点亮LEDdelay(1000);                 // 延时1秒digitalWrite(LED_BUILTIN, HIGH);  // 熄灭LEDdelay(1000);                 // 延时1秒
}

例程中宏LED_BUILTIN为开发板厂家定义的连接板载LED的引脚,如果您选择的开发板没有定义LED_BUILTIN,可以自行修改为您要使用的引脚
编译并上传程序到esp8266开发板,打开串口调试器,如果按照代码编写的要求,led灯开始闪烁,表名代码没问题,

/*
* 网址:https://www.bmobapp.com
* wechat:18102215493
*/// 加载WIFI头文件
#include <ESP8266WiFi.h>
// 加载MQTT库文件
#include <PubSubClient.h>// 你的WIFI名称,需要修改
const char* WIFI_SSID = "kelike";
// 你的WIFI密码,需要修改
const char* WIFI_PASSWORD = "kelike888";
// Bmob云的物联网地址
const char* MQTT_SERVER = "broker.codenow.cn";
// Bmob云的物联网端口
const int MQTT_PORT = 1883;
// 灯光引脚
const int LED = 2;
// 用户名,到Bmob云->创建的应用-> IOT -> 连接信息 中获取
#define APPID  "c137a89bda5c4f1c"
// 密码,到Bmob云->创建的应用-> IOT -> 连接信息 中获取
#define APPPASSWORD "8bd9088034704e0d"
// 你自己定义的设备类型,方便记忆就好,这里的LINE表示灯光的意思
#define TYPE  "LINE"WiFiClient espClient;
PubSubClient client(espClient);// 打开灯泡
void turnOnLed() {Serial.println("打开灯光");digitalWrite(LED, LOW);
}
// 关闭灯泡
void turnOffLed() {Serial.println("关闭灯光");digitalWrite(LED, HIGH);
}// 配置esp8266的WIFI账号和密码
void setup_wifi() {delay(10);Serial.println();Serial.print("Connecting to ");Serial.println(WIFI_SSID);// 设置WIFI的账号和密码WiFi.begin(WIFI_SSID, WIFI_PASSWORD);// 检测WIFI是否联通while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi已连接");
}// MQTT服务的回调
void callback(char* topic, byte* payload, unsigned int length) {Serial.print(topic);Serial.print("主题收到消息");String message = "";for (int i = 0; i < length; i++) {message += (char)payload[i];}Serial.print(message);Serial.println();if (message == "1") {//如果接收到1字符串,调用开灯方法turnOnLed();//开灯函数} else if (message == "0") {//如果接收到0字符串,调用关灯方法turnOffLed();}message = "";
}void reconnect() {while (!client.connected()) {Serial.print("正在尝试MQTT连接...");String client_id = "esp8266client";client_id += String(WiFi.macAddress());if (client.connect(client_id.c_str(), APPID, APPPASSWORD)) {Serial.println("正常连接");//这是你的主题名称String topic = "devices/" + String(TYPE) + "/" + String(APPID) + "/" + client_id;client.subscribe(topic.c_str());} else {Serial.print("连接异常,rc=");Serial.print(client.state());Serial.println(" 5秒后重试");// 5秒重试delay(5000);}}
}void setup() {pinMode(LED, OUTPUT);// 设置波特率Serial.begin(115200);// 配置WIFI并连接上网setup_wifi();// 连接MQTT服务client.setServer(MQTT_SERVER, MQTT_PORT);// 设置MQTT消息回掉client.setCallback(callback);digitalWrite(LED, HIGH);
}void loop() {if (!client.connected()) {reconnect();}client.loop();
}

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

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

相关文章

python 数组的赋值和copy 和deepcopy

python 数组的赋值和copy 和deepcopy说明白这三个的区别. 数组的=是传指针 copy是最外层传值, 内层数组传指针, deepcopy是内外层全部传值. 所以如果要最稳妥的复制, 就用deepcopy. 他的字面含义也是, 每一个深度都进行…

套模板的网站为什么排名做不上去企业管理官网登录入口

【动态规划】抄近路 时间限制: 1 Sec 内存限制: 64 MB 提交: 105 解决: 68 [提交] [状态] [命题人:admin] 题目描述 “最近不知道怎么回事&#xff0c;感觉我们这个城市变成了一个神奇的地方&#xff0c;有时在路上走着走着人就消失了&#xff01;走着走着突然又有人出现了&…

【ACM出版、连续三届EI检索】第四届人工智能与智能信息处理国际学术会议(AIIIP 2025)

第四届人工智能与智能信息处理国际学术会议(AIIIP 2025) 2025 4th International Conference on Artificial Intelligence and Intelligent Information Processing 在这里看会议官网详情 会议亮点抢先看! 线下开会…

08_多线程编程

同步和互斥:互斥:多线程中互斥是指多个线程访问同一资源时同时只允许一个线程对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 同步:多线程同步是指在互斥的基础上(大…

VisionPro学习笔记- PMAlignTOOL

起因 之前按摸过Halcon、opencv、还有款国产的叫sci什么的图形化的视觉软件,大名鼎鼎的VisionPro还没摸过,于是,学一下,记个笔记。 PMAlignTOOL CogPMAlignTool这个名称是几个英文单词缩写组合而成,下表是它的完整…

FeignClient提示No subject alternative DNS name matching配置SSL

feignClient如果请求的是https域名地址,jvm信任库未添加证书的话可能会提示证书主机名不匹配问题 添加以下配置可忽略 @Slf4j public class FeignSSLTrustAllConfig {@Beanpublic Client feignClient() {return new C…

深入解析:SQL server 2022下载安装详细教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

公司做网站多少钱漯河市住房和乡镇建设局官方网站

原标题&#xff1a;小白开始学Python最著名的绘图库 这是菜鸟学Python的第101篇原创文章 数据分析里面可视化是重要的环节&#xff0c;辛苦把数据采集&#xff0c;然后经历了很多工序的清洗之后&#xff0c;最后要展现给用户&#xff0c;最好的方法就是数据可视化。数据可视化是…

【组合数学基础9】Catalan数(卡特兰数)笔记

https://www.bilibili.com/video/BV14P411T7TZ n个+1 和n个-1的序列问题这个是本质的模型折线图证明方法(对称思想值得学习) 括号序列计数问题: 由 n 对括号构成的合法括号序列数为 \(C_n\)\(n+1\)个数要加 \(n\) 对…

详细介绍:npm玩转技巧

详细介绍:npm玩转技巧pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &quo…

软件构造的基本原理 1章

瀑布式开发过程 缺点 1阶段划分僵硬,产生大量文档 2开发是线性的 3早期的开发错误要在后期测试阶段才能发现,增加了开发的风险 增量开发模型(完成一部分交付一部分) 需要软件具备开放式的体系结构(为了每次交付时…

【2025-09-23】性格问题

20:00空山新雨后,天气晚来秋。明月松间照,清泉石上流。竹喧归浣女,莲动下渔舟。随意春芳歇,王孙自可留。——《山居秋暝》唐王维昨晚9点,区政府发布了“台风停课“通知。于是,家里的两个孩子明天就不用上课了。而…

做填写信息的超链接用什么网站网站建站ddp

本书在介绍数据通信概念的基础上&#xff0c;分局域网、广域网和因特网三个模块详细讲述了计算机网络的基础知识&#xff0c;还介绍了网络安全和网络管理方面的实用技术。本书的内容是兼顾基础&#xff0c;突出应用。本书取材新颖&#xff0c;概念清晰&#xff0c;可作为理工科…

【IEEE出版】第二届数据挖掘与智能计算国际学术会议(ICDM 2025)

第二届数据挖掘与智能计算国际学术会议(ICDM 2025) The 2nd International Conference on Intelligent Computing and Data Mining 在这里看会议官网详情 大会时间:2025年10月24-26日 大会地点:广州 收录检索:EI …

深入解析:贪心算法应用:顶点覆盖问题详解

深入解析:贪心算法应用:顶点覆盖问题详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

第五届IEEE能源工程与电力系统国际学术会议(IEEE-EEPS 2025)

第五届IEEE能源工程与电力系统国际学术会议(IEEE-EEPS 2025) 2025 5th IEEE International Conference on Energy Engineering and Power Systems 《中国电力》杂志社将于2025年10月31日-11月2日在深圳市举办秋季学术…

c++编程经典资料

c++编程经典资料 https://www.bilibili.com/video/BV1J24y1t7zd/?spm_id_from=333.1387.homepage.video_card.click

PS字体处理

1.抠出文字 使用“快速选择工具”、“魔棒工具”或“颜色选择器”。 将抠出的选区复制Ctrl+J到一个新的图层中。 提取字体 1.魔棒工具选择空白区域(色差尽量低,不要删除到字体!),del删除掉。 2.框选字体纸张部分,…

服装市场调网站建设的目的用动易建设网站教程

一般情况下&#xff0c;在调用函数时&#xff0c;使用的是位置参数&#xff0c;即是按照参数的位置来传值&#xff1b;关键字参数是按照定义函数传入的参数名称来传值的。那么&#xff0c;关键字参数怎么使用&#xff1f;工具/原料 python pycharm 截图工具 WPS 方法/步骤 1 打…

免费申请域名的网站深圳东门地铁站叫什么

文章目录 一、String二、StringBuffer三、StringBuilder四、String、StringBuffer和StringBuilder的效率测试五、String、StringBuffer和StringBuilder的选择一、String String是不可变的,final修饰,任何对String的操作都会创建一个新的String对象。在进行大量字符串拼接或修…