开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1345|回复: 70
收起左侧

[其它源码] 现学现卖 ESP32控制继电器远程开灯和温度监控

[复制链接]

结帖率:100% (8/8)
发表于 7 天前 | 显示全部楼层 |阅读模式   安徽省六安市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
本帖最后由 花间一壶酒 于 2025-1-1 23:35 编辑

由于家里养的有鸡鸭  有的时候回家的晚会存在没开灯的情况

别问为啥不用光敏传感器控制灯光  因为鸡舍比较暗 用光敏传感器白天也是亮的 小本生意  省点电费  而且我也要用继电器控制别的东西 比如换气扇 水泵之类的

如果放大棚外面又容易损坏

废话不多说 讲正题

硬件部分
我使用了 ESP32单片机+5v单路继电器+DS18B20温度传感器

ESP32 Dev Module 价格某宝差不多24元左右  (看起来只用来控制一个灯和温度确实挺贵的  实际上并不贵 因为它有很多引脚 一个板子能控制整个大棚所有的继电器了 觉得贵就换esp8266 那玩意便宜 11块钱一个 又能力自己焊的 光买芯片 十块钱都不要  但是那个新手干不了)

5v单路继电器 4元左右

DS18B20 温度传感器 数字模块 差不多3元  当然要是大佬直接买单个传感器 几毛钱


我刚学这玩意  新手  大佬就别说话了  我只会买成品的模块不会焊板子


软件部分
单片机这边使用的 Arduino IDE + VSCode + PlatformIO插件

Arduino IDE 这个是单片机开发的主要环境 软件直接百度   安装库会很慢  需要科学上网
VSCode 这个直接百度搜索就行了  没啥技巧可言
这里附上离线包  不然90%的同学会死在安装环境上
链接: https://pan.baidu.com/s/1r4Y0U4AFjaE_X_WJPf5TKA?pwd=2ng3 提取码: 2ng3 2.png
安装完IDE简单  主要是支持文件下载很慢  所以才要安装离线包  切记  不要手贱去更新

实在不会的看B站离线安装视频  https://www.bilibili.com/video/BV1xY4y1b7un
这是大佬的视频  不是我的  别喷!!


到了这里 环境安装完了  我说一下 我是怎么实现外网连接的  首先在没有公网的情况下一般我们能想到的远程连接 无非是局域网  但是这个有距离限制  


但是呢 如果让我租服务器 每个月又得花几十块大洋  觉得又挺亏的  买排骨它不香么 ?


所以我这里使用了  https://www.emqx.com/zh  的白嫖云服务  他家每个用户可以部署一个实例  每个月送100万分钟的连接  1000连接上限  1G流量 (不要觉得1G少 我们只是在开关的时候发生 json的字符串命令 可以用很久)用完了1.5元1G


3.png

首先这里调用的库  在PIO的库搜索里面直接搜索下载就行了  如下图

4.png   如此这般

[C++] 纯文本查看 复制代码
// WiFi 连接信息
const char *ssid = "******"; // 替换为你的WiFi名称
const char *password = "**********"; // 替换为你的WiFi密码

// MQTT 服务器设置
const char *mqtt_broker = "********************"; // 连接地址
const char *mqtt_topic_f = "ESP32_KG_ZT_f"; // 发送主题
const char *mqtt_topic_s = "ESP32_KG_ZT_s"; // 接收主题
const char *mqtt_username = "*****"; // 用户名
const char *mqtt_password = "********"; // 密码
const int mqtt_port = 8883; // 端口
String client_id = "esp_002"; // 客户端ID
const char *switchArray[] = {"1"}; // 开关数组
const int switchPin[] = {21}; // 开关引脚


这部分就是基本的信息填写据实填就行了  在MQTT的后台有信息  
5.png 6.png 7.png

后面三个参数
客户端ID 自己填就行了  每个单片机写一个 客户端ID 这样方便在你的APP里面区分不同的板子

开关数组和开关引脚数组  使用来在当前的板子上管理多个继电器开关的  
比如 我给MQTT服务器发送  “{"设备":"esp_001","开关":"1","状态":"ON"}
这代表我要 让esp_001这个板子的 第一个开关 常闭的接口通电
开关 1 代表第一个开关  它的引脚的 21
所以以此类推  我们可以在开关数组和引脚数组写上多个数据 如 开关2 对应22引脚
我发送 “{"设备":"esp_001","开关":"2","状态":"ON"}”  就可以打开第二个继电器
{"设备":"esp_001","开关":"2","状态":"OFF"}” 关闭第二个继电器

{"设备":"esp_002","开关":"1","状态":"ON"}” 就是打开另一个板子的第一个继电器

方便一个APP管理多个开关

