จุดประสงค์
1. ผู้ใช้งานสามารถเปิด - ปิดอุปกรณ์ไฟฟ้าจากระยะไกล
2. ผู้ใช้งานสามารถใช้งานได้แม้จะไม่เคยใช้งานมาก่อน
3. ผู้ใช้งานได้รับความสะดวกสบายในการใช้งาน
ขั้นตอนการออกแบบและการสร้างหน้าจอ
1. ส่วนติดต่อผู้ใช้ Web application
2. ส่วนของอุปกรณ์สำหรับใช้ในการเปิด-ปิด การจ่ายไฟฟ้าให้อุปกรณ์ไฟฟ้าโดยใช้บอร์ด node mcu , relay module
รูปที่ 1 โค้ดในส่วนของการกำหนดตัวแปรเริ่มต้น
จากรูปที่ 1 โค้ดในส่วนนี้เป็นการกำหนดค่าเริ่มต้นให้ตัวแปรต่างๆที่ใช้งานในโค้ด ได้แก่ การกำหนด pin สำหรับควบคุมการเปิด - ปิดของ plug แต่ละตัว ต่อมาเป็น pin สำหรับใช้ในการรับค่าเพื่อควบคุมการติด - ดับเมื่อไม่มีการเชื่อมต่อกับเครือข่าย นอกจากนี้ยังมีการกำหนด ssid และ password สาหรับ connect กับเครือข่าย รวมถึงตัวแปรสำหรับเก็บสถานะของ plug สำหรับ port ที่ใช้ในการสื่อสารคือ port 80
รูปที่ 2 โค้ดในส่วนของการกำหนดการเชื่อมต่อ Wi-Fi
ในส่วนของรูปที่ 2 จากโค้ดจะเห็นได้ว่ามีการเปิดใช้ serial port โดยใช้ baud rate ที่ 115200 และกำหนด pin ที่ใช้ในการควบคุม plug เป็น output แต่ pin ของ savecut จะเป็น input สำหรับอ่านค่า analog สำหรับการนำไปสร้างเงื่อนไขในการป้องกันไฟเกิน จากนั้นให้อุปกรณ์เชื่อมต่อกัน Access Point ซึ่งในการทดสอบนี้ใช้โทรศัพท์มือถือเป็นอุปกรณ์ปล่อยสัญญาณแทน Access Point โดยในโค้ดมีการสร้าง Loop เพื่อตรวจสอบสถานะการเชื่อมต่อ หากสถานะของ Wi-Fi ยังไม่มีการเชื่อมต่อ ให้ print “.” (จุด) ทุก ๆ 5 วินาที หากสามารถเชื่อมต่อแล้ว ให้ print แสดงสถานะและหมายเลข IP แล้วเปิดให้ TCP server เริ่มทำงาน
รูปที่ 3 โค้ดในส่วนของการควบคุมปลั๊กไฟขณะรอการเชื่อมต่อ Wi-Fi และ รอการเชื่อมต่อกับ Client
จากโค้ดในข้างต้นจะเห็นได้ว่ามีคำสั่ง While Loop เพื่อสร้างเงื่อนไขว่าถ้าไม่สามารถเชื่อมต่อกับ Wi-Fi ได้ สถานะของปลั๊กไฟทุกตัวจะยังไม่ทำงาน (Low) ต่อมาหากมีการเชื่อมต่อ Wi-Fi แล้วแต่ยังไม่มี Client มาร้องขอการ เชื่อมต่อด้วยจะให้ทำการวน Loop รอจนกว่าจะมี Client เข้ามาใช้ และเมื่อมี Client ติดต่อเข้ามาให้อ่านค่าที่ได้รับจากข้อมูลแรกถึง '\r' แล้วแสดงค่าผ่านทาง serial
รูปที่ 4 โค้ดในส่วนของการควบคุมการเปิด - ปิดของปลั๊กไฟ
จากรูปโค้ดในข้างต้นเป็นการตัดมาแสดงบางส่วน ซึ่งการทำงานหลัก ๆ ของส่วนนี้คือ การกำหนดเงื่อนไขจาก request ที่ได้จากหน้าเว็บ ดังตัวอย่างด้านบนซึ่งอธิบายได้ดังนี้ สำหรับปลั๊ก ตัวที่ 1 ถ้าได้รับ request คือ “/plug1off” ให้ status_plug 1 มีค่าเป็น 0 แล้วกำหนดขาที่ควบคุมปลั๊กตัวนี้เป็น “Low” หรือ “ดับ” พร้อมทั้งแสดงข้อความผ่าน serial แต่ถ้าหาก request ที่ส่งมาคือ “/plug1on” ให้ status_plug1 เท่ากับ 1 แล้วกำหนดขาที่ควบคุมปลั๊กนี้เป็น “High” หรือ “ติด” ซึ่งได้สร้างเงื่อนไขในลักษณะดังกล่าวสำหรับปลั๊ก 4 ตัว
รูปที่ 5 โค้ดในส่วนของการจัดแต่งหน้าเว็บสำหรับติดต่อกับผู้ใช้
สำหรับการปรับแต่งหน้าเว็บไซต์นั้นได้นำ theme ของ Bootstrap เข้ามาใช้เพื่อความสวยงามและมีการกำหนดค่าต่างๆ เช่น สี ขนาดหน้าต่างให้สวยงานเหมาะสม
ในส่วนนี้เป็นการแสดงรูปของปลั๊กไฟตามเงื่อนไขของ status_plug จากตัวอย่างโค้ดในรูปที่ 5 เช่น หาก status_plug1 มีค่าเท่ากับ “1” หมายถึงปลั๊กไฟติดให้แสดงรูปในโทนสีขาว แต่ถ้าหาก status_plug1 มีค่าอื่นๆ ให้หน้าเว็บให้แสดงรูปโทนสีดำซึ่งต้องสร้างเงื่อนไขสำหรับปลั๊ก 4 ตัว ให้การแสดงผลในหน้าเว็บดังตัวอย่างรูปที่ 7
รูปที่ 7 รูปแสดงสถานะของปลั๊กไฟผ่านหน้าเว็บ
ในส่วนนี้เป็นการสร้างปุ่มกดเพื่อสั่งการเปิด - ปิดปลั๊กไฟแต่ละตัว โดยปุ่มเปิดคือปุ่ม Turn On กำหนดให้มีสีเขียวหรือเป็นปุ่ม btn-success ซึ่งเป็น theme ของ bootstrap โดยเมื่อกดปุ่มนี้ จะส่ง request “/plug on” ไปยังอุปกรณ์เพื่อกำหนด pin ให้เป็น “High” ส่วนปุ่ม Turn Off กำหนดให้มีสีแดงหรือเป็นปุ่ม btn-danger ซึ่งเป็น theme ของ bootstrap โดยเมื่อกดปุ่มนี้ จะส่ง request “/plug off” ซึ่งต้องทำทั้งหมด 4 ชุด สำหรับควบคุมการเปิด - ปิดผ่านหน้าเว็บ ดังรูปที่ 7
ผลการดำเนินงาน
ส่วนหน้าเว็บควบคุม
รูปที่ 9 หน้าเว็บสำหรับควบคุมการทำงานของปลั๊กไฟ
ส่วนของชิ้นงาน
1. ชิ้นงานที่ใช้ในการทดสอบ
รูปที่ 10 ชิ้นงานในขั้นตอนการทดสอบ
รูปที่ 11 อุปกรณ์การควบคุมการเปิด - ปิดปลั๊กไฟ
2. ชิ้นงานที่พัฒนาครอบด้วยพลาสติก จาก 3D printer
รูปที่ 12 ชิ้นงานที่บรรจุอุปกรณ์ควบคุมไว้ในกล่องพลาสติกจาก 3D printer
ตัวอย่างการทดสอบ
2. กรณีที่สั่งเปิดปลั๊กไฟ 1 ดวง
3. กรณีสั่งเปิดปลั๊กไฟ 3 ดวง
สรุปผลการดำเนินงาน Smart Plug ที่สร้างขึ้นสามารถช่วยให้ผู้ใช้ควบคุมการเปิด - ปิดของปลั๊กผ่านหน้าเว็บโดยใช้การเชื่อมต่อในวง LAN เดียวกันได้ และยังมีการตัดไฟหากเกิดกรณีที่ไฟเกิน ซึ่งจะช่วยป้องกันอันตรายจากไฟฟ้าได้ในระดับหนึ่ง
ลิ้งค์วิดิโอสาธิตการทำงานของ Smart Plug
ขอบพระคุณทุกท่านที่รับชมครับ