IOT

นาฬิกาและระบบอัตโนมัติในบ้านโดยใช้ STONE Display

เนื้อหา

  1. รายละเอียด
  2. การออกแบบ GUI

3 .แผนภาพวงจร

  1. รหัส
  2. วีดีโอ

รายละเอียด

ในโครงการนี้ เราจะออกแบบนาฬิกาและระบบอัตโนมัติด้วยความช่วยเหลือนี้ เราสามารถเปิดหรือปิดไฟบ้าน และยังมีนาฬิกาซึ่งจะแสดงเวลาและวันที่

สำหรับสิ่งนี้เราใช้ จอแสดงผล TFT (STONE-HMI), จอแสดงผลนี้มีซอฟต์แวร์ที่เป็นซอฟต์แวร์ GUI พร้อมความช่วยเหลือนี้ เราจะทำการออกแบบอินเทอร์เฟซซึ่งจะมีทั้งนาฬิกาส่วนและระบบอัตโนมัติ ดาวน์โหลดซอฟต์แวร์ GUI คลิกที่นี่

การออกแบบส่วนนาฬิกา :-

มาออกแบบส่วนนาฬิกากันก่อน ขั้นแรกเราต้องเพิ่มรูปภาพทั้งหมดที่อยู่ในโฟลเดอร์ click ที่นี่ .

ดังที่คุณเห็นทางด้านซ้าย รูปภาพทั้งหมดได้เพิ่มในส่วนของไฟล์รูปภาพ ตอนนี้คลิกที่รูปภาพ '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 สำหรับปุ่มทั้งหมด ดังนั้นในส่วนนี้จะทำการตั้งค่านาฬิกา มาต่อกันเพื่อสร้างเข็มนาฬิกา

ในทำนองเดียวกันเพิ่มนาฬิกาหน้าปัดจากด้านบนและเพิ่มเข็มชั่วโมงนาทีและวินาทีทั้งหมดสำหรับสิ่งนี้ก่อนอื่นเราต้องสร้างไอคอนสำหรับมือเหล่านี้เพื่อไปที่ตัวสร้างไอคอนและเลือกภาพเหล่านี้คุณจะพบโฟลเดอร์ใหม่ในส่วน ของ 'ไฟล์ไอคอน' จากที่นี่ คุณต้องเลือกไอคอนทั้งหมดตามข้อกำหนดของเข็มนาฬิกา จากนั้นจึงเลือกไอคอนทั้งหมดตามข้อกำหนดของเข็มนาฬิกา และอย่าลืมเลือกตรงกลางของเข็มนาฬิกาแต่ละเข็มด้วยขั้นตอนนี้ เสร็จแล้วเราต้องไปที่ส่วนอัตโนมัติและสำหรับสิ่งนี้เราได้เพิ่มสัญลักษณ์อัตโนมัติดังที่คุณเห็นในภาพด้านบนสำหรับปุ่มเลือกนี้และวางปุ่มนั้นในพื้นที่ของไอคอนหุ่นยนต์แล้วเลือก ' การเปลี่ยนหน้า' เป็นรูปภาพ-1 เพราะนี่คือรูปภาพสำหรับระบบอัตโนมัติ หลังจากนั้นจึงเลือกรูปภาพ-1 เพื่อออกแบบเพิ่มเติม

การออกแบบชิ้นส่วนอัตโนมัติ :-

มาออกแบบส่วนอัตโนมัติสำหรับสิ่งนี้ เราต้องการให้ Arduino ส่งค่าคีย์เฉพาะไปยังที่อยู่ ที่นี่เราใช้ '0001' สำหรับค่าคีย์ทั้งหมด สำหรับปุ่ม Fan (ON) เรากำลังส่งค่าคีย์ '0001' และสำหรับ Fan (ปิด) ) เรากำลังส่งค่าคีย์ '0002' ในทำนองเดียวกันกับค่าเฉพาะทั้งหมดสำหรับอุปกรณ์ทั้งหมด นอกจากนี้ เรายังเพิ่มปุ่มเพื่อสลับไปยัง GUI ของนาฬิกา ซึ่งจะช่วยย้ายจากอินเทอร์เฟซนี้ไปยังอินเทอร์เฟซนาฬิกา

