IOT

Часы и домашняя автоматизация с использованием STONE Display

Содержание:

  1. Описание
  2. Дизайн графического интерфейса

3. Принципиальная схема

  1. Code
  2. Видео

Описание

В этом проекте мы собираемся разработать часы и систему автоматизации, с помощью которых мы сможем включать или выключать домашний свет, а также есть часы, которые будут показывать время и дату.

Для этого мы используем TFT-дисплей (STONE-HMI), этот дисплей имеет программное обеспечение, которое представляет собой программное обеспечение с графическим интерфейсом пользователя, с этой помощью мы собираемся разработать интерфейс, который будет содержать как часы секций, так и автоматизацию. Загрузите программное обеспечение с графическим интерфейсом. нажмите здесь.

Проектирование часовой части: -

Давайте сначала спроектируем часть часов, сначала мы должны добавить все изображения, которые находятся в папке, щелкните Вот .

Как вы можете видеть в левой части, все изображения добавлены в раздел файла изображения. Теперь нажмите на изображение «14», вы увидите этот интерфейс, как вы видите на изображении. Теперь выберите «RTC» в сенсорной конфигурации, чтобы установить время. и дату и выполните всю настройку для этого сначала добавьте изображение `` на странице '' как изображение номер 6, которое будет использоваться во время настройки. Теперь перейдите к изображению номер 6 и добавьте все кнопки и их значения ключей. это значение будет быть в этом формате.

Для '1' - 0031

Для '2' - 0031

Для '3' - 0031

Для '4' - 0031

Для '5' - 0031

Для '6' - 0031

Для '7' - 0031

Для '8' - 0031

Для '9' - 0031

Для '0' - 0030

Для «ОК» - 00F1

После этого добавьте эффект кнопки как изображение nimber-7 для всех кнопок, чтобы в этой части мы перешли к настройке часов. Пойдем дальше, чтобы создать стрелки часов.

Точно так же добавьте циферблат часов сверху и добавьте все стрелки, часы, минуты и секунды, для этого сначала мы должны сделать значок для этих рук, поэтому для этого перейдите к генератору значков и выберите эти изображения, вы найдете новую папку в разделе в 'icon file' отсюда вы должны выбрать все значки в соответствии с требованиями к стрелкам. После этого выберите все значки в соответствии с требованиями к стрелкам часов и не забудьте выбрать центр каждой стрелки для часов с помощью этой процедуры это будет сделано, теперь нам нужно перейти к части автоматизации, и для этого мы добавили символ автоматизации, как вы можете видеть на изображении выше, для этой кнопки выбора и поместите эту кнопку в область этого значка автомата, а затем выберите ' page switch 'как изображение-1, потому что это изображение для автоматизации, после чего выберите изображение-1 для дальнейшего проектирования.

Проектирование частей автоматики: -

Давайте спроектируем часть автоматизации для этого, мы потребовали, чтобы Arduino отправлял определенное значение ключа по адресу, здесь мы используем '0001' для всех значений ключа. Для кнопки Fan (ON) мы отправляем значение ключа '0001', а для Fan (OFF) ) мы отправляем значение ключа «0002» аналогично тому, как мы отправляем для всех конкретных значений для всех устройств. Здесь мы также добавили кнопку для переключения на графический интерфейс часов, который поможет перейти от этого интерфейса к интерфейсу часов.

Для переключения страниц мы используем «кнопку», которая находится слева вверху, а для кнопки автоматизации мы используем функцию «вернуть значение нажатия клавиши», которая имеет два параметра: сначала это значение адреса, а другое - значение ключа, как мы уже упоминали выше, мы используя разные ключевые значения для каждой кнопки автоматизации.

Схема

Как вы можете видеть при подключении, есть три светодиода: светится-1, свет-2 и для вентилятора здесь мы используем только светодиоды, но вы можете подключить к нему настоящие устройства. Свет-1 подключается к контакту -D6 Arduino, свет- 2 подключите к контакту D7 Arduino, аналогичный вентилятор подключите к D5 с Arduino. И выполните подключение для Rx и Tx в соответствии с принципиальной схемой. Здесь мы соединили Tx с контактом 2 и Rx с контактом 3 Arduino, как в соответствии с кодом Arduino. Давайте рассмотрим, как он работает с кодом.

Существуют различные типы последовательной связи. Когда вы используете плату Arduino в проекте, вы можете выбрать стандартные последовательные контакты в качестве последовательного порта Rx Tx программного обеспечения Arduino из UART внутри платы Arduino, поэтому он называется Serial TTL. В этом случае мы используем библиотеку Hardware Serial.h, но некоторые дополнительные контакты могут работать как Rx или Tx. Например, коммуникационные контакты SPI могут работать как MISO, MOSI и Select (SC), но они также являются контактами, которые могут работать как цифровой вход или цифровой выход, или, если вам нужно, вы можете использовать эти контакты как Rx, Tx с помощью последовательного программного обеспечения. .h Библиотека. 

Пойдем дальше, чтобы узнать, как работает код. 

Код: - 

#включают // серийная библиотека программного обеспечения

SoftwareSerial max232 (2,3);

данные char; 

строка mystring;

интервал е = 5; // Пин для вентилятора

интервал l1 = 6; // Пин для света-1

