โครงงานระบบประตูอัตโนมัติ

🚪 โครงงานระบบประตูอัตโนมัติด้วยการวัดอุณหภูมิแบบไร้สัมผัสและแสดงผลผ่านlcd1602

โครงงานระบบประตูอัตโนมัติด้วยการวัดอุณหภูมิแบบไร้สัมผัสและแสดงผลผ่านlcd1602

โครงงานระบบประตูอัตโนมัติจากการวัดอุณหภูมิแบบไร้สัมผัสและแสดงผลผ่าน LCD

การพัฒนาเทคโนโลยีด้านสุขภาพและการป้องกันโรคระบาดมีบทบาทสำคัญอย่างยิ่งในยุคปัจจุบัน โดยเฉพาะอย่างยิ่งเมื่อเกิดสถานการณ์การแพร่ระบาดของโรคโควิด-19 🦠 ที่ส่งผลกระทบทั้งทางเศรษฐกิจ สังคม และวิถีชีวิตประจำวัน ด้วยเหตุนี้ จึงมีการพัฒนาระบบที่ช่วยป้องกันการแพร่ระบาดและลดการสัมผัสระหว่างบุคคลเพื่อเพิ่มความปลอดภัยให้แก่ประชาชนทั่วไป

ซึ่งโครงงาน “ระบบประตูอัตโนมัติจากการวัดอุณหภูมิแบบไร้สัมผัสและแสดงผลผ่าน LCD” ได้รับแรงบันดาลใจจากความต้องการดังกล่าว โดยมุ่งเน้นไปที่การประยุกต์ใช้เทคโนโลยีเพื่อสร้างระบบอัจฉริยะที่สามารถช่วยลดความเสี่ยงของการแพร่เชื้อและเพิ่มประสิทธิภาพในการควบคุมอุณหภูมิร่างกายของบุคคลก่อนเข้าพื้นที่สำคัญ เช่น สถานศึกษา โรงพยาบาล ห้างสรรพสินค้า และสถานที่ราชการ

1. ความสำคัญและแรงจูงใจในการสร้างโครงงาน ☚

โครงงานนี้มีเป้าหมายเพื่อตอบสนองความต้องการในยุคสมัยใหม่ที่ต้องเผชิญกับโรคระบาด covid-19 โครงทางเดินหายใจและความไม่ปลอดภัยทางสุขภาพที่อาจเกิดขึ้นในอนาคต โดยมีการคำนึงถึงความสำคัญดังนี้:

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

2. ขอบเขตความสามารถของโครงงาน ☚

โครงงานนี้มีวัตถุประสงค์หลักในการสร้างระบบที่สามารถตรวจวัดอุณหภูมิของผู้ใช้โดยอัตโนมัติ และนำข้อมูลมาใช้ในการเปิดปิดประตูเพื่อควบคุมการเข้าถึงสถานที่สำคัญ โดยมีรายละเอียดดังนี้:

  • ตรวจวัดอุณหภูมิแบบไร้สัมผัส: ใช้เซ็นเซอร์อุณหภูมิที่สามารถตรวจวัดอุณหภูมิจากร่างกายของผู้ใช้ได้โดยไม่ต้องสัมผัสโดยตรง เพื่อให้สอดคล้องกับสุขอนามัย ไม่ให้เกิดการแพร่กระจ่ายของเชื้อโรคที่มาจากการสัมผัส
  • ควบคุมประตูอัตโนมัติ: หากอุณหภูมิของผู้ใช้ต่ำกว่าที่กำหนด ประตูจะเปิดโดยอัตโนมัติ แต่หากอุณหภูมิสูงเกินปกติ ประตูจะไม่เปิดเพื่อเป็นการคัดกรองป่วยในการผ่านเข้าไปยังบริเวณที่กำหนด
  • การแสดงผลผ่าน LCD: หน้าจอ LCD จะใช้ในการแสดงผลอุณหภูมิของผู้ใช้ในรูปแบบที่เข้าใจง่าย ช่วยให้ผู้ใช้ทราบอุณหภูมิของตนเองทันที

3. แนวคิดการออกแบบระบบ ☚

