您当前的位置: 首页 >  嵌入式

正点原子

暂无认证

  • 1浏览

    0关注

    382博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【正点原子Linux连载】第二十四章 智能家居物联网项目 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2

正点原子 发布时间:2022-07-19 11:17:51 ,浏览量:1

1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-300792-1-1.html 4)对正点原子Linux感兴趣的同学可以加群讨论:935446741

第二十四章 智能家居物联网项目

本章介绍使用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。

24.1 项目硬件

必备硬件 本章需要正点原子ATK-ESP8266串口转WIFI模块(免费接入原子云)。另外还需要加上一个USB-TTL模块,外加一根T口USB连接线,可接入PC(电脑)调试。 在这里插入图片描述

T口连接线连接USB-TTL模块再连接ATK-ESP8266模块到PC(电脑),用于在PC(电脑)上直接使用串口调试/测试此模块。

在这里插入图片描述

这里可能会有部分读者会问是否可以用其他WIFI模块,比如正点原子Linux USB WIFI模块,或者直接使用开发板联网接入到云设备呢?答案是不可以的!只有一些特定的设备,需要刷能接入云的固件才能接入服务器。
又有读者问是否可以直接购买一些WIFI插座来使用呢?答案是不可以的!因为这些WIFI插座也是一样,也是刷了固件,而且这些设备是连接到阿里云的。需要与特定的手机APP结合使用才能注册到阿里云服务器。也就是不能拿来二次开发了!
恰好我们正点原子有物联网模块ESP8266与4G DTU模块。本章主要讲解如何通过正点原子的串口转WIFI ESP8266模块来开发一个物联网的项目应用!

可选配件 本项目可以在正点原子I.MX6U ALPHA | mini开发板直接使用,下图为正点原子ALPHA开发板在底板上预留的ATK MODULE接口(串口接口)上的接法图。 在这里插入图片描述

特别提醒:如果反复实验不正确时,因为ATK-MODULE这个接口,KEY和LED脚如果有其他程序在使用,那么很可能会影响ESP8266模块的功能。刚好那两个脚接到了ESP8266的烧录固件IO-0脚与复位RST脚上,所以我们可以用杜邦线将模块重新连接到这个座子上,只接VCC、GND、TX和RX脚即可! 24.2 测试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能上网!)。请自行完成并成功连接到原子云。 24.3 WIFI模块连接原子云 请先测试个人的ATK-ESP8266模块是否正常使用,及正常连接云。原子云的设备需要先分好组,各个设备命名如下。注意需要和编者命名的名字一样,也就是至少有一个分组及一个名字为“客厅灯”的设备,并记住编号及密码(密码由云生成,默认“12345678”)。 在这里插入图片描述

源码路径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 
3   #include 
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()            
关注
打赏
1665308814
查看更多评论
0.0432s