IOT

Zegar i automatyka domowa za pomocą wyświetlacza STONE

Spis treści

  1. Opis
  2. Projekt GUI

3. Schemat obwodu

  1. Code
  2. Wideo

Opis

W tym projekcie zaprojektujemy zegar i system automatyki, za pomocą którego będziemy mogli włączać lub wyłączać oświetlenie w domu, a także zegar, który pokaże godzinę i datę.

Do tego używamy Wyświetlacz TFT (STONE-HMI), ten wyświetlacz ma oprogramowanie, które jest oprogramowaniem GUI, z tą pomocą zaprojektujemy interfejs, który będzie zawierał zarówno zegar sekcji, jak i automatykę. Pobierz oprogramowanie GUI kliknij tutaj

Projektowanie części zegara :-

Najpierw zaprojektujmy część zegara, najpierw musimy dodać wszystkie obrazy, które są podane w folderze kliknij tutaj.

Jak widać po lewej stronie, wszystkie obrazy zostały dodane w sekcji pliku obrazu. Teraz kliknij obraz „14”, a zobaczysz ten interfejs, jak widać na obrazku. Teraz wybierz „RTC” z konfiguracji dotykowej, aby ustawić czas i datę i wykonaj całą konfigurację dla tego najpierw dodaj obraz „na stronie” jako obraz numer 6, który będzie używany w momencie ustawiania. Teraz przejdź do obrazu numer 6 i dodaj wszystkie przyciski i ich wartości kluczy. być w tym formacie.

Dla „1” — 0031

Dla „2” — 0031

Dla „3” — 0031

Dla „4” — 0031

Dla „5” — 0031

Dla „6” — 0031

Dla „7” — 0031

Dla „8” — 0031

Dla „9” — 0031

Dla „0” — 0030

Dla „OK” – 00F1

Następnie dodaj efekt przycisku jako obrazek nimber-7 dla wszystkich przycisków, dzięki czemu w tej części zostanie wykonane ustawienie zegara. Przejdźmy dalej, aby stworzyć wskazówki zegara.

Podobnie dodaj zegar wybierania od góry i dodaj wszystkie ,godziny,minuty i sekundy dla tego najpierw musimy zrobićikony dla tych wskazówek, więc w tym celu przejdź do generatora ikon i wybierz te obrazy, znajdziesz nowy folder w sekcji z „pliku ikon” stąd musisz wybrać wszystkie ikony zgodnie z wymaganiami wskazówek. Następnie wybierz wszystkie ikony zgodnie z wymaganiami wskazówek zegara i nie zapomnij wybrać środka każdej wskazówki zegara, za pomocą tej procedury zostanie to zrobione teraz musimy przejść do części automatyzacji i do tego dodaliśmy symbol automatyzacji, jak widać na powyższym obrazku, dla tego przycisku wyboru i umieścić ten przycisk w obszarze tej ikony automatu, a następnie wybierz ' przełącznik strony' jako obraz-1, ponieważ jest to obraz do automatyzacji, po czym wybierz obraz-1 do dalszego projektowania.

Projektowanie części automatyki :-

Zaprojektujmy do tego część automatyzacji, wymagaliśmy od Arduino wysłania określonej wartości klucza przez adres, tutaj używamy „0001” dla wszystkich wartości klucza. Dla przycisku Fan (ON) wysyłamy wartość klucza „0001”, a dla Fan (OFF ) wysyłamy wartość klucza '0002', podobnie wysyłamy dla wszystkich poszczególnych wartości dla wszystkich urządzeń. Tutaj dodaliśmy również przycisk do przełączania na GUI zegara, który pomoże przejść z tego interfejsu do interfejsu zegara.

Do przełączania stron używamy 'przycisku', który znajduje się po lewej stronie u góry, a do przycisku automatyzacji używamy funkcji 'powrót naciśnięcia wartości klawisza', która ma dwa parametry, pierwszy to wartość adresu, a drugi to wartość klucza, jak wspomnieliśmy powyżej, jesteśmy przy użyciu różnych wartości klucza dla każdego przycisku automatyzacji.

Schemat obwodu

