IoT

STONEディスプレイを使用した時計とホームオートメーション

内容

  1. 説明
  2. GUIデザイン

3.回路図

  1. Code
  2. ビデオ

説明

このプロジェクトでは、ホームライトのオンとオフを切り替えることができる時計と自動化システムを設計します。また、時刻と日付を表示する時計もあります。

このために私たちは使用しています TFTディスプレイ(STONE-HMI)、このディスプレイにはGUIソフトウェアであるソフトウェアがあり、このヘルプを使用して、セクションクロックと自動化の両方を含むインターフェイスを設計します。GUIソフトウェアをダウンロードします。 ここをクリック

時計部品の設計:-

最初に時計の部分をデザインしましょう。最初に、フォルダクリックで指定されたすべての画像を追加する必要があります。 ここに 。

左側にあるように、すべての画像が画像ファイルのセクションに追加されています。画像「14」をクリックすると、画像に表示されているようにこのインターフェイスが表示されます。タッチ設定から「RTC」を選択して時間を設定します。日付と日付を入力し、この最初のすべての構成を行います。「ページに」画像を設定時に使用する画像番号6として追加します。次に画像番号6に移動し、すべてのボタンとそのキー値を追加します。これらの値は次のようになります。この形式である必要があります。

「1」の場合— 0031

「2」の場合— 0031

「3」の場合— 0031

「4」の場合— 0031

「5」の場合— 0031

「6」の場合— 0031

「7」の場合— 0031

「8」の場合— 0031

「9」の場合— 0031

「0」の場合— 0030

「OK」の場合– 00F1

その後、すべてのボタンに画像nimber-7としてボタン効果を追加します。これにより、この部分で時計の設定が行われます。さらに移動して、時計の針を作成しましょう。

同様に、上からダイヤルクロックを追加し、この最初のすべての時間、分、秒針を追加します。これらの手のアイコンを作成する必要があるため、アイコンジェネレーターに移動してこれらの画像を選択すると、セクションに新しいフォルダーが表示されます。ここから「アイコンファイル」の手の要件に応じてすべてのアイコンを選択する必要があります。その後、時計の手の要件に応じてすべてのアイコンを選択し、この手順で時計の各手の中心を選択することを忘れないでくださいこれは、自動化の部分に進む必要があります。このために、上の画像に示すように、自動化シンボルを追加しました。この選択ボタンに対して、このボタンをこのオートマトンアイコンの領域に配置し、「」を選択します。これは自動化用の画像であるため、画像-1としてページスイッチ 'を選択し、さらに設計するために画像-1を選択します。

自動化部品の設計:-

このための自動化部分を設計しましょう。Arduinoがアドレスを介して特定のキー値を送信する必要がありました。ここでは、すべてのキー値に「0001」を使用しています。Fan(ON)ボタンの場合は「0001」キー値を送信し、Fan(OFF)の場合は)すべてのアプライアンスのすべての特定の値に対して送信するのと同様に、「0002」キー値を送信します。ここでは、このインターフェイスからクロックインターフェイスへの移動に役立つクロックGUIに切り替えるボタンも追加しました。

ページスイッチの場合は左上に配置された「ボタン」を使用し、自動化ボタンの場合は「リターンプレスキー値」機能を使用します。最初のパラメータはアドレス値で、もうXNUMXつは前述のようにキー値です。自動化ボタンごとに異なる異なるキー値を使用します。

回路図

接続でわかるように、1つのLEDライト-2、ライト-1があり、ここのファンにはLEDのみを使用していますが、実際のアプライアンスをこれに接続できます。ライト-6はArduinoのピン-D2に接続します。ライト- 7 ArduinoのピンD5に接続し、同様のファンをArduinoのD2に接続し、回路図に従ってRxとTxの接続を行います。ここでは、Arduinoのピン3にTxを接続し、ピンXNUMXにRxを接続しました。 Arduinoコードに従って。コードでどのように機能するかをさらに進めましょう。

シリアル通信にはさまざまな種類があります。 プロジェクトで Arduino ボードを使用する場合、Arduino ボード内の UART から標準シリアル ピンを Arduino ソフトウェア シリアル Rx Tx として選択できるため、シリアル TTL と呼ばれます。 その場合、ハードウェア serial.h ライブラリを使用していますが、いくつかの追加ピンは Rx または Tx として機能します。 たとえば、SPI 通信ピンは MISO、MOSI、およびセレクト (SC) として機能しますが、デジタル入力またはデジタル出力としても機能するピンでもあります。必要に応じて、ソフトウェアシリアルを使用してこれらのピンを Rx、Tx として使用することもできます。 .h ライブラリ。 

コードがどのように機能しているかを知るために、さらに進んでみましょう。 

コード:- 

#含む//ソフトウェアシリアルライブラリ

SoftwareSerial max232(2,3);

文字データ; 

文字列mystring;

int f = 5; // ファンのピン

int l1 = 6; // light-1 のピン

int l2 = 7; // light-2 のピン

ボイドセットアップ()

{

Serial.begin(115200); // ここで、ボーレートは 115200 です

max232.begin(115200);

pinMode(f、OUTPUT);     

digitalWrite(f、LOW); 

pinMode(l1、OUTPUT);    

digitalWrite(l1、LOW);

pinMode(l2、OUTPUT);    

digitalWrite(l2、LOW);

}

