物联网

使用 STONE 显示的时钟和家庭自动化

内容

  1. 产品描述
  2. 图形用户界面设计

3.电路图

  1. 代码
  2. 视频

产品描述

在这个项目中,我们将设计一个时钟和一个自动化系统,在这个帮助下我们可以打开或关闭家里的灯,还有一个可以显示时间和日期的时钟。

为此,我们正在使用 TFT显示屏(STONE-HMI),该显示器有一个 GUI 软件,借助此软件,我们将设计包含部分时钟和自动化的界面。下载 GUI 软件 点击此处

时钟部分设计:-

让我们首先设计时钟部分,首先我们必须添加文件夹中给出的所有图像单击 这里 。

Clock and Home Automation using STONE Display IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.正如您在左侧看到的,所有图像都已添加到图片文件部分中。现在单击图像“14”,您将看到如图所示的界面。现在从触摸配置中选择“RTC”来设置时间和日期并进行所有配置,首先添加“页面中”图像作为图像编号 6,该图像将在设置时使用。现在转到图像编号 6 并添加所有按钮及其键值。这些值将采用这种格式。

Clock and Home Automation using STONE Display IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.

对于“1”——0031

对于“2”——0031

对于“3”——0031

对于“4”——0031

对于“5”——0031

对于“6”——0031

对于“7”——0031

对于“8”——0031

对于“9”——0031

对于“0”——0030

对于“确定” – 00F1

之后,为所有按钮添加按钮效果,如图 nimber-7 所示,因此这部分将完成时钟设置。让我们进一步创建时钟指针。

类似地从顶部添加表盘时钟并添加所有时针、分针和秒针,首先我们必须为这些手制作图标,因此为此请转到图标生成器并选择这些图像,您将在该部分中找到一个新文件夹从这里的“图标文件”中,您必须根据指针要求选择所有图标。之后根据时钟指针要求选择所有图标,并且不要忘记选择时钟每个指针的中心,使用此程序现在将完成此操作,我们必须选择自动化部分,为此我们添加了一个自动化符号,如上图所示,对于此选择按钮,并将该按钮放在此自动机图标的区域中,然后选择“页面切换'为image-1,因为这是自动化的图像,之后选择image-1进行进一步设计。

自动化部分设计:-

Clock and Home Automation using STONE Display IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.让我们为此设计自动化部分,我们要求 Arduino 通过地址发送特定的键值,这里我们使用“0001”作为所有键值。对于风扇(ON)按钮,我们发送“0001”键值,对于风扇(OFF)按钮,我们发送“0002”键值。 )我们正在发送“XNUMX”键值,类似地,我们正在发送所有设备的所有特定值。这里我们还添加了一个按钮来切换到时钟 GUI,这将有助于从该界面移动到时钟界面。

对于页面切换,我们使用位于左上角的“按钮”,对于自动化按钮,我们使用“返回按键值”功能,该功能有两个参数,第一个是地址值,另一个是键值,正如我们上面提到的那样为每个自动化按钮使用不同的键值。

电路图

Clock and Home Automation using STONE Display IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.正如您在连接中看到的,有三个 LED light-1、light-2,对于风扇,这里我们仅使用 LED,但您可以将实际设备连接到此。Light-1 连接到 Arduino 的引脚 -D6、light- 2 连接到Arduino的D7引脚,类似的风扇与Arduino的D5连接。并按照电路图连接Rx和Tx。这里我们将Tx与Arduino的pin-2连接,Rx与Arduino的pin-3连接根据 Arduino 代码。让我们进一步了解它如何使用代码。

串行通信有不同类型。当您在项目中使用Arduino板时,您可以从Arduino板内部的UART选择标准串行引脚作为Arduino软件串行Rx Tx,因此称为串行TTL。在这种情况下,我们使用硬件serial.h库,但一些额外的引脚可以用作Rx或Tx。例如,SPI 通信引脚可以用作 MISO、MOSI 和选择 (SC),但它们也是可以用作数字输入或数字输出的引脚,或者如果您需要,可以使用软件串行将这些引脚用作 Rx、Tx .h 库。 

让我们进一步了解代码是如何工作的。 

代码 :- 

#包括//软件串口库

软件串行 max232(2,3);

字符数据; 

字符串 mystring;

整数 f = 5; // 风扇引脚

整数 l1 = 6; // light-1 的引脚

整数 l2 = 7; // light-2 的引脚

无效设置()

{

串行.开始(115200); //这里波特率为115200

max232.begin(115200);

pinMode(f, 输出);     

digitalWrite(f, 低); 

引脚模式(l1,输出);    

数字写入(l1,低);

引脚模式(l2,输出);    

数字写入(l2,低);

}

无效循环()

