这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 活动中心» 板卡试用» 【TOPWAY7寸智能屏】家庭智能中控(已完成)

共13条 1/2 1 2 跳转至

【TOPWAY7寸智能屏】家庭智能中控(已完成)

高工
2021-07-14 22:27:05 打赏

这块智能屏竟然支持网口控制,那我们直接使用屏幕、网线配合家庭服务器,搭建一个家庭智能中控,监测家中各项环境指标(暂且为温湿度+光照),曲线显示,配合控制自制的无线开关。

敢单介绍

1.服务器开发(打算挑战一下自己用QT或者失败用C#)

2.智能屏的UI及逻辑设计

3.家庭环境采集(用的是我之前设计的采集卡)

4.无线开关控制(也是之前设计的无线开关)



高工
2021-07-14 22:27:21 打赏
2楼

开箱,话不多说,直接上照片

体验就俩字 牛畅!


高工
2021-07-14 22:27:27 打赏
3楼
先照着教程捋一捋先去网上找个1024*600分辨率的图片,另存为BMP文件,最好是24位的

新建工程

打开软件新建工程

导入个背景图

分辨率不够还会自动调整

选中背景图

编译下载

下载程序需要注意,需要先断电(DC口的电源),然后连接USB

先编译再下载

下载即可

徐福


高工
2021-07-14 22:27:31 打赏
4楼

今天实现个QT TCP连接发送数字到智能屏

先整下屏幕设置屏幕IP设置

添加个数字控件


下载默认是0


QT操作建立新工程(不细写了)

先设计个UI


引用网络


添加socket库


初始化套接字


新建头文件添加发送结构体


添加大小端转换函数(QT和屏幕大小端不同)


添加两个按键函数


编译运行一气呵成


测试



对比指令正确,同时屏幕数字发生变化,直接芜湖


优化了界面,使之对齐

qt的拖拽操作没有C#的好用,QT没有对齐参考线,在搞对齐时有点烦人



高工
2021-07-14 22:27:36 打赏
5楼

主界面

控件使用情况:日期时间 进度条 两种表盘 静态图标 静态字符串 数字 触摸键

其中发现了一个问题,表盘以及进度条的范围都不支持有符号数吗?

展示一波金主们(主界面点击跳转)

QT添加测试功能及校时功能

附加一个校时代码

struct WRITE_TIME { u8 head; //帧头 u8 cmd; //命令 u8 year; //年 u8 month;//月 u8 day; //日 u8 hour; //时 u8 min; //分 u8 sec; //秒 u32 tail; //帧尾 }; void eepw_central::on_pushButton_clicked() { QTime time = QTime::currentTime(); QDate date = QDate::currentDate(); struct WRITE_TIME write_time; write_time.head = 0xaa; write_time.cmd = 0x9c; write_time.year = date.year()-2000; write_time.month = date.month(); write_time.day = date.day(); write_time.hour = time.hour(); write_time.min = time.minute(); write_time.sec = time.second(); write_time.tail = BLEndianUint32(0xcc33c33c);//大小端转换 QByteArray data; data.resize(sizeof(struct WRITE_TIME)); memcpy(data.data(), &write_time, sizeof(struct WRITE_TIME)); //向服务器发数据 mSocket->connectToHost("192.168.2.10",1234);//连接智能屏 mSocket->write(data); mSocket->disconnectFromHost();//断开连接 #if debug testSocket->write(data); #endif }



高工
2021-07-14 22:27:40 打赏
6楼

WiFi开关的控制

用的是ESP8266,直接wifi接入局域网,连接服务器,获取服务器转发命令即可控制

#include  WiFiClient client; const char* ssid = "****"; // 连接WiFi名 const char* password = "****"; // 连接WiFi密码 const char *host = "192.168.2.19"; const int httpPort = 9999; // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. Serial.begin(115200);// 初始化串口 pinMode(LED_BUILTIN, OUTPUT); connectWiFi(); while (!client.connect(host, httpPort)) { Serial.println("connection failed"); } } // the loop function runs over and over again forever void loop() { while (client.connected() || client.available()) { if (client.available()) { String line = client.readStringUntil('\n'); Serial.println(line); if(line == "000") { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) } else if(line == "111") { digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW } } } if(!client.connected()) { while (!client.connect(host, httpPort)) { Serial.println("connection failed"); } } } // 连接WiFi void connectWiFi(){ WiFi.begin(ssid, password); // 启动网络连接 Serial.print("Connecting to "); // 串口监视器输出网络连接信息 Serial.print(ssid); Serial.println(" ..."); // 告知用户NodeMCU正在尝试WiFi连接 int i = 0; // 这一段程序语句用于检查WiFi是否连接成功 while (WiFi.status() != WL_CONNECTED) { // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。 delay(1000); // 如果WiFi连接成功则返回值为WL_CONNECTED Serial.print(i++); Serial.print(' '); // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值 } // 同时NodeMCU将通过串口监视器输出连接时长读秒。 // 这个读秒是通过变量i每隔一秒自加1来实现的。 Serial.println(""); // WiFi连接成功后 Serial.println("Connection established!"); // NodeMCU将通过串口监视器输出"连接成功"信息。 Serial.print("IP address: "); // 同时还将输出NodeMCU的IP地址。这一功能是通过调用 Serial.println(WiFi.localIP()); // WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。 }



高工
2021-07-14 22:27:45 打赏
7楼

采集端我使用的是之前G070板卡现成的代码

如有需要直接点击STM32G070RB探测0-汇总帖


高工
2021-07-14 22:28:01 打赏
8楼

召唤神龙层

全家福

视频

(家庭小中控)EEPW-TOPWAY智能屏使用活动_哔哩哔哩_bilibili

https://www.bilibili.com/video/bv1e64y1x7Qp

打包代码

EEPW_TOPWAY_shihengrui.zip


管理员
2021-07-15 09:30:27 打赏
9楼

期待


院士
2021-07-16 09:31:18 打赏
10楼

楼主的主题真是丰富了


共13条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]