WIFi 开关控制实现-ESP8266 物联网 android studio arduino QT多线程服务器

WIFI局域网/外网 开关控制实现-物联网ESP8266 android QT
简介:本例子分硬件和软件两大部分,
软件又分3小部分:1 ESP8266 Arduino 嵌入部分 2 手机APP android studio 3 QT 上位机服务器程序。
总之就是一整套。有些代码会有简单备注说明,非科班出身,写这些代码纯属娱乐,写得很不好,多多包涵。

简单功能介绍: ESP8266继电器模块可以作为客户端或服务端,或者同时作为服务端和客户端,接收手机或者电脑服务器发来的数据,并解码或者转发。
同时,ESP8266继电器模块可以定时发送给手机或者远程服务器。局域网电脑。
相关的配置,可以通过自己写的手机APP设置。比如要连接的WIFI名、密码、服务端的IP地址端口等(这是第一个版本没有的功能)
每个模块/手机需设个设备号 1-255,作为通信里面解码的身份识别。
数据发送格式 第0个字节 :目标设备号 第1个字节:发送方设备号 第2个字节:命令序列号(发送一次自动加1) 第3个字节:命令 第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,K2接外部开关。
烧录最新程序。。。

注意你家开关盒高度是否能放进模块。

手机APP界面及使用:
安装好APP后,模块一定要更新程序。如附件。。。然后上电工作。。。
手机WIFI选择yq热点,密码:123456780,连接好,下一步:

程序图标

打开后:

点模块设置

勾选你想要设设置的参数,设置好参数。注意有些路由器不支持静态IP。。
设置好想要连接的WIFI名、服务器P地址(非必选项)、端口号后,点击 使能 下面的小方框,需要用哪个功能就是使能哪个。。同时双开双在,指两个继电器开或关,主应要应用需要同时关断火线,零线的场合。
设备号是必填项,
然后 点设置。。 模块自动重启。配置完成。
(如果想再次配置模块。短接IO0到GND,重新启动模块)

配置后,点 返回
再点 手机设置,对手机进行设置。

本手机编号 必填, 不要与其它模块、手机重复了。

从设备名下往下数,
第一个设备(热水器A),控制一个模块, 编号11,编号12
第二个设备 ,控制一个模块, 编号21,22
第三个设备 控制一个模块, 编号31,32
第四个设备 控制一个模块, 编号41,42

配置好IP地址,设备名,设备号后。 返回,试点几个几个按纽是否有反应,,有反应,说明连接上了。。

后面根据需要,设置定时器,,开,关。。

单选要设置的控制开关的延时,如果不设置,延时非常久。。。。
然后如果点 临时设置 模块不断电,会一直保留这次设置。如果断电,会使用之前的设置。
如果点 长久设置 模块断电,再上电。 会一直保留这次设置,这些数据保留在单片机flash里

设置好后 点返回。就可以控制开关了。

点绿色按纽,继电器会吸合,小绿灯会闪,如果设置有开延时,黑色灯闪,并开始倒计时。
点黑色按纽,继电器不吸合,小绿灯会变成黑色或者结束 开延时 ,并转变成 绿灯闪。

关键代码说明,分3部分
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我就是B站上面看了黑马程序员的课,,。然后再看了别人写的例子,,然后在这基础上面改的。。

我在腾讯云上面买一个服务器,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

