QT学习开发笔记(项目实战之智能家居物联网项目1 )

这篇具有很好参考价值的文章主要介绍了QT学习开发笔记(项目实战之智能家居物联网项目1 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

智能家居物联网项目

本章介绍使用 Qt 开发智能家居中的一个物联应用。简单直白的说就是通过云服务器远程控
制设备(与设备通信等)。本章可以直接做毕设,是毕设物联网项目的一大福音!本章将实现远
程点亮开发板 LED 作为一个项目实例。

在生活中,我们可能使用过 WIFI 智能插座这款产品。智能家居中常用来控制电器开关。
比如远程开热水器,远程打开空调,窗帘等等。这些 WIFI 智能插座的原理就是将 WIFI 插座注
册到云服务器上,然后通过手机的 APP 来访问云服务器,然后控制 WIFI 插座。嗯,原理我们
懂了。本章就是模仿?不,或者说是直接开发这样的一个项目。包括 WIFI 连网,注册到云服
务器上,编写 Qt UI 通过网络来与云服务器通信,然后再下发指令到这个连网的设备,与之通
信。恩本章的流程就是这些,带着这个项目流程,然后一步步看笔者是如何通过 Qt 实现的吧!

本章需要读者对正点原子的 wifi 模块 ATK-ESP8266 串口转 WIFI 有一定的了解。正点原子
提供了 STM32 与 ESP8266 模块通信的例程,如果学习过 STM32 与 ESP8266 模块通信的例程
的内容,理解起来则会更容易。建议参考文档:ATK-ESP8266 WIFI 用户手册_V1.x.pdf 及原子
云平台 API 文档 V1.2.pdf。

项目硬件

必备硬件

本章需要正点原子 ATK-ESP8266 串口转 WIFI 模块(免费接入原子云)。另外还需要加上
一个 USB-TTL 模块,外加一根 T 口 USB 连接线,可接入 PC(电脑)调试。
QT学习开发笔记(项目实战之智能家居物联网项目1 )

T 口连接线连接 USB-TTL 模块再连接 ATK-ESP8266 模块到 PC(电脑),用于在 PC(电脑)
上直接使用串口调试/测试此模块。
QT学习开发笔记(项目实战之智能家居物联网项目1 )

这里可能会有部分读者会问是否可以用其他 WIFI 模块,比如正点原子 Linux USB WIFI 模
块,或者直接使用开发板联网接入到云设备呢?答案是不可以的!只有一些特定的设备,需要
刷能接入云的固件才能接入服务器。
又有读者问是否可以直接购买一些 WIFI 插座来使用呢?答案是不可以的!因为这些 WIFI

插座也是一样,也是刷了固件,而且这些设备是连接到阿里云的。需要与特定的手机 APP 结合
使用才能注册到阿里云服务器。也就是不能拿来二次开发了!

恰好我们正点原子有物联网模块 ESP8266 与 4G DTU 模块。本章主要讲解如何通过正点原
子的串口转 WIFI ESP8266 模块来开发一个物联网的项目应用!

 可选配件

本项目可以在正点原子 I.MX6U ALPHA | mini 开发板直接使用,下图为正点原子 ALPHA

开发板在底板上预留的 ATK MODULE 接口(串口接口)上的接法图。

QT学习开发笔记(项目实战之智能家居物联网项目1 )

特别提醒:如果反复实验不正确时,因为 ATK-MODULE 这个接口,KEY 和 LED 脚如果有其
他程序在使用,那么很可能会影响 ESP8266 模块的功能。刚好那两个脚接到了 ESP8266 的烧录
固件IO-0脚与复位RST脚上,所以我们可以用杜邦线将模块重新连接到这个座子上,只接VCC、

GND、TX 和 RX 脚即可!

测试 WIFI 模块

要实现物联网功能,需要使用正点原子的 ATK-ESP8266 WIFI 模块。首先我们先测试正点
原子的 ATK-ESP8266 WIFI 模块是否正常使用,及能否正常连接原子云服务器。ATK-ESP8266
WIFI 用户手册_V1.3.pdf 手册第 2.2.3 小节硬件连接,将 ATK-ESP8266 WIFI 模块连接到 PC(电
脑),再查阅 ATK-ESP8266 WIFI 用户手册_V1.3.pdf 手册的第 2.2.9.1 小节,注册原子云帐号后,
添加设备,然后按 2.2.9.1 小节测试连接本地 WIFI(自己的路由器发出的 WIFI,注意不要使用
中文名或者有空格的 WIFI,确保路由器的 WIFI 能上网!)。请自行完成并成功连接到原子云。

WIFI 模块连接原子云

请先测试个人的 ATK-ESP8266 模块是否正常使用,及正常连接云。原子云的设备需要先分
好组,各个设备命名如下。注意需要和笔者命名的名字一样,也就是至少有一个分组及一个名
字为“客厅灯”的设备,并记住编号及密码(密码由云生成,默认“12345678”)。
QT学习开发笔记(项目实战之智能家居物联网项目1 )
源码路径 4/01_smarthome/esp8266/esp8266.cpp,内容如下。默认使用的 WIFI 模块串口通
信波特率为 115200。在 Ubuntu 上设试 WIFI 模块时,一般串口名称为“ttyUSB0”,默认是没有
权限访问这个/dev/ttyUSB0 设备的。所以我们需要使用下面的指令修改权限。(注意:本例适用
于 I.MX6U Linux 开发板与 Ubuntu,Windows 不作测试!)。
sudo chmod 777 /dev/ttyUSB0

修改完成后查看源码内容如下。先看源码,不要急着运行!

 /****************************************************************** 
 Copyright © Deng Zhimao Co., Ltd. 1990-2021. All rights reserved. 
 * @projectName esp8266 
 * @brief esp8266.cpp 
 * @author Deng Zhimao 
 * @email 1252699831@qq.com 
 * @net www.openedv.com 
 * @date 2021-05-27 
 *******************************************************************/ 

1 #include "esp8266.h" 

2 #include <unistd.h> 

3 #include <QDebug> 

4 

5 Esp82266::Esp82266(QWidget *parent) 

6 { 

7 Q_UNUSED(parent) 

8 /* 串口对象,用于与 Esp8266 模块通信 */ 

9 serialPort = new QSerialPort(this); 

10 

11 /* 定时器对象,用于定时发送设备在线的心跳包 */ 

12 timer = new QTimer(); 

13 
14 /* led 对象,用于串口接收到云发过来的数据,然后控制板子的 LED */ 

15 led = new Led(this); 

16 

17 /* 设置串口名 */ 

18 #if __arm__ 

19 serialPort->setPortName("ttymxc2"); 

20 #else 

21 serialPort->setPortName("ttyUSB0"); 

22 #endif 

23 

24 /* 设置波特率 */ 

25 serialPort->setBaudRate(115200); 

26 

27 /* 设置数据位数 */ 

28 serialPort->setDataBits(QSerialPort::Data8); 

29 

30 /* 设置奇偶校验 */ 

31 serialPort->setParity(QSerialPort::NoParity); 

32 

33 /* 设置停止位 */ 

34 serialPort->setStopBits(QSerialPort::OneStop); 

35 

36 /* 设置流控制 */ 

37 serialPort->setFlowControl(QSerialPort::NoFlowControl); 

38 

39 if (!serialPort->open(QIODevice::ReadWrite)) 

40 qDebug()<<"串口无法打开!可能正在被使用!"<<endl; 

41 else { 

42 qDebug()<<"串口打开成功!"<<endl; 

43 } 

44 

45 /* 开始连接云 */ 

46 connectToClound(); 

47 

48 connect(serialPort, SIGNAL(readyRead()), 

49 this, SLOT(serialPortReadyRead())); 

50 

51 connect(timer, SIGNAL(timeout()), 

52 this, SLOT(onTimerTimeOut())); 

53 } 

54 

55 void Esp82266::serialPortReadyRead() 

56 {

57 /* 接收缓冲区中读取数据 */ 

58 QByteArray buf = serialPort->readAll(); 

59 

60 QString temp = QString(buf); 

61 readData.append(temp); 

62 qDebug()<<temp<<endl; 

63 

64 if (readData.contains("ready")) { 

65 /* 如果复位成功 */ 

66 sendCmdToEsp8266("AT+CWMODE=1"); 

67 readData.clear(); 

68 } 

69 

70 if (readData.contains("OK") && readData.contains("AT+CWMODE")) { 

71 qDebug()<<"设置 STA 模式成功"<<endl; 

72 sendCmdToEsp8266("AT+CWJAP=\"ALIENTEK-YF\",\"15902020353\""); 

73 qDebug()<<"开始连接 WIFI"<<endl; 

74 readData.clear(); 

75 } 

76 

77 if (temp.contains("WIFI GOT IP")) { 

78 qDebug()<<"连接 WIFI 成功"<<endl; 

79 sleep(2); 

80 /* 原子云的设备号及密码 */ 

81 
sendCmdToEsp8266("AT+ATKCLDSTA=\"02314701717851074890\",\"12345678\""); 

82 qDebug()<<"开始连接原子云请等待"<<endl; 

83 } 

84 

85 if (temp.contains("CLOUD CONNECTED")) { 

86 qDebug()<<"连接原子云成功"<<endl; 

87 sleep(2); 

88 /* 15s 就发送一次心跳包 */ 

89 timer->start(15000); 

90 } 

91 

92 if (temp == "开") 

93 led->setLedState(true); 

94 else if (temp == "关") 

95 led->setLedState(false); 

96 

97 } 

98 

99 Esp82266::~Esp82266() 

100 { 

101 serialPort->close(); 

102 delete timer; 

103 timer = nullptr; 

104 } 

105 

106 void Esp82266::sendCmdToEsp8266(QString cmd) 

107 { 

108 cmd = cmd + "\r\n"; 

109 

110 QByteArray data = cmd.toUtf8(); 

111 serialPort->write(data); 

112 } 

113 

114 void Esp82266::connectToClound() 

115 { 

116 /* 重启模块,注意若已经连接上原子云, 
117 * 需要重新上电或者短接 RST 脚来复位模块 */ 

118 sendCmdToEsp8266("AT+RST"); 

119 } 

120 

121 void Esp82266::sleep(int second) 

122 { 

123 usleep(second * 1000000); 

124 } 

125 

126 void Esp82266::sendTextMessage(QString message) 

127 { 

128 serialPort->write(message.toLatin1()); 

129 } 

130 

131 void Esp82266::onTimerTimeOut() 

132 { 

133 sendTextMessage("online"); 

134 qDebug()<<"发送设备在线心跳包"<<endl; 

135 } 

查看源码,我们可以知道以下重要内容。
第 72 行,“ALIENTEK-YF”是笔者处的路由器发出的 WIFI 热点名称,密码是“15902020353”。

请修改为自己的 WIFI 名称及连接密码!没有路由器,用手机开热点也可以。

第 81 行,是原子云上的“客厅灯”设备的编号“02314701717851074890”,及密码“12345678”,
请填写自己的设备编号,及密码,注意这个设备需要命名为“客厅灯”,后面程序需要使用到它!
按照上面的程序就容易地可以连接上原子云了。也无需熟读 ATK-ESP8266 WIFI 用户手册

_V1.3.pdf 手册。文章来源地址https://www.toymoban.com/news/detail-412599.html

到了这里,关于QT学习开发笔记(项目实战之智能家居物联网项目1 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【嵌入式Linux项目】基于Linux的全志H616开发板智能家居项目(语音控制、人脸识别、安卓APP和PC端QT客户端远程操控)有视频功能展示

    目录 一、功能需求 二、开发环境 1、硬件: 2、软件: 3、引脚分配: 三、关键点 1、设计模式之工厂模式 2、线程 3、wiringPi库下的相关硬件操作函数调用 4、语音模块的串口通信 5、摄像头的实时监控和拍照功能 6、人脸识别 7、qt程序跨平台运行(编译成安卓APP) 四、编译和

    2024年02月15日
    浏览(55)
  • 合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)

    我们上一篇,我们实现在Linux系统下编译程序,我们首先通过两个小练习来熟悉一下如何去编译。今天,我们来介绍一下LCD屏幕基本使用。 如何使用LCD屏幕?     1、打开开发板LCD设备驱动文件。  (/dev/fb0)     2、准备颜色数据。     3、写入颜色像素点数据。     4、关闭

    2024年02月04日
    浏览(60)
  • 合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(二)

    目录 基于ARM语音识别的智能家居系统 练习一 一、程序编译 练习二: 二、文件IO 三、文件IO常用API接口函数 1、打开文件 open() 2、将数据内容写入文件 write() 3、关闭(保存)文件 四、编程示例 总结 我们上一篇讲了,关于Linux系统的一些质量,今天,我们实现在Linux系统

    2024年02月04日
    浏览(107)
  • 智能家居系统 QT

    (1)界面添加新控件 在mainwindow.ui 添加控件: 控件的类型 文本内容 对象名(唯一) 是否有槽函数 QLabel 温度 lable_随意 否 QLabel 湿度 lable_随意 否 QLabel 光照度 lable_随意 否 QPushButton 更新范围 PushButton_range 是 clicked() 控件的类型 当前值 最大值 最小值 对象名(唯一) 是否有槽

    2023年04月08日
    浏览(39)
  • qt实现智能家居系统

    一、项目介绍           通过TCP/IP协议实现客户端和和服务端的链接,服务端和下位机通过串口通信的方式链接,传递信息,客户端通过账号登录进入进入智能家居服务系统,账号登录和QQ登录类似,我采用的是数据库的方式实现数据的存储和调用,界面使用qt-ui的方式进

    2024年02月11日
    浏览(48)
  • 计算机毕业设计 基于大数据的智能家居销量数据分析系统的设计与实现 Java实战项目 附源码+文档+视频讲解

    博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 ——————————

    2024年02月04日
    浏览(52)
  • 【qt】仿写一个智能家居页面

    B站大学 示例图片: 后面的保持默认,点击完成。成功后可以看到: 再将图片拖入工程文件夹下面。 向页面添加图片 前缀名可以是自己设定,注意添加完毕后一定要先保存(ctrl+s),看文件后面的小星号*消失就保存成功,否则后面无法添加文件。 回到ui文件,将一个label拖到

    2024年04月27日
    浏览(35)
  • Linux MQTT智能家居项目(智能家居界面布局)

    1.选择工程名称和项目保存路径 2.选择QWidget 3.添加保存图片的资源文件: 在工程目录下添加Icon文件夹保存图片: 将文件放入目录中: 将图片添加进入资源文件中: 这里我们一共显示4个界面:LED控制界面,温度湿度显示界面,光照强度显示界面,摄像头监测界面。 所以这里

    2024年02月13日
    浏览(51)
  • 基于QT的智能家居中控系统的简明设计

      系统采用 “ 主从式架构 ” ,即一主多从式,该智能居家控制系统的主要功能包括 登录功能 、 注册功能 、 音乐播放功能 、 时间显示 、 日历显示 、 温度湿度光照气压海拔数据等环境指标数据 显示等。   该智能居家控制系统的软硬件环境如下:   硬件环境:

    2024年02月09日
    浏览(39)
  • 【基于stm32f103C8T6-小程序智能家居项目实战-自绘PCB到实现功能一条龙+30分钟解决-各种bug已修复】

    阿熊智能家居演示 核心板 STM32F103C8T6 WIFI模块 ESP8266-01s 传感器 DHT11温湿度传感器 BH1750光照传感器 其他 LED OLED 4脚按键开关 CP2102(USB转TTL模块) 有源蜂鸣器(低电平触发) 金属膜电阻器 面包板(或PCB) 电源和导线 项目 数量 已购 价格 STM32F103C8T6 1 ESP8266-01s 1 DHT11温湿度传感器

    2024年04月28日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包