สำหรับการสลับหน้าเราใช้ 'ปุ่ม' ซึ่งวางอยู่ด้านบนซ้ายและสำหรับปุ่มอัตโนมัติ เราใช้ฟังก์ชัน 'return press key value' ซึ่งมีพารามิเตอร์สองตัวก่อนคือค่าที่อยู่และอีกค่าหนึ่งคือค่าคีย์ดังที่เราได้กล่าวไว้ข้างต้น โดยใช้ค่าคีย์ที่แตกต่างกันสำหรับปุ่มการทำงานอัตโนมัติแต่ละปุ่ม

แผนผังวงจร

ดังที่คุณเห็นในการเชื่อมต่อมีไฟ LED สามดวง light-1,light-2 และสำหรับ Fan ที่นี่เราใช้ LED เท่านั้น แต่คุณสามารถเชื่อมต่ออุปกรณ์จริงเข้ากับสิ่งนี้ได้ Light-1 เชื่อมต่อกับพิน -D6 ของ Arduino, light- 2 เชื่อมต่อกับ pin-D7 ของ Arduino คล้ายกับ Fan เชื่อมต่อกับ D5 กับ Arduino และทำการเชื่อมต่อสำหรับ Rx และ Tx ตามแผนภาพวงจร เราเชื่อมต่อ Tx กับ pin-2 และ Rx กับ pin-3 ของ Arduino เป็น ตามโค้ด Arduino มาดูกันดีกว่าว่ามันทำงานอย่างไรกับโค้ดนี้

การสื่อสารแบบอนุกรมมีหลายประเภท เมื่อคุณใช้บอร์ด Arduino ในโครงการ คุณสามารถเลือกพินอนุกรมมาตรฐานเป็นซอฟต์แวร์ Arduino serial Rx Tx จาก UART ภายในบอร์ด Arduino ดังนั้นจึงเรียกว่า Serial TTL ในกรณีนั้น เรากำลังใช้ Hardware serial.h Library แต่พินเพิ่มเติมบางตัวสามารถใช้เป็น Rx หรือ Tx ได้ ตัวอย่างเช่น พินการสื่อสาร SPI สามารถทำงานเป็น MISO, MOSI และ Select (SC) ได้ แต่ก็เป็นพินที่สามารถทำงานเป็นอินพุตดิจิทัลหรือเอาต์พุตดิจิทัล หรือหากคุณต้องการ คุณสามารถใช้พินเหล่านั้นเป็น Rx, Tx โดยใช้ซอฟต์แวร์ซีเรียล .h ห้องสมุด 

มาดูกันดีกว่าว่าโค้ดทำงานอย่างไร 

รหัส :- 

#รวม //ซอฟต์แวร์ซีเรียลไลบรารี

ซอฟต์แวร์Serial max232(2,3);

ข้อมูลถ่าน; 

สตริง mystring;

int ฉ = 5; // ปักหมุดสำหรับ Fan

int l1 = 6; // ปักหมุดสำหรับ light-1

int l2 = 7; // ปักหมุดสำหรับ light-2

การตั้งค่าเป็นโมฆะ ()

{

Serial.begin(115200); //ที่นี่ Baudrate คือ 115200

max232.begin(115200);

โหมดพิน (f, OUTPUT);     

digitalWrite (f, ต่ำ); 

โหมดพิน (l1, เอาต์พุต);    

digitalWrite (l1, ต่ำ);

โหมดพิน (l2, เอาต์พุต);    

digitalWrite (l2, ต่ำ);

}

ห่วงเป็นโมฆะ ()

