โครงงานตู้เย็นอัจฉริยะ (Refrigerator Intelligent)
ที่มาและความสำคัญ
เนื่องจากในปัจจุบัน คนส่วนใหญ่มักจะไม่สนใจและไม่ดูแลค่อยจะตัวเองเท่าที่ควร เนื่องจากภาระในหน้าที่การทำงาน ซึ่งอาจทำให้ไม่มีเวลาดูแลตัวเองเท่าที่ควรจะเป็น และไม่ใช่แค่เรื่องดูแลตัวเองที่คนสมัยนี้มักจะหลงลืมไป นอกจากเรื่องดูแลตัวเองแล้ว การดูแลที่อยู่อาศัยก็เช่นกัน ทั้งห้องน้ำ ห้องนอน การกินอยู่ที่เอาความสะดวกสบายเป็นที่ตั้ง โดยเฉพาะภายในตู้เย็นที่อาจเป็นแหล่งสะสมของเชื้อโรคมากมาย หากไม่ดูแลให้ดี ปล่อยให้อาหารเหล่านั้นปะปนกันไปหมดไม่ทราบว่าอันไหนเป็นของเก่าอันไหนเป็นของใหม่ ของสิ่งใดหมดสิ่งใดขาด จะหาเวลาไปจัดการก็ลำบาก และยิ่งในยุคปัจจุบันที่เทคโนโลยีเริ่มเข้ามามีบทบาทในสังคมไทยมากขึ้น ไม่ว่าจะเป็นโทรศัพท์มือถือ พัดลม หลอดไฟ ตู้เย็น รวมไปถึงเครือข่ายไร้สายที่หลายๆคนต่างก็รู้จักและเคยใช้งานกันเป็นอย่างดี ทั้งนี้ก็เพื่อช่วยทุ่นแรง ทุ่นเวลา เพิ่มความสะดวกสบายให้แก่ผู้ใช้และยังสอดคล้องตามนโยบาย Thailand 4.0 ที่มีเทคโนโลยีเข้ามาเกี่ยวข้อง คนส่วนมากไม่ว่าจะเป็นใครก็ตาม ทั้งวัยเด็ก วัยเรียน วัยทำงาน หรือแม้แต่ผู้สูงอายุเองต่างก็ต้องการความสะดวกสบาย โดยเฉพาะในวัยทำงานแล้วยิ่งไม่มีเวลาเนื่องจากจำเป็นต้องทำงาน กลับถึงบ้านก็แยกตัวไปทำธุระของตัวเอง หรือเข้าสู่มุมสังคมก้มหน้า จนลืมไปว่าต้องดูแลตัวเอง ดูแลคนรอบข้าง ดูแลข้าวของเครื่องใช้ในบ้านให้เป็นระเบียบและพร้อมใช้งาน ยุคนี้ขึ้นชื่อเรื่องของเทคโนโลยีจึงไม่ผิดนักที่จะกล่าวได้ว่าเป็นยุคที่คนส่วนมากต่างรักในความสะดวกสบาย อะไรทุ่นเวลาได้ก็ว่าดี ดังนั้น สิ่งใดที่จะนำพามาซึ่งสะดวกสบาย คนส่วนใหญ่ก็มักจะยอมจ่ายเงินไปเพื่อแลกกับความสะดวกสบายที่ได้กลับมา แม้จะเป็นเรื่องเล็กๆน้อยๆก็ตาม
ทางคณะผู้จัดทำจึงเล็งเห็นถึงปัญหาและยังเล็งเห็นถึงความสำคัญของสิ่งของในบ้านหนึ่งอย่างที่เรียกได้ว่าแทบจะเป็นหัวใจหลักของบ้านได้เลยทีเดียวไม่ว่าครัวเรือนไหนต่างก็จำเป็นต้องมี นั้นก็คือ ตู้เย็น ทำให้ทางคณะผู้จัดทำได้จัดทำตู้เย็นอัจฉริยะขึ้นมาโดยตู้เย็นอัจฉริยะนั้นทำงานโดยมีสวิตซ์ติดอยู่บริเวณช่องวางขวดน้ำ เมื่อสวิตซ์ทำงาน จะแสดงผลบน Net Pie ว่ามีขวดน้ำอยู่ และเช่นเดียวกันเมื่อสวิตซ์ไม่ทำงาน ก็จะแสดงผลผ่าน Net Pie ว่าไม่มีขวดน้ำตั้งอยู่ แต่ก่อนจะแสดงได้นั้นก็ยังจำเป็นต้องทำงานตามเงื่อนไขที่กำหนดไว้ก่อนด้วยถึงจะแสดงได้ว่าไม่มีขวดน้ำวางอยู่แล้ว เมื่อผลถูกแสดงขึ้นบน Net pie ร้านค้าที่เป็นเครือข่ายกันก็จะมีหน้าที่คอยสอบถามผู้ใช้งานว่ามีความต้องการจะซื้อน้ำหรือไม่ ซึ่งระบบนี้เหมาะกับหมู่บ้านจัดสรร หรือสังคมเมือง ที่มีร้านค้าสวัสดิการ หรือร้านค้าส่วนกลาง โดยร้านค้าส่วนกลางเป็นผู้ดูแลระบบ ผู้ใช้บริการมีหน้าที่เพียงตัดสินใจว่าต้องการซื้อหรือไม่ซื้อ และทำตามในเงื่อนไขข้อตกลงที่กำหนดไว้โดยได้ประโยชน์ทั้งสองฝ่ายเนื่องจากข้อตกลงนี้จะเกิดขึ้นจากการเจรจาระหว่างผู้ซื้อและผู้ขาย
วัตถุประสงค์
1.เพื่อสร้างความสะดวกสบายแก่ผู้ใช้งาน
2.เพื่อให้สอดคล้องกับนโยบาย Thailand 4.0
3.เพื่อในสอดคล้องกับกระบวนการคิดระบบ STEM
วัสดุอุปกรณ์
1.โมดูล wifi (ESP8266)
2.Node MCU
3.ZX Switch01
4.สายไฟ
5.AX-Noudmcu
ผังโครงสร้าง
หลักการทำงาน
โดยตู้เย็นอัจฉริยะนั้นทำงานโดยมีสวิตซ์ติดอยู่บริเวณช่องวางขวดน้ำ เมื่อสวิตซ์ทำงาน จะแสดงผลบน Net Pie ว่ามีขวดน้ำอยู่ และเช่นเดียวกันเมื่อสวิตซ์ไม่ทำงาน ก็จะแสดงผลผ่าน Net Pie ว่าไม่มีขวดน้ำตั้งอยู่ แต่ก่อนจะแสดงได้นั้นก็ยังจำเป็นต้องทำงานตามเงื่อนไขที่กำหนดไว้ก่อนด้วยถึงจะแสดงได้ว่าไม่มีขวดน้ำวางอยู่แล้ว เมื่อผลถูกแสดงขึ้นบน Net pie ร้านค้าที่เป็นเครือข่ายกันก็จะมีหน้าที่คอยสอบถามผู้ใช้งานว่ามีความต้องการจะซื้อน้ำหรือไม่ ซึ่งระบบนี้เหมาะกับหมู่บ้านจัดสรร หรือสังคมเมือง ที่มีร้านค้าสวัสดิการ หรือร้านค้าส่วนกลาง โดยร้านค้าส่วนกลางเป็นผู้ดูแลระบบ ผู้ใช้บริการมีหน้าที่เพียงตัดสินใจว่าต้องการซื้อหรือไม่ซื้อ และทำตามในเงื่อนไขข้อตกลงที่กำหนดไว้โดยได้ประโยชน์ทั้งสองฝ่ายเนื่องจากข้อตกลงนี้จะเกิดขึ้นจากการเจรจาระหว่างผู้ซื้อและผู้ขาย
CODE คำสั่งการทำงาน
#include <ESP8266WiFi.h>
#include <MicroGear.h>
const char* ssid = “PAIRAT_2.4GHz”;
const char* password = “PAIRAT27”;
#define APPID “fridge”
#define KEY “cj6lQEfMpd30Cgs”
#define SECRET “h4uXmiDmAoLALEMODRgdk07Yp”
#define ALIAS “frightstatus”
#define LIGHT_STATUS1 “HTML_light1”
#define LIGHT_STATUS2 “HTML_light2”
#define LIGHT_STATUS3 “HTML_light3”
#define LIGHT_STATUS4 “HTML_light4”
#define LIGHT_STATUS5 “HTML_light5”
#define switch1 D1
#define switch2 D2
#define switch3 D3
#define switch4 D4
#define switch5 D5
#define pressed LOW
WiFiClient client;
MicroGear microgear(client);
void onMsghandler(char *topic, uint8_t* msg, unsigned int msglen)
{
Serial.print(“Incoming message –> “);
msg[msglen] = ‘\0’;
Serial.println((char *)msg);
}
void onConnected(char *attribute, uint8_t* msg, unsigned int msglen)
{
Serial.println(“Connected to NETPIE…”);
microgear.setAlias(ALIAS);
}
void setup() {
Serial.begin( 115200 );
microgear.on(MESSAGE, onMsghandler);
microgear.on(CONNECTED, onConnected);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(250);
Serial.print(“.”);
}
Serial.println(“WiFi connected”);
Serial.println(“IP address: “);
Serial.println(WiFi.localIP());
delay(1000);
microgear.init(KEY, SECRET, ALIAS);
microgear.connect(APPID); // ฟังก์ชั่นเชื่อมต่อ NETPIE
pinMode(switch1,INPUT_PULLUP);
pinMode(switch2,INPUT_PULLUP);
pinMode(switch3,INPUT_PULLUP);
pinMode(switch4,INPUT_PULLUP);
pinMode(switch5,INPUT_PULLUP);
//Serial.println(“NETPIE Connected : Done… “);
}
void loop() {
static int state1,state2,state3,state4,state5 = 0;
bool ReadSwitch1 = digitalRead(switch1);
bool ReadSwitch2 = digitalRead(switch2);
bool ReadSwitch3 = digitalRead(switch3);
bool ReadSwitch4 = digitalRead(switch4);
bool ReadSwitch5 = digitalRead(switch5);
switch ( state1 ) {
case 0 : // init
state1 = 1 ;
Serial.println(“init.”);
break;
case 1: // wait sw pressed
//Serial.println(“wait sw pressed”);
if (ReadSwitch1 == pressed)
{
Serial.println(“Pressed Switch1.”);
delay(500);
state1 = 2 ;
}
break;
case 2 : // wait sw released
//Serial.println(“Pressed Release.”);
if (ReadSwitch1 != pressed)
{
Serial.println(“UNPressed Switch1.”);
delay(500);
state1 = 1 ;
}
break;
}
switch ( state2 ) {
case 0 : // init
state2 = 1 ;
Serial.println(“init.”);
break;
case 1: // wait sw pressed
//Serial.println(“wait sw pressed”);
if (ReadSwitch2 == pressed)
{
Serial.println(“Pressed Switch2.”);
delay(500);
state2 = 2 ;
}
break;
case 2 : // wait sw released
//Serial.println(“Pressed Release.”);
if (ReadSwitch2 != pressed)
{
Serial.println(“UNPressed Switch2.”);
delay(500);
state2 = 1 ;
}
break;
}
switch ( state3 ) {
case 0 : // init
state3 = 1 ;
Serial.println(“init.”);
break;
case 1: // wait sw pressed
//Serial.println(“wait sw pressed”);
if (ReadSwitch3 == pressed)
{
Serial.println(“Pressed Switch3.”);
delay(500);
state3 = 2 ;
}
break;
case 2 : // wait sw released
//Serial.println(“Pressed Release.”);
if (ReadSwitch3 != pressed)
{
Serial.println(“UNPressed Switch3.”);
delay(500);
state3 = 1 ;
}
break;
}
switch ( state4 )
{
case 0 : // init
state4 = 1 ;
Serial.println(“init.”);
break;
case 1: // wait sw pressed
//Serial.println(“wait sw pressed”);
if (ReadSwitch4 == pressed)
{
Serial.println(“Pressed Switch4.”);
delay(500);
state4 = 2 ;
}
break;
case 2 : // wait sw released
//Serial.println(“Pressed Release.”);
if (ReadSwitch4 != pressed)
{
Serial.println(“UNPressed Switch4.”);
delay(500);
state4 = 1 ;
}
break;
}
switch ( state5 ) {
case 0 : // init
state5 = 1 ;
Serial.println(“init.”);
break;
case 1: // wait sw pressed
//Serial.println(“wait sw pressed”);
if (ReadSwitch5 == pressed)
{
Serial.println(“Pressed Switch5.”);
delay(500);
state5 = 2 ;
}
break;
case 2 : // wait sw released
//Serial.println(“Pressed Release.”);
if (ReadSwitch5 != pressed)
{
Serial.println(“UNPressed Switch5.”);
delay(500);
state5 = 1 ;
}
break;
}
if (microgear.connected())
{
microgear.loop();
Serial.println(“connected”);
}
else
{
Serial.println(“connection lost, reconnect…”);
microgear.connect(APPID);
}
if ( state1 == 2 ) {
String data1 = String(1);
char msg1[128];
data1.toCharArray(msg1, data1.length() + 1);
Serial.println(msg1);
microgear.chat(LIGHT_STATUS1 , msg1);
HTML_light1
} else
{
String data1 = String(0);
char msg1[128];
data1.toCharArray(msg1, data1.length() + 1);
Serial.println(msg1);
microgear.chat(LIGHT_STATUS1 , msg1); }
if ( state2 == 2 ) {
String data2 = String(1);
char msg2[128];
data2.toCharArray(msg2, data2.length() + 1);
Serial.println(msg2);
microgear.chat(LIGHT_STATUS2 , msg2); HTML_light2
} else {
String data2 = String(0);
char msg2[128];
data2.toCharArray(msg2, data2.length() + 1);
Serial.println(msg2);
microgear.chat(LIGHT_STATUS2 , msg2);
}
if ( state3 == 2 ) {
String data3 = String(1);
char msg3[128];
data3.toCharArray(msg3, data3.length() + 1);
Serial.println(msg3);
microgear.chat(LIGHT_STATUS3 , msg3);
} else {
String data3 = String(0);
char msg3[128];
data3.toCharArray(msg3, data3.length() + 1);
Serial.println(msg3);
microgear.chat(LIGHT_STATUS3 , msg3);
}
if ( state4 == 2 ) {
String data4 = String(1);
char msg4[128];
data4.toCharArray(msg4, data4.length() + 1);
Serial.println(msg4);
microgear.chat(LIGHT_STATUS4 , msg4);
} else {
String data4 = String(0);
char msg4[128];
data4.toCharArray(msg4, data4.length() + 1);
Serial.println(msg4);
microgear.chat(LIGHT_STATUS4 , msg4);
}
if ( state5 == 2 ) {
String data5 = String(1);
char msg5[128];
data5.toCharArray(msg5, data5.length() + 1);
Serial.println(msg5);
microgear.chat(LIGHT_STATUS5 , msg5);
} else {
String data5 = String(0);
char msg5[128];
data5.toCharArray(msg5, data5.length() + 1);
Serial.println(msg5);
microgear.chat(LIGHT_STATUS5 , msg5);
}
delay(1000);
}
ผลของการทดสอบ
จากการศึกษาตู้เย็นอัจฉริยะสามารถใช้งานได้จริง และเป็นประโยชน์ต่อผู้ทดลองใช้ แต่จำเป็นต้องมี Internet ซึ่งอาจเข้าถึงไม่ครบทุกกลุ่มผู้บริโภค และหาก Internet ไม่เสถียรก็อาจทำให้เกิดความคลาดเคลื่อนได้ เนื่องจากขณะนี้ชิ้นงานยังมีข้อจำกัดในบางส่วน เนื่องจากทางผู้พัฒนาได้จำลองไว้เพียงแค่บริเวณช่องวางขวดน้ำเท่านั้น
รูปการทำงาน
คณะผู้จัดทำโครงงาน
- นางสาวภัฑราณิษฐ์ เทศเจริญ
- นางสาวอภิชญา ปล้องไม้
อาจารย์ที่ปรึกษา
นายศุภชัย แตงอ่อน สอนวิชา คอมพิวเตอร์
โทรศัพท์ 0868255295 E-mail a-sup@hotmail.com
โรงเรียนบ้านนา”นายกพิทนากร”
ที่อยู่ของโรงเรียน
112 หมู่ 4 ตำบล บ้านนา อำเภอ บ้านนา จังหวัด นครนายก 26110
โทร 037-381785 , 037-382764-5 ต่อ 101 โทรสาร 037-382020