Jak widać w połączeniu, są trzy diody LED light-1, light-2, a dla Fan tutaj używamy tylko diod LED, ale można do nich podłączyć rzeczywiste urządzenia. Light-1 łączy się z pinem -D6 Arduino, light- 2 połącz się z pinem D7 Arduino, podobny wentylator połącz z D5 z Arduino. I wykonaj połączenie dla Rx i Tx zgodnie ze schematem obwodu. Tutaj połączyliśmy Tx z pinem-2 i Rx z pinem-3 Arduino jako na kod Arduino. Przejdźmy dalej, jak to działa z kodem.

Istnieją różne rodzaje komunikacji szeregowej. Kiedy używasz płytki Arduino w projekcie, możesz wybrać standardowe piny szeregowe jako serial oprogramowania Arduino Rx Tx, z UART wewnątrz płyty Arduino, więc nazywa się to Serial TTL. W takim przypadku korzystamy z biblioteki sprzętowej serial.h, ale niektóre dodatkowe piny mogą działać jako Rx lub Tx. Na przykład piny komunikacyjne SPI mogą działać jako MISO, MOSI i Select (SC), ale są to również piny, które mogą działać jako wejście cyfrowe lub wyjście cyfrowe, a jeśli zajdzie taka potrzeba, możesz użyć tych pinów jako Rx, Tx za pomocą oprogramowania szeregowego .h Biblioteka. 

Przejdźmy dalej, aby dowiedzieć się, jak działa kod. 

Kod :- 

#włączać //programowa biblioteka szeregowa

OprogramowanieSerial max232(2,3);

dane znakowe; 

ciąg znaków;

int f = 5; // Pin dla Fana

int l1 = 6; // Pin dla światła-1

int l2 = 7; // Pin dla światła-2

void setup ()

{

Serial.begin(115200); //Tutaj szybkość transmisji wynosi 115200

max232.początek (115200);

pinMode(f, WYJŚCIE);     

digitalWrite(f, NISKI); 

pinMode(l1, WYJŚCIE);    

digitalWrite(l1, NISKI);

pinMode(l2, WYJŚCIE);    

digitalWrite(l2, NISKI);

}

void loop ()

{

jeśli (max232.available()>0)

 {

   dane = max232.odczyt();

   mystring = mystring + bajt(dane) ; 

   opóźnienie (10);

 }

else if (mystring.endsWith(“101”)) //warunek WŁĄCZENIA WENTYLATORA

  {

    mystring = „”; 

   digitalWrite(f,WYSOKI);

  }

else if (mystring.endsWith(“102”)) //warunek WYŁĄCZENIA WENTYLATORA

  {

   mystring = „”; 

   digitalWrite(f,NISKI);

  }

else if (mystring.endsWith(“103”)) //warunek dla Light-1 ON

  {

  mystring = „”; 

  digitalWrite(l1,WYSOKI);

  }

else if (mystring.endsWith(“104”)) //warunek dla Light-1 OFF

  {

   mystring = „”; 

   zapis cyfrowy(l1,LOW);

  }

else if (mystring.endsWith(“105”)) //warunek dla Light-2 ON

  {

  mystring = „”; 

  digitalWrite(l2,WYSOKI);

  }

else if (mystring.endsWith(“106”)) //warunek dla Light-2 OFF

  {

   mystring = „”; 

   zapis cyfrowy(l2,LOW);

  }

else if (mystring.endsWith(“107”)) //warunek dla WŁĄCZENIA wszystkich urządzeń

  {

   mystring = „”; 

   digitalWrite(l1,WYSOKI);

   digitalWrite(l2,WYSOKI);

   digitalWrite(f,WYSOKI);

  }

else if (mystring.endsWith(“108”)) //warunek dla WYŁĄCZENIA wszystkich urządzeń

  {

   mystring = „”; 

   zapis cyfrowy(l1,LOW);

   zapis cyfrowy(l2,LOW);

   digitalWrite(f,NISKI);

  }

}

Pracujący :-