การพัฒนาระบบนี้อาศัยการรวมเทคโนโลยีต่าง ๆ เข้าด้วยกัน โดยเฉพาะการใช้เซ็นเซอร์ตรวจวัดอุณหภูมิ การประมวลผลข้อมูลจากเซ็นเซอร์ และการสั่งงานกลไกการเปิดปิดประตู โดยแนวคิดการออกแบบประกอบด้วยส่วนสำคัญดังนี้:

  1. เซ็นเซอร์วัดอุณหภูมิแบบอินฟราเรด (Infrared Temperature Sensor): ใช้เซ็นเซอร์แบบอินฟราเรดที่สามารถวัดอุณหภูมิได้จากระยะไกล โดยทั่วไปนิยมใช้เซ็นเซอร์ MLX90614 ซึ่งมีความแม่นยำสูงและใช้ในงานด้านการตรวจวัดอุณหภูมิแบบไร้สัมผัส
  2. ไมโครคอนโทรลเลอร์ (Microcontroller): เป็นอุปกรณ์ประมวลผลกลางที่ใช้ในการเชื่อมต่อเซ็นเซอร์และหน้าจอ LCD รวมถึงควบคุมการเปิดปิดประตู โดยอาจใช้ Arduino หรือ Raspberry Pi ที่มีความสามารถในการเขียนโปรแกรมและควบคุมอุปกรณ์อื่น ๆ
  3. หน้าจอ LCD สำหรับการแสดงผล (LCD Display): ทำหน้าที่แสดงผลอุณหภูมิที่ตรวจวัดได้ ช่วยให้ผู้ใช้สามารถทราบค่าอุณหภูมิได้ทันที โดยการออกแบบหน้าจอแสดงผลให้เข้าใจง่ายและมีขนาดที่เหมาะสม
  4. กลไกการเปิดปิดประตู: ใช้มอเตอร์หรือเซอร์โวมอเตอร์ในการควบคุมการเปิดปิดประตู โดยสามารถสั่งงานผ่านการส่งสัญญาณจากไมโครคอนโทรลเลอร์เมื่อได้รับค่าจากเซ็นเซอร์

4. การทำงานของระบบ ☚

ระบบประตูอัตโนมัติจากการวัดอุณหภูมิแบบไร้สัมผัสนี้ทำงานผ่านกระบวนการหลัก ๆ ดังนี้:

  1. การตรวจวัดอุณหภูมิ: เมื่อผู้ใช้ยืนอยู่ใกล้กับเซ็นเซอร์วัดอุณหภูมิ เซ็นเซอร์จะตรวจจับค่าอุณหภูมิจากร่างกายของผู้ใช้ในทันทีโดยไม่ต้องสัมผัส
  2. การประมวลผลค่าอุณหภูมิ: ค่าที่วัดได้จากเซ็นเซอร์จะถูกส่งไปยังไมโครคอนโทรลเลอร์ ซึ่งจะทำการประมวลผลค่าอุณหภูมิเพื่อตรวจสอบว่าค่าอุณหภูมิของผู้ใช้อยู่ในเกณฑ์ที่กำหนดหรือไม่
  3. การแสดงผลผ่าน LCD: หลังจากประมวลผลข้อมูลแล้ว อุณหภูมิของผู้ใช้จะถูกแสดงบนหน้าจอ LCD โดยหากค่าอุณหภูมิอยู่ในเกณฑ์ปกติ หน้าจอจะแสดงค่าอุณหภูมิพร้อมข้อความที่แจ้งให้ผู้ใช้ทราบว่าสามารถเข้าผ่านประตูได้
  4. การสั่งงานเปิดปิดประตู: หากอุณหภูมิของผู้ใช้ต่ำกว่าหรือเท่ากับค่าที่กำหนด ประตูจะเปิดโดยอัตโนมัติ แต่หากอุณหภูมิสูงเกินค่าที่กำหนด ประตูจะไม่เปิดและแสดงข้อความแจ้งเตือนให้ผู้ใช้ทราบ

5. ประโยชน์ของโครงงาน ☚

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

6. ข้อจำกัดของโครงงาน ☚

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

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



โครงงานระบบประตูอัตโนมัติด้วยการวัดอุณหภูมิแบบไร้สัมผัสและแสดงผลผ่าน lcd1602
การต่อใช้งานระบบประตูอัตโนมัติด้วยการวัดอุณหภูมิแบบไร้สัมผัสและแสดงผลผ่าน lcd1602