WIFi 开关控制实现-ESP8266 物联网 android studio arduino QT多线程服务器相关推荐

  1. WIFi局域网开关控制实现-ESP8266 物联网 android studio arduino

    WIFi局域网开关控制实现-ESP8266 物联网 目的: 手机.被控继电器模块连接家里路由器,通过手机App控制继电器的开与断,可设置三种定时模式,即延时开.工作时间.关闭延时.可以控制单一继电器通 ...

  2. android 11.0 wifi开关控制

    1.概述 在11.0的产品开发中,对于wifi的功能定制需求,有要求需要通过系统属性来控制wifi开关是否可以打开 来控制是否可以连接wifi,打开控制wifi的功能 2.wifi开关控制的核心代码 ...

  3. android 10.0 wifi开关控制

    1.概述 在10.0的系统产品开发中,产品需要对wifi模块进行管控,通过系统属性来控制wifi模块是否启用,所以需要在打开wifi的地方来通过系统属性来控制是否可以打开wifi 2.wifi开关控制 ...

  4. Android Studio无法连接Google服务器的一系列问题

    我们知道,Android Studio是Google亲生的,这样的话AndroidStudio跟Google之间就有着千丝万缕的联系,但是Google在国内的待遇大家也都懂的.于是乎,就会有各种各样h ...

  5. 手机APP连接华为OceanConnect平台下发指令控制硬件(附Android Studio 代码工程和APK)

    1.接口 首先看到华为平台的接口 这些就是云平台上面的对接信息,然后现在用的HTTPS链接.安全秘钥是每个应用都有一个的. 2.开发文档 如果想要开发好APP,一定要看华为云平台上面的开发文档,这里直 ...

  6. android studio使用nodejs本地服务器json数据_使用Node.js的Alexa技巧

    可以使用AlexaLambda函数或RESTAPI端点开发Alexa技能.Lambda函数是Amazon实现AWS中提供的无服务器功能.Amazon建议使用Lambda函数,尽管它们不容易调试.虽然您 ...

  7. 如何在安卓上android studio上构建本地服务器

    首先我们要下载一个jdk,然后环境变量把JDK配置全机任意地方都可操作,不懂的可以直接百度 网上很多教程都说10.1.1.0代替localhost或者127.0.0.1,其实有的电脑ip并非如此,导致 ...

  8. Android Studio 用WIFI无线调试adb (3种方法)

    最近数据线一直被boss借走,一旦借走就无法调试了,所以就打算不用数据线调试了,使用WIFI进行调试. 一.命令 1.首先配置adb环境变量 首先找到andoridSDK的路径中的platform-t ...

  9. Android Studio 安装步骤详细图解

    〇.前言 Android Studio 安装前需要先安装好JDK并配置好Path环境变量. 一.Android Studio 下载地址及版本说明 Android 开发者官网:https://devel ...

最新文章

  1. 每个优秀程序员必须具备的技能
  2. h5 调起相机_H5+js调用相机 - osc_e61ersei的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 新概念C语言能力教程练习3答案,新概念C语言教程答案参考(自做)中国电力
  4. 转正老板让你谈谈你的看法_让我们谈谈逻辑回归
  5. c语言中坐标xoy轴在哪里,用C语言在linux下获取鼠标指针的相对位置
  6. 次债危机:全世界陪着美国等死
  7. Go语言程序的命令行参数
  8. 安装gid12.0.4linux-x64l后启动报错/liblzma.so.5: no version information available 的解决办法
  9. 区块链 solidity 零知识证明DApp开发实践【身份证明/以太坊】
  10. html生成器_这些文案生成器,你知道几个?
  11. Craps赌博游戏-python3
  12. 写得太好了,关于《越狱》的影评(转贴)
  13. moveit缺少libfcl.so.0.6文件
  14. pytorch学习笔记九:权值初始化
  15. 初识C语言之条件结构篇——带你认知编程世界的逻辑之美!
  16. 音视频延时和抖动问题分析和解决
  17. 【海思篇】【Hi3516DV300】二、使用串口烧写映像
  18. 华为交换机路由器consle忘记密码该怎么办?
  19. 用python画小猪佩奇的编码有注释_啥是佩奇?使用Python自动绘画小猪佩奇的代码实例...
  20. 理财系列 3 股票体检指标之市净率

热门文章

  1. 国内怎么使用chatGpt
  2. 英语论文写作技巧-2
  3. 猿创征文|【国产数据库实战】一文学会应用SqlSugar访问及操作人大金仓数据库
  4. Semantic Web 语义化web
  5. 2023移动云大会 | “六大”服务承诺 全力做优“心级服务”
  6. Syste类 及常用方法
  7. 常用的python读写函数
  8. 空指针异常可能出现的原因
  9. 如何让一台连接wifi上网的电脑通过网线让另一台电脑上网?
  10. 多元统计:相关概念总结