再后面的部分  是不需要改动的   当然如果你不想用温度传感器  可以将温度传感器的部分删除  都是带有注释的

8.png
温度发生变化时传给服务器  服务器再转发给APP

9.png
在客户端上接收到的就是这种数据  

然后我们再从火山安卓上建立APP  也登录客户端  用来接收数据  和给ESP32发送控制开关的命令

10.png
14.png 15.png
火山部分比较简单  就是调用MQTT模块  这个火山官网下载  自带的就有  主要  这里的连接地址是带 ssl:// 开头的

在窗口启动完成后  连接服务器  正常填写账号密码就行了

然后调用 连接成功 和收到消息的事件  用于初始化APP的数据  

当我给服务器的  "ESP32_KG_ZT_s" 主题 发送  "add" 的时候  esp32那边订阅的 "ESP32_KG_ZT_s"主题接收到信息  就会返回收到信息的板子上的所有开关信息 如图
12.png
当我给服务器发送“add”时  服务器转发给 esp_001 和 esp_002 两块板子  它们返回的信息 代表esp_002的第一个开关是关闭状态  esp_001的第一个开关是开启状态

那么我的app上的开关选中状态  就得是一个关闭  一个开启状态  完成初始化

然后  再当我按开关的时候  APP就给服务器发送  “{"设备":"esp_001","开关":"1","状态":"ON"}” 这种json文本  按对应的开关 发送不同的数据就行了  这样就能控制开关了

13.png 像这样  

最下面附上电路连接图
1.png

https://wokwi.com/  连接图模拟网站也可以用这个网站学习简单的操作  不用配置环境




火山源码.rar

45.11 KB, 下载次数: 3, 下载积分: 精币 -2 枚

ESP32源码.part02.rar

3 MB, 下载次数: 2, 下载积分: 精币 -2 枚

ESP32源码.part03.rar

1.6 MB, 下载次数: 2, 下载积分: 精币 -2 枚

ESP32源码.part01.rar

3 MB, 下载次数: 2, 下载积分: 精币 -2 枚

售价: 2 枚 精币  [记录]

因为esp32的源码带有库所以只能分段压缩了 要全下载一起解压

点评

wlp
还得是esp32好,直接多任务实时系统,stm32老复杂了   日本  发表于 6 天前

评分

参与人数 3好评 +3 精币 +23 收起 理由
熬夜 + 1 支持开源~!感谢分享
商亨人和 + 1 + 3 支持开源~!感谢分享
Cand + 1 + 20 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

签到天数: 7 天

发表于 昨天 15:46 | 显示全部楼层   河南省南阳市
感谢发布原创作品,精易因你更精彩!
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 昨天 15:00 | 显示全部楼层   广东省佛山市
        支持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 前天 20:37 | 显示全部楼层   四川省遂宁市
感谢分享,下载学习
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 6 天

发表于 前天 15:12 | 显示全部楼层   广东省珠海市
很详细,很强大
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 7 天

 楼主| 发表于 前天 11:52 | 显示全部楼层   安徽省六安市
本帖最后由 花间一壶酒 于 2025-1-6 11:53 编辑

是能控制  但是写不了app  也不能烧录单片机程序  只能发送mqtt消息 或者 tcp udp 串口等消息而已 这种事啥语言基本都能做 按键精灵都能做  总不能我为了远程开个灯 开个通风扇  我还得准备一台pc吧  
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 前天 09:11 | 显示全部楼层   北京市北京市
易语言 也能控制
回复 支持 反对

使用道具 举报

签到天数: 8 天

发表于 3 天前 | 显示全部楼层   湖北省武汉市
        支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:90% (9/10)

签到天数: 7 天

发表于 3 天前 | 显示全部楼层   广东省广州市
支持支持。精致的生活努力学习
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 3 天前 | 显示全部楼层   湖南省岳阳市
本帖最后由 2533 于 2025-1-5 13:53 编辑

让我来帮你 补全教程 吧 EMQX官网 搭建MQQT 教程 https://www.bilibili.com/video/BV1tw4m1C7E5 说句实话 做物联网 不像软件 每一个想法都得花钱 ,你要实现你的想法 就得买硬件就得花钱 ,电子电路制作 你的想法 --》仿真---》编写代码--》基本电路测试---》电子元件布局设计----》PCB电路设计 --》厂商制作PCB--》焊接元件---》测试---》制作外壳 ---》继续升级想法 ----》循环步骤 所有的步骤都围绕着 花钱来进行 ,不像软件 下载个IDE 就可以 想改下或升级 就打开IDE 随意改就是,还有想和喜欢电子电路物联网的小伙伴 一起交流技术 本人QQ 253357752。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表