Jak omówiliśmy, używamy biblioteki oprogramowania szeregowego do przeniesienia wartości klucza na adres, w tym celu dodaliśmy w tym kodzie daje to interfejs do podłączenia wyświetlacza Arduino i STON-HMI. Następnie zadeklarujemy wszystkie piny wyjściowe, których używamy dla diod LED i wentylatora, dla tych urządzeń zadeklarowaliśmy te piny jako WYJŚCIE, a następnie ustawiliśmy szybkość transmisji dla biblioteki oprogramowania-serial. wszystko to zostało zrobione w części konfiguracji void, teraz przejdźmy do warunku dla używanych urządzeń, ta część jest dodawana w pętli void, ponieważ będzie to powtarzać się wiele razy, gdy naciśniemy na wyświetlaczu.

W sekcji void loop znajdują się cztery warunki dla urządzeń. Pierwszy warunek dotyczy włączenia i wyłączenia wentylatora, tutaj wysyłamy wartość klucza „0001” dla warunku włączenia i „0002” dla warunku wyłączenia przez adres „0001” ten adres jest to samo dla wszystkich urządzeń.Dla drugiego urządzenia, które jest dla światła-1, wysyłamy „0003” dla stanu włączenia i „0004” dla stanu wyłączenia, podobnie dla światła-2 „0005” dla stanu włączenia i „0006” dla stanu wyłączenia, więc w ten sposób warunki te działają dla pojedynczego urządzenia.

Jest jeszcze jeden warunek, aby wyłączyć lub włączyć wszystkie urządzenia jednocześnie, w tym celu używamy „0007” dla WŁĄCZENIA i „0008” dla WYŁĄCZENIA.

Wyjście wideo:-

To jest wideo wyjściowe tego projektu w tym filmie, pokazujące najpierw konfigurację zegara i działa automatyzacja, jak widać na filmie.

To jest wyjściowe wideo, które możesz pobrać, klikając ten film. Dodaliśmy wszystkie dane z tym związane, jeśli masz jakiekolwiek wątpliwości dotyczące projektowania GUI, możesz pobrać plik projektu i otworzyć go bezpośrednio, w tym przypadku nie musisz zaprojektuj dowolny GUI, otrzymasz projekt, który zbudowaliśmy. Ale jeśli chcesz zaprojektować inny GUI, musisz wykonać wszystkie kroki.

Code

//Więcej informacji na temat tego projektu można znaleźć na stronie:- www.electrocircuit.net //

#zawierać

OprogramowanieSerial max232(2,3);

dane znakowe; 

ciąg znaków;

intf = 5; 

int l1 = 6; 

int l2 = 7;  

void setup ()

{

Serial.begin (115200); 

max232.początek (115200);

pinMode(f, WYJŚCIE); /////////CZERWONY////////

digitalWrite(f, NISKI); 

pinMode(l1, WYJŚCIE); ////////ZIELONY///////

digitalWrite(l1, NISKI);

pinMode(l2, WYJŚCIE); ///////NIEBIESKI/////////

digitalWrite(l2, NISKI);

}

void loop ()

{

jeśli (max232.available()>0)

 {

   dane = max232.odczyt();

   mystring = mystring + bajt(dane) ; 

   opóźnienie (10);

 }

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

  {

    mystring = „”; 

   digitalWrite(f,WYSOKI);

  }

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

  {

   mystring = „”; 

   digitalWrite(f,NISKI);

  }

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

  {

  mystring = „”; 

  digitalWrite(l1,WYSOKI);

  }

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

  {

   mystring = „”; 

   zapis cyfrowy(l1,LOW);

  }

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

  {

  mystring = „”; 

  digitalWrite(l2,WYSOKI);

  }

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

  {

   mystring = „”; 

   zapis cyfrowy(l2,LOW);

  }

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

  {

   mystring = „”; 

   digitalWrite(l1,WYSOKI);

   digitalWrite(l2,WYSOKI);

   digitalWrite(f,WYSOKI);

  }

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

  {

   mystring = „”; 

   zapis cyfrowy(l1,LOW);

   zapis cyfrowy(l2,LOW);

   digitalWrite(f,NISKI);

  }

}

Źródło: Plato Data Intelligence