{

ถ้า (max232.available()>0)

 {

   ข้อมูล = max232.read();

   mystring = mystring + ไบต์ (ข้อมูล) ; 

   ล่าช้า (10);

 }

อื่น if (mystring.endsWith(“101”)) //เงื่อนไขสำหรับ Fan ON

  {

    ปริศนาธรรม = “”; 

   digitalWrite(f,สูง);

  }

อื่น if (mystring.endsWith(“102”)) // เงื่อนไขสำหรับ Fan OFF

  {

   ปริศนาธรรม = “”; 

   digitalWrite (f, ต่ำ);

  }

else if (mystring.endsWith(“103”)) //condition สำหรับ Light-1 ON

  {

  ปริศนาธรรม = “”; 

  digitalWrite(l1,สูง);

  }

อื่น if (mystring.endsWith(“104”)) //condition สำหรับ Light-1 OFF

  {

   ปริศนาธรรม = “”; 

   digitalWrite(l1,ต่ำ);

  }

else if (mystring.endsWith(“105”)) //condition สำหรับ Light-2 ON

  {

  ปริศนาธรรม = “”; 

  digitalWrite(l2,สูง);

  }

อื่น if (mystring.endsWith(“106”)) //condition สำหรับ Light-2 OFF

  {

   ปริศนาธรรม = “”; 

   digitalWrite(l2,ต่ำ);

  }

else if (mystring.endsWith(“107”))) //เงื่อนไขสำหรับเครื่องใช้ไฟฟ้าทั้งหมดON

  {

   ปริศนาธรรม = “”; 

   digitalWrite(l1,สูง);

   digitalWrite(l2,สูง);

   digitalWrite(f,สูง);

  }

else if (mystring.endsWith("108")) //เงื่อนไขสำหรับเครื่องใช้ไฟฟ้าทั้งหมด OFF

  {

   ปริศนาธรรม = “”; 

   digitalWrite(l1,ต่ำ);

   digitalWrite(l2,ต่ำ);

   digitalWrite (f, ต่ำ);

  }

}

การทำงาน :-

ดังที่เราได้กล่าวไปแล้ว เรากำลังใช้ไลบรารีซีเรียลซอฟต์แวร์เพื่อถ่ายโอนค่าคีย์ไปยังที่อยู่ เราได้เพิ่มเข้าไปเพื่อสิ่งนี้ ในโค้ดนี้ทำให้อินเทอร์เฟซสำหรับเชื่อมต่อจอแสดงผล Arduino และ STON-HMI หลังจากนั้นเราได้ประกาศพินเอาต์พุตทั้งหมดที่เราใช้สำหรับ LED และ Fan สำหรับอุปกรณ์เหล่านี้เราได้ประกาศพินเหล่านี้เป็น OUTPUT แล้วตั้งค่าอัตราบอด สำหรับ software-serial library ทั้งหมดนี้เสร็จสิ้นในส่วนการตั้งค่า void ตอนนี้เรามาทำเงื่อนไขสำหรับอุปกรณ์ที่เราใช้กัน ส่วนนี้จะถูกเพิ่มเข้าไปใน void loop เพราะจะเกิดซ้ำหลายครั้งเพราะเราจะกด ปุ่มบนจอแสดงผล

ในส่วน void loop มีเงื่อนไขสี่ประการสำหรับอุปกรณ์ เงื่อนไขแรกสำหรับการเปิดและปิดพัดลมที่นี่ เราจะส่งค่าคีย์ '0001' สำหรับเงื่อนไข ON และ '0002' สำหรับเงื่อนไขปิดเหนือที่อยู่ '0001' ที่อยู่นี้คือ เหมือนกันสำหรับอุปกรณ์ทั้งหมด สำหรับอุปกรณ์ที่สองที่เป็นสำหรับ light-1 เราจะส่ง '0003' สำหรับเงื่อนไข ON และ '0004' สำหรับเงื่อนไขปิด ในทำนองเดียวกันสำหรับ light-2 '0005' สำหรับ ON และ '0006' สำหรับเงื่อนไขปิด ดังนั้น ด้วยวิธีนี้เงื่อนไขเหล่านี้จะใช้ได้กับอุปกรณ์แต่ละเครื่อง