การต่อใช้งานขา arduino ร่วมกับอุปกรณ์แวดล้อม

  • Arduino Uno r3
  • LCD1602 i2c
    • SDA ⇔ a4
    • SCL ⇔ a5
    • Vcc ⇔ 5V
    • Gnd ⇔ Gnd
  • Ultrasonic HC-SR04
    • TRIG ⇔ pin 3
    • ECHO ⇔ pin 2
    • Vcc ⇔ 5V
    • Gnd ⇔ Gnd
  • servo motor
    • data ⇔ pin 9
    • Vcc ⇔ 5V
    • Gnd ⇔ Gnd
  • GY-906 BBAA infrared Temperature Sensor
    • data ⇔ pin A0
    • Vcc ⇔ 5V
    • Gnd ⇔ Gnd
  • *หมายเหต ฝั่งซ้ายคือเซ็นซอร์ฝั่งขวาคือarduino

    ชุดคำสั่งสำหรับการควบคุมการทำงานของอุปกรณ์

    ลำดับถัดไปจะเป็นการเขียนชุดคำสั่ง(code) เชื่อมต่อระหว่างไมโครคอนโทรลเลอร์กับอุปกรณ์รอบข้างเช่น lcd1602,ultrasonic,temp sensor และ servo motor เพื่อให้ได้การทำงานเป็นไปตามที่เราออกแบบไว้

    
    #include(LiquidCrystal_I2C.h)
    #include(Servo.h)
    
    Servo myservo; //สร้าง obj โดยไม่กำหนดคอนสตั๊ก
    
    #define I2C_ADDR    0x27
    #define LCD_COLUMNS 20
    #define LCD_LINES   4
    
    #define ECHO_PIN 2
    #define TRIG_PIN 3
    
    bool f1 = true;
    
    const float BETA = 3950; // should match the Beta Coefficient of the thermistor
    
    LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
    
    unsigned int sum1;
    unsigned int sum2;
    
    void setup() {
      Serial.begin(9600);
      lcd.init();
      lcd.backlight();
      lcd.setCursor(0,0);
      lcd.print("test");
      pinMode(TRIG_PIN, OUTPUT);
      pinMode(ECHO_PIN, INPUT);
      pinMode(A0,INPUT);
      myservo.attach(9);
      lcd.clear();
    }
    
    void loop() {
      lcd.setCursor(0,0);
      lcd.print("pass : ");
      lcd.setCursor(0,1);
      lcd.print("Not pass : ");
    
      myservo.write(0);
      digitalWrite(TRIG_PIN, HIGH);
      delayMicroseconds(10);
      digitalWrite(TRIG_PIN, LOW);
    
      // การอ่านค่าแบบนี้ใช้ได้เฉพาะในเว็บไซต์เท่านั้นไม่สามารถใช้งานของจริงได้
      int duration = pulseIn(ECHO_PIN, HIGH);
      int a1 = duration/58;
      Serial.print("Distance in CM: ");
      Serial.println(a1);
      // lcd.setCursor(0,0);
      // lcd.print("distan : ");
      // lcd.print(a1);
    
      //อ่านค่าอุณหภูมิจาก NTC thermistor ของจริงไม่ได้ใช้งานตัวนี้
      int analogValue = analogRead(A0);
      float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
      Serial.print("Temperature: ");
      Serial.print(celsius);
      Serial.println(" ℃");
      // lcd.setCursor(0,1);
      // lcd.print("temp   : ");
      // lcd.print(int(celsius));
      delay(200);
    
      // การใช้งาน servo ต้องจ่ายการทำงานด้วย pwm เท่านั้น
      // ทดสอบหมุนของ servo
      if(a1>20 && a1<40 && f1 ){
        // กรณีผ่าน
      if(int(celsius)<40 && int(celsius)>=35){
        sum1++;
        myservo.write(90);
        delay(3000);
        f1 = false;
        lcd.setCursor(8,0);
        lcd.print(sum1);
      }
      //กรณีไม่ผ่าน
      else{
        sum2++;
        lcd.setCursor(12,1);
        lcd.print(sum2);
        delay(1000);
      }
      }
      if(a1>40)f1 = true; // รีเซ็น bool เพื่อให้ระยะห่างออกจากเซ็นเซอร์ก่อน
    }
    
    
    // โครงงาน ระบบวัดอุณหภูมิแบบไร้สัมผัสเพื่อเปิดประตูพร้อมนับจำนวนแสดงผลผ่านจอ lcd
    //https://blog.wokwi.com/learn-servo-motor-using-wokwi-logic-analyzer/
    // ตัวอย่างการใช้งาน เซอโว