void loop()

{

if(max232.available()> 0)

 {

   データ= max232.read();

   mystring = mystring + byte(data); 

   delay(10);

 }

else if (mystring.endsWith(“101”)) //ファンONの条件

  {

    mystring =“”; 

   digitalWrite(f、HIGH);

  }

else if (mystring.endsWith(“102”)) //ファンOFFの条件

  {

   mystring =“”; 

   digitalWrite(f、LOW);

  }

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

  {

  mystring =“”; 

  digitalWrite(l1、HIGH);

  }

else if (mystring.endsWith(“104”)) //Light-1 OFFの条件

  {

   mystring =“”; 

   digitalWrite(l1、LOW);

  }

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

  {

  mystring =“”; 

  digitalWrite(l2、HIGH);

  }

else if (mystring.endsWith(“106”)) //Light-2 OFFの条件

  {

   mystring =“”; 

   digitalWrite(l2、LOW);

  }

else if (mystring.endsWith(“107”)) //すべてのアプライアンスがオンの条件

  {

   mystring =“”; 

   digitalWrite(l1、HIGH);

   digitalWrite(l2、HIGH);

   digitalWrite(f、HIGH);

  }

else if (mystring.endsWith(“108”)) //すべてのアプライアンスがオフの条件

  {

   mystring =“”; 

   digitalWrite(l1、LOW);

   digitalWrite(l2、LOW);

   digitalWrite(f、LOW);

  }

}

働く :-

すでに説明したように、ソフトウェアシリアルライブラリを使用してアドレスを介してキー値を転送しているため、これを追加しましたこのコードでは、これによりArduinoとSTON-HMIディスプレイを接続するためのインターフェイスが提供されます。その後、LEDとファンに使用しているすべての出力ピンを宣言し、これらのデバイスの場合、これらのピンをOUTPUTとして宣言し、ボーレートを設定します。ソフトウェアシリアルライブラリの場合。これらはすべてvoidセットアップ部分で実行されます。次に、使用しているデバイスの条件を作成します。この部分はvoidループに追加されます。これは、を押すと何度も繰り返されるためです。ディスプレイのボタン。

ボイドループセクションには、デバイスの0001つの条件があります。最初の条件はファンのオンとオフです。ここでは、オン条件の「0002」キー値とオフ条件の「0001」をアドレス「1」に送信します。このアドレスは次のとおりです。すべてのデバイスで同じです。ライト0003用の0004番目のデバイスの場合、オン状態の場合は「2」、オフ状態の場合は「0005」を送信します。同様に、ライトの場合も同様に、オンの場合は「0006」、オフ状態の場合は「XNUMX」を送信します。このようにして、これらの条件は個々のデバイスで機能します。

すべてのデバイスを一度にオフまたはオンにするためのもう0007つの条件があります。これには、オンに「0008」、オフに「XNUMX」を使用しています。

出力ビデオ:-

これは、このビデオのこのプロジェクトの出力ビデオであり、最初に時計のセットアップを示しており、ビデオに示されているように自動化の動作があります。

これは、そのビデオをクリックしてダウンロードできる出力ビデオです。GUIの設計に疑問がある場合は、プロジェクトファイルをダウンロードして直接開くことができます。この場合は、これに関連するすべてのデータを追加しました。 GUIを設計すると、私たちが構築したその設計が得られます。 ただし、別のGUIを設計する場合は、すべての手順を実行する必要があります。

Code

//このプロジェクトの詳細については、次のWebサイトをご覧ください。-wwww.electrocircuit.net//

#include

SoftwareSerial max232(2,3);

文字データ; 

文字列mystring;

int f = 5; 

int l1 = 6; 

int l2 = 7;  

ボイドセットアップ()

{

Serial.begin(115200); 

max232.begin(115200);

pinMode(f、OUTPUT); /////////赤////////

digitalWrite(f、LOW); 

pinMode(l1、OUTPUT); ////////緑///////

digitalWrite(l1、LOW);

pinMode(l2、OUTPUT); ///////青/////////

digitalWrite(l2、LOW);

}

void loop()

{

if(max232.available()> 0)

 {

   データ= max232.read();

   mystring = mystring + byte(data); 

   delay(10);

 }

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

  {

    mystring =“”; 

   digitalWrite(f、HIGH);

  }

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

  {

   mystring =“”; 

   digitalWrite(f、LOW);

  }

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

  {

  mystring =“”; 

  digitalWrite(l1、HIGH);

  }

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

  {

   mystring =“”; 

   digitalWrite(l1、LOW);

  }

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

  {

  mystring =“”; 

  digitalWrite(l2、HIGH);

  }

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

  {

   mystring =“”; 

   digitalWrite(l2、LOW);

  }

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

  {

   mystring =“”; 

   digitalWrite(l1、HIGH);

   digitalWrite(l2、HIGH);

   digitalWrite(f、HIGH);

  }

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

  {

   mystring =“”; 

   digitalWrite(l1、LOW);

   digitalWrite(l2、LOW);

   digitalWrite(f、LOW);

  }

}

出典:プラトンデータインテリジェンス