интервал l2 = 7; // Пин для света-2

установка void ()

{

Serial.begin(115200); //Здесь скорость передачи данных равна 115200

max232.begin (115200);

pinMode (f, ВЫХОД);     

digitalWrite (f, LOW); 

pinMode (l1, ВЫХОД);    

digitalWrite (l1, LOW);

pinMode (l2, ВЫХОД);    

digitalWrite (l2, LOW);

}

пустой цикл ()

{

если (max232.available ()> 0)

 {

   data = max232.read ();

   mystring = mystring + байт (данные); 

   Задержка (10);

 }

else if (mystring.endsWith("101")) //условие включения вентилятора

  {

    mystring = «»; 

   digitalWrite (f, HIGH);

  }

else if (mystring.endsWith("102")) //условие для выключения вентилятора

  {

   mystring = «»; 

   digitalWrite (f, LOW);

  }

else if (mystring.endsWith("103")) //условие включения Light-1

  {

  mystring = «»; 

  digitalWrite (l1, HIGH);

  }

else if (mystring.endsWith("104")) //условие для выключения Light-1

  {

   mystring = «»; 

   digitalWrite (l1, LOW);

  }

else if (mystring.endsWith("105")) //условие включения Light-2

  {

  mystring = «»; 

  digitalWrite (l2, HIGH);

  }

else if (mystring.endsWith("106")) //условие для выключения Light-2

  {

   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. После этого мы объявили все выходные контакты, которые мы используем для светодиодов и вентилятора, для этих устройств мы объявляем эти контакты как OUTPUT, затем устанавливаем скорость передачи для библиотеки программного обеспечения последовательного порта. все это сделано в части настройки void, теперь давайте перейдем к созданию условий для устройств, которые мы используем, эта часть добавлена ​​в цикл void, потому что это будет повторяться много раз, поскольку мы будем нажимать кнопку на дисплее.

В разделе void loop есть четыре условия для устройств. Первое условие - вентилятор включен и выключен, здесь мы отправляем значение ключа «0001» для состояния ON и «0002» для состояния выключения по адресу «0001», этот адрес является то же самое для всех устройств.Для второго устройства, которое предназначено для света-1, мы отправляем '0003' для состояния ВКЛ и '0004' для состояния выключения, аналогично для света-2 '0005' для состояния ВКЛ и '0006' для состояния выключения, поэтому Таким образом, эти условия работают для отдельного устройства.

Есть еще одно условие для выключения или включения всех устройств одновременно, для этого мы используем «0007» для включения и «0008» для выключения.

Выходное видео: -

Это выходное видео для этого проекта, в этом видео сначала показана настройка часов, и есть работа автоматизации, как вы можете видеть на видео.

Это выходное видео, которое вы можете загрузить, щелкнув это видео. Мы добавили все данные, связанные с этим, если у вас есть какие-либо сомнения по поводу проектирования графического интерфейса, вы можете загрузить файл проекта и открыть его напрямую, в этом случае вам не нужно Создавая любой графический интерфейс, вы получите тот дизайн, который мы создали. Но если вы хотите разработать другой графический интерфейс, вам нужно выполнить все шаги.

Code

// Для получения дополнительной информации об этом проекте посетите: - wwww.electrocircuit.net //

#включать

SoftwareSerial max232 (2,3);

данные char; 

строка mystring;

интервал f = 5; 

интервал l1 = 6; 

интервал l2 = 7;  

установка void ()

{

Serial.begin (115200); 

max232.begin (115200);

pinMode (f, ВЫХОД); /////////КРАСНЫЙ////////

digitalWrite (f, LOW); 

pinMode (l1, ВЫХОД); ////////ЗЕЛЕНЫЙ///////

digitalWrite (l1, LOW);

pinMode (l2, ВЫХОД); ///////СИНИЙ/////////

digitalWrite (l2, LOW);

}

пустой цикл ()

{

если (max232.available ()> 0)

 {

   data = max232.read ();

   mystring = mystring + байт (данные); 

   Задержка (10);

 }

иначе, если (mystring.endsWith («101»))

  {

    mystring = «»; 

   digitalWrite (f, HIGH);

  }

иначе, если (mystring.endsWith («102»))

  {

   mystring = «»; 

   digitalWrite (f, LOW);

  }

иначе, если (mystring.endsWith («103»))

  {

  mystring = «»; 

  digitalWrite (l1, HIGH);

  }

иначе, если (mystring.endsWith («104»))

  {

   mystring = «»; 

   digitalWrite (l1, LOW);

  }

иначе, если (mystring.endsWith («105»))

  {

  mystring = «»; 

  digitalWrite (l2, HIGH);

  }

иначе, если (mystring.endsWith («106»))

  {

   mystring = «»; 

   digitalWrite (l2, LOW);

  }

иначе, если (mystring.endsWith («107»))

  {

   mystring = «»; 

   digitalWrite (l1, HIGH);

   digitalWrite (l2, HIGH);

   digitalWrite (f, HIGH);

  }

иначе, если (mystring.endsWith («108»))

  {

   mystring = «»; 

   digitalWrite (l1, LOW);

   digitalWrite (l2, LOW);

   digitalWrite (f, LOW);

  }

}

Источник: Plato Data Intelligence.