มีอีกหนึ่งเงื่อนไขในการปิดหรือเปิดอุปกรณ์ทั้งหมดพร้อมกันสำหรับสิ่งนี้ เรากำลังใช้ '0007' สำหรับเปิด & '0008' สำหรับการปิด

เอาต์พุตวิดีโอ :-

นี่คือวิดีโอเอาต์พุตของโปรเจ็กต์นี้ในวิดีโอนี้ก่อนที่แสดงการตั้งค่านาฬิกาและการทำงานของระบบอัตโนมัติตามที่คุณเห็นในวิดีโอ

นี่คือวิดีโอเอาต์พุตที่คุณสามารถดาวน์โหลดได้โดยคลิกที่วิดีโอนั้น เราได้เพิ่มข้อมูลทั้งหมดที่เกี่ยวข้องกับสิ่งนี้ หากคุณมีข้อสงสัยเกี่ยวกับการออกแบบ GUI คุณสามารถดาวน์โหลดไฟล์โครงการและเปิดได้โดยตรงในกรณีนี้ คุณไม่จำเป็นต้อง ออกแบบ GUI ใด ๆ ที่คุณจะได้รับการออกแบบที่เราสร้างขึ้น แต่ถ้าคุณต้องการออกแบบ GUI ที่แตกต่างกัน คุณต้องทำตามขั้นตอนทั้งหมด

รหัส

// สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโครงการนี้ โปรดไปที่:- wwww.electrocircuit.net //

#รวม

ซอฟต์แวร์Serial max232(2,3);

ข้อมูลถ่าน; 

สตริง mystring;

int ฉ = 5; 

int l1 = 6; 

int l2 = 7;  

การตั้งค่าเป็นโมฆะ ()

{

Serial.begin (115200); 

max232.begin(115200);

โหมดพิน (f, OUTPUT); /////////สีแดง////////

digitalWrite (f, ต่ำ); 

โหมดพิน (l1, เอาต์พุต); ////////เขียว///////

digitalWrite (l1, ต่ำ);

โหมดพิน (l2, เอาต์พุต); ///////สีฟ้า/////////

digitalWrite (l2, ต่ำ);

}

ห่วงเป็นโมฆะ ()

{

ถ้า (max232.available()>0)

 {

   ข้อมูล = max232.read();

   mystring = mystring + ไบต์ (ข้อมูล) ; 

   ล่าช้า (10);

 }

อื่นถ้า (mystring.endsWith(“101”))

  {

    ปริศนาธรรม = “”; 

   digitalWrite(f,สูง);

  }

อื่นถ้า (mystring.endsWith(“102”))

  {

   ปริศนาธรรม = “”; 

   digitalWrite (f, ต่ำ);

  }

อื่นถ้า (mystring.endsWith(“103”))

  {

  ปริศนาธรรม = “”; 

  digitalWrite(l1,สูง);

  }

อื่นถ้า (mystring.endsWith(“104”))

  {

   ปริศนาธรรม = “”; 

   digitalWrite(l1,ต่ำ);

  }

อื่นถ้า (mystring.endsWith(“105”))

  {

  ปริศนาธรรม = “”; 

  digitalWrite(l2,สูง);

  }

อื่นถ้า (mystring.endsWith(“106”))

  {

   ปริศนาธรรม = “”; 

   digitalWrite(l2,ต่ำ);

  }

อื่นถ้า (mystring.endsWith(“107”))

  {

   ปริศนาธรรม = “”; 

   digitalWrite(l1,สูง);

   digitalWrite(l2,สูง);

   digitalWrite(f,สูง);

  }

อื่นถ้า (mystring.endsWith(“108”))

  {

   ปริศนาธรรม = “”; 

   digitalWrite(l1,ต่ำ);

   digitalWrite(l2,ต่ำ);

   digitalWrite (f, ต่ำ);

  }

}

ที่มา: Plato Data Intelligence