{

if (max232.available()>0)

 {

   数据 = max232.read();

   mystring = mystring + byte(数据); 

   延迟(10);

 }

else if (mystring.endsWith(“101”)) //风扇开启的条件

  {

    mystring = “”; 

   数字写入(f,高);

  }

else if (mystring.endsWith(“102”)) //风扇关闭的条件

  {

   mystring = “”; 

   数字写入(f,低);

  }

else if (mystring.endsWith(“103”)) //Light-1 ON 的条件

  {

  mystring = “”; 

  数字写入(l1,高);

  }

else if (mystring.endsWith(“104”)) //Light-1 关闭的条件

  {

   mystring = “”; 

   数字写入(l1,低);

  }

else if (mystring.endsWith(“105”)) //Light-2 ON 的条件

  {

  mystring = “”; 

  数字写入(l2,高);

  }

else if (mystring.endsWith(“106”)) //Light-2 关闭的条件

  {

   mystring = “”; 

   数字写入(l2,低);

  }

else if (mystring.endsWith(“107”)) //所有电器开启的条件

  {

   mystring = “”; 

   数字写入(l1,高);

   数字写入(l2,高);

   数字写入(f,高);

  }

else if (mystring.endsWith(“108”)) //所有电器关闭的条件

  {

   mystring = “”; 

   数字写入(l1,低);

   数字写入(l2,低);

   数字写入(f,低);

  }

}

在职的 :-

正如我们所讨论的,我们正在使用软件串行库通过地址传输密钥值,为此我们添加了在这段代码中,给出了连接 Arduino 和 STON-HMI 显示器的接口。之后,我们声明了所有用于 LED 和风扇的输出引脚,对于这些设备,我们将这些引脚声明为 OUTPUT,然后设置波特率对于软件串行库。这些都在 void 设置部分中完成,现在让我们为我们正在使用的设备创建条件,这部分被添加到 void 循环中,因为这将重复很多次,因为我们将按显示屏上的按钮。

在无效循环部分中,设备有四个条件。第一个条件是风扇打开和关闭,这里我们通过地址“0001”发送“0002”键值作为打开条件,“0001”作为关闭条件,该地址是对于所有设备都相同。对于 light-1 的第二个设备,我们发送“0003”表示开启条件,发送“0004”表示关闭条件,类似地,对于 light-2,“0005”表示开启,“0006”表示关闭条件,因此通过这种方式,这些条件适用于单个设备。

一次关闭或打开所有设备还有一个条件,为此我们使用“0007”表示“打开”,“0008”表示“关闭”。

输出视频:-

Clock and Home Automation using STONE Display IOT PlatoBlockchain Data Intelligence. Vertical Search. Ai.

这是该项目的输出视频,在该视频中首先显示了时钟的设置,并且如您在视频中看到的那样,自动化正在工作。

这是输出视频,您可以通过点击该视频进行下载。我们已经添加了与此相关的所有数据。如果您对 GUI 设计有任何疑问,您可以下载项目文件并直接打开它,在这种情况下您不必设计任何 GUI,您都会得到我们构建的设计。但如果你想设计不同的 GUI,那么你必须遵循所有步骤。

代码

//有关该项目的更多信息,请访问:- wwww. electrocircut.net //

#包括

软件串行 max232(2,3);

字符数据; 

字符串 mystring;

整数 f = 5; 

整数 l1 = 6; 

整数 l2 = 7;  

无效设置()

{

Serial.begin(115200); 

max232.begin(115200);

pinMode(f, 输出); /////////红色的////////

digitalWrite(f, 低); 

引脚模式(l1,输出); ////////绿色的///////

数字写入(l1,低);

引脚模式(l2,输出); ///////蓝色的/////////

数字写入(l2,低);

}

无效循环()

{

if (max232.available()>0)

 {

   数据 = max232.read();

   mystring = mystring + byte(数据); 

   延迟(10);

 }

else if (mystring.endsWith(“101”))

  {

    mystring = “”; 

   数字写入(f,高);

  }

else if (mystring.endsWith(“102”))

  {

   mystring = “”; 

   数字写入(f,低);

  }

else if (mystring.endsWith(“103”))

  {

  mystring = “”; 

  数字写入(l1,高);

  }

else if (mystring.endsWith(“104”))

  {

   mystring = “”; 

   数字写入(l1,低);

  }

else if (mystring.endsWith(“105”))

  {

  mystring = “”; 

  数字写入(l2,高);

  }

else if (mystring.endsWith(“106”))

  {

   mystring = “”; 

   数字写入(l2,低);

  }

else if (mystring.endsWith(“107”))

  {

   mystring = “”; 

   数字写入(l1,高);

   数字写入(l2,高);

   数字写入(f,高);

  }

else if (mystring.endsWith(“108”))

  {

   mystring = “”; 

   数字写入(l1,低);

   数字写入(l2,低);

   数字写入(f,低);

  }

}

资料来源:柏拉图数据智能