WIFi 实现开关控制-ESP8266 物联网 android studio arduino QT多线程服务器
WIFI局域网/外网 实现开关控制-物联网控制-物联网ESP8266 android QT 简介:本例分为硬件和软件两部分, 软件分为三小部分:1 ESP8266 Arduino 嵌入部分 2 手机APP android studio 3 QT 上位机服务器程序。 简而言之,这是一套完整的代码。有些代码会有简单的注释,非专业背景,写这些代码纯粹是娱乐,写得很差,更包容。
简单功能介绍: ESP8266继电器模块可以作为客户端或服务端接收手机或计算机服务器发送的数据,或同时作为服务端和客户端解码或转发。 同时,ESP8266继电器模块可定期发送给手机或远程服务器。局域网计算机。 相关配置可以通过自己的手机编写APP设置。比如连接WIFI名称、密码、服务端IP地址端口等(这是第一个版本没有的功能) 每个模块/手机都需要设备号 1-255,作为通信中解码的身份识别。 数据发送格式 第0个字节 :目标设备号 第1个字节:发送方设备号 第二个字节:命令序列号(自动发送1) 第三个字节:命令 第4 n 字节 : 数据 最后一个字节: 前面所有字节内容加起来,取低八位,作为简单的验证数据是错发还是重复接收。 还保留按键功能,方便老年人操作。
目的: 通过手机和被控继电器模块连接家用路由器App控制继电器的开关可以设置三种定时模式,即延迟开关、工作时间和关闭延迟。可同时控制单个继电器的开关或开关。例如,根据配置,可以控制热水器(双刀控制,主要害怕泄漏)按下按钮开始加热多久,加热多久。你也可以躲在床上控制家里的灯,电动窗帘。。总之,懒惰。 为考虑老年人和儿童的使用,控制模块保留机械按钮,按下继电器开关翻转、关闭、开关,并执行相应的运行时间延迟。 目前手机APP可同时连接四个模块进行控制。 该模块不需要连接到外部网络。为了方便调试,继电器模块源代码默认为热模式。您可以更改自己的代码,并将其连接到WIFI将模式改为连接WIFI名字和密码。或者改成你想要的方式。。。自由玩哈
不要问太简单的问题,拒绝伸手党!不想回答。不要问太难的问题。恐怕我不能回答。我不从事软件开发。我从事硬件开发。。在雅达电源开发开关电源时,这些程序不忙,不忙CSDN网上找,改。
偶尔会上下CSDN。。。
开源不容易,想奖励我的就来了:
实物: 购买继电器模块地址:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.597f2e8dRJprBH&id=642884032543&_u=6k33lhf6ae1
注:感觉这个板子的220V转5V模块质量不好,不放心,建议换一块,或者用手机充电头改装,然后放电开关盒,K1,K连接外部开关。 烧录最新程序。
注意您的开关盒高度是否可以放入模块。
手机APP界面及使用: 安装好APP之后,模块必须更新程序。如附件。。。然后上电。 手机WIFI选择yq热点,密码:123456780,连接良好,下一步:
程序图标
打开后:
点模块设置
检查您想要设置的参数,并设置参数。请注意,一些路由器不支持静态IP。。 设置要连接的WIFI点击服务器P地址(非必要选项)和端口号后的名称 使能 下面的小框架需要使用哪个功能。。同时,双开双在是指两个继电器的开关。主要应用程序需要同时关闭火线和零线。 设备号是必填项, 然后 点设置。。 自动重启模块。完成配置。 (如果要重新配置模块。IO0到GND,重启模块)
配置后,点 返回 再点 设置手机,设置手机。
本手机编号 必填, 不要与其他模块和手机重复。
从设备名称到下数, 第一个设备(热水器A),控制模块, 编号11,编号12 第二个设备 ,控制模块, 编号21,22 第三个设备 控制模块, 编号31,32 第四个设备 控制模块, 编号41,42
配置好IP地址、设备名称、设备号后。 返回,试点几个按钮是否有反应,有反应,说明连接。
根据需要设置定时器,开关。
如果不设置单选控制开关的延迟,则延迟很长时间。 然后如果点 临时设置 该设置将始终保留在模块中。如果断电,将使用以前的设置。 如果点 长久设置 断电模块,然后上电。 这个设置将始终保留在单片机中flash里
设置好后 点返回。您可以控制开关。
点击绿色按钮,继电器吸合,小绿灯闪烁。如果有开延迟,黑灯闪烁,倒计时开始。 点黑按钮,继电器不吸合,小绿灯会变黑或结束 开延时 ,并转变成 绿灯闪。
关键代码说明分为三部分 1. 手机APP 手机和模块必须在同一路由器中,并且知道模块IP地址 Android studio 4.2 版本。 启动—打开数据库—读取配置,如使能的状态、设备名、IP地址,端口号。(定时器参数存在于单片机中,启动时不读取),,,自动连接。 初始化两个定时器,一个是刷新界面,每秒更新状态和模块倒计时。每5秒检测模块连接状态,如果断开,将自动重新连接
每个模块将分配一个接收线程,每次发送数据,启动一个线程,发送后结束线程。 有发送和接收checksum在这种情况下,将前n个字节数据加起来,将最后一个字节中的8位数据降低, 接收时,会进行比较checksum是否正确,如果不正确,不要执行任何行动。
具体内容,自己看代码,
2. 单片机ESP8266部分 Arduino 版本: 1.8.16 热点模式或连接模块WIFi(本例模块设置为热点 AP可改为模式WIFI模式) 读取flash中定时器参数值 设置定时器检测按钮, 执行相应的命令,启动定时器,读写flash等。 是否有连接,如果有,每两秒更新手机当前状态 接收数据后,checksum确认,会比较checksum是否正确,如果不正确,不要执行任何行动。 是否转发到服务器取决于接收内容。
3. QT上位机 QT我在哔哩哔哩看了黑马程序员的课,。然后看别人写的例子,然后在此基础上改。
我在腾讯云上买了一台服务器,618搞活动,40 元,一年使用期 (另外提一下。以前一直以为一定要学习。Linux系统 跑服务器程序,结果我错了。 可以跑window server 系统,和家用电脑一样,可以跑QT写的上位机,启动好程序,就可以跟据腾讯给的公网IP,填入我们的APP、ESP8266 远程服务器地址栏) 这个程序也可以在家里用电脑运行(变成局域网服务器程序)
我改的地方有: 1. 统计增加连接数 2. 根据设备编号建立二维设备 socket数组。一个连接,对应一个设备号。根据接收到的数据,解码并发送到目标设备号。 3. 保存收发记录在本地 4. 每10秒发送一个拥抱,检查连接是否断开。
参考例子:https://blog.csdn.net/yxy244/article/details/103493741(非本程序源码)
我知道我写的是渣,让你看起来很辛苦。 三部分软件代码分给大家: 百度网盘: 链接 https://pan.baidu.com/s/1ex5c6sd-2HEE44p9yNYjiA 提取码:abcd
如果网盘连接失效,可以发邮件通知我:123182742@qq.com